diff --git a/Import/Skins/DarkSkin/DarkSkinReflection.cpp b/Import/Skins/DarkSkin/DarkSkinReflection.cpp index bb5cedd6..7592b84d 100644 --- a/Import/Skins/DarkSkin/DarkSkinReflection.cpp +++ b/Import/Skins/DarkSkin/DarkSkinReflection.cpp @@ -180,6 +180,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::darkskin::BottomScrollButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::BottomScrollButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) CLASS_MEMBER_BASE(::darkskin::BottomScrollButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::BottomScrollButtonTemplate*(), NO_PARAMETER) @@ -189,13 +190,19 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::BottomScrollButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) CLASS_MEMBER_BASE(::darkskin::ButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ButtonTemplate*(), NO_PARAMETER) @@ -205,18 +212,29 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::CheckBoxTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::CheckBoxTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) CLASS_MEMBER_BASE(::darkskin::CheckBoxTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::CheckBoxTemplate*(), NO_PARAMETER) @@ -226,25 +244,43 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::CheckBoxTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ComboBoxTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ComboBoxTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiDateComboBoxTemplate) CLASS_MEMBER_BASE(::darkskin::ComboBoxTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ComboBoxTemplate*(), NO_PARAMETER) @@ -254,20 +290,33 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ComboBoxTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::CustomControlTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::CustomControlTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::darkskin::CustomControlTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::CustomControlTemplate*(), NO_PARAMETER) @@ -277,10 +326,13 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::CustomControlTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::CustomFrameWindowTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::CustomFrameWindowTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiWindowTemplate) CLASS_MEMBER_BASE(::darkskin::CustomFrameWindowTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::CustomFrameWindowTemplate*(), NO_PARAMETER) @@ -290,52 +342,97 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::CustomFrameWindowTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_darkskin_CustomFrameWindowTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(contentTable) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(frameTable) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::CustomFrameWindowTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::DateButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::DateButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) CLASS_MEMBER_BASE(::darkskin::DateButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::DateButtonTemplate*(), NO_PARAMETER) @@ -345,14 +442,21 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::DateButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::DatePickerTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::DatePickerTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiDatePickerTemplate) CLASS_MEMBER_BASE(::darkskin::DatePickerTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::DatePickerTemplate*(), NO_PARAMETER) @@ -362,11 +466,15 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(look) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::DatePickerTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::DocumentLabelTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::DocumentLabelTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiDocumentLabelTemplate) CLASS_MEMBER_BASE(::darkskin::DocumentLabelTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::DocumentLabelTemplate*(), NO_PARAMETER) @@ -376,11 +484,15 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::DocumentLabelTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::DocumentTextBoxTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::DocumentTextBoxTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiDocumentLabelTemplate) CLASS_MEMBER_BASE(::darkskin::DocumentTextBoxTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::DocumentTextBoxTemplate*(), NO_PARAMETER) @@ -390,14 +502,21 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::DocumentTextBoxTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::DocumentViewerTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::DocumentViewerTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiDocumentViewerTemplate) CLASS_MEMBER_BASE(::darkskin::DocumentViewerTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::DocumentViewerTemplate*(), NO_PARAMETER) @@ -407,14 +526,21 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(look) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::DocumentViewerTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ExpandingDecoratorTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ExpandingDecoratorTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) CLASS_MEMBER_BASE(::darkskin::ExpandingDecoratorTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ExpandingDecoratorTemplate*(), NO_PARAMETER) @@ -424,16 +550,25 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ExpandingDecoratorTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::GroupBoxTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::GroupBoxTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::darkskin::GroupBoxTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::GroupBoxTemplate*(), NO_PARAMETER) @@ -443,18 +578,29 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(titleBounds) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::GroupBoxTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::HScrollHandleTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::HScrollHandleTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) CLASS_MEMBER_BASE(::darkskin::HScrollHandleTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::HScrollHandleTemplate*(), NO_PARAMETER) @@ -464,12 +610,17 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::HScrollHandleTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::HScrollTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::HScrollTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiScrollTemplate) CLASS_MEMBER_BASE(::darkskin::HScrollTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::HScrollTemplate*(), NO_PARAMETER) @@ -480,24 +631,41 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(behavior) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonDecrease) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonIncrease) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(handle) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(handleContainer) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::HScrollTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::HTrackerTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::HTrackerTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiScrollTemplate) CLASS_MEMBER_BASE(::darkskin::HTrackerTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::HTrackerTemplate*(), NO_PARAMETER) @@ -508,20 +676,33 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(behavior) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(handle) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::HTrackerTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ItemBackgroundTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ItemBackgroundTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) CLASS_MEMBER_BASE(::darkskin::ItemBackgroundTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ItemBackgroundTemplate*(), NO_PARAMETER) @@ -531,12 +712,17 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ItemBackgroundTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::LabelTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::LabelTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiLabelTemplate) CLASS_MEMBER_BASE(::darkskin::LabelTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::LabelTemplate*(), NO_PARAMETER) @@ -546,11 +732,15 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::LabelTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::LeftScrollButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::LeftScrollButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) CLASS_MEMBER_BASE(::darkskin::LeftScrollButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::LeftScrollButtonTemplate*(), NO_PARAMETER) @@ -560,13 +750,19 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::LeftScrollButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ListViewColumnHeaderTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ListViewColumnHeaderTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiListViewColumnHeaderTemplate) CLASS_MEMBER_BASE(::darkskin::ListViewColumnHeaderTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ListViewColumnHeaderTemplate*(), NO_PARAMETER) @@ -576,27 +772,47 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonArrow) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ListViewColumnHeaderTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ListViewTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ListViewTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiListViewTemplate) CLASS_MEMBER_BASE(::darkskin::ListViewTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ListViewTemplate*(), NO_PARAMETER) @@ -606,14 +822,21 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(look) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ListViewTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::MenuBarButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::MenuBarButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) CLASS_MEMBER_BASE(::darkskin::MenuBarButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::MenuBarButtonTemplate*(), NO_PARAMETER) @@ -623,13 +846,19 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::MenuBarButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::MenuItemButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::MenuItemButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) CLASS_MEMBER_BASE(::darkskin::MenuItemButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::MenuItemButtonTemplate*(), NO_PARAMETER) @@ -639,22 +868,37 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::MenuItemButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::MenuSplitterTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::MenuSplitterTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::darkskin::MenuSplitterTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::MenuSplitterTemplate*(), NO_PARAMETER) @@ -664,13 +908,19 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::MenuSplitterTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ProgressBarTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ProgressBarTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiScrollTemplate) CLASS_MEMBER_BASE(::darkskin::ProgressBarTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ProgressBarTemplate*(), NO_PARAMETER) @@ -680,16 +930,25 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ProgressBarTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RadioButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RadioButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) CLASS_MEMBER_BASE(::darkskin::RadioButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RadioButtonTemplate*(), NO_PARAMETER) @@ -699,25 +958,43 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RadioButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonButtonsTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonButtonsTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonButtonsTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonButtonsTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonButtonsTemplate*(), NO_PARAMETER) @@ -727,10 +1004,13 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonButtonsTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonGalleryDropdownButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonGalleryDropdownButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonGalleryDropdownButtonTemplate*(), NO_PARAMETER) @@ -740,15 +1020,23 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonGalleryDropdownButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonGalleryItemListTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonGalleryItemListTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonGalleryItemListTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonGalleryItemListTemplate*(), NO_PARAMETER) @@ -758,10 +1046,13 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonGalleryItemListTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonGalleryTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonGalleryTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonGalleryListTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonGalleryTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonGalleryTemplate*(), NO_PARAMETER) @@ -771,24 +1062,41 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonGalleryTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonGroupExpandButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonGroupExpandButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonGroupExpandButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonGroupExpandButtonTemplate*(), NO_PARAMETER) @@ -798,12 +1106,17 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonGroupExpandButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonGroupMenuTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonGroupMenuTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonGroupMenuTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonGroupMenuTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonGroupMenuTemplate*(), NO_PARAMETER) @@ -813,18 +1126,29 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonGroupMenuTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonGroupTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonGroupTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonGroupTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonGroupTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonGroupTemplate*(), NO_PARAMETER) @@ -834,20 +1158,33 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(table) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonGroupTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonIconLabelTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonIconLabelTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonIconLabelTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonIconLabelTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonIconLabelTemplate*(), NO_PARAMETER) @@ -857,15 +1194,23 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonIconLabelTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonLargeButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonLargeButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonLargeButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonLargeButtonTemplate*(), NO_PARAMETER) @@ -875,20 +1220,33 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonLargeButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonLargeDropdownButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonLargeDropdownButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonLargeDropdownButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonLargeDropdownButtonTemplate*(), NO_PARAMETER) @@ -898,24 +1256,41 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonLargeDropdownButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonLargeSplitButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonLargeSplitButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonLargeSplitButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonLargeSplitButtonTemplate*(), NO_PARAMETER) @@ -925,22 +1300,37 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonArrow) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonLargeSplitButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonSmallButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonSmallButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonSmallButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonSmallButtonTemplate*(), NO_PARAMETER) @@ -950,19 +1340,31 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonSmallButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonSmallDropdownButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonSmallDropdownButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonSmallDropdownButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonSmallDropdownButtonTemplate*(), NO_PARAMETER) @@ -972,23 +1374,39 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonSmallDropdownButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonSmallIconLabelTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonSmallIconLabelTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonIconLabelTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonSmallIconLabelTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonSmallIconLabelTemplate*(), NO_PARAMETER) @@ -998,18 +1416,29 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonSmallIconLabelTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonSmallSplitButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonSmallSplitButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonSmallSplitButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonSmallSplitButtonTemplate*(), NO_PARAMETER) @@ -1019,24 +1448,41 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonArrow) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonSmallSplitButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonSplitArrowTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonSplitArrowTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonSplitArrowTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonSplitArrowTemplate*(), NO_PARAMETER) @@ -1046,17 +1492,27 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonSplitArrowTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonToolstripHeaderTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonToolstripHeaderTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonToolstripHeaderTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonToolstripHeaderTemplate*(), NO_PARAMETER) @@ -1066,12 +1522,17 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonToolstripHeaderTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonToolstripMenuTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonToolstripMenuTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonToolstripMenuTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonToolstripMenuTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonToolstripMenuTemplate*(), NO_PARAMETER) @@ -1081,24 +1542,41 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(content) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonToolstripMenuTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RibbonToolstripsTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RibbonToolstripsTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonToolstripsTemplate) CLASS_MEMBER_BASE(::darkskin::RibbonToolstripsTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RibbonToolstripsTemplate*(), NO_PARAMETER) @@ -1108,10 +1586,13 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RibbonToolstripsTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::RightScrollButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::RightScrollButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) CLASS_MEMBER_BASE(::darkskin::RightScrollButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::RightScrollButtonTemplate*(), NO_PARAMETER) @@ -1121,13 +1602,19 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::RightScrollButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ScrollViewTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ScrollViewTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiScrollViewTemplate) CLASS_MEMBER_BASE(::darkskin::ScrollViewTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ScrollViewTemplate*(), NO_PARAMETER) @@ -1137,14 +1624,21 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(look) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ScrollViewTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ShortcutKeyTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ShortcutKeyTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiLabelTemplate) CLASS_MEMBER_BASE(::darkskin::ShortcutKeyTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ShortcutKeyTemplate*(), NO_PARAMETER) @@ -1154,15 +1648,23 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ShortcutKeyTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::SystemFrameWindowTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::SystemFrameWindowTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiWindowTemplate) CLASS_MEMBER_BASE(::darkskin::SystemFrameWindowTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::SystemFrameWindowTemplate*(), NO_PARAMETER) @@ -1172,12 +1674,17 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::SystemFrameWindowTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_darkskin_SystemFrameWindowTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::SystemFrameWindowTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::TabHeaderButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::TabHeaderButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) CLASS_MEMBER_BASE(::darkskin::TabHeaderButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::TabHeaderButtonTemplate*(), NO_PARAMETER) @@ -1188,7 +1695,9 @@ namespace vl CLASS_MEMBER_EVENT(HighlightedChanged) CLASS_MEMBER_EVENT(TabFocusedChanged) CLASS_MEMBER_FIELD(__vwsn_prop_Highlighted) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_TabFocused) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Highlighted, GetHighlighted, SetHighlighted, HighlightedChanged) CLASS_MEMBER_PROPERTY_EVENT(TabFocused, GetTabFocused, SetTabFocused, TabFocusedChanged) END_CLASS_MEMBER(::darkskin::TabHeaderButtonTemplate) @@ -1197,15 +1706,23 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::TabHeaderButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::TabHeaderTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::TabHeaderTemplateConstructor"))) 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" }) @@ -1214,7 +1731,9 @@ namespace vl CLASS_MEMBER_METHOD(SetCommands, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(CommandsChanged) CLASS_MEMBER_FIELD(__vwsn_parameter_CurrentTabPage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Commands) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Commands, GetCommands, SetCommands, CommandsChanged) CLASS_MEMBER_PROPERTY_READONLY(CurrentTabPage, GetCurrentTabPage) END_CLASS_MEMBER(::darkskin::TabHeaderTemplate) @@ -1223,13 +1742,19 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(CurrentTabPage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::TabHeaderTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::TabTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::TabTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiRibbonTabTemplate) CLASS_MEMBER_BASE(::darkskin::TabTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::TabTemplate*(), NO_PARAMETER) @@ -1238,6 +1763,7 @@ namespace vl CLASS_MEMBER_METHOD(UpdateTabHeader, NO_PARAMETER) CLASS_MEMBER_EVENT(HighlightedChanged) CLASS_MEMBER_FIELD(__vwsn_prop_Highlighted) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Highlighted, GetHighlighted, SetHighlighted, HighlightedChanged) END_CLASS_MEMBER(::darkskin::TabTemplate) @@ -1245,21 +1771,35 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(afterHeadersContainer) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(beforeHeadersContainer) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(header) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::TabTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::TextListTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::TextListTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListTemplate) CLASS_MEMBER_BASE(::darkskin::TextListTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::TextListTemplate*(), NO_PARAMETER) @@ -1269,14 +1809,21 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(look) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::TextListTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::Theme) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ThemeConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::theme::ThemeTemplates) CLASS_MEMBER_BASE(::darkskin::ThemeConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::Theme*(), NO_PARAMETER) @@ -1286,10 +1833,13 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ThemeConstructor) BEGIN_CLASS_MEMBER(::darkskin::ToolstripButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ToolstripButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) CLASS_MEMBER_BASE(::darkskin::ToolstripButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripButtonTemplate*(), NO_PARAMETER) @@ -1299,16 +1849,25 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ToolstripButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ToolstripDropdownButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ToolstripDropdownButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) CLASS_MEMBER_BASE(::darkskin::ToolstripDropdownButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripDropdownButtonTemplate*(), NO_PARAMETER) @@ -1318,20 +1877,33 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ToolstripDropdownButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ToolstripInMenuTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ToolstripInMenuTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::darkskin::ToolstripInMenuTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripInMenuTemplate*(), NO_PARAMETER) @@ -1341,12 +1913,17 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ToolstripInMenuTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_darkskin_ToolstripInMenuTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ToolstripInMenuTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ToolstripMenuTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ToolstripMenuTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiMenuTemplate) CLASS_MEMBER_BASE(::darkskin::ToolstripMenuTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripMenuTemplate*(), NO_PARAMETER) @@ -1356,14 +1933,21 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ToolstripMenuTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitArrowTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ToolstripSplitArrowTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) CLASS_MEMBER_BASE(::darkskin::ToolstripSplitArrowTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripSplitArrowTemplate*(), NO_PARAMETER) @@ -1373,14 +1957,21 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ToolstripSplitArrowTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ToolstripSplitButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiToolstripButtonTemplate) CLASS_MEMBER_BASE(::darkskin::ToolstripSplitButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripSplitButtonTemplate*(), NO_PARAMETER) @@ -1390,21 +1981,35 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonArrow) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ToolstripSplitButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitterInMenuTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ToolstripSplitterInMenuTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::darkskin::ToolstripSplitterInMenuTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripSplitterInMenuTemplate*(), NO_PARAMETER) @@ -1414,13 +2019,19 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ToolstripSplitterInMenuTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_darkskin_ToolstripSplitterInMenuTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ToolstripSplitterInMenuTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitterTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ToolstripSplitterTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::darkskin::ToolstripSplitterTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripSplitterTemplate*(), NO_PARAMETER) @@ -1430,13 +2041,19 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ToolstripSplitterTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::ToolstripTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::ToolstripTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::darkskin::ToolstripTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripTemplate*(), NO_PARAMETER) @@ -1446,12 +2063,17 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::ToolstripTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::TooltipTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::TooltipTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiWindowTemplate) CLASS_MEMBER_BASE(::darkskin::TooltipTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::TooltipTemplate*(), NO_PARAMETER) @@ -1461,14 +2083,21 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(container) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::TooltipTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::TopScrollButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::TopScrollButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) CLASS_MEMBER_BASE(::darkskin::TopScrollButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::TopScrollButtonTemplate*(), NO_PARAMETER) @@ -1478,13 +2107,19 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::TopScrollButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::TreeViewTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::TreeViewTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTreeViewTemplate) CLASS_MEMBER_BASE(::darkskin::TreeViewTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::TreeViewTemplate*(), NO_PARAMETER) @@ -1494,14 +2129,21 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(look) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::TreeViewTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::VScrollHandleTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::VScrollHandleTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) CLASS_MEMBER_BASE(::darkskin::VScrollHandleTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::VScrollHandleTemplate*(), NO_PARAMETER) @@ -1511,12 +2153,17 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::VScrollHandleTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::VScrollTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::VScrollTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiScrollTemplate) CLASS_MEMBER_BASE(::darkskin::VScrollTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::VScrollTemplate*(), NO_PARAMETER) @@ -1527,24 +2174,41 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(behavior) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonDecrease) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonIncrease) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(handle) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(handleContainer) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::VScrollTemplateConstructor) BEGIN_CLASS_MEMBER(::darkskin::VTrackerTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"darkskin::VTrackerTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiScrollTemplate) CLASS_MEMBER_BASE(::darkskin::VTrackerTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::darkskin::VTrackerTemplate*(), NO_PARAMETER) @@ -1555,17 +2219,29 @@ namespace vl 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_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(behavior) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(handle) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::darkskin::VTrackerTemplateConstructor) #undef _ diff --git a/Import/Vlpp.h b/Import/Vlpp.h index 3857a64d..ae72c45e 100644 --- a/Import/Vlpp.h +++ b/Import/Vlpp.h @@ -5729,9 +5729,19 @@ namespace vl template void operator()(TArgs2&& ...args)const { - for(vint i = 0; i < handlers.Count(); i++) + auto count = handlers.Count(); + if (count == 0) return; + + if (count == 1) { - handlers[i]->function(std::forward(args)...); + handlers[0]->function(std::forward(args)...); + } + else + { + for (vint i = 0; i < count; i++) + { + handlers[i]->function(args...); + } } } }; diff --git a/Import/VlppGlrParserCompiler.cpp b/Import/VlppGlrParserCompiler.cpp index 61acb134..51e88e3a 100644 --- a/Import/VlppGlrParserCompiler.cpp +++ b/Import/VlppGlrParserCompiler.cpp @@ -39,6 +39,7 @@ GenerateAstFileNames astOutput->traverseCpp = globalName + group->Name() + L"_Traverse.cpp"; astOutput->jsonH = globalName + group->Name() + L"_Json.h"; astOutput->jsonCpp = globalName + group->Name() + L"_Json.cpp"; + astOutput->jsonDts = globalName + group->Name() + L"_Json.d.ts"; parserOutput->astOutputs.Add(group, astOutput); } } @@ -381,6 +382,15 @@ WriteAstFiles files.Add(output->jsonH, fileH); files.Add(output->jsonCpp, fileCpp); } + + { + WString fileDts = GenerateToStream([&](StreamWriter& writer) + { + WriteJsonVisitorDtsFile(group, output, writer); + }); + + files.Add(output->jsonDts, fileDts); + } } void WriteAstFiles(AstSymbolManager& manager, Ptr output, collections::Dictionary& files) @@ -2257,6 +2267,180 @@ WriteJsonVisitorCppFile } }); } + +/*********************************************************************** +WriteJsonVisitorDtsFile +***********************************************************************/ + + void CollectAllLeafClasses(AstClassSymbol* classSymbol, List& leafClasses) + { + if (classSymbol->derivedClasses.Count() == 0) + { + leafClasses.Add(classSymbol); + } + else + { + for (auto derived : classSymbol->derivedClasses) + { + CollectAllLeafClasses(derived, leafClasses); + } + } + } + + AstClassSymbol* FindNearestAncestorWithProps(AstClassSymbol* classSymbol) + { + auto current = classSymbol->baseClass; + while (current) + { + if (current->Props().Count() > 0) + { + return current; + } + current = current->baseClass; + } + return nullptr; + } + + void WriteDtsPropType(AstDefFileGroup* group, AstClassPropSymbol* propSymbol, stream::StreamWriter& writer) + { + switch (propSymbol->propType) + { + case AstPropType::Token: + writer.WriteString(L"string"); + break; + case AstPropType::Type: + if (auto enumPropSymbol = dynamic_cast(propSymbol->propSymbol)) + { + writer.WriteString(enumPropSymbol->Name()); + } + else if (auto classPropSymbol = dynamic_cast(propSymbol->propSymbol)) + { + writer.WriteString(classPropSymbol->Name() + L" | null"); + } + break; + case AstPropType::Array: + if (auto classPropSymbol = dynamic_cast(propSymbol->propSymbol)) + { + writer.WriteString(L"(" + classPropSymbol->Name() + L" | null)[]"); + } + else + { + writer.WriteString(L"unknown[]"); + } + break; + } + } + + void WriteJsonVisitorDtsFile(AstDefFileGroup* group, Ptr output, stream::StreamWriter& writer) + { + List visitors, concreteClasses; + CollectVisitorsAndConcreteClasses(group, visitors, concreteClasses); + + // write enums + for (auto name : group->SymbolOrder()) + { + if (auto enumSymbol = dynamic_cast(group->Symbols()[name])) + { + writer.WriteString(L"export type " + enumSymbol->Name() + L" ="); + bool first = true; + for (auto itemName : enumSymbol->ItemOrder()) + { + if (!first) writer.WriteString(L" |"); + writer.WriteString(L" \"" + itemName + L"\""); + first = false; + } + writer.WriteLine(L";"); + writer.WriteLine(L""); + } + } + + // write union types for abstract classes (classes with derived classes) + for (auto visitorSymbol : visitors) + { + List leafClasses; + CollectAllLeafClasses(visitorSymbol, leafClasses); + + writer.WriteString(L"export type " + visitorSymbol->Name() + L" ="); + for (auto [leafClass, index] : indexed(leafClasses)) + { + if (index > 0) writer.WriteString(L" |"); + writer.WriteString(L" " + leafClass->Name()); + } + writer.WriteLine(L";"); + writer.WriteLine(L""); + } + + // write _Common interfaces for abstract classes that have own properties + for (auto name : group->SymbolOrder()) + { + if (auto classSymbol = dynamic_cast(group->Symbols()[name])) + { + if (classSymbol->derivedClasses.Count() > 0 && classSymbol->Props().Count() > 0) + { + auto ancestor = FindNearestAncestorWithProps(classSymbol); + writer.WriteString(L"export interface " + classSymbol->Name() + L"_Common"); + if (ancestor) + { + writer.WriteString(L" extends " + ancestor->Name() + L"_Common"); + } + writer.WriteLine(L" {"); + for (auto propName : classSymbol->PropOrder()) + { + auto propSymbol = classSymbol->Props()[propName]; + writer.WriteString(L" " + propName + L": "); + WriteDtsPropType(group, propSymbol, writer); + writer.WriteLine(L";"); + } + writer.WriteLine(L"}"); + writer.WriteLine(L""); + } + } + } + + // write interfaces for leaf classes (classes with no derived classes) + for (auto name : group->SymbolOrder()) + { + if (auto classSymbol = dynamic_cast(group->Symbols()[name])) + { + if (classSymbol->derivedClasses.Count() == 0) + { + // find the nearest ancestor with properties for extends + auto ancestor = FindNearestAncestorWithProps(classSymbol); + writer.WriteString(L"export interface " + classSymbol->Name()); + if (ancestor) + { + if (ancestor->derivedClasses.Count() > 0) + { + writer.WriteString(L" extends " + ancestor->Name() + L"_Common"); + } + else + { + writer.WriteString(L" extends " + ancestor->Name()); + } + } + writer.WriteLine(L" {"); + writer.WriteLine(L" $ast: \"" + classSymbol->Name() + L"\";"); + for (auto propName : classSymbol->PropOrder()) + { + auto propSymbol = classSymbol->Props()[propName]; + writer.WriteString(L" " + propName + L": "); + WriteDtsPropType(group, propSymbol, writer); + writer.WriteLine(L";"); + } + writer.WriteLine(L"}"); + writer.WriteLine(L""); + } + } + } + + // write interfaces for concrete classes (standalone, no base and no derived) + for (auto classSymbol : concreteClasses) + { + // concreteClasses are !baseClass && derivedClasses.Count()==0 + // these are already handled in the leaf class section above + // (they would appear as leaf classes with no ancestor) + } + } } } } diff --git a/Import/VlppGlrParserCompiler.h b/Import/VlppGlrParserCompiler.h index f1562c4a..f594da9b 100644 --- a/Import/VlppGlrParserCompiler.h +++ b/Import/VlppGlrParserCompiler.h @@ -616,6 +616,7 @@ Output WString traverseCpp; WString jsonH; WString jsonCpp; + WString jsonDts; }; struct CppSyntaxGenOutput @@ -695,6 +696,7 @@ namespace vl extern void WriteTraverseVisitorCppFile (AstDefFileGroup* group, Ptr output, stream::StreamWriter& writer); extern void WriteJsonVisitorHeaderFile (AstDefFileGroup* group, Ptr output, stream::StreamWriter& writer); extern void WriteJsonVisitorCppFile (AstDefFileGroup* group, Ptr output, stream::StreamWriter& writer); + extern void WriteJsonVisitorDtsFile (AstDefFileGroup* group, Ptr output, stream::StreamWriter& writer); extern void WriteAstAssemblerHeaderFile (AstSymbolManager& manager, Ptr output, stream::StreamWriter& writer); extern void WriteAstAssemblerCppFile (AstSymbolManager& manager, Ptr output, stream::StreamWriter& writer); diff --git a/Import/VlppReflection.cpp b/Import/VlppReflection.cpp index 5f40661b..89a2b937 100644 --- a/Import/VlppReflection.cpp +++ b/Import/VlppReflection.cpp @@ -423,6 +423,68 @@ namespace vl #ifndef VCZH_DEBUG_NO_REFLECTION +/*********************************************************************** +LogTypeManager (attributes) +***********************************************************************/ + + WString LogTypeManager_FormatAttribute(IAttributeInfo* info) + { + WString result = info->GetAttributeType()->GetTypeName() + L"("; + for (vint i = 0; i < info->GetAttributeValueCount(); i++) + { + if (i > 0) result += L", "; + auto value = info->GetAttributeValue(i); + auto valueType = info->GetAttributeValueType(i); + CHECK_ERROR(valueType != nullptr, L"vl::reflection::description::LogTypeManager_FormatAttribute(IAttributeInfo*)#Failed to resolve the reflected type of an attribute argument."); + + if (valueType == GetTypeDescriptor()) + { + if (value.GetValueType() == Value::Null) + { + result += valueType->GetTypeName() + L":null"; + } + else + { + auto rawPtr = value.GetRawPtr(); + auto td = dynamic_cast(rawPtr); + CHECK_ERROR(td != nullptr, L"vl::reflection::description::LogTypeManager_FormatAttribute(IAttributeInfo*)#ITypeDescriptor* attribute value must point to a valid ITypeDescriptor."); + result += valueType->GetTypeName() + L":" + td->GetTypeName(); + } + } + else + { + auto serializableType = valueType->GetSerializableType(); + CHECK_ERROR(serializableType != nullptr, L"vl::reflection::description::LogTypeManager_FormatAttribute(IAttributeInfo*)#Attribute argument must use a serializable reflected type."); + + WString data; + CHECK_ERROR(serializableType->Serialize(value, data), L"vl::reflection::description::LogTypeManager_FormatAttribute(IAttributeInfo*)#Failed to serialize an attribute argument."); + result += valueType->GetTypeName() + L":" + data; + } + } + result += L")"; + return result; + } + + void LogTypeManager_PrintAttributes(stream::TextWriter& writer, IAttributeBag* bag, const WString& prefix) + { + for (vint i = 0; i < bag->GetAttributeCount(); i++) + { + writer.WriteLine(prefix + L"@" + LogTypeManager_FormatAttribute(bag->GetAttribute(i))); + } + } + + void LogTypeManager_PrintParameterAttributes(stream::TextWriter& writer, IMethodInfo* info) + { + for (vint i = 0; i < info->GetParameterCount(); i++) + { + auto parameter = info->GetParameter(i); + for (vint j = 0; j < parameter->GetAttributeCount(); j++) + { + writer.WriteLine(L" @(" + parameter->GetName() + L")" + LogTypeManager_FormatAttribute(parameter->GetAttribute(j))); + } + } + } + /*********************************************************************** LogTypeManager (enum) ***********************************************************************/ @@ -450,6 +512,7 @@ LogTypeManager (struct) void LogTypeManager_Property(stream::TextWriter& writer, IPropertyInfo* info) { + LogTypeManager_PrintAttributes(writer, info, L" "); if (auto cpp = info->GetCpp()) { writer.WriteLine(L" @ReferenceTemplate:" + cpp->GetReferenceTemplate()); @@ -519,6 +582,7 @@ LogTypeManager (class) { printed = true; IEventInfo* info = type->GetEvent(j); + LogTypeManager_PrintAttributes(writer, info, L" "); if (auto cpp = info->GetCpp()) { writer.WriteLine(L" @AttachTemplate:" + cpp->GetAttachTemplate()); @@ -566,11 +630,13 @@ LogTypeManager (class) void LogTypeManager_Method(stream::TextWriter& writer, IMethodInfo* info, const wchar_t* title) { + LogTypeManager_PrintAttributes(writer, info, L" "); if (auto cpp = info->GetCpp()) { writer.WriteLine(L" @InvokeTemplate:" + cpp->GetInvokeTemplate()); writer.WriteLine(L" @ClosureTemplate:" + cpp->GetClosureTemplate()); } + LogTypeManager_PrintParameterAttributes(writer, info); writer.WriteString(L" "); writer.WriteString(title); @@ -709,6 +775,7 @@ LogTypeManager { writer.WriteLine(L"@Serializable"); } + LogTypeManager_PrintAttributes(writer, type, L""); switch (type->GetTypeDescriptorFlags()) { @@ -777,6 +844,7 @@ Context List> mis; List> pis; List> eis; + ITypeDescriptor* itdTd = nullptr; }; /*********************************************************************** @@ -897,10 +965,24 @@ Metadata vint count = 0; }; + struct AttributeValueMetadata + { + vint typeDescriptor = -1; + vint typeDescriptorValue = -1; + WString data; + }; + + struct AttributeInfoMetadata + { + vint attributeType = -1; + List> values; + }; + struct ParameterInfoMetadata { WString name; Ptr type; + List> attributes; }; struct MethodInfoMetadata @@ -913,6 +995,7 @@ Metadata List> parameters; Ptr returnType; bool isStatic = false; + List> attributes; }; struct PropertyInfoMetadata @@ -926,6 +1009,7 @@ Metadata vint getter = -1; vint setter = -1; vint valueChangedEvent = -1; + List> attributes; }; struct EventInfoMetadata @@ -937,6 +1021,7 @@ Metadata vint ownerTypeDescriptor = -1; Ptr handlerType; List observingProperties; + List> attributes; }; struct TypeDescriptorMetadata @@ -957,6 +1042,7 @@ Metadata List methods; List methodGroups; IdRange constructorGroup; + List> attributes; }; } } @@ -975,6 +1061,17 @@ Serialization SERIALIZE(count) END_SERIALIZATION + BEGIN_SERIALIZATION(reflection::description::AttributeValueMetadata) + SERIALIZE(typeDescriptor) + SERIALIZE(typeDescriptorValue) + SERIALIZE(data) + END_SERIALIZATION + + BEGIN_SERIALIZATION(reflection::description::AttributeInfoMetadata) + SERIALIZE(attributeType) + SERIALIZE(values) + END_SERIALIZATION + BEGIN_SERIALIZATION(reflection::description::MetaonlyTypeInfo) SERIALIZE(decorator) SERIALIZE(hint) @@ -986,6 +1083,7 @@ Serialization BEGIN_SERIALIZATION(reflection::description::ParameterInfoMetadata) SERIALIZE(name) SERIALIZE(type) + SERIALIZE(attributes) END_SERIALIZATION BEGIN_SERIALIZATION(reflection::description::MethodInfoMetadata) @@ -997,6 +1095,7 @@ Serialization SERIALIZE(parameters) SERIALIZE(returnType) SERIALIZE(isStatic) + SERIALIZE(attributes) END_SERIALIZATION BEGIN_SERIALIZATION(reflection::description::PropertyInfoMetadata) @@ -1009,6 +1108,7 @@ Serialization SERIALIZE(getter) SERIALIZE(setter) SERIALIZE(valueChangedEvent) + SERIALIZE(attributes) END_SERIALIZATION BEGIN_SERIALIZATION(reflection::description::EventInfoMetadata) @@ -1019,6 +1119,7 @@ Serialization SERIALIZE(ownerTypeDescriptor) SERIALIZE(handlerType) SERIALIZE(observingProperties) + SERIALIZE(attributes) END_SERIALIZATION BEGIN_SERIALIZATION(reflection::description::TypeDescriptorMetadata) @@ -1038,6 +1139,7 @@ Serialization SERIALIZE(methods) SERIALIZE(methodGroups) SERIALIZE(constructorGroup) + SERIALIZE(attributes) END_SERIALIZATION } } @@ -1054,7 +1156,7 @@ Serialization IMethodInfo ***********************************************************************/ - class MetaonlyParameterInfo : public Object, public IParameterInfo + class MetaonlyParameterInfo : public MemberInfoBase { protected: MetaonlyReaderContext* context = nullptr; @@ -1092,7 +1194,7 @@ IMethodInfo } }; - class MetaonlyMethodInfo : public Object, public IMethodInfo, protected IMethodInfo::ICpp + class MetaonlyMethodInfo : public MemberInfoBase, protected IMethodInfo::ICpp { friend class MetaonlyMethodGroupInfo; protected: @@ -1113,6 +1215,11 @@ IMethodInfo } } + Ptr GetMetadata() + { + return metadata; + } + // ICpp const WString& GetInvokeTemplate() override @@ -1208,6 +1315,18 @@ IMethodInfo { } + // IAttributeBag + + vint GetAttributeCount() override + { + return 0; + } + + IAttributeInfo* GetAttribute(vint index) + { + return nullptr; + } + // IMemberInfo ITypeDescriptor* GetOwnerTypeDescriptor() override @@ -1243,7 +1362,7 @@ IMethodInfo IPropertyInfo ***********************************************************************/ - class MetaonlyPropertyInfo : public Object, public IPropertyInfo, protected IPropertyInfo::ICpp + class MetaonlyPropertyInfo : public MemberInfoBase, protected IPropertyInfo::ICpp { protected: MetaonlyReaderContext* context = nullptr; @@ -1256,6 +1375,11 @@ IPropertyInfo { } + Ptr GetMetadata() + { + return metadata; + } + // ICpp const WString& GetReferenceTemplate() override @@ -1331,7 +1455,7 @@ IPropertyInfo IEventInfo ***********************************************************************/ - class MetaonlyEventInfo : public Object, public IEventInfo, protected IEventInfo::ICpp + class MetaonlyEventInfo : public MemberInfoBase, protected IEventInfo::ICpp { protected: MetaonlyReaderContext* context = nullptr; @@ -1344,6 +1468,11 @@ IEventInfo { } + Ptr GetMetadata() + { + return metadata; + } + // ICpp const WString& GetAttachTemplate() override @@ -1420,7 +1549,7 @@ ITypeDescriptor ***********************************************************************/ class MetaonlyTypeDescriptor - : public Object + : public AttributeBagSource , public ITypeDescriptor , protected ITypeDescriptor::ICpp , protected IValueType @@ -1454,6 +1583,23 @@ ITypeDescriptor } } + Ptr GetMetadata() + { + return metadata; + } + + // IAttributeBag + + vint GetAttributeCount() override + { + return GetAttributeCountInternal(nullptr); + } + + IAttributeInfo* GetAttribute(vint index) override + { + return GetAttributeInternal(nullptr, index); + } + // ICpp const WString& GetFullName() override @@ -1688,6 +1834,113 @@ ITypeDescriptor } }; +/*********************************************************************** +Attribute Metadata Helpers +***********************************************************************/ + + void GenerateMetaonlyAttributes(MetaonlyWriterContext& context, List>& metadataList, IAttributeBag* attributeBag) + { +#define ERROR_MESSAGE_PREFIX L"vl::reflection::description::GenerateMetaonlyAttributes(MetaonlyWriterContext&, collections::List&, IAttributeBag*)#" + auto itdTd = GetTypeDescriptor(); + for (vint i = 0; i < attributeBag->GetAttributeCount(); i++) + { + auto info = attributeBag->GetAttribute(i); + auto attributeMetadata = Ptr(new AttributeInfoMetadata{ + .attributeType = context.tdIndex[info->GetAttributeType()], + }); + for (vint j = 0; j < info->GetAttributeValueCount(); j++) + { + auto value = info->GetAttributeValue(j); + auto valueType = info->GetAttributeValueType(j); + CHECK_ERROR(valueType != nullptr, ERROR_MESSAGE_PREFIX L"Failed to resolve the reflected type of an attribute argument."); + + if (valueType == itdTd) + { + vint tdValueIndex = -1; + if (value.GetValueType() != Value::Null) + { + auto rawPtr = value.GetRawPtr(); + auto td = dynamic_cast(rawPtr); + CHECK_ERROR(td != nullptr, ERROR_MESSAGE_PREFIX L"ITypeDescriptor* attribute value must point to a valid ITypeDescriptor."); + CHECK_ERROR(context.tdIndex.Keys().Contains(td), ERROR_MESSAGE_PREFIX L"ITypeDescriptor* attribute value must point to a registered ITypeDescriptor."); + tdValueIndex = context.tdIndex[td]; + } + attributeMetadata->values.Add(Ptr(new AttributeValueMetadata{ + .typeDescriptor = context.tdIndex[valueType], + .typeDescriptorValue = tdValueIndex, + })); + } + else + { + auto serializableType = valueType->GetSerializableType(); + CHECK_ERROR(serializableType != nullptr, ERROR_MESSAGE_PREFIX L"Attribute argument must use a serializable reflected type."); + + WString data; + CHECK_ERROR(serializableType->Serialize(value, data), ERROR_MESSAGE_PREFIX L"Failed to serialize an attribute argument."); + attributeMetadata->values.Add(Ptr(new AttributeValueMetadata{ + .typeDescriptor = context.tdIndex[valueType], + .data = data, + })); + } + } + metadataList.Add(attributeMetadata); + } +#undef ERROR_MESSAGE_PREFIX + } + + void LoadMetaonlyAttributes( + MetaonlyReaderContext* context, + AttributeBagSource* source, + IMemberInfo* memberInfo, + const List>& attributeMetadataList, + ITypeDescriptor* itdTd + ) + { +#define ERROR_MESSAGE_PREFIX L"vl::reflection::description::LoadMetaonlyAttributes(MetaonlyReaderContext*, AttributeBagSource*, IMemberInfo*, const collections::List&, ITypeDescriptor*)#" + for (vint i = 0; i < attributeMetadataList.Count(); i++) + { + auto&& attributeMetadata = attributeMetadataList[i]; + CHECK_ERROR(0 <= attributeMetadata->attributeType && attributeMetadata->attributeType < context->tds.Count(), ERROR_MESSAGE_PREFIX L"Failed to resolve the reflected attribute type."); + auto attributeType = context->tds[attributeMetadata->attributeType].Obj(); + auto info = Ptr(new AttributeInfoImpl(attributeType)); + + for (vint j = 0; j < attributeMetadata->values.Count(); j++) + { + auto&& valueMetadata = attributeMetadata->values[j]; + CHECK_ERROR(0 <= valueMetadata->typeDescriptor && valueMetadata->typeDescriptor < context->tds.Count(), ERROR_MESSAGE_PREFIX L"Failed to resolve the reflected value type of an attribute argument."); + auto reflectedValueType = context->tds[valueMetadata->typeDescriptor].Obj(); + + if (itdTd != nullptr && reflectedValueType == itdTd) + { + if (valueMetadata->typeDescriptorValue >= 0) + { + CHECK_ERROR(valueMetadata->typeDescriptorValue < context->tds.Count(), ERROR_MESSAGE_PREFIX L"Failed to resolve the ITypeDescriptor* attribute value."); + auto referencedTd = context->tds[valueMetadata->typeDescriptorValue].Obj(); + auto value = Value::From(dynamic_cast(referencedTd)); + info->AddValue(reflectedValueType, value); + } + else + { + info->AddValue(reflectedValueType, Value()); + } + } + else + { + auto serializableType = reflectedValueType->GetSerializableType(); + CHECK_ERROR(serializableType != nullptr, ERROR_MESSAGE_PREFIX L"Failed to resolve the serializable type of an attribute argument."); + + Value value; + CHECK_ERROR(serializableType->Deserialize(valueMetadata->data, value), ERROR_MESSAGE_PREFIX L"Failed to deserialize an attribute argument."); + value = Value::From(value.GetBoxedValue(), reflectedValueType); + info->AddValue(reflectedValueType, value); + } + } + + source->RegisterAttribute(memberInfo, info); + } +#undef ERROR_MESSAGE_PREFIX + } + /*********************************************************************** GenerateMetaonlyTypes ***********************************************************************/ @@ -1753,6 +2006,7 @@ GenerateMetaonlyTypes metadata->constructorGroup.count = metadata->methods.Count() - metadata->constructorGroup.start; } + GenerateMetaonlyAttributes(*writer.context.Obj(), metadata->attributes, td); writer << metadata; } @@ -1776,10 +2030,12 @@ GenerateMetaonlyTypes auto piMetadata = Ptr(new ParameterInfoMetadata); piMetadata->name = pi->GetName(); piMetadata->type = Ptr(new MetaonlyTypeInfo(*writer.context.Obj(), pi->GetType())); + GenerateMetaonlyAttributes(*writer.context.Obj(), piMetadata->attributes, pi); metadata->parameters.Add(piMetadata); } metadata->returnType = Ptr(new MetaonlyTypeInfo(*writer.context.Obj(), mi->GetReturn())); metadata->isStatic = mi->IsStatic(); + GenerateMetaonlyAttributes(*writer.context.Obj(), metadata->attributes, mi); writer << metadata; } @@ -1807,6 +2063,7 @@ GenerateMetaonlyTypes { metadata->valueChangedEvent = writer.context->eiIndex[ei]; } + GenerateMetaonlyAttributes(*writer.context.Obj(), metadata->attributes, pi); writer << metadata; } @@ -1826,6 +2083,7 @@ GenerateMetaonlyTypes { metadata->observingProperties.Add(writer.context->piIndex[ei->GetObservingProperty(i)]); } + GenerateMetaonlyAttributes(*writer.context.Obj(), metadata->attributes, ei); writer << metadata; } @@ -1963,11 +2221,19 @@ LoadMetaonlyTypes vint eiCount = 0; reader << tdCount << miCount << piCount << eiCount; - for (vint i = 0; i < tdCount; i++) { - Ptr metadata; - reader << metadata; - context->tds.Add(Ptr(new MetaonlyTypeDescriptor(context.Obj(), metadata))); + auto itdTypeName = WString::Unmanaged(TypeInfo::content.typeName); + for (vint i = 0; i < tdCount; i++) + { + Ptr metadata; + reader << metadata; + auto td = Ptr(new MetaonlyTypeDescriptor(context.Obj(), metadata)); + if (td->GetTypeName() == itdTypeName) + { + context->itdTd = td.Obj(); + } + context->tds.Add(td); + } } for (vint i = 0; i < miCount; i++) { @@ -1989,6 +2255,48 @@ LoadMetaonlyTypes } } +#define ERROR_MESSAGE_PREFIX L"vl::reflection::description::LoadMetaonlyTypes(stream::IStream&, const collections::Dictionary>&)#" + for (vint i = 0; i < context->tds.Count(); i++) + { + auto td = context->tds[i].Obj(); + auto source = dynamic_cast(td); + CHECK_ERROR(source != nullptr, ERROR_MESSAGE_PREFIX L"Metaonly type descriptors must provide attribute storage."); + auto metadata = dynamic_cast(td)->GetMetadata(); + LoadMetaonlyAttributes(context.Obj(), source, nullptr, metadata->attributes, context->itdTd); + } + + for (vint i = 0; i < context->mis.Count(); i++) + { + auto method = context->mis[i].Obj(); + auto source = dynamic_cast(method->GetOwnerTypeDescriptor()); + CHECK_ERROR(source != nullptr, ERROR_MESSAGE_PREFIX L"Method owner type descriptors must provide attribute storage."); + auto metadata = dynamic_cast(method)->GetMetadata(); + LoadMetaonlyAttributes(context.Obj(), source, method, metadata->attributes, context->itdTd); + for (vint j = 0; j < method->GetParameterCount(); j++) + { + LoadMetaonlyAttributes(context.Obj(), source, method->GetParameter(j), metadata->parameters[j]->attributes, context->itdTd); + } + } + + for (vint i = 0; i < context->pis.Count(); i++) + { + auto property = context->pis[i].Obj(); + auto source = dynamic_cast(property->GetOwnerTypeDescriptor()); + CHECK_ERROR(source != nullptr, ERROR_MESSAGE_PREFIX L"Property owner type descriptors must provide attribute storage."); + auto metadata = dynamic_cast(property)->GetMetadata(); + LoadMetaonlyAttributes(context.Obj(), source, property, metadata->attributes, context->itdTd); + } + + for (vint i = 0; i < context->eis.Count(); i++) + { + auto eventInfo = context->eis[i].Obj(); + auto source = dynamic_cast(eventInfo->GetOwnerTypeDescriptor()); + CHECK_ERROR(source != nullptr, ERROR_MESSAGE_PREFIX L"Event owner type descriptors must provide attribute storage."); + auto metadata = dynamic_cast(eventInfo)->GetMetadata(); + LoadMetaonlyAttributes(context.Obj(), source, eventInfo, metadata->attributes, context->itdTd); + } +#undef ERROR_MESSAGE_PREFIX + return loader; } } @@ -1997,6 +2305,7 @@ LoadMetaonlyTypes #endif + /*********************************************************************** .\DESCRIPTABLEOBJECT.CPP ***********************************************************************/ @@ -3089,10 +3398,77 @@ GenericTypeInfo genericArguments.Add(value); } +/*********************************************************************** +AttributeInfoImpl +***********************************************************************/ + + AttributeInfoImpl::AttributeInfoImpl(ITypeDescriptor* _attributeType) + :attributeType(_attributeType) + { + } + + ITypeDescriptor* AttributeInfoImpl::GetAttributeType() + { + return attributeType; + } + + vint AttributeInfoImpl::GetAttributeValueCount() + { + return values.Count(); + } + + ITypeDescriptor* AttributeInfoImpl::GetAttributeValueType(vint index) + { + return values[index].key; + } + + Value AttributeInfoImpl::GetAttributeValue(vint index) + { + return values[index].value; + } + + void AttributeInfoImpl::AddValue(ITypeDescriptor* valueType, const Value& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::reflection::description::AttributeInfoImpl::AddValue(ITypeDescriptor*, const Value&)#" + CHECK_ERROR(valueType != nullptr, ERROR_MESSAGE_PREFIX L"valueType should not be null."); + if (valueType->GetSerializableType()) + { + // serializable type, no additional validation needed + } + else + { + CHECK_ERROR( + value.GetValueType() == Value::RawPtr || value.GetValueType() == Value::Null, + ERROR_MESSAGE_PREFIX L"ITypeDescriptor* attribute value must be a raw pointer or null." + ); + } +#undef ERROR_MESSAGE_PREFIX + values.Add({ valueType,value }); + } + #endif #ifndef VCZH_DEBUG_NO_REFLECTION +/*********************************************************************** +AttributeBagSource +***********************************************************************/ + + void AttributeBagSource::RegisterAttribute(IMemberInfo* memberInfo, Ptr info) + { + attributes.Add(memberInfo, info); + } + + IMemberInfo* AttributeBagSource::GetLastRegisteredMember()const + { + return lastRegisteredMember; + } + + void AttributeBagSource::SetLastRegisteredMember(IMemberInfo* member) + { + lastRegisteredMember = member; + } + /*********************************************************************** TypeDescriptorImplBase ***********************************************************************/ @@ -3107,6 +3483,10 @@ TypeDescriptorImplBase return typeInfoContent; } + void TypeDescriptorImplBase::LoadForAttributeAccess() + { + } + TypeDescriptorImplBase::TypeDescriptorImplBase(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent) :typeDescriptorFlags(_typeDescriptorFlags) , typeInfoContent(_typeInfoContent) @@ -3129,6 +3509,18 @@ TypeDescriptorImplBase { } + vint TypeDescriptorImplBase::GetAttributeCount() + { + LoadForAttributeAccess(); + return GetAttributeCountInternal(nullptr); + } + + IAttributeInfo* TypeDescriptorImplBase::GetAttribute(vint index) + { + LoadForAttributeAccess(); + return GetAttributeInternal(nullptr, index); + } + ITypeDescriptor::ICpp* TypeDescriptorImplBase::GetCpp() { return typeInfoContent->cppName == TypeInfoContent::VlppType ? nullptr : this; @@ -3161,6 +3553,11 @@ ValueTypeDescriptorBase } } + void ValueTypeDescriptorBase::LoadForAttributeAccess() + { + Load(); + } + ValueTypeDescriptorBase::ValueTypeDescriptorBase(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent) :TypeDescriptorImplBase(_typeDescriptorFlags, _typeInfoContent) , loaded(false) @@ -3468,6 +3865,16 @@ MethodGroupInfoImpl { } + vint MethodGroupInfoImpl::GetAttributeCount() + { + return 0; + } + + IAttributeInfo* MethodGroupInfoImpl::GetAttribute(vint index) + { + return nullptr; + } + ITypeDescriptor* MethodGroupInfoImpl::GetOwnerTypeDescriptor() { return ownerTypeDescriptor; @@ -3883,12 +4290,14 @@ TypeDescriptorImpl IPropertyInfo* TypeDescriptorImpl::AddProperty(Ptr value) { properties.Add(value->GetName(), value); + SetLastRegisteredMember(value.Obj()); return value.Obj(); } IEventInfo* TypeDescriptorImpl::AddEvent(Ptr value) { events.Add(value->GetName(), value); + SetLastRegisteredMember(value.Obj()); return value.Obj(); } @@ -3897,6 +4306,7 @@ TypeDescriptorImpl MethodGroupInfoImpl* methodGroup=PrepareMethodGroup(name); value->SetOwnerMethodgroup(methodGroup); methodGroup->AddMethod(value); + SetLastRegisteredMember(value.Obj()); return value.Obj(); } @@ -3905,6 +4315,7 @@ TypeDescriptorImpl MethodGroupInfoImpl* methodGroup=PrepareConstructorGroup(); value->SetOwnerMethodgroup(methodGroup); methodGroup->AddMethod(value); + SetLastRegisteredMember(value.Obj()); return value.Obj(); } @@ -3922,6 +4333,11 @@ TypeDescriptorImpl } } + void TypeDescriptorImpl::LoadForAttributeAccess() + { + Load(); + } + TypeDescriptorImpl::TypeDescriptorImpl(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent) :TypeDescriptorImplBase(_typeDescriptorFlags, _typeInfoContent) ,loaded(false) @@ -4182,6 +4598,7 @@ TypeDescriptorImpl } } + /*********************************************************************** .\PREDEFINED\PREDEFINEDTYPES.CPP ***********************************************************************/ @@ -4609,6 +5026,8 @@ TypeName 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::IAttributeInfo, system::reflection::AttributeInfo) + IMPL_TYPE_INFO_RENAME(vl::reflection::description::IAttributeBag, system::reflection::AttributeBag) 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) @@ -4880,9 +5299,22 @@ LoadPredefinedTypes ENUM_NAMESPACE_ITEM(Nullable) ENUM_NAMESPACE_ITEM(TypeDescriptor) ENUM_NAMESPACE_ITEM(Generic) - END_ENUM_ITEM(ITypeInfo::Decorator) + END_ENUM_ITEM(ITypeInfo::Decorator) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IAttributeInfo) + CLASS_MEMBER_PROPERTY_READONLY_FAST(AttributeType) + CLASS_MEMBER_PROPERTY_READONLY_FAST(AttributeValueCount) + CLASS_MEMBER_METHOD(GetAttributeValueType, { L"index" }) + CLASS_MEMBER_METHOD(GetAttributeValue, { L"index" }) + END_INTERFACE_MEMBER(IAttributeInfo) + + BEGIN_INTERFACE_MEMBER_NOPROXY(IAttributeBag) + CLASS_MEMBER_PROPERTY_READONLY_FAST(AttributeCount) + CLASS_MEMBER_METHOD(GetAttribute, { L"index" }) + END_INTERFACE_MEMBER(IAttributeBag) BEGIN_INTERFACE_MEMBER_NOPROXY(IMemberInfo) + CLASS_MEMBER_BASE(IAttributeBag) CLASS_MEMBER_PROPERTY_READONLY_FAST(OwnerTypeDescriptor) CLASS_MEMBER_PROPERTY_READONLY_FAST(Name) END_INTERFACE_MEMBER(IMemberInfo) @@ -4959,6 +5391,8 @@ LoadPredefinedTypes END_ENUM_ITEM(TypeDescriptorFlags) BEGIN_INTERFACE_MEMBER_NOPROXY(ITypeDescriptor) + CLASS_MEMBER_BASE(IAttributeBag) + CLASS_MEMBER_PROPERTY_READONLY_FAST(TypeDescriptorFlags) CLASS_MEMBER_PROPERTY_READONLY_FAST(TypeName) CLASS_MEMBER_PROPERTY_READONLY_FAST(ValueType) diff --git a/Import/VlppReflection.h b/Import/VlppReflection.h index 514d1ac6..fc7032ae 100644 --- a/Import/VlppReflection.h +++ b/Import/VlppReflection.h @@ -488,6 +488,22 @@ DescriptableObject /// CLASS_MEMBER_METHOD(SetX, {L"value"}) /// CLASS_MEMBER_PROPERTY_EVENT(X, GetX, SetX, XChanged) /// + /// // 22) Attach an attribute to the type itself. The attribute type must be a reflected struct. + /// // Each argument must be a serializable primitive value. Zero arguments are allowed. + /// ATTRIBUTE_TYPE(MyAttribute, L"name", 100) + /// ATTRIBUTE_TYPE(EmptyAttribute) + /// + /// // 23) Attach an attribute to the most recently registered member (field, property, event, method, or constructor). + /// // Must appear after the member registration macro it decorates. + /// CLASS_MEMBER_FIELD(fieldValue) + /// ATTRIBUTE_MEMBER(MyAttribute, L"field", 1) + /// ATTRIBUTE_MEMBER(EmptyAttribute) + /// + /// // 24) Attach an attribute to a named parameter of the most recently registered method or constructor. + /// // The parameter name must match exactly one parameter. + /// CLASS_MEMBER_METHOD(MyFunction2, {L"parameter1" _ L"parameter2"}) + /// ATTRIBUTE_PARAMETER(L"parameter1", MyAttribute, L"param", 2) + /// /// END_CLASS_MEMBER(MyClass) /// ]]> ///

@@ -2051,7 +2067,23 @@ ITypeDescriptor (type) ITypeDescriptor (basic) ***********************************************************************/ - class IMemberInfo : public virtual IDescriptable, public Description + class IAttributeInfo : public virtual IDescriptable, public Description + { + public: + virtual ITypeDescriptor* GetAttributeType() = 0; + virtual vint GetAttributeValueCount() = 0; + virtual ITypeDescriptor* GetAttributeValueType(vint index) = 0; + virtual Value GetAttributeValue(vint index) = 0; + }; + + class IAttributeBag : public virtual IDescriptable, public Description + { + public: + virtual vint GetAttributeCount() = 0; + virtual IAttributeInfo* GetAttribute(vint index) = 0; + }; + + class IMemberInfo : public virtual IAttributeBag, public Description { public: virtual ITypeDescriptor* GetOwnerTypeDescriptor()=0; @@ -2249,7 +2281,7 @@ ITypeDescriptor } /// Metadata class for reflectable types. - class ITypeDescriptor : public virtual IDescriptable, public Description + class ITypeDescriptor : public virtual IAttributeBag, public Description { public: class ICpp : public virtual IDescriptable, public Description @@ -4143,15 +4175,98 @@ TypeInfoImp void AddGenericArgument(Ptr value); }; + class AttributeInfoImpl : public Object, public IAttributeInfo + { + using TypeValuePair = collections::Pair; + protected: + ITypeDescriptor* attributeType = nullptr; + collections::List values; + public: + AttributeInfoImpl(ITypeDescriptor* _attributeType); + + ITypeDescriptor* GetAttributeType()override; + vint GetAttributeValueCount()override; + ITypeDescriptor* GetAttributeValueType(vint index)override; + Value GetAttributeValue(vint index)override; + void AddValue(ITypeDescriptor* valueType, const Value& value); + }; + #endif #ifndef VCZH_DEBUG_NO_REFLECTION +/*********************************************************************** +MemberInfoBase +***********************************************************************/ + + template + class MemberInfoBase; + + class AttributeBagSource : public Object + { + template + friend class MemberInfoBase; + protected: + collections::Group> attributes; + IMemberInfo* lastRegisteredMember = nullptr; + + virtual vint GetAttributeCountInternal(IMemberInfo* memberInfo) + { + if (!attributes.Contains(memberInfo)) + { + return 0; + } + return attributes.Get(memberInfo).Count(); + } + + virtual IAttributeInfo* GetAttributeInternal(IMemberInfo* memberInfo, vint index) + { + if (!attributes.Contains(memberInfo)) + { + return nullptr; + } + auto&& infos = attributes.Get(memberInfo); + return 0 <= index && index < infos.Count() ? infos[index].Obj() : nullptr; + } + public: + void RegisterAttribute(IMemberInfo* memberInfo, Ptr info); + IMemberInfo* GetLastRegisteredMember()const; + void SetLastRegisteredMember(IMemberInfo* member); + }; + + template + class MemberInfoBase : public Object, public TMemberInfo + { + protected: + + AttributeBagSource* GetAttributeBagSource() + { +#define ERROR_MESSAGE_PREFIX L"vl::reflection::description::MemberInfoBase::GetAttributeBagSource()#" + auto owner = this->GetOwnerTypeDescriptor(); + CHECK_ERROR(owner, ERROR_MESSAGE_PREFIX L"GetOwnerTypeDescriptor() should not return nullptr."); + auto source = dynamic_cast(owner); + CHECK_ERROR(source, ERROR_MESSAGE_PREFIX L"GetOwnerTypeDescriptor() should be an AttributeBagSource instance."); + return source; +#undef ERROR_MESSAGE_PREFIX + } + + public: + vint GetAttributeCount() + { + return GetAttributeBagSource()->GetAttributeCountInternal(this); + } + + IAttributeInfo* GetAttribute(vint index) + { + return GetAttributeBagSource()->GetAttributeInternal(this, index); + } + }; + /*********************************************************************** SerializableTypeDescriptor ***********************************************************************/ - class TypeDescriptorImplBase : public Object, public ITypeDescriptor, private ITypeDescriptor::ICpp + class TypeDescriptorImplBase : public AttributeBagSource, public ITypeDescriptor, private ITypeDescriptor::ICpp { private: TypeDescriptorFlags typeDescriptorFlags; @@ -4163,11 +4278,14 @@ SerializableTypeDescriptor protected: const TypeInfoContent* GetTypeInfoContentInternal(); + virtual void LoadForAttributeAccess(); public: TypeDescriptorImplBase(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent); ~TypeDescriptorImplBase(); + vint GetAttributeCount()override; + IAttributeInfo* GetAttribute(vint index)override; ITypeDescriptor::ICpp* GetCpp()override; TypeDescriptorFlags GetTypeDescriptorFlags()override; const WString& GetTypeName()override; @@ -4183,6 +4301,7 @@ SerializableTypeDescriptor virtual void LoadInternal();; void Load(); + void LoadForAttributeAccess()override; public: ValueTypeDescriptorBase(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent); ~ValueTypeDescriptorBase(); @@ -4224,7 +4343,7 @@ SerializableTypeDescriptor ParameterInfoImpl ***********************************************************************/ - class ParameterInfoImpl : public Object, public IParameterInfo + class ParameterInfoImpl : public MemberInfoBase { protected: IMethodInfo* ownerMethod; @@ -4244,7 +4363,7 @@ ParameterInfoImpl MethodInfoImpl ***********************************************************************/ - class MethodInfoImpl : public Object, public IMethodInfo + class MethodInfoImpl : public MemberInfoBase { friend class PropertyInfoImpl; protected: @@ -4289,6 +4408,9 @@ MethodGroupInfoImpl MethodGroupInfoImpl(ITypeDescriptor* _ownerTypeDescriptor, const WString& _name); ~MethodGroupInfoImpl(); + vint GetAttributeCount()override; + IAttributeInfo* GetAttribute(vint index)override; + ITypeDescriptor* GetOwnerTypeDescriptor()override; const WString& GetName()override; vint GetMethodCount()override; @@ -4300,7 +4422,7 @@ MethodGroupInfoImpl EventInfoImpl ***********************************************************************/ - class EventInfoImpl : public Object, public IEventInfo + class EventInfoImpl : public MemberInfoBase { friend class PropertyInfoImpl; @@ -4332,7 +4454,7 @@ EventInfoImpl TypeDescriptorImpl ***********************************************************************/ - class PropertyInfoImpl : public Object, public IPropertyInfo + class PropertyInfoImpl : public MemberInfoBase { protected: ITypeDescriptor* ownerTypeDescriptor; @@ -4378,7 +4500,7 @@ TypeDescriptorImpl FieldInfoImpl ***********************************************************************/ - class FieldInfoImpl : public Object, public IPropertyInfo + class FieldInfoImpl : public MemberInfoBase { protected: ITypeDescriptor* ownerTypeDescriptor; @@ -4428,6 +4550,7 @@ TypeDescriptorImpl virtual void LoadInternal()=0; void Load(); + void LoadForAttributeAccess()override; public: TypeDescriptorImpl(TypeDescriptorFlags _typeDescriptorFlags, const TypeInfoContent* _typeInfoContent); ~TypeDescriptorImpl(); @@ -4715,6 +4838,13 @@ StructTypeDescriptor collections::Dictionary> fields; public: + IPropertyInfo* AddField(Ptr value) + { + fields.Add(value->GetName(), value); + this->SetLastRegisteredMember(value.Obj()); + return value.Obj(); + } + StructTypeDescriptor() { this->valueType = Ptr(new StructValueType()); @@ -7324,6 +7454,81 @@ namespace vl template using FUNCTIONNAME_AddPointer = T*; +#ifndef VCZH_DEBUG_NO_REFLECTION + + namespace detail + { + namespace attribute_macro + { + template + struct BoxingProxy + { + AttributeInfoImpl* info; + TArg&& value; + + template + operator FieldType() + { + FieldType field(std::forward(value)); + if constexpr (std::is_pointer_v>) + { + using PointedType = std::remove_pointer_t>; + auto valueType = description::GetTypeDescriptor(); + auto boxed = BoxValue>(field); + info->AddValue(valueType, boxed); + } + else + { + auto boxed = BoxValue>(field); + auto valueType = boxed.GetTypeDescriptor(); + info->AddValue(valueType, boxed); + } + return field; + } + }; + + template + Ptr MakeAttributeInfo(TArgs&&... args) + { + static_assert(requires { TAttribute{ std::forward(args)... }; }, "ATTRIBUTE_* requires TYPE{ARG1, ...} to compile."); + + auto attributeType = description::GetTypeDescriptor(); + CHECK_ERROR(attributeType != nullptr, L"ATTRIBUTE_*#Failed to resolve the reflected attribute type."); + CHECK_ERROR(attributeType->GetTypeDescriptorFlags() == TypeDescriptorFlags::Struct, L"ATTRIBUTE_*#Attribute type must be a reflected struct."); + + auto info = Ptr(new AttributeInfoImpl(attributeType)); + if constexpr (sizeof...(TArgs) > 0) + { + // Actual field types will be applied by calling BoxingProxy::operator FieldType() in the constructor + // During the conversion, the expected attribute argument type can be retrieved to construct IAttributeInfo + TAttribute{ BoxingProxy{info.Obj(), std::forward(args)}... }; + } + return info; + } + + inline IParameterInfo* FindParameter(IMethodInfo* method, const WString& parameterName, const wchar_t* macroName) + { + vint matchedCount = 0; + IParameterInfo* matchedParameter = nullptr; + for (vint i = 0; i < method->GetParameterCount(); i++) + { + auto parameter = method->GetParameter(i); + if (parameter->GetName() == parameterName) + { + matchedCount++; + matchedParameter = parameter; + } + } + + CHECK_ERROR(matchedCount != 0, (WString::Unmanaged(macroName) + L"#The named parameter does not exist on the last registered method.").Buffer()); + CHECK_ERROR(matchedCount == 1, (WString::Unmanaged(macroName) + L"#The named parameter is ambiguous on the last registered method.").Buffer()); + return matchedParameter; + } + } + } + +#endif + /*********************************************************************** Type ***********************************************************************/ @@ -7486,7 +7691,7 @@ Struct }; #define STRUCT_MEMBER(FIELDNAME)\ - fields.Add(L ## #FIELDNAME, Ptr(new StructFieldInfoFIELDNAME)>(this, &StructType::FIELDNAME, L ## #FIELDNAME))); + AddField(Ptr(new StructFieldInfoFIELDNAME)>(this, &StructType::FIELDNAME, L ## #FIELDNAME))); /*********************************************************************** Class @@ -7528,6 +7733,28 @@ Class };\ }; +#ifndef VCZH_DEBUG_NO_REFLECTION + +#define ATTRIBUTE_TYPE(TYPE, ...)\ + RegisterAttribute(nullptr, detail::attribute_macro::MakeAttributeInfo(__VA_ARGS__)); + +#define ATTRIBUTE_MEMBER(TYPE, ...)\ + {\ + auto attributeTargetMember = GetLastRegisteredMember();\ + CHECK_ERROR(attributeTargetMember != nullptr, L"ATTRIBUTE_MEMBER#This macro must appear after a reflected member.");\ + RegisterAttribute(attributeTargetMember, detail::attribute_macro::MakeAttributeInfo(__VA_ARGS__));\ + } + +#define ATTRIBUTE_PARAMETER(PARAMETER_NAME, TYPE, ...)\ + {\ + auto attributeTargetMethod = dynamic_cast(GetLastRegisteredMember());\ + CHECK_ERROR(attributeTargetMethod != nullptr, L"ATTRIBUTE_PARAMETER#This macro must appear after a reflected method or constructor.");\ + auto attributeTargetParameter = detail::attribute_macro::FindParameter(attributeTargetMethod, WString::Unmanaged(PARAMETER_NAME), L"ATTRIBUTE_PARAMETER");\ + RegisterAttribute(attributeTargetParameter, detail::attribute_macro::MakeAttributeInfo(__VA_ARGS__));\ + } + +#endif + /*********************************************************************** Interface ***********************************************************************/ @@ -7854,6 +8081,8 @@ Predefined Types F(ISerializableType) \ F(ITypeInfo) \ F(ITypeInfo::Decorator) \ + F(IAttributeInfo) \ + F(IAttributeBag) \ F(IMemberInfo) \ F(IEventHandler) \ F(IEventInfo) \ diff --git a/Import/VlppWorkflowCompiler.cpp b/Import/VlppWorkflowCompiler.cpp index 502bdf28..4292d077 100644 --- a/Import/VlppWorkflowCompiler.cpp +++ b/Import/VlppWorkflowCompiler.cpp @@ -382,11 +382,6 @@ WfLexicalScopeManager , cpuArchitecture(_cpuArchitecture) { workflowParserHandler = glr::InstallDefaultErrorMessageGenerator(workflowParser, errors); - attributes.Add({ L"cpp", L"File" }, TypeInfoRetriver::CreateTypeInfo()); - attributes.Add({ L"cpp", L"UserImpl" }, TypeInfoRetriver::CreateTypeInfo()); - attributes.Add({ L"cpp", L"Private" }, TypeInfoRetriver::CreateTypeInfo()); - attributes.Add({ L"cpp", L"Protected" }, TypeInfoRetriver::CreateTypeInfo()); - attributes.Add({ L"cpp", L"Friend" }, TypeInfoRetriver::CreateTypeInfo()); switch (cpuArchitecture) { @@ -416,6 +411,75 @@ WfLexicalScopeManager workflowParser.OnError.Remove(workflowParserHandler); } + WString WfLexicalScopeManager::GetWorkflowAttributeTypeName(const WString& category, const WString& name) + { + auto IsId = [](const WString& s) + { + for (vint i = 0; i < s.Length(); i++) + { + auto c = s[i]; + if (!((c >= L'0' && c <= L'9') || (c >= L'a' && c <= L'z') || (c >= L'A' && c <= L'Z') || c == L'_')) + { + return false; + } + } + return s.Length() > 0; + }; + + if (!IsId(category) || !IsId(name)) return L""; + return L"system::workflow_attributes::att_" + category + L"_" + name; + } + + WfLexicalScopeManager::ResolvedWorkflowAttribute WfLexicalScopeManager::ResolveWorkflowAttribute(const WString& category, const WString& name) + { + ResolvedWorkflowAttribute info; + auto key = AttributeKey(category, name); + if (auto index = resolvedAttributes.Keys().IndexOf(key); index != -1) + { + return resolvedAttributes.Values()[index]; + } + + auto typeName = GetWorkflowAttributeTypeName(category, name); + if (typeName == L"") + { + resolvedAttributes.Add(key, info); + return info; + } + + auto td = reflection::description::GetTypeDescriptor(typeName); + if (!td || td->GetTypeDescriptorFlags() != TypeDescriptorFlags::Struct) + { + resolvedAttributes.Add(key, info); + return info; + } + + auto propCount = td->GetPropertyCount(); + if (propCount == 0) + { + info.exists = true; + info.attributeType = td; + info.hasArgument = false; + info.argumentType = nullptr; + } + else if (propCount == 1) + { + info.exists = true; + info.attributeType = td; + info.hasArgument = true; + info.argumentType = CopyTypeInfo(td->GetProperty(0)->GetReturn()); + } + else + { + info.exists = false; + info.attributeType = nullptr; + info.hasArgument = false; + info.argumentType = nullptr; + } + + resolvedAttributes.Add(key, info); + return info; + } + vint WfLexicalScopeManager::AddModule(const WString& moduleCode) { if (auto module = ParseModule(moduleCode, workflowParser, usedCodeIndex)) @@ -466,8 +530,10 @@ WfLexicalScopeManager usedCodeIndex = 0; } + rpcMetadata = nullptr; usedTempVars = 0; errors.Clear(); + resolvedAttributes.Clear(); namespaceNames.Clear(); nodeScopes.Clear(); checkedScopes_DuplicatedSymbol.Clear(); @@ -493,7 +559,7 @@ WfLexicalScopeManager #define EXECUTE_CALLBACK(EXPR) if (callback) callback->EXPR - void WfLexicalScopeManager::Rebuild(bool keepTypeDescriptorNames, IWfCompilerCallback* callback) + void WfLexicalScopeManager::Rebuild(bool keepTypeDescriptorNames, IWfCompilerCallback* callback, bool validateRpc) { EXECUTE_CALLBACK(OnLoadEnvironment()); Clear(keepTypeDescriptorNames, false); @@ -543,6 +609,16 @@ WfLexicalScopeManager ValidateModuleSemantic(this, module); } + EXIT_IF_ERRORS_EXIST; + PopulateAttributesOnTypeDescriptors(this); + if (validateRpc) + { + for (auto module : modules) + { + ValidateModuleRPC(this, module); + } + } + #undef EXIT_IF_ERRORS_EXIST } @@ -835,6 +911,7 @@ WfLexicalScopeManager } } + /*********************************************************************** .\ANALYZER\WFANALYZER_BUILDGLOBALNAMEFROMMODULES.CPP ***********************************************************************/ @@ -1404,10 +1481,20 @@ BuildScopeForDeclaration { auto config = Ptr(new WfLexicalFunctionConfig); resultScope->functionConfig = config; + resultScope->ownerNodeSource = source; - config->lambda = false; - config->thisAccessable = true; - config->parentThisAccessable = false; + if (dynamic_cast(source)) + { + config->lambda = true; + config->thisAccessable = true; + config->parentThisAccessable = true; + } + else + { + config->lambda = false; + config->thisAccessable = true; + config->parentThisAccessable = false; + } } BuildScopeForStatement(manager, resultScope, node->statement); } @@ -2059,6 +2146,11 @@ BuildScopeForExpression { manager->CreateLambdaCapture(node, capture); } + + void Visit(WfDestructorDeclaration* node)override + { + manager->CreateLambdaCapture(node, capture); + } }; void Visit(WfNewInterfaceExpression* node)override @@ -4497,6 +4589,11 @@ WfErrors return MakeParsingError(node, L"G13: Class \"" + classDecl->name.value + L"\" has too many destructors."); } + glr::ParsingError WfErrors::TooManyDestructor(WfDestructorDeclaration* node, WfNewInterfaceExpression* newInterfaceExpr) + { + return MakeParsingError(node, L"G13: New interface expression has too many destructors."); + } + glr::ParsingError WfErrors::AutoPropertyShouldBeInitialized(WfAutoPropertyDeclaration* node) { return MakeParsingError(node, L"G13: Auto property \"" + node->name.value + L"\" should be initialized."); @@ -4507,6 +4604,96 @@ WfErrors return MakeParsingError(node, L"G13: Auto property \"" + node->name.value + L"\" cannot be initialized in interface \"" + classDecl->name.value + L"\"."); } + glr::ParsingError WfErrors::RpcInterfaceCanOnlyApplyToInterface(WfAttribute* node, const WString& fullName) + { + return MakeParsingError(node, L"H0: @rpc:Interface can only apply to an interface definition, but not \"" + fullName + L"\"."); + } + + glr::ParsingError WfErrors::RpcInterfaceBaseNotSerializable(WfType* node, const WString& interfaceFullName, const WString& baseFullName) + { + return MakeParsingError(node, L"H1: @rpc:Interface cannot be applied to interface \"" + interfaceFullName + L"\" because its base type \"" + baseFullName + L"\" is not serializable."); + } + + glr::ParsingError WfErrors::RpcInterfaceMemberNotSerializable(WfDeclaration* node, const WString& interfaceFullName, const WString& memberName) + { + return MakeParsingError(node, L"H2: @rpc:Interface cannot be applied to interface \"" + interfaceFullName + L"\" because its member \"" + memberName + L"\" is not serializable."); + } + + glr::ParsingError WfErrors::RpcInterfaceMemberNotSerializable(WfFunctionArgument* node, const WString& interfaceFullName, const WString& memberName) + { + return MakeParsingError(node, L"H2: @rpc:Interface cannot be applied to interface \"" + interfaceFullName + L"\" because its member \"" + memberName + L"\" is not serializable."); + } + + glr::ParsingError WfErrors::RpcCtorCanOnlyApplyToRpcInterface(WfAttribute* node) + { + return MakeParsingError(node, L"H3: @rpc:Ctor can only apply to an interface definition with @rpc:Interface."); + } + + glr::ParsingError WfErrors::RpcAttributeCanOnlyApplyToPropertyMethodOrParameter(WfAttribute* node, const WString& attributeName) + { + return MakeParsingError(node, L"H4: @rpc:" + attributeName + L" can only apply to a property, a method or a parameter."); + } + + glr::ParsingError WfErrors::RpcAttributeCanOnlyBeUsedInsideRpcInterface(WfAttribute* node, const WString& attributeName) + { + return MakeParsingError(node, L"H5: @rpc:" + attributeName + L" can only be used inside an interface type with @rpc:Interface."); + } + + glr::ParsingError WfErrors::RpcAttributeRequiresStrongTypedCollection(WfAttribute* node, const WString& attributeName, const WString& memberName) + { + return MakeParsingError(node, L"H6: @rpc:" + attributeName + L" cannot be used on member \"" + memberName + L"\" because it does not have a strong typed collection types."); + } + + glr::ParsingError WfErrors::RpcAttributeCanOnlyApplyToProperty(WfAttribute* node, const WString& attributeName) + { + return MakeParsingError(node, L"H7: @rpc:" + attributeName + L" can only apply to a property."); + } + + glr::ParsingError WfErrors::RpcAttributeCannotCoexistWithOther(WfAttribute* node, const WString& attributeName, const WString& otherAttributeName, const WString& memberName) + { + return MakeParsingError(node, L"H8: @rpc:" + attributeName + L" cannot be used on member \"" + memberName + L"\" because it already has @rpc:" + otherAttributeName + L"."); + } + + glr::ParsingError WfErrors::RpcGeneratedNameConflict(WfDeclaration* node, const WString& category, const WString& generatedName) + { + return MakeParsingError(node, L"H9: RPC generated " + category + L" name \"" + generatedName + L"\" is duplicated."); + } + + glr::ParsingError WfErrors::RpcReservedTypeInReturnValue(WfDeclaration* node, const WString& interfaceFullName, const WString& memberName, const WString& typeName) + { + return MakeParsingError(node, L"H10: @rpc:Interface cannot be applied to interface \"" + interfaceFullName + L"\" because its member \"" + memberName + L"\" uses reserved RPC type \"" + typeName + L"\" in a return value."); + } + + glr::ParsingError WfErrors::RpcReservedTypeInFunctionArgument(WfFunctionArgument* node, const WString& interfaceFullName, const WString& memberName, const WString& typeName) + { + return MakeParsingError(node, L"H11: @rpc:Interface cannot be applied to interface \"" + interfaceFullName + L"\" because its function argument \"" + memberName + L"\" uses reserved RPC type \"" + typeName + L"\"."); + } + + glr::ParsingError WfErrors::RpcReservedTypeInEventArgument(WfType* node, const WString& interfaceFullName, const WString& memberName, const WString& typeName) + { + return MakeParsingError(node, L"H12: @rpc:Interface cannot be applied to interface \"" + interfaceFullName + L"\" because its event argument \"" + memberName + L"\" uses reserved RPC type \"" + typeName + L"\"."); + } + + glr::ParsingError WfErrors::RpcWrapperGenerationRequiresPropertyMode(WfPropertyDeclaration* node, const WString& memberName) + { + return MakeParsingError(node, L"I0: RPC wrapper generation requires property \"" + memberName + L"\" to have @rpc:Cached or @rpc:Dynamic."); + } + + glr::ParsingError WfErrors::RpcWrapperGenerationRequiresCollectionReturnTransfer(WfFunctionDeclaration* node, const WString& memberName) + { + return MakeParsingError(node, L"I1: RPC wrapper generation requires method \"" + memberName + L"\" to have @rpc:Byval or @rpc:Byref on its collection return value."); + } + + glr::ParsingError WfErrors::RpcWrapperGenerationRequiresCollectionParameterTransfer(WfFunctionArgument* node, const WString& memberName) + { + return MakeParsingError(node, L"I2: RPC wrapper generation requires parameter \"" + memberName + L"\" to have @rpc:Byval or @rpc:Byref because it is a collection parameter."); + } + + glr::ParsingError WfErrors::RpcMangledNameConflict(WfDeclaration* node, const WString& mangledName, const WString& previousFullName, const WString& currentFullName) + { + return MakeParsingError(node, L"I3: RPC mangled name \"" + mangledName + L"\" is ambiguous between \"" + previousFullName + L"\" and \"" + currentFullName + L"\"."); + } + glr::ParsingError WfErrors::CppUnableToDecideClassOrder(WfClassDeclaration* node, collections::List& tds) { auto description = ListToErrorMessage(tds, [](auto&& td) { return td->GetTypeName(); }); @@ -4522,6 +4709,7 @@ WfErrors } } + /*********************************************************************** .\ANALYZER\WFANALYZER_EXPANDBINDEXPRESSION.CPP ***********************************************************************/ @@ -9453,6 +9641,4482 @@ ExpandCoProviderStatement } } +/*********************************************************************** +.\ANALYZER\WFANALYZER_GENERATERPC.CPP +***********************************************************************/ + +namespace vl +{ + namespace workflow + { + namespace analyzer + { + using namespace collections; + + namespace rpc_generating + { + using namespace copy_visitor; + using namespace reflection::description; + + bool IsRpcAttribute(WfAttribute* attribute, const wchar_t* name) + { + return attribute + && attribute->category.value == L"rpc" + && attribute->name.value == name; + } + + bool HasRpcAttribute(List>& attributes, const wchar_t* name) + { + for (auto attribute : attributes) + { + if (IsRpcAttribute(attribute.Obj(), name)) + { + return true; + } + } + return false; + } + + bool HasAttribute(IAttributeBag* bag, ITypeDescriptor* attrTd) + { + if (!bag || !attrTd) + { + return false; + } + + for (vint i = 0; i < bag->GetAttributeCount(); i++) + { + if (bag->GetAttribute(i)->GetAttributeType() == attrTd) + { + return true; + } + } + return false; + } + + bool IsStrongTypedCollectionType(WfType* type) + { + return dynamic_cast(type) != nullptr + || dynamic_cast(type) != nullptr + || dynamic_cast(type) != nullptr; + } + + bool IsRpcStrongTypedCollection(ITypeInfo* type) + { + if (!type || type->GetDecorator() != ITypeInfo::SharedPtr) return false; + auto genericType = type->GetElementType(); + if (!genericType || genericType->GetDecorator() != ITypeInfo::Generic) return false; + + auto collectionType = genericType->GetElementType(); + if (!collectionType || collectionType->GetDecorator() != ITypeInfo::TypeDescriptor) return false; + + auto collectionTd = collectionType->GetTypeDescriptor(); + if (collectionTd == GetTypeDescriptor() + || collectionTd == GetTypeDescriptor() + || collectionTd == GetTypeDescriptor() + || collectionTd == GetTypeDescriptor()) + { + return genericType->GetGenericArgumentCount() == 1; + } + + if (collectionTd == GetTypeDescriptor() + || collectionTd == GetTypeDescriptor()) + { + return genericType->GetGenericArgumentCount() == 2; + } + + switch (type->GetHint()) + { + case TypeInfoHint::LazyList: + case TypeInfoHint::Array: + case TypeInfoHint::List: + return genericType->GetGenericArgumentCount() == 1; + case TypeInfoHint::Dictionary: + return genericType->GetGenericArgumentCount() == 2; + default: + return false; + } + } + + ITypeInfo* GetRpcStrongTypedCollectionElementType(ITypeInfo* type) + { + if (!IsRpcStrongTypedCollection(type)) return nullptr; + auto genericType = type->GetElementType(); + if (!genericType || genericType->GetDecorator() != ITypeInfo::Generic) return nullptr; + switch (genericType->GetGenericArgumentCount()) + { + case 1: + return genericType->GetGenericArgument(0); + case 2: + return genericType->GetGenericArgument(1); + default: + return nullptr; + } + } + + bool IsRpcObservableStrongTypedCollection(ITypeInfo* type) + { + if (!IsRpcStrongTypedCollection(type)) return false; + auto genericType = type->GetElementType(); + if (!genericType || genericType->GetDecorator() != ITypeInfo::Generic) return false; + auto collectionType = genericType->GetElementType(); + if (!collectionType || collectionType->GetDecorator() != ITypeInfo::TypeDescriptor) return false; + return collectionType->GetTypeDescriptor() == GetTypeDescriptor(); + } + + bool IsRpcInterfaceSharedType(ITypeInfo* type, const SortedList& rpcInterfaceTds) + { + if (!type || type->GetDecorator() != ITypeInfo::SharedPtr) return false; + auto elementType = type->GetElementType(); + if (!elementType || elementType->GetDecorator() != ITypeInfo::TypeDescriptor) return false; + auto td = elementType->GetTypeDescriptor(); + return td + && (td->GetTypeDescriptorFlags() & TypeDescriptorFlags::Interface) != TypeDescriptorFlags::Undefined + && rpcInterfaceTds.Contains(td); + } + + bool IsSharedInterfaceType(ITypeInfo* type) + { + if (!type || type->GetDecorator() != ITypeInfo::SharedPtr) return false; + auto elementType = type->GetElementType(); + if (!elementType) return false; + if (elementType->GetDecorator() == ITypeInfo::Generic) + { + elementType = elementType->GetElementType(); + } + if (!elementType || elementType->GetDecorator() != ITypeInfo::TypeDescriptor) return false; + auto td = elementType->GetTypeDescriptor(); + return td + && (td->GetTypeDescriptorFlags() & TypeDescriptorFlags::Interface) != TypeDescriptorFlags::Undefined; + } + + IMethodInfo* FindRpcMethodInfo(WfLexicalScopeManager* manager, WfClassDeclaration* interfaceDecl, WfFunctionDeclaration* methodDecl, ITypeDescriptor* typeDescriptor) + { + if (auto index = manager->declarationMemberInfos.Keys().IndexOf(methodDecl); index != -1) + { + if (auto methodInfo = dynamic_cast(manager->declarationMemberInfos.Values()[index].Obj())) + { + return methodInfo; + } + } + + if (!typeDescriptor) return nullptr; + auto group = typeDescriptor->GetMethodGroupByName(methodDecl->name.value, false); + if (!group) return nullptr; + + vint overloadIndex = 0; + for (auto declaration : interfaceDecl->declarations) + { + if (declaration.Obj() == methodDecl) + { + break; + } + if (auto previousMethod = declaration.Cast()) + { + if (previousMethod->name.value == methodDecl->name.value) + { + overloadIndex++; + } + } + } + return overloadIndex < group->GetMethodCount() ? group->GetMethod(overloadIndex) : nullptr; + } + + bool IsRpcStrongTypedCollectionContainingRpcInterface(ITypeInfo* type, const SortedList& rpcInterfaceTds) + { + auto elementType = GetRpcStrongTypedCollectionElementType(type); + if (!elementType) return false; + return IsRpcInterfaceSharedType(elementType, rpcInterfaceTds) + || IsRpcStrongTypedCollectionContainingRpcInterface(elementType, rpcInterfaceTds); + } + + bool IsDefaultRpcTransferByref(ITypeInfo* type, const SortedList& rpcInterfaceTds) + { + return IsRpcStrongTypedCollection(type) + && (IsRpcObservableStrongTypedCollection(type) + || IsRpcStrongTypedCollectionContainingRpcInterface(type, rpcInterfaceTds)); + } + + void SplitTypeFullName(const WString& typeFullName, List& fragments) + { + vint start = 0; + while (start <= typeFullName.Length()) + { + vint separator = -1; + for (vint i = start; i + 1 < typeFullName.Length(); i++) + { + if (typeFullName[i] == L':' && typeFullName[i + 1] == L':') + { + separator = i; + break; + } + } + if (separator == -1) + { + fragments.Add(typeFullName.Sub(start, typeFullName.Length() - start)); + break; + } + + fragments.Add(typeFullName.Sub(start, separator - start)); + start = separator + 2; + } + } + + WString MangleRpcFullName(const WString& fullName) + { + WString mangled; + for (vint i = 0; i < fullName.Length(); i++) + { + if (i + 1 < fullName.Length() && fullName[i] == L':' && fullName[i + 1] == L':') + { + mangled += L"__"; + i++; + } + else if (fullName[i] == L'.' || fullName[i] == L'(' || fullName[i] == L')' || fullName[i] == L',') + { + mangled += L"_"; + } + else + { + mangled += WString::FromChar(fullName[i]); + } + } + return mangled; + } + + WfDeclaration* FindRpcDeclaration(WfLexicalScopeManager* manager, const WString& fullName) + { + if (auto index = manager->rpcMetadata->typeNames.Keys().IndexOf(fullName); index != -1) + { + return manager->rpcMetadata->typeNames.Values()[index]; + } + if (auto index = manager->rpcMetadata->methodNames.Keys().IndexOf(fullName); index != -1) + { + return manager->rpcMetadata->methodNames.Values()[index]; + } + if (auto index = manager->rpcMetadata->eventNames.Keys().IndexOf(fullName); index != -1) + { + return manager->rpcMetadata->eventNames.Values()[index]; + } + return nullptr; + } + + template + WString FindFullName(const Dictionary& names, TDecl* declaration) + { + for (vint i = 0; i < names.Count(); i++) + { + if (names.Values()[i] == declaration) + { + return names.Keys()[i]; + } + } + return L""; + } + + ITypeDescriptor* FindRpcTypeDescriptor(WfLexicalScopeManager* manager, const WString& fullName) + { + for (vint i = 0; i < manager->declarationTypes.Count(); i++) + { + auto typeDescriptor = manager->declarationTypes.Values()[i].Obj(); + if (typeDescriptor && typeDescriptor->GetTypeName() == fullName) + { + return typeDescriptor; + } + } + return nullptr; + } + + Ptr CopyType(WfType* type) + { + AstVisitor copier; + return copier.CopyNode(type); + } + + Ptr CreatePredefinedType(WfPredefinedTypeName name) + { + auto type = Ptr(new WfPredefinedType); + type->name = name; + return type; + } + + Ptr CreateQualifiedType(const WString& fullName) + { + List fragments; + SplitTypeFullName(fullName, fragments); + if (fragments.Count() == 0) + { + return nullptr; + } + + Ptr type; + for (vint i = 0; i < fragments.Count(); i++) + { + if (i == 0) + { + auto top = Ptr(new WfReferenceType); + top->name.value = fragments[i]; + type = top; + } + else + { + auto child = Ptr(new WfChildType); + child->parent = type; + child->name.value = fragments[i]; + type = child; + } + } + return type; + } + + Ptr CreateTopQualifiedType(const WString& fullName) + { + List fragments; + SplitTypeFullName(fullName, fragments); + if (fragments.Count() == 0) + { + return nullptr; + } + + Ptr type; + for (vint i = 0; i < fragments.Count(); i++) + { + if (i == 0) + { + auto top = Ptr(new WfTopQualifiedType); + top->name.value = fragments[i]; + type = top; + } + else + { + auto child = Ptr(new WfChildType); + child->parent = type; + child->name.value = fragments[i]; + type = child; + } + } + return type; + } + + Ptr CreateSharedType(const WString& fullName) + { + auto type = Ptr(new WfSharedPointerType); + type->element = CreateQualifiedType(fullName); + return type; + } + + Ptr CreateRawType(const WString& fullName) + { + auto type = Ptr(new WfRawPointerType); + type->element = CreateQualifiedType(fullName); + return type; + } + + Ptr CreateNullableType(const WString& fullName) + { + auto type = Ptr(new WfNullableType); + type->element = CreateQualifiedType(fullName); + return type; + } + + Ptr CreateMapType(Ptr keyType, Ptr valueType) + { + auto type = Ptr(new WfMapType); + type->writability = WfMapWritability::Writable; + type->key = keyType; + type->value = valueType; + return type; + } + + Ptr CreateNull() + { + auto expression = Ptr(new WfLiteralExpression); + expression->value = WfLiteralValue::Null; + return expression; + } + + Ptr CreateIsNull(Ptr expression) + { + auto testing = Ptr(new WfTypeTestingExpression); + testing->test = WfTypeTesting::IsNull; + testing->expression = expression; + return testing; + } + + Ptr CreateIsNotNull(Ptr expression) + { + auto testing = Ptr(new WfTypeTestingExpression); + testing->test = WfTypeTesting::IsNotNull; + testing->expression = expression; + return testing; + } + + Ptr CreateBool(bool value) + { + auto expression = Ptr(new WfLiteralExpression); + expression->value = value ? WfLiteralValue::True : WfLiteralValue::False; + return expression; + } + + Ptr CreateInt(vint value) + { + auto expression = Ptr(new WfIntegerExpression); + expression->value.value = itow(value); + return expression; + } + + Ptr CreateString(const WString& value) + { + auto expression = Ptr(new WfStringExpression); + expression->value.value = value; + return expression; + } + + Ptr CreateReference(const WString& name) + { + auto expression = Ptr(new WfReferenceExpression); + expression->name.value = name; + return expression; + } + + Ptr CreateThis() + { + return Ptr(new WfThisExpression); + } + + Ptr CreateQualifiedExpression(const WString& fullName) + { + List fragments; + SplitTypeFullName(fullName, fragments); + if (fragments.Count() == 0) + { + return nullptr; + } + + Ptr expression = CreateReference(fragments[0]); + for (vint i = 1; i < fragments.Count(); i++) + { + auto child = Ptr(new WfChildExpression); + child->parent = expression; + child->name.value = fragments[i]; + expression = child; + } + return expression; + } + + Ptr CreateMember(Ptr parent, const WString& name) + { + auto expression = Ptr(new WfMemberExpression); + expression->parent = parent; + expression->name.value = name; + return expression; + } + + Ptr CreateBinary(WfBinaryOperator op, Ptr first, Ptr second) + { + auto expression = Ptr(new WfBinaryExpression); + expression->op = op; + expression->first = first; + expression->second = second; + return expression; + } + + Ptr CreateUnary(WfUnaryOperator op, Ptr operand) + { + auto expression = Ptr(new WfUnaryExpression); + expression->op = op; + expression->operand = operand; + return expression; + } + + Ptr CreateAssign(Ptr left, Ptr right) + { + return CreateBinary(WfBinaryOperator::Assign, left, right); + } + + Ptr CreateIndex(Ptr collection, Ptr index) + { + return CreateBinary(WfBinaryOperator::Index, collection, index); + } + + Ptr CreateCast(Ptr type, Ptr expression) + { + auto cast = Ptr(new WfTypeCastingExpression); + cast->strategy = WfTypeCastingStrategy::Strong; + cast->type = type; + cast->expression = expression; + return cast; + } + + Ptr CreateWeakCast(Ptr type, Ptr expression) + { + auto cast = Ptr(new WfTypeCastingExpression); + cast->strategy = WfTypeCastingStrategy::Weak; + cast->type = type; + cast->expression = expression; + return cast; + } + + Ptr CreateInfer(Ptr expression, Ptr type) + { + auto infer = Ptr(new WfInferExpression); + infer->expression = expression; + infer->type = type; + return infer; + } + + Ptr CreateConstructorArgument(Ptr key, Ptr value) + { + auto argument = Ptr(new WfConstructorArgument); + argument->key = key; + argument->value = value; + return argument; + } + + Ptr CreateConstructor() + { + return Ptr(new WfConstructorExpression); + } + + Ptr CreateRpcExceptionExpression(Ptr message) + { + auto constructor = CreateConstructor(); + constructor->arguments.Add(CreateConstructorArgument(CreateReference(L"message"), message)); + return CreateInfer(constructor, CreateQualifiedType(L"system::RpcException")); + } + + Ptr CreateRpcEventExceptionMapType() + { + return CreateMapType(CreatePredefinedType(WfPredefinedTypeName::Int), CreateQualifiedType(L"system::RpcException")); + } + + Ptr CreateNewClass(Ptr type) + { + auto expression = Ptr(new WfNewClassExpression); + expression->type = type; + return expression; + } + + Ptr CreateNewInterface(Ptr type) + { + auto expression = Ptr(new WfNewInterfaceExpression); + expression->type = type; + return expression; + } + + Ptr CreateExpressionStatement(Ptr expression) + { + auto statement = Ptr(new WfExpressionStatement); + statement->expression = expression; + return statement; + } + + Ptr CreateReturn(Ptr expression) + { + auto statement = Ptr(new WfReturnStatement); + statement->expression = expression; + return statement; + } + + Ptr CreateRaise(const WString& message) + { + auto statement = Ptr(new WfRaiseExceptionStatement); + statement->expression = CreateString(message); + return statement; + } + + Ptr CreateRaise(Ptr expression) + { + auto statement = Ptr(new WfRaiseExceptionStatement); + statement->expression = expression; + return statement; + } + + Ptr CreateVariableDeclaration(const WString& name, Ptr type, Ptr expression) + { + auto declaration = Ptr(new WfVariableDeclaration); + declaration->name.value = name; + declaration->type = type; + declaration->expression = expression; + return declaration; + } + + Ptr CreateVariableStatement(const WString& name, Ptr type, Ptr expression) + { + auto statement = Ptr(new WfVariableStatement); + statement->variable = CreateVariableDeclaration(name, type, expression); + return statement; + } + + Ptr CreateInferredVariableStatement(const WString& name, Ptr expression) + { + return CreateVariableStatement(name, nullptr, expression); + } + + Ptr CreateIf(Ptr condition, Ptr trueBranch, Ptr falseBranch) + { + auto statement = Ptr(new WfIfStatement); + statement->expression = condition; + statement->trueBranch = trueBranch; + statement->falseBranch = falseBranch; + return statement; + } + + Ptr CreateTry(Ptr protectedStatement, const WString& name, Ptr catchStatement, Ptr finallyStatement) + { + auto statement = Ptr(new WfTryStatement); + statement->protectedStatement = protectedStatement; + statement->name.value = name; + statement->catchStatement = catchStatement; + statement->finallyStatement = finallyStatement; + return statement; + } + + Ptr CreateTryCatch(Ptr protectedStatement, const WString& name, Ptr catchStatement) + { + return CreateTry(protectedStatement, name, catchStatement, nullptr); + } + + Ptr CreateForEach(const WString& name, Ptr collection, Ptr body) + { + auto statement = Ptr(new WfForEachStatement); + statement->name.value = name; + statement->direction = WfForEachDirection::Normal; + statement->collection = collection; + statement->statement = body; + return statement; + } + + Ptr CreateBlock() + { + return Ptr(new WfBlockStatement); + } + + void AddStatement(Ptr block, Ptr statement) + { + block->statements.Add(statement); + } + + void AddRpcMethodExceptionRaise(Ptr block, Ptr value) + { + AddStatement( + block, + CreateExpressionStatement(CreateCall( + CreateQualifiedExpression(L"system::IRpcLifecycle::ReadMethodException"), + value))); + } + + void AddRpcEventExceptionMapSet(Ptr block, const WString& mapName, Ptr clientId, Ptr message) + { + AddStatement(block, CreateExpressionStatement(CreateCall( + CreateMember(CreateReference(mapName), L"Set"), + clientId, + CreateRpcExceptionExpression(message)))); + } + + void AddRpcEventExceptionRaise(Ptr block, Ptr value) + { + AddStatement( + block, + CreateExpressionStatement(CreateCall( + CreateQualifiedExpression(L"system::IRpcLifecycle::ReadEventException"), + value))); + } + + Ptr CreateFunctionArgument(const WString& name, Ptr type) + { + auto argument = Ptr(new WfFunctionArgument); + argument->name.value = name; + argument->type = type; + return argument; + } + + Ptr CreateFunctionDeclaration(const WString& name, Ptr returnType, WfFunctionKind kind, WfFunctionAnonymity anonymity) + { + auto declaration = Ptr(new WfFunctionDeclaration); + declaration->name.value = name; + declaration->returnType = returnType; + declaration->functionKind = kind; + declaration->anonymity = anonymity; + declaration->statement = CreateBlock(); + return declaration; + } + + Ptr CreateFunctionExpression(Ptr declaration) + { + auto expression = Ptr(new WfFunctionExpression); + expression->function = declaration; + return expression; + } + + Ptr CreateClassDeclaration(const WString& name) + { + auto declaration = Ptr(new WfClassDeclaration); + declaration->name.value = name; + declaration->kind = WfClassKind::Class; + declaration->constructorType = WfConstructorType::Undefined; + return declaration; + } + + Ptr CreateConstructorDeclaration(WfConstructorType constructorType = WfConstructorType::SharedPtr) + { + auto declaration = Ptr(new WfConstructorDeclaration); + declaration->constructorType = constructorType; + declaration->statement = CreateBlock(); + return declaration; + } + + void AddSwitchCase(Ptr switchStat, Ptr expression, Ptr statement) + { + auto switchCase = Ptr(new WfSwitchCase); + switchCase->expression = expression; + switchCase->statement = statement; + switchStat->caseBranches.Add(switchCase); + } + + Ptr CreateLifecycleHelperCall(const wchar_t* helperName, Ptr value, Ptr lifecycle) + { + return CreateCall(CreateQualifiedExpression(L"system::IRpcLifecycle::" + WString::Unmanaged(helperName)), value, lifecycle); + } + + Ptr CreateRpcBoxExpression(ITypeInfo* typeInfo, bool byref, Ptr value, Ptr lifecycle) + { + if (IsSharedInterfaceType(typeInfo)) + { + return CreateLifecycleHelperCall(byref ? L"RpcBoxByref" : L"RpcBoxByval", value, lifecycle); + } + return value; + } + + Ptr CreateRpcCachedPropertyInitialValue(const RpcPropertyModel& propertyModel) + { + if (!propertyModel.typeInfo) + { + return CreateNull(); + } + + switch (propertyModel.typeInfo->GetDecorator()) + { + case ITypeInfo::RawPtr: + case ITypeInfo::SharedPtr: + case ITypeInfo::Nullable: + return CreateNull(); + default: + return CreateDefaultValue(propertyModel.typeInfo); + } + } + + Ptr CreateRpcUnboxExpression(ITypeInfo* typeInfo, Ptr type, bool byref, Ptr value, Ptr lifecycle) + { + Ptr unboxed; + if (IsSharedInterfaceType(typeInfo)) + { + auto serializable = byref + ? CreateCast(CreateQualifiedType(L"system::RpcObjectReference"), value) + : value; + unboxed = CreateLifecycleHelperCall(byref ? L"RpcUnboxByref" : L"RpcUnboxByval", serializable, lifecycle); + return IsRpcStrongTypedCollection(typeInfo) || IsStrongTypedCollectionType(type.Obj()) + ? CreateCast(CopyType(type.Obj()), unboxed) + : CreateWeakCast(CopyType(type.Obj()), unboxed); + } + else + { + unboxed = value; + } + return CreateCast(CopyType(type.Obj()), unboxed); + } + + Ptr CreateRpcCopyByvalExpression(Ptr value, Ptr lifecycle) + { + return CreateLifecycleHelperCall(L"RpcCopyByval", value, lifecycle); + } + + bool IsVoidType(WfType* type) + { + if (auto predefined = dynamic_cast(type)) + { + return predefined->name == WfPredefinedTypeName::Void; + } + if (auto child = dynamic_cast(type)) + { + if (child->name.value == L"Void") + { + if (auto top = dynamic_cast(child->parent.Obj())) + { + return top->name.value == L"system"; + } + } + } + return false; + } + + bool IsRpcByvalReturn(const RpcMethodModel& methodModel) + { + return !IsVoidType(methodModel.returnType.Obj()) + && !methodModel.returnByref + && (IsStrongTypedCollectionType(methodModel.returnType.Obj()) || IsRpcStrongTypedCollection(methodModel.returnTypeInfo)); + } + + void AddRpcByvalReturnValue(Ptr block, Ptr value, Ptr copiedValue) + { + AddStatement(block, CreateInferredVariableStatement(L"byvalReturnValue", CreateNewClass(CreateSharedType(L"system::RpcByvalReturnValue")))); + AddStatement(block, CreateExpressionStatement(CreateAssign(CreateMember(CreateReference(L"byvalReturnValue"), L"value"), value))); + AddStatement(block, CreateExpressionStatement(CreateAssign(CreateMember(CreateReference(L"byvalReturnValue"), L"slot"), CreateReference(L"_slot")))); + AddStatement(block, CreateExpressionStatement(CreateCall(CreateMember(CreateReference(L"_byvalReturnValues"), L"Set"), CreateReference(L"_slot"), copiedValue))); + AddStatement(block, CreateExpressionStatement(CreateAssign(CreateReference(L"_slot"), CreateBinary(WfBinaryOperator::Add, CreateReference(L"_slot"), CreateInt(1))))); + AddStatement(block, CreateReturn(CreateReference(L"byvalReturnValue"))); + } + + Ptr CreateRpcConstantReference(const wchar_t* prefix, const WString& fullName) + { + return CreateReference(WString::Unmanaged(prefix) + MangleRpcFullName(fullName)); + } + + vint GetRpcId(WfLexicalScopeManager* manager, const WString& fullName) + { + auto id = manager->rpcMetadata->orderedIds.IndexOf(fullName); + CHECK_ERROR(id != -1, L"RPC metadata ID list does not contain a generated RPC full name."); + return id; + } + + const wchar_t* GetRpcConstantPrefix(WfLexicalScopeManager* manager, const WString& fullName) + { + if (manager->rpcMetadata->typeNames.Keys().Contains(fullName)) + { + return L"rpctype_"; + } + if (manager->rpcMetadata->methodNames.Keys().Contains(fullName)) + { + return L"rpcmethod_"; + } + if (manager->rpcMetadata->eventNames.Keys().Contains(fullName)) + { + return L"rpcevent_"; + } + CHECK_FAIL(L"RPC metadata ID list contains an unknown generated RPC full name."); + } + + void AddIdLookupEntry(Ptr expression, Ptr key, Ptr value) + { + expression->arguments.Add(CreateConstructorArgument(key, value)); + } + + void CollectMangledNames(WfLexicalScopeManager* manager) + { + Dictionary mangledNames; + for (auto fullName : manager->rpcMetadata->orderedIds) + { + auto mangled = MangleRpcFullName(fullName); + auto index = mangledNames.Keys().IndexOf(mangled); + if (index != -1 && mangledNames.Values()[index] != fullName) + { + manager->errors.Add(WfErrors::RpcMangledNameConflict(FindRpcDeclaration(manager, fullName), mangled, mangledNames.Values()[index], fullName)); + return; + } + if (index == -1) + { + mangledNames.Add(mangled, fullName); + } + } + } + + List BuildInterfaceModels(WfLexicalScopeManager* manager) + { + List interfaces; + auto rpcByrefAttrTd = GetTypeDescriptor(); + auto rpcCachedAttrTd = GetTypeDescriptor(); + auto rpcDynamicAttrTd = GetTypeDescriptor(); + SortedList rpcInterfaceTds; + + for (auto typeFullName : manager->rpcMetadata->typeFullNames) + { + if (auto td = FindRpcTypeDescriptor(manager, typeFullName)) + { + if (!rpcInterfaceTds.Contains(td)) + { + rpcInterfaceTds.Add(td); + } + } + } + + for (auto typeFullName : manager->rpcMetadata->typeFullNames) + { + auto typeIndex = manager->rpcMetadata->typeNames.Keys().IndexOf(typeFullName); + if (typeIndex == -1) + { + continue; + } + + auto interfaceDecl = manager->rpcMetadata->typeNames.Values()[typeIndex]; + List fragments; + SplitTypeFullName(typeFullName, fragments); + + RpcInterfaceModel interfaceModel; + interfaceModel.fullName = typeFullName; + interfaceModel.interfaceName = fragments[fragments.Count() - 1]; + interfaceModel.typeId = GetRpcId(manager, typeFullName); + interfaceModel.ctor = HasRpcAttribute(interfaceDecl->attributes, L"Ctor"); + interfaceModel.interfaceDecl = interfaceDecl; + auto typeDescriptor = FindRpcTypeDescriptor(manager, typeFullName); + + if (typeDescriptor) + { + for (vint i = 0; i < typeDescriptor->GetBaseTypeDescriptorCount(); i++) + { + auto baseTypeDescriptor = typeDescriptor->GetBaseTypeDescriptor(i); + if (!baseTypeDescriptor) + { + continue; + } + + auto baseFullName = baseTypeDescriptor->GetTypeName(); + if (manager->rpcMetadata->typeFullNames.Contains(baseFullName)) + { + interfaceModel.baseFullNames.Add(baseFullName); + } + } + } + + Dictionary getterPropertyIndexes; + Dictionary setterPropertyIndexes; + + for (auto declaration : interfaceDecl->declarations) + { + if (auto propertyDecl = declaration.Cast()) + { + RpcPropertyModel propertyModel; + propertyModel.name = propertyDecl->name.value; + propertyModel.type = CopyType(propertyDecl->type.Obj()); + propertyModel.byref = HasRpcAttribute(propertyDecl->attributes, L"Byref"); + propertyModel.cached = !HasRpcAttribute(propertyDecl->attributes, L"Dynamic"); + propertyModel.getterName = propertyDecl->getter.value; + propertyModel.setterName = propertyDecl->setter.value; + propertyModel.valueChangedEvent = propertyDecl->valueChangedEvent.value; + if (!HasRpcAttribute(propertyDecl->attributes, L"Cached") && !HasRpcAttribute(propertyDecl->attributes, L"Dynamic")) + { + manager->errors.Add(WfErrors::RpcWrapperGenerationRequiresPropertyMode(propertyDecl.Obj(), typeFullName + L"." + propertyDecl->name.value)); + } + interfaceModel.properties.Add(std::move(propertyModel)); + + auto propertyIndex = interfaceModel.properties.Count() - 1; + auto&& insertedProperty = interfaceModel.properties[propertyIndex]; + if (insertedProperty.getterName != L"") + { + getterPropertyIndexes.Add(insertedProperty.getterName, propertyIndex); + } + if (insertedProperty.setterName != L"") + { + setterPropertyIndexes.Add(insertedProperty.setterName, propertyIndex); + } + } + } + + if (typeDescriptor) + { + for (vint i = 0; i < typeDescriptor->GetPropertyCount(); i++) + { + auto propertyInfo = typeDescriptor->GetProperty(i); + if (!propertyInfo || propertyInfo->GetOwnerTypeDescriptor() != typeDescriptor) + { + continue; + } + + vint propertyIndex = -1; + for (vint j = 0; j < interfaceModel.properties.Count(); j++) + { + if (interfaceModel.properties[j].name == propertyInfo->GetName()) + { + propertyIndex = j; + break; + } + } + + if (propertyIndex != -1) + { + auto&& propertyModel = interfaceModel.properties[propertyIndex]; + propertyModel.typeInfo = propertyInfo->GetReturn(); + } + else + { + RpcPropertyModel propertyModel; + propertyModel.name = propertyInfo->GetName(); + propertyModel.type = GetTypeFromTypeInfo(propertyInfo->GetReturn()); + propertyModel.typeInfo = propertyInfo->GetReturn(); + propertyModel.byref = HasAttribute(propertyInfo, rpcByrefAttrTd); + propertyModel.cached = !HasAttribute(propertyInfo, rpcDynamicAttrTd); + if (auto getter = propertyInfo->GetGetter()) + { + propertyModel.getterName = getter->GetName(); + } + if (auto setter = propertyInfo->GetSetter()) + { + propertyModel.setterName = setter->GetName(); + } + if (auto valueChangedEvent = propertyInfo->GetValueChangedEvent()) + { + propertyModel.valueChangedEvent = valueChangedEvent->GetName(); + } + if (!HasAttribute(propertyInfo, rpcCachedAttrTd) && !HasAttribute(propertyInfo, rpcDynamicAttrTd)) + { + propertyModel.cached = true; + } + interfaceModel.properties.Add(std::move(propertyModel)); + + propertyIndex = interfaceModel.properties.Count() - 1; + auto&& insertedProperty = interfaceModel.properties[propertyIndex]; + if (insertedProperty.getterName != L"") + { + getterPropertyIndexes.Add(insertedProperty.getterName, propertyIndex); + } + if (insertedProperty.setterName != L"") + { + setterPropertyIndexes.Add(insertedProperty.setterName, propertyIndex); + } + } + } + } + + for (auto declaration : interfaceDecl->declarations) + { + if (auto methodDecl = declaration.Cast()) + { + auto methodFullName = FindFullName(manager->rpcMetadata->methodNames, methodDecl.Obj()); + if (methodFullName == L"") + { + continue; + } + + RpcMethodModel methodModel; + methodModel.fullName = methodFullName; + methodModel.name = methodDecl->name.value; + methodModel.methodId = GetRpcId(manager, methodFullName); + methodModel.returnType = CopyType(methodDecl->returnType.Obj()); + auto methodInfo = FindRpcMethodInfo(manager, interfaceDecl, methodDecl.Obj(), typeDescriptor); + if (methodInfo) + { + methodModel.returnTypeInfo = methodInfo->GetReturn(); + } + methodModel.returnByref = HasRpcAttribute(methodDecl->attributes, L"Byref"); + if (IsStrongTypedCollectionType(methodModel.returnType.Obj()) + && !methodModel.returnByref + && !HasRpcAttribute(methodDecl->attributes, L"Byval")) + { + manager->errors.Add(WfErrors::RpcWrapperGenerationRequiresCollectionReturnTransfer(methodDecl.Obj(), typeFullName + L"." + methodDecl->name.value)); + } + + if (auto getterIndex = getterPropertyIndexes.Keys().IndexOf(methodModel.name); getterIndex != -1) + { + auto&& property = interfaceModel.properties[getterPropertyIndexes.Values()[getterIndex]]; + methodModel.kind = RpcMethodKind::PropertyGetter; + methodModel.returnType = CopyType(property.type.Obj()); + methodModel.returnTypeInfo = property.typeInfo; + } + else if (auto setterIndex = setterPropertyIndexes.Keys().IndexOf(methodModel.name); setterIndex != -1) + { + methodModel.kind = RpcMethodKind::PropertySetter; + methodModel.returnByref = false; + } + + for (vint i = 0; i < methodDecl->arguments.Count(); i++) + { + auto argumentDecl = methodDecl->arguments[i]; + RpcParamModel paramModel; + paramModel.name = argumentDecl->name.value; + paramModel.type = CopyType(argumentDecl->type.Obj()); + if (methodInfo && i < methodInfo->GetParameterCount()) + { + paramModel.typeInfo = methodInfo->GetParameter(i)->GetType(); + } + paramModel.byref = HasRpcAttribute(argumentDecl->attributes, L"Byref"); + if (IsStrongTypedCollectionType(paramModel.type.Obj()) + && !paramModel.byref + && !HasRpcAttribute(argumentDecl->attributes, L"Byval")) + { + manager->errors.Add(WfErrors::RpcWrapperGenerationRequiresCollectionParameterTransfer(argumentDecl.Obj(), typeFullName + L"." + methodDecl->name.value + L"(" + argumentDecl->name.value + L")")); + } + + if (methodModel.kind == RpcMethodKind::PropertySetter && i == 0) + { + auto setterIndex = setterPropertyIndexes.Keys().IndexOf(methodModel.name); + auto&& property = interfaceModel.properties[setterPropertyIndexes.Values()[setterIndex]]; + paramModel.type = CopyType(property.type.Obj()); + paramModel.typeInfo = property.typeInfo; + } + + methodModel.params.Add(std::move(paramModel)); + } + + interfaceModel.methods.Add(std::move(methodModel)); + } + else if (auto eventDecl = declaration.Cast()) + { + auto eventFullName = FindFullName(manager->rpcMetadata->eventNames, eventDecl.Obj()); + if (eventFullName == L"") + { + continue; + } + + RpcEventModel eventModel; + eventModel.fullName = eventFullName; + eventModel.name = eventDecl->name.value; + eventModel.eventId = GetRpcId(manager, eventFullName); + + ITypeInfo* handlerGenericType = nullptr; + if (typeDescriptor) + { + for (vint j = 0; j < typeDescriptor->GetEventCount(); j++) + { + auto eventInfo = typeDescriptor->GetEvent(j); + if (eventInfo && eventInfo->GetOwnerTypeDescriptor() == typeDescriptor && eventInfo->GetName() == eventModel.name) + { + auto handlerType = eventInfo->GetHandlerType(); + if (handlerType && handlerType->GetDecorator() == ITypeInfo::SharedPtr) + { + auto genericType = handlerType->GetElementType(); + if (genericType && genericType->GetDecorator() == ITypeInfo::Generic) + { + handlerGenericType = genericType; + } + } + break; + } + } + } + + for (vint i = 0; i < eventDecl->arguments.Count(); i++) + { + RpcParamModel paramModel; + paramModel.name = L"arg" + itow(i); + paramModel.type = CopyType(eventDecl->arguments[i].Obj()); + auto genericArgumentIndex = i + 1; + paramModel.typeInfo = handlerGenericType && genericArgumentIndex < handlerGenericType->GetGenericArgumentCount() + ? handlerGenericType->GetGenericArgument(genericArgumentIndex) + : nullptr; + paramModel.byref = handlerGenericType && genericArgumentIndex < handlerGenericType->GetGenericArgumentCount() + ? IsDefaultRpcTransferByref(handlerGenericType->GetGenericArgument(genericArgumentIndex), rpcInterfaceTds) + : dynamic_cast(eventDecl->arguments[i].Obj()) != nullptr; + eventModel.params.Add(std::move(paramModel)); + } + + interfaceModel.events.Add(std::move(eventModel)); + } + } + + interfaces.Add(std::move(interfaceModel)); + } + + return interfaces; + } + + void AddDeclarationToNamespaces( + List>& rootDeclarations, + Dictionary>& namespaceMap, + const List& namespaceFragments, + Ptr declaration) + { + auto currentDeclarations = &rootDeclarations; + WString currentPath; + + for (auto fragment : namespaceFragments) + { + currentPath = currentPath == L"" ? fragment : currentPath + L"::" + fragment; + auto index = namespaceMap.Keys().IndexOf(currentPath); + if (index == -1) + { + auto namespaceDecl = Ptr(new WfNamespaceDeclaration); + namespaceDecl->name.value = fragment; + currentDeclarations->Add(namespaceDecl); + namespaceMap.Add(currentPath, namespaceDecl); + currentDeclarations = &namespaceDecl->declarations; + } + else + { + currentDeclarations = &namespaceMap.Values()[index]->declarations; + } + } + + currentDeclarations->Add(declaration); + } + + Ptr BuildInvokeMethodBranch(const RpcInterfaceModel& interfaceModel, const RpcMethodModel& methodModel) + { + auto block = CreateBlock(); + AddStatement(block, CreateInferredVariableStatement(L"target", CreateCast(CreateSharedType(interfaceModel.fullName), CreateCall(CreateMember(CreateReference(L"_lc"), L"RefToPtr"), CreateReference(L"ref"))))); + + List> arguments; + for (vint i = 0; i < methodModel.params.Count(); i++) + { + auto&& paramModel = methodModel.params[i]; + auto argument = CreateIndex(CreateReference(L"arguments"), CreateInt(i)); + arguments.Add(CreateRpcUnboxExpression(paramModel.typeInfo, paramModel.type, paramModel.byref, argument, CreateReference(L"_lc"))); + } + + auto invokeTarget = CreateMember(CreateReference(L"target"), methodModel.name); + auto invoke = Ptr(new WfCallExpression); + invoke->function = invokeTarget; + for (auto argument : arguments) + { + invoke->arguments.Add(argument); + } + + if (IsVoidType(methodModel.returnType.Obj())) + { + AddStatement(block, CreateExpressionStatement(invoke)); + AddStatement(block, CreateReturn(CreateNull())); + } + else + { + if (IsRpcByvalReturn(methodModel)) + { + AddStatement(block, CreateInferredVariableStatement(L"copiedReturnValue", CreateRpcCopyByvalExpression(invoke, CreateReference(L"_lc")))); + AddStatement(block, CreateInferredVariableStatement(L"boxedReturnValue", CreateRpcBoxExpression(methodModel.returnTypeInfo, methodModel.returnByref, CreateReference(L"copiedReturnValue"), CreateReference(L"_lc")))); + AddRpcByvalReturnValue(block, CreateReference(L"boxedReturnValue"), CreateReference(L"copiedReturnValue")); + } + else + { + AddStatement(block, CreateReturn(CreateRpcBoxExpression(methodModel.returnTypeInfo, methodModel.returnByref, invoke, CreateReference(L"_lc")))); + } + } + return block; + } + + Ptr BuildInvokeEventBranch(const RpcInterfaceModel& interfaceModel, const RpcEventModel& eventModel) + { + auto block = CreateBlock(); + AddStatement(block, CreateInferredVariableStatement(L"target", CreateCast(CreateSharedType(interfaceModel.fullName), CreateCall(CreateMember(CreateReference(L"_lc"), L"RefToPtr"), CreateReference(L"ref"))))); + + auto invoke = Ptr(new WfCallExpression); + invoke->function = CreateMember(CreateReference(L"target"), eventModel.name); + for (vint i = 0; i < eventModel.params.Count(); i++) + { + auto&& paramModel = eventModel.params[i]; + auto argument = CreateIndex(CreateReference(L"arguments"), CreateInt(i)); + invoke->arguments.Add(CreateRpcUnboxExpression(paramModel.typeInfo, paramModel.type, paramModel.byref, argument, CreateReference(L"_lc"))); + } + AddStatement(block, CreateExpressionStatement(invoke)); + return block; + } + + bool HasRpcEvents(const List& interfaces) + { + for (auto&& interfaceModel : interfaces) + { + if (interfaceModel.events.Count() > 0) + { + return true; + } + } + return false; + } + + Ptr BuildDispatchChain(const List& interfaces, bool forEvent, const WString& unknownIdVariable = WString::Empty) + { + auto switchStat = Ptr(new WfSwitchStatement); + switchStat->expression = CreateReference(forEvent ? L"eventId" : L"methodId"); + switchStat->defaultBranch = + unknownIdVariable == L"" + ? CreateRaise(forEvent ? L"Unknown RPC event id." : L"Unknown RPC method id.") + : CreateExpressionStatement(CreateAssign(CreateReference(unknownIdVariable), CreateBool(true))); + + for (auto&& interfaceModel : interfaces) + { + if (forEvent) + { + for (auto&& eventModel : interfaceModel.events) + { + auto switchCase = Ptr(new WfSwitchCase); + switchCase->expression = CreateRpcConstantReference(L"rpcevent_", eventModel.fullName); + switchCase->statement = BuildInvokeEventBranch(interfaceModel, eventModel); + switchStat->caseBranches.Add(switchCase); + } + } + else + { + for (auto&& methodModel : interfaceModel.methods) + { + auto switchCase = Ptr(new WfSwitchCase); + switchCase->expression = CreateRpcConstantReference(L"rpcmethod_", methodModel.fullName); + switchCase->statement = BuildInvokeMethodBranch(interfaceModel, methodModel); + switchStat->caseBranches.Add(switchCase); + } + } + } + return switchStat; + } + + Ptr GenerateIsInterfaceTypeIdHelper(const List& interfaces) + { + auto functionDecl = CreateFunctionDeclaration(L"rpcwrapper_IsInterfaceTypeId", CreatePredefinedType(WfPredefinedTypeName::Bool), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"typeId", CreatePredefinedType(WfPredefinedTypeName::Int))); + auto block = functionDecl->statement.Cast(); + auto isCollectionTypeId = CreateBinary( + WfBinaryOperator::And, + CreateBinary(WfBinaryOperator::GE, CreateReference(L"typeId"), CreateInt(rpc_controller::RpcTypeId_IValueReadonlyList)), + CreateBinary(WfBinaryOperator::LE, CreateReference(L"typeId"), CreateInt(rpc_controller::RpcTypeId_IValueEnumerable)) + ); + AddStatement(block, CreateIf(isCollectionTypeId, CreateReturn(CreateBool(true)))); + auto switchStat = Ptr(new WfSwitchStatement); + switchStat->expression = CreateReference(L"typeId"); + switchStat->defaultBranch = CreateReturn(CreateBool(false)); + + auto addKnownType = [&](Ptr expression) + { + auto switchCase = Ptr(new WfSwitchCase); + switchCase->expression = expression; + switchCase->statement = CreateReturn(CreateBool(true)); + switchStat->caseBranches.Add(switchCase); + }; + + for (auto&& interfaceModel : interfaces) + { + addKnownType(CreateRpcConstantReference(L"rpctype_", interfaceModel.fullName)); + } + + AddStatement(block, switchStat); + return functionDecl; + } + + Ptr GenerateIsCtorInterfaceTypeIdHelper(const List& interfaces) + { + auto functionDecl = CreateFunctionDeclaration(L"rpcwrapper_IsCtorInterfaceTypeId", CreatePredefinedType(WfPredefinedTypeName::Bool), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"typeId", CreatePredefinedType(WfPredefinedTypeName::Int))); + auto switchStat = Ptr(new WfSwitchStatement); + switchStat->expression = CreateReference(L"typeId"); + switchStat->defaultBranch = CreateReturn(CreateBool(false)); + + for (auto&& interfaceModel : interfaces) + { + if (!interfaceModel.ctor) + { + continue; + } + + auto switchCase = Ptr(new WfSwitchCase); + switchCase->expression = CreateRpcConstantReference(L"rpctype_", interfaceModel.fullName); + switchCase->statement = CreateReturn(CreateBool(true)); + switchStat->caseBranches.Add(switchCase); + } + + AddStatement(functionDecl->statement.Cast(), switchStat); + return functionDecl; + } + + Ptr BuildRegisterService() + { + auto block = CreateBlock(); + auto registerBranch = CreateBlock(); + AddStatement( + registerBranch, + CreateExpressionStatement( + CreateCall( + CreateMember(CreateMember(CreateReference(L"_lc"), L"Dispatcher"), L"RegisterService"), + CreateReference(L"typeId"), + CreateCall(CreateMember(CreateReference(L"_lc"), L"PtrToRef"), CreateReference(L"service")) + ) + ) + ); + auto nonCtorBranch = CreateBlock(); + AddStatement(nonCtorBranch, CreateRaise(L"RPC service type id is not an @rpc:Ctor interface.")); + auto invalidTypeIdBranch = CreateBlock(); + AddStatement(invalidTypeIdBranch, CreateRaise(L"RPC service type id does not exist.")); + auto invalidRegisterBranch = CreateBlock(); + AddStatement( + invalidRegisterBranch, + CreateIf( + CreateCall(CreateReference(L"rpcwrapper_IsInterfaceTypeId"), CreateReference(L"typeId")), + nonCtorBranch, + invalidTypeIdBranch + ) + ); + AddStatement( + block, + CreateIf( + CreateCall(CreateReference(L"rpcwrapper_IsCtorInterfaceTypeId"), CreateReference(L"typeId")), + registerBranch, + invalidRegisterBranch + ) + ); + return block; + } + + Ptr GenerateObjectOpsFactory(const List& interfaces) + { + auto functionDecl = CreateFunctionDeclaration(L"rpcops_IRpcObjectOps", CreateSharedType(L"system::IRpcObjectOps"), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"lc", CreateRawType(L"system::IRpcLifecycle"))); + auto newOps = CreateNewInterface(CreateSharedType(L"system::IRpcObjectOps")).Cast(); + newOps->declarations.Add(CreateVariableDeclaration(L"_lc", CreateRawType(L"system::IRpcLifecycle"), CreateReference(L"lc"))); + newOps->declarations.Add(CreateVariableDeclaration(L"_slot", CreatePredefinedType(WfPredefinedTypeName::Int), CreateInt(0))); + newOps->declarations.Add(CreateVariableDeclaration(L"_byvalReturnValues", CreateMapType(CreatePredefinedType(WfPredefinedTypeName::Int), CreatePredefinedType(WfPredefinedTypeName::Object)), CreateConstructor())); + + { + auto invokeMethod = CreateFunctionDeclaration(L"InvokeMethod", CreatePredefinedType(WfPredefinedTypeName::Object), WfFunctionKind::Override); + invokeMethod->arguments.Add(CreateFunctionArgument(L"ref", CreateQualifiedType(L"system::RpcObjectReference"))); + invokeMethod->arguments.Add(CreateFunctionArgument(L"methodId", CreatePredefinedType(WfPredefinedTypeName::Int))); + invokeMethod->arguments.Add(CreateFunctionArgument(L"arguments", CreateSharedType(L"system::Array"))); + auto block = invokeMethod->statement.Cast(); + AddStatement(block, CreateVariableStatement(L"unknownId", CreatePredefinedType(WfPredefinedTypeName::Bool), CreateBool(false))); + auto catchBlock = CreateBlock(); + AddStatement(catchBlock, CreateReturn(CreateRpcExceptionExpression(CreateMember(CreateReference(L"ex"), L"Message")))); + AddStatement(block, CreateTryCatch(BuildDispatchChain(interfaces, false, L"unknownId"), L"ex", catchBlock)); + auto unknownIdBranch = CreateBlock(); + AddStatement(unknownIdBranch, CreateRaise(L"Unknown RPC method id.")); + AddStatement(block, CreateIf(CreateReference(L"unknownId"), unknownIdBranch)); + AddStatement(block, CreateReturn(CreateNull())); + newOps->declarations.Add(invokeMethod); + } + + { + auto endInvokeMethod = CreateFunctionDeclaration(L"EndInvokeMethod", CreatePredefinedType(WfPredefinedTypeName::Void), WfFunctionKind::Override); + endInvokeMethod->arguments.Add(CreateFunctionArgument(L"slot", CreatePredefinedType(WfPredefinedTypeName::Int))); + AddStatement(endInvokeMethod->statement.Cast(), CreateExpressionStatement(CreateCall(CreateMember(CreateReference(L"_byvalReturnValues"), L"Remove"), CreateReference(L"slot")))); + newOps->declarations.Add(endInvokeMethod); + } + + { + auto objectHold = CreateFunctionDeclaration(L"ObjectHold", CreatePredefinedType(WfPredefinedTypeName::Void), WfFunctionKind::Override); + objectHold->arguments.Add(CreateFunctionArgument(L"ref", CreateQualifiedType(L"system::RpcObjectReference"))); + objectHold->arguments.Add(CreateFunctionArgument(L"remoteClientId", CreatePredefinedType(WfPredefinedTypeName::Int))); + objectHold->arguments.Add(CreateFunctionArgument(L"hold", CreatePredefinedType(WfPredefinedTypeName::Bool))); + auto trueBranch = CreateBlock(); + AddStatement(trueBranch, CreateExpressionStatement(CreateCall(CreateMember(CreateReference(L"_lc"), L"LocalObjectHold"), CreateReference(L"ref"), CreateReference(L"remoteClientId")))); + auto falseBranch = CreateBlock(); + AddStatement(falseBranch, CreateExpressionStatement(CreateCall(CreateMember(CreateReference(L"_lc"), L"LocalObjectUnhold"), CreateReference(L"ref"), CreateReference(L"remoteClientId")))); + AddStatement(objectHold->statement.Cast(), CreateIf(CreateReference(L"hold"), trueBranch, falseBranch)); + newOps->declarations.Add(objectHold); + } + + { + auto registerService = CreateFunctionDeclaration(L"RegisterService", CreatePredefinedType(WfPredefinedTypeName::Void), WfFunctionKind::Override); + registerService->arguments.Add(CreateFunctionArgument(L"typeId", CreatePredefinedType(WfPredefinedTypeName::Int))); + registerService->arguments.Add(CreateFunctionArgument(L"service", CreateSharedType(L"system::Interface"))); + auto block = registerService->statement.Cast(); + AddStatement(block, BuildRegisterService()); + newOps->declarations.Add(registerService); + } + + AddStatement(functionDecl->statement.Cast(), CreateReturn(newOps)); + return functionDecl; + } + + Ptr GenerateObjectEventOpsFactory(const List& interfaces) + { + auto functionDecl = CreateFunctionDeclaration(L"rpcops_IRpcObjectEventOps", CreateSharedType(L"system::IRpcObjectEventOps"), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"lc", CreateRawType(L"system::IRpcLifecycle"))); + auto newOps = CreateNewInterface(CreateSharedType(L"system::IRpcObjectEventOps")).Cast(); + newOps->declarations.Add(CreateVariableDeclaration(L"_lc", CreateRawType(L"system::IRpcLifecycle"), CreateReference(L"lc"))); + + { + auto invokeEvent = CreateFunctionDeclaration(L"InvokeEvent", CreatePredefinedType(WfPredefinedTypeName::Object), WfFunctionKind::Override); + invokeEvent->arguments.Add(CreateFunctionArgument(L"ref", CreateQualifiedType(L"system::RpcObjectReference"))); + invokeEvent->arguments.Add(CreateFunctionArgument(L"eventId", CreatePredefinedType(WfPredefinedTypeName::Int))); + invokeEvent->arguments.Add(CreateFunctionArgument(L"arguments", CreateSharedType(L"system::Array"))); + auto block = invokeEvent->statement.Cast(); + if (!HasRpcEvents(interfaces)) + { + AddStatement(block, CreateRaise(L"Unknown RPC event id.")); + newOps->declarations.Add(invokeEvent); + } + else + { + AddStatement(block, CreateVariableStatement(L"unknownId", CreatePredefinedType(WfPredefinedTypeName::Bool), CreateBool(false))); + AddStatement(block, CreateVariableStatement(L"rpcEventExceptions", CreateRpcEventExceptionMapType(), CreateConstructor())); + AddStatement(block, CreateExpressionStatement(CreateCall(CreateMember(CreateMember(CreateReference(L"_lc"), L"Controller"), L"SetEventSuppressedFlag"), CreateReference(L"ref"), CreateReference(L"eventId"), CreateBool(true)))); + auto finallyBlock = CreateBlock(); + AddStatement(finallyBlock, CreateExpressionStatement(CreateCall(CreateMember(CreateMember(CreateReference(L"_lc"), L"Controller"), L"SetEventSuppressedFlag"), CreateReference(L"ref"), CreateReference(L"eventId"), CreateBool(false)))); + auto catchBlock = CreateBlock(); + AddRpcEventExceptionMapSet(catchBlock, L"rpcEventExceptions", CreateMember(CreateReference(L"_lc"), L"ClientId"), CreateMember(CreateReference(L"ex"), L"Message")); + AddStatement(block, CreateTry(BuildDispatchChain(interfaces, true, L"unknownId"), L"ex", catchBlock, finallyBlock)); + auto unknownIdBranch = CreateBlock(); + AddStatement(unknownIdBranch, CreateRaise(L"Unknown RPC event id.")); + AddStatement(block, CreateIf(CreateReference(L"unknownId"), unknownIdBranch)); + auto returnExceptionBranch = CreateBlock(); + AddStatement(returnExceptionBranch, CreateReturn(CreateReference(L"rpcEventExceptions"))); + auto returnNullBranch = CreateBlock(); + AddStatement(returnNullBranch, CreateReturn(CreateNull())); + AddStatement( + block, + CreateIf( + CreateBinary(WfBinaryOperator::GT, CreateMember(CreateReference(L"rpcEventExceptions"), L"Count"), CreateInt(0)), + returnExceptionBranch, + returnNullBranch)); + newOps->declarations.Add(invokeEvent); + } + } + + AddStatement(functionDecl->statement.Cast(), CreateReturn(newOps)); + return functionDecl; + } + + Ptr CreateAnonymousLambda(const List& params, Ptr body) + { + auto functionDecl = CreateFunctionDeclaration(L"", CreatePredefinedType(WfPredefinedTypeName::Void), WfFunctionKind::Normal, WfFunctionAnonymity::Anonymous); + functionDecl->statement = body; + for (auto&& param : params) + { + functionDecl->arguments.Add(CreateFunctionArgument(param.name, CopyType(param.type.Obj()))); + } + return functionDecl; + } + + const RpcInterfaceModel* FindInterfaceModel(const List& interfaces, const WString& fullName) + { + for (auto&& interfaceModel : interfaces) + { + if (interfaceModel.fullName == fullName) + { + return &interfaceModel; + } + } + return nullptr; + } + + bool ContainsEventModel(const List& events, const WString& fullName) + { + for (auto eventModel : events) + { + if (eventModel->fullName == fullName) + { + return true; + } + } + return false; + } + + bool ContainsPropertyModel(const List& properties, const WString& name) + { + for (auto propertyModel : properties) + { + if (propertyModel->name == name) + { + return true; + } + } + return false; + } + + bool ContainsMethodModel(const List& methods, const WString& fullName) + { + for (auto methodModel : methods) + { + if (methodModel->fullName == fullName) + { + return true; + } + } + return false; + } + + void CollectInterfaceProperties(const RpcInterfaceModel& interfaceModel, const List& interfaces, List& properties) + { + for (auto&& baseFullName : interfaceModel.baseFullNames) + { + if (auto baseModel = FindInterfaceModel(interfaces, baseFullName)) + { + CollectInterfaceProperties(*baseModel, interfaces, properties); + } + } + + for (auto&& propertyModel : interfaceModel.properties) + { + if (!ContainsPropertyModel(properties, propertyModel.name)) + { + properties.Add(&propertyModel); + } + } + } + + void CollectInterfaceMethods(const RpcInterfaceModel& interfaceModel, const List& interfaces, List& methods) + { + for (auto&& baseFullName : interfaceModel.baseFullNames) + { + if (auto baseModel = FindInterfaceModel(interfaces, baseFullName)) + { + CollectInterfaceMethods(*baseModel, interfaces, methods); + } + } + + for (auto&& methodModel : interfaceModel.methods) + { + if (!ContainsMethodModel(methods, methodModel.fullName)) + { + methods.Add(&methodModel); + } + } + } + + void CollectInterfaceEvents(const RpcInterfaceModel& interfaceModel, const List& interfaces, List& events) + { + for (auto&& baseFullName : interfaceModel.baseFullNames) + { + if (auto baseModel = FindInterfaceModel(interfaces, baseFullName)) + { + CollectInterfaceEvents(*baseModel, interfaces, events); + } + } + + for (auto&& eventModel : interfaceModel.events) + { + if (!ContainsEventModel(events, eventModel.fullName)) + { + events.Add(&eventModel); + } + } + } + + bool HasInterfaceEvents(const RpcInterfaceModel& interfaceModel, const List& interfaces) + { + List events; + CollectInterfaceEvents(interfaceModel, interfaces, events); + return events.Count() > 0; + } + + const RpcEventModel* FindInterfaceEvent(const List& events, const WString& name) + { + for (auto eventModel : events) + { + if (eventModel->name == name) + { + return eventModel; + } + } + return nullptr; + } + + WString GetPropertyCacheAvailableName(const RpcPropertyModel& propertyModel) + { + return propertyModel.name + L""; + } + + WString GetPropertyCacheValueName(const RpcPropertyModel& propertyModel) + { + return propertyModel.name + L""; + } + + WString GetPropertyCacheResetFunctionName(const RpcPropertyModel& propertyModel) + { + return L"_rpcInvalidate_" + propertyModel.name; + } + + Ptr CreatePropertyCacheAvailableRead(const RpcPropertyModel& propertyModel) + { + return CreateReference(GetPropertyCacheAvailableName(propertyModel)); + } + + Ptr CreatePropertyCacheValueRead(const RpcPropertyModel& propertyModel) + { + return CreateReference(GetPropertyCacheValueName(propertyModel)); + } + + Ptr GenerateWrapperInterface(const RpcInterfaceModel& interfaceModel, const List& interfaces) + { + List properties; + CollectInterfaceProperties(interfaceModel, interfaces, properties); + + auto interfaceDecl = Ptr(new WfClassDeclaration); + interfaceDecl->name.value = L"IRpcWrapper_" + interfaceModel.interfaceName; + interfaceDecl->kind = WfClassKind::Interface; + interfaceDecl->constructorType = WfConstructorType::SharedPtr; + + { + auto baseType = Ptr(new WfReferenceType); + baseType->name.value = interfaceModel.fullName; + auto qualType = CreateQualifiedType(interfaceModel.fullName); + interfaceDecl->baseTypes.Add(qualType); + } + + { + auto baseType = CreateQualifiedType(L"system::IRpcWrapperBase"); + interfaceDecl->baseTypes.Add(baseType); + } + + for (auto propertyModel : properties) + { + if (propertyModel->cached && propertyModel->valueChangedEvent != L"") + { + auto invalidateDecl = Ptr(new WfFunctionDeclaration); + invalidateDecl->name.value = GetPropertyCacheResetFunctionName(*propertyModel); + invalidateDecl->returnType = CreatePredefinedType(WfPredefinedTypeName::Void); + invalidateDecl->functionKind = WfFunctionKind::Normal; + invalidateDecl->anonymity = WfFunctionAnonymity::Named; + interfaceDecl->declarations.Add(invalidateDecl); + } + } + + return interfaceDecl; + } + + WString GetRpcOpsInvokeMethodName(const RpcMethodModel& methodModel); + WString GetRpcOpsInvokeEventName(const RpcEventModel& eventModel); + + Ptr GenerateListenerFactory(const RpcInterfaceModel& interfaceModel, const List& interfaces, const WString& opsInterfaceName) + { + List events; + CollectInterfaceEvents(interfaceModel, interfaces, events); + if (events.Count() == 0) + { + return nullptr; + } + + auto mangledName = MangleRpcFullName(interfaceModel.fullName); + auto functionDecl = CreateFunctionDeclaration(L"rpclistener_" + mangledName, CreatePredefinedType(WfPredefinedTypeName::Void), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"lc", CreateRawType(L"system::IRpcLifecycle"))); + functionDecl->arguments.Add(CreateFunctionArgument(L"ref", CreateQualifiedType(L"system::RpcObjectReference"))); + functionDecl->arguments.Add(CreateFunctionArgument(L"target", CreateRawType(interfaceModel.fullName))); + functionDecl->arguments.Add(CreateFunctionArgument(L"ops", CreateSharedType(opsInterfaceName))); + auto block = functionDecl->statement.Cast(); + + for (auto eventModel : events) + { + auto lambdaBody = CreateBlock(); + + AddStatement( + lambdaBody, + CreateIf( + CreateCall( + CreateMember(CreateMember(CreateReference(L"lc"), L"Controller"), L"GetEventSuppressedFlag"), + CreateReference(L"ref"), + CreateRpcConstantReference(L"rpcevent_", eventModel->fullName) + ), + CreateReturn(nullptr) + ) + ); + auto invoke = CreateCall( + CreateMember(CreateReference(L"ops"), GetRpcOpsInvokeEventName(*eventModel)), + CreateReference(L"ref")); + for (auto&& paramModel : eventModel->params) + { + invoke->arguments.Add(CreateReference(paramModel.name)); + } + AddStatement(lambdaBody, CreateExpressionStatement(invoke)); + + auto attach = Ptr(new WfAttachEventExpression); + attach->event = CreateMember(CreateReference(L"target"), eventModel->name); + attach->function = CreateFunctionExpression(CreateAnonymousLambda(eventModel->params, lambdaBody)); + AddStatement(block, CreateExpressionStatement(attach)); + } + + return functionDecl; + } + + Ptr GenerateListenerDispatcher(const List& interfaces, const WString& opsInterfaceName) + { + auto functionDecl = CreateFunctionDeclaration(L"rpclistener_Attach", CreatePredefinedType(WfPredefinedTypeName::Void), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"typeId", CreatePredefinedType(WfPredefinedTypeName::Int))); + functionDecl->arguments.Add(CreateFunctionArgument(L"lc", CreateRawType(L"system::IRpcLifecycle"))); + functionDecl->arguments.Add(CreateFunctionArgument(L"ref", CreateQualifiedType(L"system::RpcObjectReference"))); + functionDecl->arguments.Add(CreateFunctionArgument(L"obj", CreateRawType(L"system::Interface"))); + functionDecl->arguments.Add(CreateFunctionArgument(L"ops", CreateSharedType(opsInterfaceName))); + auto block = functionDecl->statement.Cast(); + + auto switchStat = Ptr(new WfSwitchStatement); + switchStat->expression = CreateReference(L"typeId"); + switchStat->defaultBranch = CreateRaise(L"Unknown RPC type id for listener attachment."); + + for (auto&& interfaceModel : interfaces) + { + auto switchCase = Ptr(new WfSwitchCase); + switchCase->expression = CreateRpcConstantReference(L"rpctype_", interfaceModel.fullName); + auto caseBranch = CreateBlock(); + if (HasInterfaceEvents(interfaceModel, interfaces)) + { + auto mangledName = MangleRpcFullName(interfaceModel.fullName); + AddStatement(caseBranch, CreateExpressionStatement(CreateCall(CreateReference(L"rpclistener_" + mangledName), CreateReference(L"lc"), CreateReference(L"ref"), CreateCast(CreateRawType(interfaceModel.fullName), CreateReference(L"obj")), CreateReference(L"ops")))); + } + AddStatement(caseBranch, CreateReturn(nullptr)); + switchCase->statement = caseBranch; + switchStat->caseBranches.Add(switchCase); + } + + AddStatement(block, switchStat); + return functionDecl; + } + + WString GetRpcOpsInterfaceName(const WString& assemblyName) + { + return L"rpcops_IOps_" + assemblyName; + } + + WString GetRpcOpsInvokeMethodName(const RpcMethodModel& methodModel) + { + return L"InvokeMethod_" + MangleRpcFullName(methodModel.fullName); + } + + WString GetRpcOpsInvokeEventName(const RpcEventModel& eventModel) + { + return L"InvokeEvent_" + MangleRpcFullName(eventModel.fullName); + } + + WString GetRpcOpsArgumentName(const RpcParamModel& paramModel) + { + return L"arg_" + paramModel.name; + } + + Ptr CreateRpcOpsFunctionDeclaration(const WString& name, Ptr returnType, WfFunctionKind kind) + { + auto functionDecl = Ptr(new WfFunctionDeclaration); + functionDecl->name.value = name; + functionDecl->returnType = returnType; + functionDecl->functionKind = kind; + functionDecl->anonymity = WfFunctionAnonymity::Named; + if (kind == WfFunctionKind::Override) + { + functionDecl->statement = CreateBlock(); + } + return functionDecl; + } + + void AddRpcOpsFunctionArguments(Ptr functionDecl, const List& params) + { + functionDecl->arguments.Add(CreateFunctionArgument(L"ref", CreateQualifiedType(L"system::RpcObjectReference"))); + for (auto&& paramModel : params) + { + functionDecl->arguments.Add(CreateFunctionArgument(GetRpcOpsArgumentName(paramModel), CopyType(paramModel.type.Obj()))); + } + } + + void AddRpcOpsArgumentsArray( + Ptr block, + const List& params) + { + AddStatement(block, CreateVariableStatement(L"arguments", CreateSharedType(L"system::Array"), CreateConstructor())); + AddStatement(block, CreateExpressionStatement(CreateCall(CreateMember(CreateReference(L"arguments"), L"Resize"), CreateInt(params.Count())))); + + for (vint i = 0; i < params.Count(); i++) + { + auto&& paramModel = params[i]; + auto value = CreateReference(GetRpcOpsArgumentName(paramModel)); + auto argument = CreateRpcBoxExpression(paramModel.typeInfo, paramModel.byref, value, CreateReference(L"_lc")); + AddStatement(block, CreateExpressionStatement(CreateCall(CreateMember(CreateReference(L"arguments"), L"Set"), CreateInt(i), argument))); + } + } + + Ptr CreateRpcOpsObjectOps() + { + return CreateCall( + CreateMember(CreateMember(CreateReference(L"_lc"), L"Dispatcher"), L"SendToClient_ObjectOps"), + CreateMember(CreateReference(L"ref"), L"clientId") + ); + } + + Ptr CreateRpcOpsObjectInvoke(const RpcMethodModel& methodModel, Ptr objectOps) + { + return CreateCall( + CreateMember(objectOps, L"InvokeMethod"), + CreateReference(L"ref"), + CreateRpcConstantReference(L"rpcmethod_", methodModel.fullName), + CreateReference(L"arguments") + ); + } + + Ptr CreateRpcOpsObjectInvoke(const RpcMethodModel& methodModel) + { + return CreateRpcOpsObjectInvoke(methodModel, CreateRpcOpsObjectOps()); + } + + Ptr CreateRpcOpsObjectEventInvoke(const RpcEventModel& eventModel) + { + return CreateCall( + CreateMember( + CreateCall( + CreateMember(CreateMember(CreateReference(L"_lc"), L"Dispatcher"), L"BroadcastFromClient_ObjectEventOps"), + CreateMember(CreateReference(L"_lc"), L"ClientId") + ), + L"InvokeEvent" + ), + CreateReference(L"ref"), + CreateRpcConstantReference(L"rpcevent_", eventModel.fullName), + CreateReference(L"arguments") + ); + } + + Ptr GenerateRpcOpsMethodImplementation(const RpcMethodModel& methodModel) + { + auto functionDecl = CreateRpcOpsFunctionDeclaration(GetRpcOpsInvokeMethodName(methodModel), CopyType(methodModel.returnType.Obj()), WfFunctionKind::Override); + AddRpcOpsFunctionArguments(functionDecl, methodModel.params); + auto block = functionDecl->statement.Cast(); + + AddRpcOpsArgumentsArray(block, methodModel.params); + if (IsVoidType(methodModel.returnType.Obj())) + { + auto invoke = CreateRpcOpsObjectInvoke(methodModel); + AddStatement(block, CreateInferredVariableStatement(L"invokeResult", invoke)); + AddRpcMethodExceptionRaise(block, CreateReference(L"invokeResult")); + } + else if (IsRpcByvalReturn(methodModel)) + { + AddStatement(block, CreateInferredVariableStatement(L"objectOps", CreateRpcOpsObjectOps())); + auto invoke = CreateRpcOpsObjectInvoke(methodModel, CreateReference(L"objectOps")); + AddStatement(block, CreateInferredVariableStatement(L"invokeResult", invoke)); + AddRpcMethodExceptionRaise(block, CreateReference(L"invokeResult")); + AddStatement(block, CreateInferredVariableStatement( + L"byvalReturnValue", + CreateCast(CreateSharedType(L"system::RpcByvalReturnValue"), CreateReference(L"invokeResult")))); + AddStatement(block, CreateInferredVariableStatement( + L"result", + CreateRpcUnboxExpression( + methodModel.returnTypeInfo, + methodModel.returnType, + methodModel.returnByref, + CreateMember(CreateReference(L"byvalReturnValue"), L"value"), + CreateReference(L"_lc")))); + AddStatement(block, CreateExpressionStatement(CreateCall( + CreateMember(CreateReference(L"objectOps"), L"EndInvokeMethod"), + CreateMember(CreateReference(L"byvalReturnValue"), L"slot")))); + AddStatement(block, CreateReturn(CreateReference(L"result"))); + } + else + { + auto invoke = CreateRpcOpsObjectInvoke(methodModel); + AddStatement(block, CreateInferredVariableStatement(L"invokeResult", invoke)); + AddRpcMethodExceptionRaise(block, CreateReference(L"invokeResult")); + AddStatement(block, CreateReturn(CreateRpcUnboxExpression(methodModel.returnTypeInfo, methodModel.returnType, methodModel.returnByref, CreateReference(L"invokeResult"), CreateReference(L"_lc")))); + } + + return functionDecl; + } + + Ptr GenerateRpcOpsEventImplementation(const RpcEventModel& eventModel) + { + auto functionDecl = CreateRpcOpsFunctionDeclaration(GetRpcOpsInvokeEventName(eventModel), CreatePredefinedType(WfPredefinedTypeName::Void), WfFunctionKind::Override); + AddRpcOpsFunctionArguments(functionDecl, eventModel.params); + auto block = functionDecl->statement.Cast(); + + AddRpcOpsArgumentsArray(block, eventModel.params); + AddRpcEventExceptionRaise(block, CreateCast(CreateRpcEventExceptionMapType(), CreateRpcOpsObjectEventInvoke(eventModel))); + return functionDecl; + } + + Ptr GenerateRpcOpsInterface(const WString& assemblyName, const List& interfaces) + { + auto interfaceDecl = Ptr(new WfClassDeclaration); + interfaceDecl->name.value = GetRpcOpsInterfaceName(assemblyName); + interfaceDecl->kind = WfClassKind::Interface; + interfaceDecl->constructorType = WfConstructorType::SharedPtr; + + for (auto&& interfaceModel : interfaces) + { + for (auto&& methodModel : interfaceModel.methods) + { + auto methodDecl = CreateRpcOpsFunctionDeclaration(GetRpcOpsInvokeMethodName(methodModel), CopyType(methodModel.returnType.Obj()), WfFunctionKind::Normal); + AddRpcOpsFunctionArguments(methodDecl, methodModel.params); + interfaceDecl->declarations.Add(methodDecl); + } + for (auto&& eventModel : interfaceModel.events) + { + auto eventDecl = CreateRpcOpsFunctionDeclaration(GetRpcOpsInvokeEventName(eventModel), CreatePredefinedType(WfPredefinedTypeName::Void), WfFunctionKind::Normal); + AddRpcOpsFunctionArguments(eventDecl, eventModel.params); + interfaceDecl->declarations.Add(eventDecl); + } + } + + return interfaceDecl; + } + + Ptr GenerateRpcOpsFactory(const WString& assemblyName, const List& interfaces) + { + auto functionDecl = CreateFunctionDeclaration(L"rpcops_IOps_Create", CreateSharedType(GetRpcOpsInterfaceName(assemblyName)), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"lc", CreateRawType(L"system::IRpcLifecycle"))); + auto newOps = CreateNewInterface(CreateSharedType(GetRpcOpsInterfaceName(assemblyName))).Cast(); + newOps->declarations.Add(CreateVariableDeclaration(L"_lc", CreateRawType(L"system::IRpcLifecycle"), CreateReference(L"lc"))); + + for (auto&& interfaceModel : interfaces) + { + for (auto&& methodModel : interfaceModel.methods) + { + newOps->declarations.Add(GenerateRpcOpsMethodImplementation(methodModel)); + } + for (auto&& eventModel : interfaceModel.events) + { + newOps->declarations.Add(GenerateRpcOpsEventImplementation(eventModel)); + } + } + + AddStatement(functionDecl->statement.Cast(), CreateReturn(newOps)); + return functionDecl; + } + + Ptr GenerateWrapperFactory(const RpcInterfaceModel& interfaceModel, const List& interfaces, const WString& opsInterfaceName) + { + auto mangledName = MangleRpcFullName(interfaceModel.fullName); + auto wrapperInterfaceFullName = interfaceModel.fullName.Sub(0, interfaceModel.fullName.Length() - interfaceModel.interfaceName.Length()) + L"IRpcWrapper_" + interfaceModel.interfaceName; + List properties; + CollectInterfaceProperties(interfaceModel, interfaces, properties); + List methods; + CollectInterfaceMethods(interfaceModel, interfaces, methods); + List events; + CollectInterfaceEvents(interfaceModel, interfaces, events); + + auto functionDecl = CreateFunctionDeclaration(L"rpcwrapper_" + mangledName, CreateSharedType(wrapperInterfaceFullName), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"lc", CreateRawType(L"system::IRpcLifecycle"))); + functionDecl->arguments.Add(CreateFunctionArgument(L"proxyRef", CreateQualifiedType(L"system::RpcObjectReference"))); + functionDecl->arguments.Add(CreateFunctionArgument(L"ops", CreateSharedType(opsInterfaceName))); + auto block = functionDecl->statement.Cast(); + + auto proxyExpr = CreateNewInterface(CreateSharedType(wrapperInterfaceFullName)).Cast(); + proxyExpr->declarations.Add(CreateVariableDeclaration(L"_lc", CreateRawType(L"system::IRpcLifecycle"), CreateReference(L"lc"))); + proxyExpr->declarations.Add(CreateVariableDeclaration(L"_ref", CreateQualifiedType(L"system::RpcObjectReference"), CreateReference(L"proxyRef"))); + proxyExpr->declarations.Add(CreateVariableDeclaration(L"_ops", CreateSharedType(opsInterfaceName), CreateReference(L"ops"))); + for (auto propertyModel : properties) + { + if (propertyModel->cached) + { + proxyExpr->declarations.Add(CreateVariableDeclaration(GetPropertyCacheValueName(*propertyModel), CopyType(propertyModel->type.Obj()), CreateRpcCachedPropertyInitialValue(*propertyModel))); + proxyExpr->declarations.Add(CreateVariableDeclaration(GetPropertyCacheAvailableName(*propertyModel), CreatePredefinedType(WfPredefinedTypeName::Bool), CreateBool(false))); + } + } + + for (auto propertyModel : properties) + { + if (propertyModel->cached && propertyModel->valueChangedEvent != L"") + { + auto invalidateDecl = CreateFunctionDeclaration(GetPropertyCacheResetFunctionName(*propertyModel), CreatePredefinedType(WfPredefinedTypeName::Void), WfFunctionKind::Override); + auto invalidateBlock = invalidateDecl->statement.Cast(); + AddStatement(invalidateBlock, CreateExpressionStatement(CreateAssign(CreateReference(GetPropertyCacheAvailableName(*propertyModel)), CreateBool(false)))); + proxyExpr->declarations.Add(invalidateDecl); + } + } + + // Generate DisconnectFromLifecycle override + { + auto disconnectDecl = CreateFunctionDeclaration(L"DisconnectFromLifecycle", CreatePredefinedType(WfPredefinedTypeName::Void), WfFunctionKind::Override); + auto disconnectBlock = disconnectDecl->statement.Cast(); + AddStatement(disconnectBlock, CreateExpressionStatement(CreateAssign(CreateReference(L"_lc"), CreateNull()))); + AddStatement(disconnectBlock, CreateExpressionStatement(CreateAssign(CreateReference(L"_ops"), CreateNull()))); + proxyExpr->declarations.Add(disconnectDecl); + } + + // Generate destructor: delete{} + { + auto dtorDecl = Ptr(new WfDestructorDeclaration); + auto dtorBlock = CreateBlock(); + dtorDecl->statement = dtorBlock; + + // if (_lc is not null) { _lc.Dispatcher.SendToClient_ObjectOps(_ref.clientId).ObjectHold(_ref, _lc.ClientId, false); } + auto condition = CreateIsNotNull(CreateReference(L"_lc")); + auto trueBranch = CreateBlock(); + AddStatement( + trueBranch, + CreateExpressionStatement( + CreateCall( + CreateMember( + CreateCall( + CreateMember(CreateMember(CreateReference(L"_lc"), L"Dispatcher"), L"SendToClient_ObjectOps"), + CreateMember(CreateReference(L"_ref"), L"clientId") + ), + L"ObjectHold" + ), + CreateReference(L"_ref"), + CreateMember(CreateReference(L"_lc"), L"ClientId"), + CreateBool(false) + ) + ) + ); + AddStatement(dtorBlock, CreateIf(condition, trueBranch)); + + proxyExpr->declarations.Add(dtorDecl); + } + + for (auto methodModel : methods) + { + const RpcPropertyModel* cachedProperty = nullptr; + if (methodModel->kind == RpcMethodKind::PropertyGetter) + { + for (auto propertyModel : properties) + { + if (propertyModel->cached && propertyModel->getterName == methodModel->name) + { + cachedProperty = propertyModel; + break; + } + } + } + + auto methodDecl = CreateFunctionDeclaration(methodModel->name, CopyType(methodModel->returnType.Obj()), WfFunctionKind::Override); + for (auto&& paramModel : methodModel->params) + { + methodDecl->arguments.Add(CreateFunctionArgument(paramModel.name, CopyType(paramModel.type.Obj()))); + } + + auto methodBlock = methodDecl->statement.Cast(); + + // null check: if (_lc is null) raise "..." + { + auto condition = CreateIsNull(CreateReference(L"_lc")); + auto trueBranch = CreateRaise(L"RPC wrapper has been disconnected from lifecycle."); + AddStatement(methodBlock, CreateIf(condition, trueBranch)); + } + + if (cachedProperty) + { + auto trueBranch = CreateBlock(); + AddStatement(trueBranch, CreateReturn(CreatePropertyCacheValueRead(*cachedProperty))); + AddStatement(methodBlock, CreateIf(CreatePropertyCacheAvailableRead(*cachedProperty), trueBranch)); + } + + auto invoke = Ptr(new WfCallExpression); + invoke->function = CreateMember(CreateReference(L"_ops"), GetRpcOpsInvokeMethodName(*methodModel)); + invoke->arguments.Add(CreateReference(L"_ref")); + for (auto&& paramModel : methodModel->params) + { + invoke->arguments.Add(CreateReference(paramModel.name)); + } + + if (IsVoidType(methodModel->returnType.Obj())) + { + AddStatement(methodBlock, CreateExpressionStatement(invoke)); + } + else if (cachedProperty) + { + AddStatement(methodBlock, CreateExpressionStatement(CreateAssign(CreateReference(GetPropertyCacheValueName(*cachedProperty)), invoke))); + AddStatement(methodBlock, CreateExpressionStatement(CreateAssign(CreateReference(GetPropertyCacheAvailableName(*cachedProperty)), CreateBool(true)))); + AddStatement(methodBlock, CreateReturn(CreatePropertyCacheValueRead(*cachedProperty))); + } + else + { + AddStatement(methodBlock, CreateReturn(invoke)); + } + + proxyExpr->declarations.Add(methodDecl); + } + + AddStatement(block, CreateInferredVariableStatement(L"proxy", proxyExpr)); + AddStatement( + block, + CreateExpressionStatement( + CreateCall( + CreateMember( + CreateCall( + CreateMember(CreateMember(CreateReference(L"lc"), L"Dispatcher"), L"SendToClient_ObjectOps"), + CreateMember(CreateReference(L"proxyRef"), L"clientId") + ), + L"ObjectHold" + ), + CreateReference(L"proxyRef"), + CreateMember(CreateReference(L"lc"), L"ClientId"), + CreateBool(true) + ) + ) + ); + + for (auto propertyModel : properties) + { + if (propertyModel->cached && propertyModel->valueChangedEvent != L"") + { + if (auto eventModel = FindInterfaceEvent(events, propertyModel->valueChangedEvent)) + { + auto lambdaBody = CreateBlock(); + auto invalidateTarget = CreateCast(CreateSharedType(wrapperInterfaceFullName), CreateCall(CreateMember(CreateReference(L"lc"), L"RefToPtr"), CreateReference(L"proxyRef"))); + AddStatement(lambdaBody, CreateExpressionStatement(CreateCall(CreateMember(invalidateTarget, GetPropertyCacheResetFunctionName(*propertyModel))))); + + auto attach = Ptr(new WfAttachEventExpression); + attach->event = CreateMember(CreateCast(CreateSharedType(interfaceModel.fullName), CreateReference(L"proxy")), eventModel->name); + attach->function = CreateFunctionExpression(CreateAnonymousLambda(eventModel->params, lambdaBody)); + AddStatement(block, CreateExpressionStatement(attach)); + } + } + } + + if (events.Count() > 0) + { + AddStatement(block, CreateExpressionStatement(CreateCall(CreateReference(L"rpclistener_" + mangledName), CreateReference(L"lc"), CreateReference(L"proxyRef"), CreateCast(CreateRawType(interfaceModel.fullName), CreateReference(L"proxy")), CreateReference(L"ops")))); + } + + AddStatement(block, CreateReturn(CreateReference(L"proxy"))); + return functionDecl; + } + + + Ptr GenerateWrapperDispatcher(const List& interfaces, const WString& opsInterfaceName) + { + auto returnType = Ptr(new WfSharedPointerType); + returnType->element = CreateQualifiedType(L"system::IRpcWrapperBase"); + auto functionDecl = CreateFunctionDeclaration(L"rpcwrapper_Create", returnType, WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"ref", CreateQualifiedType(L"system::RpcObjectReference"))); + functionDecl->arguments.Add(CreateFunctionArgument(L"lc", CreateRawType(L"system::IRpcLifecycle"))); + functionDecl->arguments.Add(CreateFunctionArgument(L"ops", CreateSharedType(opsInterfaceName))); + auto block = functionDecl->statement.Cast(); + + auto switchStat = Ptr(new WfSwitchStatement); + switchStat->expression = CreateMember(CreateReference(L"ref"), L"typeId"); + switchStat->defaultBranch = CreateRaise(L"Unknown RPC type id for wrapper creation."); + + for (auto&& interfaceModel : interfaces) + { + auto switchCase = Ptr(new WfSwitchCase); + switchCase->expression = CreateRpcConstantReference(L"rpctype_", interfaceModel.fullName); + auto caseBranch = CreateBlock(); + auto mangledName = MangleRpcFullName(interfaceModel.fullName); + AddStatement(caseBranch, CreateReturn(CreateCall(CreateReference(L"rpcwrapper_" + mangledName), CreateReference(L"lc"), CreateReference(L"ref"), CreateReference(L"ops")))); + switchCase->statement = caseBranch; + switchStat->caseBranches.Add(switchCase); + } + + AddStatement(block, switchStat); + return functionDecl; + } + } + + Ptr GenerateModuleRpc(WfLexicalScopeManager* manager, WString assemblyName) + { + using namespace rpc_generating; + + if (!manager || !manager->rpcMetadata || !manager->rpcMetadata->metadataModule) + { + return nullptr; + } + + CollectMangledNames(manager); + if (manager->errors.Count() > 0) + { + return nullptr; + } + + auto interfaces = BuildInterfaceModels(manager); + if (manager->errors.Count() > 0) + { + return nullptr; + } + auto module = Ptr(new WfModule); + module->moduleType = WfModuleType::Module; + module->name.value = L"RpcMetadata"; + auto opsInterfaceName = GetRpcOpsInterfaceName(assemblyName); + + vint id = 0; + for (auto fullName : manager->rpcMetadata->orderedIds) + { + auto name = WString::Unmanaged(GetRpcConstantPrefix(manager, fullName)) + MangleRpcFullName(fullName); + module->declarations.Add(CreateVariableDeclaration(name, CreatePredefinedType(WfPredefinedTypeName::Int), CreateInt(id++))); + } + + { + auto getIds = CreateFunctionDeclaration(L"rpc_GetIds", CreateMapType(CreatePredefinedType(WfPredefinedTypeName::String), CreatePredefinedType(WfPredefinedTypeName::Int)), WfFunctionKind::Normal); + auto block = getIds->statement.Cast(); + AddStatement(block, CreateVariableStatement(L"result", CreateMapType(CreatePredefinedType(WfPredefinedTypeName::String), CreatePredefinedType(WfPredefinedTypeName::Int)), CreateConstructor())); + id = 0; + for (auto fullName : manager->rpcMetadata->orderedIds) + { + AddStatement(block, CreateExpressionStatement(CreateCall(CreateMember(rpc_generating::CreateReference(L"result"), L"Set"), CreateString(fullName), CreateInt(id++)))); + } + AddStatement(block, CreateReturn(rpc_generating::CreateReference(L"result"))); + module->declarations.Add(getIds); + } + + module->declarations.Add(GenerateIsInterfaceTypeIdHelper(interfaces)); + module->declarations.Add(GenerateIsCtorInterfaceTypeIdHelper(interfaces)); + module->declarations.Add(GenerateRpcOpsInterface(assemblyName, interfaces)); + module->declarations.Add(GenerateObjectOpsFactory(interfaces)); + module->declarations.Add(GenerateObjectEventOpsFactory(interfaces)); + module->declarations.Add(GenerateRpcOpsFactory(assemblyName, interfaces)); + + List> wrapperDeclarations; + Dictionary> wrapperNamespaces; + for (auto&& interfaceModel : interfaces) + { + List namespaceFragments; + SplitTypeFullName(interfaceModel.fullName, namespaceFragments); + namespaceFragments.RemoveAt(namespaceFragments.Count() - 1); + AddDeclarationToNamespaces(wrapperDeclarations, wrapperNamespaces, namespaceFragments, GenerateWrapperInterface(interfaceModel, interfaces)); + } + for (auto declaration : wrapperDeclarations) + { + module->declarations.Add(declaration); + } + + vint listenerCount = 0; + for (auto&& interfaceModel : interfaces) + { + if (auto listener = GenerateListenerFactory(interfaceModel, interfaces, opsInterfaceName)) + { + module->declarations.Add(listener); + listenerCount++; + } + } + if (listenerCount > 0) + { + module->declarations.Add(GenerateListenerDispatcher(interfaces, opsInterfaceName)); + } + + for (auto&& interfaceModel : interfaces) + { + module->declarations.Add(GenerateWrapperFactory(interfaceModel, interfaces, opsInterfaceName)); + } + + module->declarations.Add(GenerateWrapperDispatcher(interfaces, opsInterfaceName)); + + return module; + } + } + } +} + + +/*********************************************************************** +.\ANALYZER\WFANALYZER_GENERATERPC_JSONDTS.CPP +***********************************************************************/ + +namespace vl +{ + namespace workflow + { + namespace analyzer + { +/*********************************************************************** +GenerateDtsFromRpcMetadata +***********************************************************************/ + + namespace rpc_dts_generating + { + using namespace collections; + using namespace reflection; + using namespace reflection::description; + + enum class DtsPrimitiveKind + { + Number, + Boolean, + String, + }; + + struct DtsPrimitiveModel + { + WString keyword; + DtsPrimitiveKind kind = DtsPrimitiveKind::Number; + }; + + struct DtsEnumItemModel + { + WString name; + vuint64_t value = 0; + }; + + struct DtsEnumModel + { + WString fullName; + Ptr> items; + }; + + struct DtsFieldModel + { + WString name; + Ptr type; + }; + + struct DtsStructModel + { + WString fullName; + Ptr> fields; + }; + + struct DtsContext + { + WfLexicalScopeManager* manager = nullptr; + List* enums = nullptr; + List* structs = nullptr; + }; + + void AppendChar(WString& text, wchar_t c) + { + text += WString::CopyFrom(&c, 1); + } + + bool IsDtsIdentifierStart(wchar_t c) + { + return (L'a' <= c && c <= L'z') + || (L'A' <= c && c <= L'Z') + || c == L'_' + || c == L'$'; + } + + bool IsDtsIdentifierPart(wchar_t c) + { + return IsDtsIdentifierStart(c) || (L'0' <= c && c <= L'9'); + } + + WString EscapeDtsString(const WString& value) + { + WString result = L"\""; + for (vint i = 0; i < value.Length(); i++) + { + auto c = value[i]; + switch (c) + { + case L'\\': result += L"\\\\"; break; + case L'"': result += L"\\\""; break; + case L'\r': result += L"\\r"; break; + case L'\n': result += L"\\n"; break; + case L'\t': result += L"\\t"; break; + default: + AppendChar(result, c); + break; + } + } + result += L"\""; + return result; + } + + WString GetDtsPropertyName(const WString& name) + { + if (name.Length() > 0 && IsDtsIdentifierStart(name[0])) + { + bool isIdentifier = true; + for (vint i = 1; i < name.Length(); i++) + { + if (!IsDtsIdentifierPart(name[i])) + { + isIdentifier = false; + break; + } + } + if (isIdentifier) + { + return name; + } + } + return EscapeDtsString(name); + } + + WString MakeDtsTypeName(const WString& fullName) + { + WString result; + for (vint i = 0; i < fullName.Length(); i++) + { + auto c = fullName[i]; + if ((result.Length() == 0 && IsDtsIdentifierStart(c)) || (result.Length() > 0 && IsDtsIdentifierPart(c))) + { + AppendChar(result, c); + } + else if (result.Length() == 0 || result[result.Length() - 1] != L'_') + { + result += L"_"; + } + } + if (result.Length() == 0) + { + return L"_"; + } + if (result[result.Length() - 1] == L'_') + { + result = result.Left(result.Length() - 1); + } + return result; + } + + WString MakeUnknownStructDtsTypeName(const WString& fullName) + { + return L"UnknownType_" + MakeDtsTypeName(fullName); + } + + bool TryGetPrimitiveModel(const WString& fullName, DtsPrimitiveModel& primitive) + { + auto tryName = [&](const wchar_t* name, DtsPrimitiveKind kind) + { + if (fullName == WString::Unmanaged(L"system::") + name) + { + primitive.keyword = WString::Unmanaged(name); + primitive.kind = kind; + return true; + } + return false; + }; + + return tryName(L"UInt8", DtsPrimitiveKind::Number) + || tryName(L"UInt16", DtsPrimitiveKind::Number) + || tryName(L"UInt32", DtsPrimitiveKind::Number) + || tryName(L"UInt64", DtsPrimitiveKind::Number) + || tryName(L"Int8", DtsPrimitiveKind::Number) + || tryName(L"Int16", DtsPrimitiveKind::Number) + || tryName(L"Int32", DtsPrimitiveKind::Number) + || tryName(L"Int64", DtsPrimitiveKind::Number) + || tryName(L"Single", DtsPrimitiveKind::Number) + || tryName(L"Double", DtsPrimitiveKind::Number) + || tryName(L"Boolean", DtsPrimitiveKind::Boolean) + || tryName(L"Char", DtsPrimitiveKind::String) + || tryName(L"String", DtsPrimitiveKind::String) + || tryName(L"DateTime", DtsPrimitiveKind::String) + || tryName(L"Locale", DtsPrimitiveKind::String); + } + + WString GetPredefinedFullName(WfLexicalScopeManager* manager, WfPredefinedTypeName name) + { + switch (name) + { + case WfPredefinedTypeName::Int: + return manager && manager->cputdSInt ? manager->cputdSInt->GetTypeName() : WString::Unmanaged(L"system::Int64"); + case WfPredefinedTypeName::UInt: + return manager && manager->cputdUInt ? manager->cputdUInt->GetTypeName() : WString::Unmanaged(L"system::UInt64"); + case WfPredefinedTypeName::Float: + return L"system::Single"; + case WfPredefinedTypeName::Double: + return L"system::Double"; + case WfPredefinedTypeName::String: + return L"system::String"; + case WfPredefinedTypeName::Char: + return L"system::Char"; + case WfPredefinedTypeName::Bool: + return L"system::Boolean"; + case WfPredefinedTypeName::Object: + return L"system::Object"; + case WfPredefinedTypeName::Interface: + return L"system::Interface"; + default: + return L""; + } + } + + WString GetTypeFullName(WfLexicalScopeManager* manager, WfType* type) + { + if (!type) + { + return L""; + } + if (auto predefined = dynamic_cast(type)) + { + return GetPredefinedFullName(manager, predefined->name); + } + if (auto top = dynamic_cast(type)) + { + return top->name.value; + } + if (auto reference = dynamic_cast(type)) + { + return reference->name.value; + } + if (auto child = dynamic_cast(type)) + { + auto parent = GetTypeFullName(manager, child->parent.Obj()); + return parent == L"" ? child->name.value : parent + L"::" + child->name.value; + } + if (auto raw = dynamic_cast(type)) + { + return GetTypeFullName(manager, raw->element.Obj()); + } + if (auto shared = dynamic_cast(type)) + { + return GetTypeFullName(manager, shared->element.Obj()); + } + if (auto nullable = dynamic_cast(type)) + { + return GetTypeFullName(manager, nullable->element.Obj()); + } + return L""; + } + + vint FindStruct(const List& structs, const WString& fullName) + { + for (vint i = 0; i < structs.Count(); i++) + { + if (structs[i].fullName == fullName) + { + return i; + } + } + return -1; + } + + vint FindEnum(const List& enums, const WString& fullName) + { + for (vint i = 0; i < enums.Count(); i++) + { + if (enums[i].fullName == fullName) + { + return i; + } + } + return -1; + } + + WString GetDtsTypeFromFullName(DtsContext& context, const WString& fullName) + { + DtsPrimitiveModel primitive; + if (TryGetPrimitiveModel(fullName, primitive)) + { + switch (primitive.kind) + { + case DtsPrimitiveKind::Number: + return L"number"; + case DtsPrimitiveKind::Boolean: + return L"boolean"; + case DtsPrimitiveKind::String: + return L"string"; + default: + CHECK_FAIL(L"Internal error: Unknown primitive kind."); + } + } + if (context.enums && FindEnum(*context.enums, fullName) != -1) + { + return L"number"; + } + if (context.structs && FindStruct(*context.structs, fullName) != -1) + { + return MakeDtsTypeName(fullName); + } + return L"UnknownTypeSchema"; + } + + WString GetDtsTypeFromType(DtsContext& context, WfType* type) + { + if (!type) + { + return L"UnknownTypeSchema"; + } + if (auto nullable = dynamic_cast(type)) + { + return GetDtsTypeFromType(context, nullable->element.Obj()) + L" | null"; + } + if (auto raw = dynamic_cast(type)) + { + return GetDtsTypeFromType(context, raw->element.Obj()); + } + if (auto shared = dynamic_cast(type)) + { + return GetDtsTypeFromType(context, shared->element.Obj()); + } + if (auto enumerable = dynamic_cast(type)) + { + return GetDtsTypeFromType(context, enumerable->element.Obj()) + L"[]"; + } + if (auto map = dynamic_cast(type)) + { + if (map->key) + { + return L"[" + GetDtsTypeFromType(context, map->key.Obj()) + L", " + GetDtsTypeFromType(context, map->value.Obj()) + L"][]"; + } + return GetDtsTypeFromType(context, map->value.Obj()) + L"[]"; + } + if (auto observable = dynamic_cast(type)) + { + return GetDtsTypeFromType(context, observable->element.Obj()) + L"[]"; + } + return GetDtsTypeFromFullName(context, GetTypeFullName(context.manager, type)); + } + + void AddDtsTypesFromDeclarations( + const List>& declarations, + const WString& prefix, + List& enums, + List& structs) + { + for (auto declaration : declarations) + { + auto fullName = prefix == L"" ? declaration->name.value : prefix + L"::" + declaration->name.value; + if (auto namespaceDecl = declaration.Cast()) + { + AddDtsTypesFromDeclarations(namespaceDecl->declarations, fullName, enums, structs); + } + else if (auto enumDecl = declaration.Cast()) + { + if (FindEnum(enums, fullName) == -1) + { + DtsEnumModel model; + model.fullName = fullName; + model.items = Ptr(new List); + Dictionary values; + for (auto item : enumDecl->items) + { + DtsEnumItemModel itemModel; + itemModel.name = item->name.value; + if (item->kind == WfEnumItemKind::Constant) + { + itemModel.value = wtou64(item->number.value); + } + else + { + for (auto intersection : item->intersections) + { + auto index = values.Keys().IndexOf(intersection->name.value); + if (index != -1) + { + itemModel.value |= values.Values()[index]; + } + } + } + values.Add(itemModel.name, itemModel.value); + model.items->Add(itemModel); + } + enums.Add(model); + } + } + else if (auto structDecl = declaration.Cast()) + { + if (FindStruct(structs, fullName) != -1) + { + continue; + } + + DtsStructModel model; + model.fullName = fullName; + model.fields = Ptr(new List); + for (auto member : structDecl->members) + { + DtsFieldModel field; + field.name = member->name.value; + field.type = CopyType(member->type.Obj()); + model.fields->Add(field); + } + structs.Add(model); + } + } + } + + void AddRpcBuiltinDtsStruct(List& structs, const WString& fullName, ITypeDescriptor* td) + { + if (FindStruct(structs, fullName) != -1) + { + return; + } + + if (!td) + { + return; + } + + DtsStructModel model; + model.fullName = fullName; + model.fields = Ptr(new List); + for (vint i = 0; i < td->GetPropertyCount(); i++) + { + auto propertyInfo = td->GetProperty(i); + DtsFieldModel field; + field.name = propertyInfo->GetName(); + field.type = GetTypeFromTypeInfo(propertyInfo->GetReturn()); + model.fields->Add(field); + } + structs.Add(model); + } + + const wchar_t* GetDtsPrimitiveTypeScriptType(DtsPrimitiveKind kind) + { + switch (kind) + { + case DtsPrimitiveKind::Number: + return L"number"; + case DtsPrimitiveKind::Boolean: + return L"boolean"; + case DtsPrimitiveKind::String: + return L"string"; + default: + CHECK_FAIL(L"Internal error: Unknown primitive kind."); + } + } + + void AppendUnknownTypePrimitiveSchema(WString& dts) + { + const Pair primitiveNames[] = + { + { L"UInt8", DtsPrimitiveKind::Number }, + { L"UInt16", DtsPrimitiveKind::Number }, + { L"UInt32", DtsPrimitiveKind::Number }, + { L"UInt64", DtsPrimitiveKind::Number }, + { L"Int8", DtsPrimitiveKind::Number }, + { L"Int16", DtsPrimitiveKind::Number }, + { L"Int32", DtsPrimitiveKind::Number }, + { L"Int64", DtsPrimitiveKind::Number }, + { L"Single", DtsPrimitiveKind::Number }, + { L"Double", DtsPrimitiveKind::Number }, + { L"Char", DtsPrimitiveKind::String }, + { L"DateTime", DtsPrimitiveKind::String }, + { L"Locale", DtsPrimitiveKind::String }, + }; + + dts += L"export type UnknownType_PrimitiveSchema =\r\n"; + for (auto&& [name, kind] : primitiveNames) + { + dts += L" | [" + EscapeDtsString(WString::Unmanaged(name)) + L", " + WString::Unmanaged(GetDtsPrimitiveTypeScriptType(kind)) + L"]\r\n"; + } + dts += L" | null\r\n"; + dts += L" | true\r\n"; + dts += L" | false\r\n"; + dts += L" | string\r\n"; + dts += L" ;\r\n\r\n"; + } + + void AppendTypeListEnum(WString& dts, const List& enums) + { + if (enums.Count() == 0) + { + dts += L"export type TypeList_Enum = never;\r\n\r\n"; + return; + } + + dts += L"export type TypeList_Enum =\r\n"; + for (auto&& model : enums) + { + dts += L" | " + EscapeDtsString(model.fullName) + L"\r\n"; + } + dts += L" ;\r\n\r\n"; + } + + void AppendUnknownTypeEnumSchema(WString& dts) + { + dts += L"export type UnknownType_EnumSchema = [TypeList_Enum, number];\r\n\r\n"; + } + + void AppendUnknownTypeList(WString& dts) + { + dts += L"export interface UnknownType_List\r\n"; + dts += L"{\r\n"; + dts += L" " + EscapeDtsString(L"$") + L": " + EscapeDtsString(L"list") + L" | " + EscapeDtsString(L"oblist") + L";\r\n"; + dts += L" values: UnknownTypeSchema[];\r\n"; + dts += L"}\r\n\r\n"; + } + + void AppendUnknownTypeMap(WString& dts) + { + dts += L"export interface UnknownType_Map\r\n"; + dts += L"{\r\n"; + dts += L" " + EscapeDtsString(L"$") + L": " + EscapeDtsString(L"map") + L";\r\n"; + dts += L" values: [UnknownTypeSchema, UnknownTypeSchema][];\r\n"; + dts += L"}\r\n\r\n"; + } + + void AppendUnknownTypeSchemaUnion(WString& dts, const List& structs) + { + dts += L"export type UnknownTypeSchema =\r\n"; + dts += L" | UnknownType_PrimitiveSchema\r\n"; + dts += L" | UnknownType_EnumSchema\r\n"; + dts += L" | UnknownType_List\r\n"; + dts += L" | UnknownType_Map\r\n"; + for (auto&& model : structs) + { + dts += L" | " + MakeUnknownStructDtsTypeName(model.fullName) + L"\r\n"; + } + dts += L" ;\r\n\r\n"; + } + + void AppendUnknownStructSchemas(WString& dts, DtsContext& context) + { + for (auto&& model : *context.structs) + { + dts += L"export interface " + MakeUnknownStructDtsTypeName(model.fullName) + L" extends " + MakeDtsTypeName(model.fullName) + L"\r\n"; + dts += L"{\r\n"; + dts += L" " + EscapeDtsString(L"$") + L": " + EscapeDtsString(model.fullName) + L";\r\n"; + dts += L"}\r\n\r\n"; + } + } + + void AppendKnownEnums(WString& dts, const List& enums) + { + for (auto&& model : enums) + { + dts += L"export enum " + MakeDtsTypeName(model.fullName) + L"\r\n"; + dts += L"{\r\n"; + for (auto&& item : *model.items.Obj()) + { + dts += L" " + GetDtsPropertyName(item.name) + L" = " + u64tow(item.value) + L",\r\n"; + } + dts += L"}\r\n\r\n"; + } + } + + void AppendKnownStructs(WString& dts, DtsContext& context) + { + for (auto&& model : *context.structs) + { + dts += L"export interface " + MakeDtsTypeName(model.fullName) + L"\r\n"; + dts += L"{\r\n"; + for (auto&& field : *model.fields.Obj()) + { + dts += L" " + GetDtsPropertyName(field.name) + L": " + GetDtsTypeFromType(context, field.type.Obj()) + L";\r\n"; + } + dts += L"}\r\n\r\n"; + } + } + + void AppendKnownTypeSchema(WString& dts, const List& structs) + { + dts += L"// All enum_type_full_name is omitted because in known type enums are just numbers\r\n"; + dts += L"export type KnownTypeSchema =\r\n"; + dts += L" | number\r\n"; + dts += L" | true\r\n"; + dts += L" | false\r\n"; + dts += L" | string\r\n"; + dts += L" | KnownTypeSchema[]\r\n"; + dts += L" | [KnownTypeSchema, KnownTypeSchema][]\r\n"; + for (auto&& model : structs) + { + dts += L" | " + MakeDtsTypeName(model.fullName) + L"\r\n"; + } + dts += L" ;\r\n"; + } + } + + WString GenerateDtsFromRpcMetadata(WfLexicalScopeManager* manager) + { + using namespace rpc_dts_generating; + + WString dts; + if (!manager || !manager->rpcMetadata || !manager->rpcMetadata->metadataModule) + { + return dts; + } + + List enums; + List structs; + AddDtsTypesFromDeclarations(manager->rpcMetadata->metadataModule->declarations, L"", enums, structs); + AddRpcBuiltinDtsStruct(structs, WString::Unmanaged(L"system::RpcObjectReference"), GetTypeDescriptor()); + AddRpcBuiltinDtsStruct(structs, WString::Unmanaged(L"system::RpcException"), GetTypeDescriptor()); + + DtsContext context; + context.manager = manager; + context.enums = &enums; + context.structs = &structs; + + AppendUnknownTypePrimitiveSchema(dts); + AppendTypeListEnum(dts, enums); + AppendUnknownTypeEnumSchema(dts); + AppendUnknownTypeList(dts); + AppendUnknownTypeMap(dts); + AppendUnknownTypeSchemaUnion(dts, structs); + AppendUnknownStructSchemas(dts, context); + dts += L"// below are all known types\r\n\r\n"; + AppendKnownEnums(dts, enums); + AppendKnownStructs(dts, context); + AppendKnownTypeSchema(dts, structs); + return dts; + } + } + } +} + + +/*********************************************************************** +.\ANALYZER\WFANALYZER_GENERATERPC_JSONSERIALIZATION.CPP +***********************************************************************/ + +namespace vl +{ + namespace workflow + { + namespace analyzer + { + using namespace collections; + + namespace rpc_generating + { + using namespace reflection::description; + + WString MangleRpcFullName(const WString& fullName); + Ptr CopyType(WfType* type); + Ptr CreatePredefinedType(WfPredefinedTypeName name); + Ptr CreateQualifiedType(const WString& fullName); + Ptr CreateTopQualifiedType(const WString& fullName); + Ptr CreateRawType(const WString& fullName); + Ptr CreateSharedType(const WString& fullName); + Ptr CreateNullableType(const WString& fullName); + Ptr CreateMapType(Ptr keyType, Ptr valueType); + Ptr CreateNull(); + Ptr CreateIsNull(Ptr expression); + Ptr CreateIsNotNull(Ptr expression); + Ptr CreateBool(bool value); + Ptr CreateInt(vint value); + Ptr CreateString(const WString& value); + Ptr CreateReference(const WString& name); + Ptr CreateQualifiedExpression(const WString& fullName); + Ptr CreateMember(Ptr parent, const WString& name); + Ptr CreateBinary(WfBinaryOperator op, Ptr first, Ptr second); + Ptr CreateAssign(Ptr left, Ptr right); + Ptr CreateIndex(Ptr collection, Ptr index); + Ptr CreateCast(Ptr type, Ptr expression); + Ptr CreateWeakCast(Ptr type, Ptr expression); + Ptr CreateInfer(Ptr expression, Ptr type); + + Ptr CreateConstructorArgument(Ptr key, Ptr value); + Ptr CreateConstructor(); + Ptr CreateRpcExceptionExpression(Ptr message); + Ptr CreateRpcEventExceptionMapType(); + Ptr CreateNewClass(Ptr type); + Ptr CreateNewInterface(Ptr type); + Ptr CreateExpressionStatement(Ptr expression); + Ptr CreateReturn(Ptr expression); + Ptr CreateRaise(const WString& message); + Ptr CreateRaise(Ptr expression); + Ptr CreateTry(Ptr protectedStatement, const WString& name, Ptr catchStatement, Ptr finallyStatement); + Ptr CreateTryCatch(Ptr protectedStatement, const WString& name, Ptr catchStatement); + Ptr CreateVariableDeclaration(const WString& name, Ptr type, Ptr expression); + Ptr CreateVariableStatement(const WString& name, Ptr type, Ptr expression); + Ptr CreateInferredVariableStatement(const WString& name, Ptr expression); + Ptr CreateForEach(const WString& name, Ptr collection, Ptr body); + Ptr CreateBlock(); + void AddStatement(Ptr block, Ptr statement); + void AddRpcMethodExceptionRaise(Ptr block, Ptr value); + void AddRpcEventExceptionMapSet(Ptr block, const WString& mapName, Ptr clientId, Ptr message); + void AddRpcEventExceptionRaise(Ptr block, Ptr value); + Ptr CreateFunctionArgument(const WString& name, Ptr type); + void AddSwitchCase(Ptr switchStat, Ptr expression, Ptr statement); + bool IsSharedInterfaceType(ITypeInfo* type); + bool IsVoidType(WfType* type); + bool IsRpcByvalReturn(const RpcMethodModel& methodModel); + Ptr CreateRpcBoxExpression(ITypeInfo* typeInfo, bool byref, Ptr value, Ptr lifecycle); + Ptr CreateRpcUnboxExpression(ITypeInfo* typeInfo, Ptr type, bool byref, Ptr value, Ptr lifecycle); + Ptr CreateRpcCopyByvalExpression(Ptr value, Ptr lifecycle); + void AddRpcByvalReturnValue(Ptr block, Ptr value, Ptr copiedValue); + Ptr CreateRpcConstantReference(const wchar_t* prefix, const WString& fullName); + void CollectMangledNames(WfLexicalScopeManager* manager); + List BuildInterfaceModels(WfLexicalScopeManager* manager); + bool HasRpcEvents(const List& interfaces); + Ptr BuildRegisterService(); + WString GetRpcOpsInterfaceName(const WString& assemblyName); + WString GetRpcOpsInvokeMethodName(const RpcMethodModel& methodModel); + WString GetRpcOpsInvokeEventName(const RpcEventModel& eventModel); + WString GetRpcOpsArgumentName(const RpcParamModel& paramModel); + Ptr CreateRpcOpsFunctionDeclaration(const WString& name, Ptr returnType, WfFunctionKind kind); + void AddRpcOpsFunctionArguments(Ptr functionDecl, const List& params); + Ptr CreateRpcOpsObjectOps(); + Ptr CreateRpcOpsObjectInvoke(const RpcMethodModel& methodModel, Ptr objectOps); + Ptr CreateRpcOpsObjectInvoke(const RpcMethodModel& methodModel); + Ptr CreateRpcOpsObjectEventInvoke(const RpcEventModel& eventModel); + + enum class RpcJsonPrimitiveKind + { + Number, + Boolean, + String, + }; + + struct RpcJsonPrimitiveModel + { + WString fullName; + WString keyword; + RpcJsonPrimitiveKind kind = RpcJsonPrimitiveKind::Number; + }; + + struct RpcJsonFieldModel + { + WString name; + Ptr type; + }; + + struct RpcJsonTypeModel + { + WString fullName; + Ptr type; + Ptr> fields; + }; + + Ptr CreateJsonArrayItem(const WString& arrayName, vint index) + { + return CreateIndex(CreateMember(CreateReference(arrayName), L"items"), CreateInt(index)); + } + + Ptr CreateJsonArrayItemContent(const WString& arrayName, vint index, const WString& jsonType) + { + return CreateMember(CreateMember(CreateCast(CreateSharedType(jsonType), CreateJsonArrayItem(arrayName, index)), L"content"), L"value"); + } + + void AddRpcJsonTypesFromDeclarations( + const List>& declarations, + const WString& prefix, + List& enums, + List& structs) + { + for (auto declaration : declarations) + { + auto fullName = prefix == L"" ? declaration->name.value : prefix + L"::" + declaration->name.value; + if (auto namespaceDecl = declaration.Cast()) + { + AddRpcJsonTypesFromDeclarations(namespaceDecl->declarations, fullName, enums, structs); + } + else if (declaration.Cast()) + { + RpcJsonTypeModel model; + model.fullName = fullName; + model.type = CreateTopQualifiedType(fullName); + enums.Add(model); + } + else if (auto structDecl = declaration.Cast()) + { + RpcJsonTypeModel model; + model.fullName = fullName; + model.type = CreateTopQualifiedType(fullName); + model.fields = Ptr(new List); + for (auto member : structDecl->members) + { + RpcJsonFieldModel field; + field.name = member->name.value; + field.type = CopyType(member->type.Obj()); + model.fields->Add(field); + } + structs.Add(model); + } + } + } + + void AddRpcBuiltinJsonType(List& structs, const WString& fullName, ITypeDescriptor* td) + { + for (auto&& model : structs) + { + if (model.fullName == fullName) + { + return; + } + } + + if (!td) + { + return; + } + + RpcJsonTypeModel model; + model.fullName = fullName; + model.type = CreateTopQualifiedType(fullName); + model.fields = Ptr(new List); + for (vint i = 0; i < td->GetPropertyCount(); i++) + { + auto propertyInfo = td->GetProperty(i); + RpcJsonFieldModel field; + field.name = propertyInfo->GetName(); + field.type = GetTypeFromTypeInfo(propertyInfo->GetReturn()); + model.fields->Add(field); + } + structs.Add(model); + } + + void CollectRpcJsonTypes(WfLexicalScopeManager* manager, List& enums, List& structs) + { + if (manager->rpcMetadata && manager->rpcMetadata->metadataModule) + { + AddRpcJsonTypesFromDeclarations(manager->rpcMetadata->metadataModule->declarations, L"", enums, structs); + } + } + + void CollectRpcJsonPrimitives(List& primitives) + { + auto add = [&](const wchar_t* fullName, const wchar_t* keyword, RpcJsonPrimitiveKind kind) + { + RpcJsonPrimitiveModel model; + model.fullName = WString::Unmanaged(fullName); + model.keyword = WString::Unmanaged(keyword); + model.kind = kind; + primitives.Add(model); + }; + + add(L"system::UInt8", L"UInt8", RpcJsonPrimitiveKind::Number); + add(L"system::UInt16", L"UInt16", RpcJsonPrimitiveKind::Number); + add(L"system::UInt32", L"UInt32", RpcJsonPrimitiveKind::Number); + add(L"system::UInt64", L"UInt64", RpcJsonPrimitiveKind::Number); + add(L"system::Int8", L"Int8", RpcJsonPrimitiveKind::Number); + add(L"system::Int16", L"Int16", RpcJsonPrimitiveKind::Number); + add(L"system::Int32", L"Int32", RpcJsonPrimitiveKind::Number); + add(L"system::Int64", L"Int64", RpcJsonPrimitiveKind::Number); + add(L"system::Single", L"Single", RpcJsonPrimitiveKind::Number); + add(L"system::Double", L"Double", RpcJsonPrimitiveKind::Number); + add(L"system::Boolean", L"Boolean", RpcJsonPrimitiveKind::Boolean); + add(L"system::Char", L"Char", RpcJsonPrimitiveKind::String); + add(L"system::String", L"String", RpcJsonPrimitiveKind::String); + add(L"system::DateTime", L"DateTime", RpcJsonPrimitiveKind::String); + add(L"system::Locale", L"Locale", RpcJsonPrimitiveKind::String); + } + + Ptr CreateWhile(Ptr condition, Ptr body) + { + auto statement = Ptr(new WfWhileStatement); + statement->condition = condition; + statement->statement = body; + return statement; + } + + Ptr CreateRpcJsonSerializeCallbackType() + { + auto type = Ptr(new WfFunctionType); + type->result = CreateSharedType(L"system::JsonNode"); + type->arguments.Add(CreatePredefinedType(WfPredefinedTypeName::Object)); + return type; + } + + Ptr CreateRpcJsonDeserializeCallbackType() + { + auto type = Ptr(new WfFunctionType); + type->result = CreatePredefinedType(WfPredefinedTypeName::Object); + type->arguments.Add(CreateSharedType(L"system::JsonNode")); + return type; + } + + WString GetRpcJsonSerializeEnumFunctionName(const WString& fullName) + { + return L"rpcjson_Serialize_Enum_" + MangleRpcFullName(fullName); + } + + WString GetRpcJsonDeserializeEnumFunctionName(const WString& fullName) + { + return L"rpcjson_Deserialize_Enum_" + MangleRpcFullName(fullName); + } + + WString GetRpcJsonSerializeStructFunctionName(const WString& fullName) + { + return L"rpcjson_Serialize_Struct_" + MangleRpcFullName(fullName); + } + + WString GetRpcJsonDeserializeStructFunctionName(const WString& fullName) + { + return L"rpcjson_Deserialize_Struct_" + MangleRpcFullName(fullName); + } + + WString GetRpcJsonPredefinedFullName(WfLexicalScopeManager* manager, WfPredefinedTypeName name) + { + switch (name) + { + case WfPredefinedTypeName::Int: + return manager && manager->cputdSInt ? manager->cputdSInt->GetTypeName() : WString::Unmanaged(L"system::Int64"); + case WfPredefinedTypeName::UInt: + return manager && manager->cputdUInt ? manager->cputdUInt->GetTypeName() : WString::Unmanaged(L"system::UInt64"); + case WfPredefinedTypeName::Float: + return L"system::Single"; + case WfPredefinedTypeName::Double: + return L"system::Double"; + case WfPredefinedTypeName::String: + return L"system::String"; + case WfPredefinedTypeName::Char: + return L"system::Char"; + case WfPredefinedTypeName::Bool: + return L"system::Boolean"; + case WfPredefinedTypeName::Object: + return L"system::Object"; + case WfPredefinedTypeName::Interface: + return L"system::Interface"; + default: + return L""; + } + } + + WString GetRpcJsonTypeFullName(WfLexicalScopeManager* manager, WfType* type) + { + if (!type) return L""; + if (auto predefined = dynamic_cast(type)) + { + return GetRpcJsonPredefinedFullName(manager, predefined->name); + } + if (auto top = dynamic_cast(type)) + { + return top->name.value; + } + if (auto reference = dynamic_cast(type)) + { + return reference->name.value; + } + if (auto child = dynamic_cast(type)) + { + auto parent = GetRpcJsonTypeFullName(manager, child->parent.Obj()); + return parent == L"" ? child->name.value : parent + L"::" + child->name.value; + } + if (auto raw = dynamic_cast(type)) + { + return GetRpcJsonTypeFullName(manager, raw->element.Obj()); + } + if (auto shared = dynamic_cast(type)) + { + return GetRpcJsonTypeFullName(manager, shared->element.Obj()); + } + if (auto nullable = dynamic_cast(type)) + { + return GetRpcJsonTypeFullName(manager, nullable->element.Obj()); + } + return L""; + } + + RpcJsonPrimitiveModel* FindRpcJsonPrimitive(List& primitives, const WString& fullName) + { + for (vint i = 0; i < primitives.Count(); i++) + { + if (primitives[i].fullName == fullName) + { + return &primitives[i]; + } + } + return nullptr; + } + + const RpcJsonTypeModel* FindRpcJsonType(const List& types, const WString& fullName) + { + for (vint i = 0; i < types.Count(); i++) + { + if (types[i].fullName == fullName) + { + return &types[i]; + } + } + return nullptr; + } + + struct RpcJsonGenerationContext + { + WfLexicalScopeManager* manager = nullptr; + List* primitives = nullptr; + List* enums = nullptr; + List* structs = nullptr; + vint tempIndex = 0; + }; + + WString AllocateRpcJsonTemp(RpcJsonGenerationContext& context, const wchar_t* prefix) + { + return WString::Unmanaged(prefix) + itow(context.tempIndex++); + } + + Ptr CreateRpcJsonToken(Ptr value) + { + auto constructor = CreateConstructor(); + constructor->arguments.Add(CreateConstructorArgument(CreateReference(L"value"), value)); + return constructor; + } + + WString AddRpcJsonLiteral(Ptr block, RpcJsonGenerationContext& context, const WString& literal) + { + auto nodeName = AllocateRpcJsonTemp(context, L"jsonLiteral"); + AddStatement(block, CreateInferredVariableStatement(nodeName, CreateNewClass(CreateSharedType(L"system::JsonLiteral")))); + AddStatement(block, CreateExpressionStatement(CreateAssign(CreateMember(CreateReference(nodeName), L"value"), CreateQualifiedExpression(L"system::JsonLiteralValue::" + literal)))); + return nodeName; + } + + WString AddRpcJsonBooleanLiteral(Ptr block, RpcJsonGenerationContext& context, Ptr value) + { + auto nodeName = AllocateRpcJsonTemp(context, L"jsonLiteral"); + AddStatement(block, CreateInferredVariableStatement(nodeName, CreateNewClass(CreateSharedType(L"system::JsonLiteral")))); + AddStatement(block, CreateIf( + value, + CreateExpressionStatement(CreateAssign(CreateMember(CreateReference(nodeName), L"value"), CreateQualifiedExpression(L"system::JsonLiteralValue::True"))), + CreateExpressionStatement(CreateAssign(CreateMember(CreateReference(nodeName), L"value"), CreateQualifiedExpression(L"system::JsonLiteralValue::False"))))); + return nodeName; + } + + WString AddRpcJsonString(Ptr block, RpcJsonGenerationContext& context, Ptr value) + { + auto nodeName = AllocateRpcJsonTemp(context, L"jsonString"); + AddStatement(block, CreateInferredVariableStatement(nodeName, CreateNewClass(CreateSharedType(L"system::JsonString")))); + AddStatement(block, CreateExpressionStatement(CreateAssign(CreateMember(CreateReference(nodeName), L"content"), CreateRpcJsonToken(value)))); + return nodeName; + } + + WString AddRpcJsonNumber(Ptr block, RpcJsonGenerationContext& context, Ptr value) + { + auto nodeName = AllocateRpcJsonTemp(context, L"jsonNumber"); + AddStatement(block, CreateInferredVariableStatement(nodeName, CreateNewClass(CreateSharedType(L"system::JsonNumber")))); + AddStatement(block, CreateExpressionStatement(CreateAssign(CreateMember(CreateReference(nodeName), L"content"), CreateRpcJsonToken(value)))); + return nodeName; + } + + void AddRpcJsonArrayItem(Ptr block, const WString& arrayName, Ptr value) + { + AddStatement(block, CreateExpressionStatement(CreateCall(CreateMember(CreateMember(CreateReference(arrayName), L"items"), L"Add"), value))); + } + + void AddRpcJsonObjectField(Ptr block, RpcJsonGenerationContext& context, Ptr object, const WString& fieldName, Ptr value) + { + auto fieldVar = AllocateRpcJsonTemp(context, L"jsonField"); + AddStatement(block, CreateInferredVariableStatement(fieldVar, CreateNewClass(CreateSharedType(L"system::JsonObjectField")))); + AddStatement(block, CreateExpressionStatement(CreateAssign(CreateMember(CreateReference(fieldVar), L"name"), CreateRpcJsonToken(CreateString(fieldName))))); + AddStatement(block, CreateExpressionStatement(CreateAssign(CreateMember(CreateReference(fieldVar), L"value"), value))); + AddStatement(block, CreateExpressionStatement(CreateCall(CreateMember(CreateMember(object, L"fields"), L"Add"), CreateReference(fieldVar)))); + } + + WString AddRpcJsonObjectFieldLookup(Ptr block, RpcJsonGenerationContext& context, Ptr object, const WString& fieldName, bool required = true) + { + auto resultVar = AllocateRpcJsonTemp(context, L"jsonFieldValue"); + auto fieldVar = AllocateRpcJsonTemp(context, L"jsonField"); + AddStatement(block, CreateVariableStatement(resultVar, CreateSharedType(L"system::JsonNode"), CreateNull())); + auto forBlock = CreateBlock(); + AddStatement(forBlock, CreateIf( + CreateBinary(WfBinaryOperator::EQ, CreateMember(CreateMember(CreateReference(fieldVar), L"name"), L"value"), CreateString(fieldName)), + CreateExpressionStatement(CreateAssign(CreateReference(resultVar), CreateMember(CreateReference(fieldVar), L"value"))))); + AddStatement(block, CreateForEach(fieldVar, CreateMember(object, L"fields"), forBlock)); + if (required) + { + AddStatement(block, CreateIf(CreateIsNull(CreateReference(resultVar)), CreateRaise(L"JSON object field not found: " + fieldName))); + } + return resultVar; + } + + WString AddKnownRpcJsonSerializeValue(RpcJsonGenerationContext& context, Ptr block, Ptr value, WfType* type); + WString AddKnownRpcJsonDeserializeValue(RpcJsonGenerationContext& context, Ptr block, Ptr node, WfType* type); + + Ptr CreateWritableRpcJsonCollectionType(WfType* type) + { + if (auto enumerable = dynamic_cast(type)) + { + auto listType = Ptr(new WfMapType); + listType->writability = WfMapWritability::Writable; + listType->value = CopyType(enumerable->element.Obj()); + return listType; + } + if (auto map = dynamic_cast(type)) + { + auto mapType = Ptr(new WfMapType); + mapType->writability = WfMapWritability::Writable; + mapType->key = map->key ? CopyType(map->key.Obj()) : nullptr; + mapType->value = CopyType(map->value.Obj()); + return mapType; + } + if (auto observable = dynamic_cast(type)) + { + auto listType = Ptr(new WfObservableListType); + listType->element = CopyType(observable->element.Obj()); + return listType; + } + return CopyType(type); + } + + Ptr CreateRpcJsonSerializedArgument(vint index) + { + return CreateIndex(CreateReference(L"arguments"), CreateInt(index)); + } + + WString AddUnknownRpcJsonSerializeValue(RpcJsonGenerationContext& context, Ptr block, Ptr value) + { + auto valueName = AllocateRpcJsonTemp(context, L"jsonValue"); + auto resultName = AllocateRpcJsonTemp(context, L"jsonNode"); + AddStatement(block, CreateInferredVariableStatement(valueName, value)); + AddStatement(block, CreateInferredVariableStatement(resultName, CreateCall(CreateReference(L"rpcjson_Serialize"), CreateReference(valueName)))); + return resultName; + } + + WString AddKnownRpcJsonSerializeValue(RpcJsonGenerationContext& context, Ptr block, Ptr value, WfType* type) + { + if (auto nullable = dynamic_cast(type)) + { + auto resultName = AllocateRpcJsonTemp(context, L"jsonNode"); + AddStatement(block, CreateVariableStatement(resultName, CreateSharedType(L"system::JsonNode"), CreateNull())); + auto nullBranch = CreateBlock(); + auto nullNode = AddRpcJsonLiteral(nullBranch, context, L"Null"); + AddStatement(nullBranch, CreateExpressionStatement(CreateAssign(CreateReference(resultName), CreateReference(nullNode)))); + auto valueBranch = CreateBlock(); + auto valueNode = AddKnownRpcJsonSerializeValue(context, valueBranch, CreateCast(CopyType(nullable->element.Obj()), CopyExpression(value, true)), nullable->element.Obj()); + AddStatement(valueBranch, CreateExpressionStatement(CreateAssign(CreateReference(resultName), CreateReference(valueNode)))); + AddStatement(block, CreateIf(CreateIsNull(value), nullBranch, valueBranch)); + return resultName; + } + + auto fullName = GetRpcJsonTypeFullName(context.manager, type); + if (auto primitive = FindRpcJsonPrimitive(*context.primitives, fullName)) + { + switch (primitive->kind) + { + case RpcJsonPrimitiveKind::Number: + return AddRpcJsonNumber(block, context, CreateCast(CreatePredefinedType(WfPredefinedTypeName::String), value)); + case RpcJsonPrimitiveKind::Boolean: + return AddRpcJsonBooleanLiteral(block, context, value); + case RpcJsonPrimitiveKind::String: + return AddRpcJsonString(block, context, CreateCast(CreatePredefinedType(WfPredefinedTypeName::String), value)); + default: + CHECK_FAIL(L"Internal error: Unknown primitive kind."); + } + } + + if (fullName == L"system::JsonNode") + { + auto resultName = AllocateRpcJsonTemp(context, L"jsonNode"); + AddStatement(block, CreateInferredVariableStatement(resultName, value)); + return resultName; + } + + if (fullName == L"system::Object" || fullName == L"system::Interface") + { + return AddUnknownRpcJsonSerializeValue(context, block, value); + } + + if (FindRpcJsonType(*context.enums, fullName)) + { + auto resultName = AllocateRpcJsonTemp(context, L"jsonNode"); + AddStatement(block, CreateInferredVariableStatement(resultName, CreateCall(CreateReference(GetRpcJsonSerializeEnumFunctionName(fullName)), value))); + return resultName; + } + + if (FindRpcJsonType(*context.structs, fullName)) + { + auto resultName = AllocateRpcJsonTemp(context, L"jsonNode"); + AddStatement(block, CreateInferredVariableStatement(resultName, CreateCall(CreateReference(GetRpcJsonSerializeStructFunctionName(fullName)), value))); + return resultName; + } + + if (auto enumerable = dynamic_cast(type)) + { + auto arrayName = AllocateRpcJsonTemp(context, L"jsonArray"); + AddStatement(block, CreateInferredVariableStatement(arrayName, CreateNewClass(CreateSharedType(L"system::JsonArray")))); + auto forBlock = CreateBlock(); + auto itemNode = AddKnownRpcJsonSerializeValue(context, forBlock, CreateReference(L"item"), enumerable->element.Obj()); + AddRpcJsonArrayItem(forBlock, arrayName, CreateReference(itemNode)); + AddStatement(block, CreateForEach(L"item", value, forBlock)); + return arrayName; + } + + if (auto map = dynamic_cast(type)) + { + auto arrayName = AllocateRpcJsonTemp(context, L"jsonArray"); + AddStatement(block, CreateInferredVariableStatement(arrayName, CreateNewClass(CreateSharedType(L"system::JsonArray")))); + auto forBlock = CreateBlock(); + if (map->key) + { + auto pairName = AllocateRpcJsonTemp(context, L"jsonArray"); + AddStatement(forBlock, CreateInferredVariableStatement(pairName, CreateNewClass(CreateSharedType(L"system::JsonArray")))); + auto keyNode = AddKnownRpcJsonSerializeValue(context, forBlock, CreateReference(L"key"), map->key.Obj()); + AddRpcJsonArrayItem(forBlock, pairName, CreateReference(keyNode)); + auto valueNode = AddKnownRpcJsonSerializeValue(context, forBlock, CreateIndex(value, CreateReference(L"key")), map->value.Obj()); + AddRpcJsonArrayItem(forBlock, pairName, CreateReference(valueNode)); + AddRpcJsonArrayItem(forBlock, arrayName, CreateReference(pairName)); + AddStatement(block, CreateForEach(L"key", CreateMember(value, L"Keys"), forBlock)); + } + else + { + auto itemNode = AddKnownRpcJsonSerializeValue(context, forBlock, CreateReference(L"item"), map->value.Obj()); + AddRpcJsonArrayItem(forBlock, arrayName, CreateReference(itemNode)); + AddStatement(block, CreateForEach(L"item", value, forBlock)); + } + return arrayName; + } + + if (auto observable = dynamic_cast(type)) + { + auto arrayName = AllocateRpcJsonTemp(context, L"jsonArray"); + AddStatement(block, CreateInferredVariableStatement(arrayName, CreateNewClass(CreateSharedType(L"system::JsonArray")))); + auto forBlock = CreateBlock(); + auto itemNode = AddKnownRpcJsonSerializeValue(context, forBlock, CreateReference(L"item"), observable->element.Obj()); + AddRpcJsonArrayItem(forBlock, arrayName, CreateReference(itemNode)); + AddStatement(block, CreateForEach(L"item", value, forBlock)); + return arrayName; + } + + return AddUnknownRpcJsonSerializeValue(context, block, value); + } + + WString AddKnownRpcJsonDeserializeValue(RpcJsonGenerationContext& context, Ptr block, Ptr node, WfType* type) + { + if (auto nullable = dynamic_cast(type)) + { + auto resultName = AllocateRpcJsonTemp(context, L"jsonValue"); + auto literalName = AllocateRpcJsonTemp(context, L"jsonLiteral"); + AddStatement(block, CreateVariableStatement(resultName, CopyType(type), CreateNull())); + AddStatement(block, CreateInferredVariableStatement(literalName, CreateWeakCast(CreateSharedType(L"system::JsonLiteral"), CopyExpression(node, true)))); + auto assignBranch = CreateBlock(); + auto valueName = AddKnownRpcJsonDeserializeValue(context, assignBranch, node, nullable->element.Obj()); + AddStatement(assignBranch, CreateExpressionStatement(CreateAssign(CreateReference(resultName), CreateReference(valueName)))); + AddStatement(block, CreateIf( + CreateBinary( + WfBinaryOperator::Or, + CreateIsNull(CreateReference(literalName)), + CreateBinary(WfBinaryOperator::NE, CreateMember(CreateReference(literalName), L"value"), CreateQualifiedExpression(L"system::JsonLiteralValue::Null"))), + assignBranch)); + return resultName; + } + + auto fullName = GetRpcJsonTypeFullName(context.manager, type); + if (auto primitive = FindRpcJsonPrimitive(*context.primitives, fullName)) + { + auto resultName = AllocateRpcJsonTemp(context, L"jsonValue"); + auto deserialized = CreateCall(CreateReference(L"rpcjson_Deserialize"), node); + auto value = + primitive->kind == RpcJsonPrimitiveKind::Boolean || fullName == L"system::String" + ? CreateCast(CreateTopQualifiedType(fullName), deserialized) + : CreateCast(CreateTopQualifiedType(fullName), CreateCast(CreatePredefinedType(WfPredefinedTypeName::String), deserialized)); + AddStatement(block, CreateInferredVariableStatement(resultName, value)); + return resultName; + } + + if (fullName == L"system::JsonNode") + { + auto resultName = AllocateRpcJsonTemp(context, L"jsonValue"); + AddStatement(block, CreateInferredVariableStatement(resultName, node)); + return resultName; + } + + if (fullName == L"system::Object" || fullName == L"system::Interface") + { + auto resultName = AllocateRpcJsonTemp(context, L"jsonValue"); + AddStatement(block, CreateInferredVariableStatement(resultName, CreateCall(CreateReference(L"rpcjson_Deserialize"), node))); + return resultName; + } + + if (FindRpcJsonType(*context.enums, fullName)) + { + auto resultName = AllocateRpcJsonTemp(context, L"jsonValue"); + AddStatement(block, CreateInferredVariableStatement(resultName, CreateCall(CreateReference(GetRpcJsonDeserializeEnumFunctionName(fullName)), node))); + return resultName; + } + + if (FindRpcJsonType(*context.structs, fullName)) + { + auto resultName = AllocateRpcJsonTemp(context, L"jsonValue"); + AddStatement(block, CreateInferredVariableStatement(resultName, CreateCall(CreateReference(GetRpcJsonDeserializeStructFunctionName(fullName)), node))); + return resultName; + } + + if (auto enumerable = dynamic_cast(type)) + { + auto resultName = AllocateRpcJsonTemp(context, L"jsonValue"); + auto arrayName = AllocateRpcJsonTemp(context, L"jsonArray"); + AddStatement(block, CreateVariableStatement(resultName, CreateWritableRpcJsonCollectionType(type), CreateConstructor())); + AddStatement(block, CreateInferredVariableStatement(arrayName, CreateCast(CreateSharedType(L"system::JsonArray"), node))); + auto forBlock = CreateBlock(); + auto itemValue = AddKnownRpcJsonDeserializeValue(context, forBlock, CreateReference(L"item"), enumerable->element.Obj()); + AddStatement(forBlock, CreateExpressionStatement(CreateCall(CreateMember(CreateReference(resultName), L"Add"), CreateReference(itemValue)))); + AddStatement(block, CreateForEach(L"item", CreateMember(CreateReference(arrayName), L"items"), forBlock)); + return resultName; + } + + if (auto map = dynamic_cast(type)) + { + auto resultName = AllocateRpcJsonTemp(context, L"jsonValue"); + auto arrayName = AllocateRpcJsonTemp(context, L"jsonArray"); + AddStatement(block, CreateVariableStatement(resultName, CreateWritableRpcJsonCollectionType(type), CreateConstructor())); + AddStatement(block, CreateInferredVariableStatement(arrayName, CreateCast(CreateSharedType(L"system::JsonArray"), node))); + auto forBlock = CreateBlock(); + if (map->key) + { + auto pairName = AllocateRpcJsonTemp(context, L"jsonArray"); + AddStatement(forBlock, CreateInferredVariableStatement(pairName, CreateCast(CreateSharedType(L"system::JsonArray"), CreateReference(L"item")))); + auto keyValue = AddKnownRpcJsonDeserializeValue(context, forBlock, CreateJsonArrayItem(pairName, 0), map->key.Obj()); + auto itemValue = AddKnownRpcJsonDeserializeValue(context, forBlock, CreateJsonArrayItem(pairName, 1), map->value.Obj()); + AddStatement(forBlock, CreateExpressionStatement(CreateCall(CreateMember(CreateReference(resultName), L"Set"), CreateReference(keyValue), CreateReference(itemValue)))); + } + else + { + auto itemValue = AddKnownRpcJsonDeserializeValue(context, forBlock, CreateReference(L"item"), map->value.Obj()); + AddStatement(forBlock, CreateExpressionStatement(CreateCall(CreateMember(CreateReference(resultName), L"Add"), CreateReference(itemValue)))); + } + AddStatement(block, CreateForEach(L"item", CreateMember(CreateReference(arrayName), L"items"), forBlock)); + return resultName; + } + + if (auto observable = dynamic_cast(type)) + { + auto resultName = AllocateRpcJsonTemp(context, L"jsonValue"); + auto arrayName = AllocateRpcJsonTemp(context, L"jsonArray"); + AddStatement(block, CreateVariableStatement(resultName, CreateWritableRpcJsonCollectionType(type), CreateConstructor())); + AddStatement(block, CreateInferredVariableStatement(arrayName, CreateCast(CreateSharedType(L"system::JsonArray"), node))); + auto forBlock = CreateBlock(); + auto itemValue = AddKnownRpcJsonDeserializeValue(context, forBlock, CreateReference(L"item"), observable->element.Obj()); + AddStatement(forBlock, CreateExpressionStatement(CreateCall(CreateMember(CreateReference(resultName), L"Add"), CreateReference(itemValue)))); + AddStatement(block, CreateForEach(L"item", CreateMember(CreateReference(arrayName), L"items"), forBlock)); + return resultName; + } + + auto resultName = AllocateRpcJsonTemp(context, L"jsonValue"); + AddStatement(block, CreateInferredVariableStatement(resultName, CreateCast(CopyType(type), CreateCall(CreateReference(L"rpcjson_Deserialize"), node)))); + return resultName; + } + + void AddRpcJsonUnknownTupleReturn(RpcJsonGenerationContext& context, Ptr block, const WString& keyword, Ptr valueNode) + { + auto arrayName = AllocateRpcJsonTemp(context, L"jsonArray"); + auto keywordNode = AddRpcJsonString(block, context, CreateString(keyword)); + AddStatement(block, CreateInferredVariableStatement(arrayName, CreateNewClass(CreateSharedType(L"system::JsonArray")))); + AddRpcJsonArrayItem(block, arrayName, CreateReference(keywordNode)); + AddRpcJsonArrayItem(block, arrayName, valueNode); + AddStatement(block, CreateReturn(CreateReference(arrayName))); + } + + Ptr GenerateRpcJsonSerializeEnum(RpcJsonGenerationContext& context, const RpcJsonTypeModel& enumModel) + { + auto functionDecl = CreateFunctionDeclaration(GetRpcJsonSerializeEnumFunctionName(enumModel.fullName), CreateSharedType(L"system::JsonNode"), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"value", CopyType(enumModel.type.Obj()))); + auto block = functionDecl->statement.Cast(); + auto nodeName = AddRpcJsonNumber(block, context, CreateCast( + CreatePredefinedType(WfPredefinedTypeName::String), + CreateCast(CreateQualifiedType(L"system::UInt64"), CreateReference(L"value")))); + AddStatement(block, CreateReturn(CreateReference(nodeName))); + return functionDecl; + } + + Ptr GenerateRpcJsonDeserializeEnum(RpcJsonGenerationContext& context, const RpcJsonTypeModel& enumModel) + { + auto functionDecl = CreateFunctionDeclaration(GetRpcJsonDeserializeEnumFunctionName(enumModel.fullName), CopyType(enumModel.type.Obj()), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"node", CreateSharedType(L"system::JsonNode"))); + auto block = functionDecl->statement.Cast(); + AddStatement(block, CreateReturn(CreateCast( + CopyType(enumModel.type.Obj()), + CreateCast(CreateQualifiedType(L"system::UInt64"), CreateMember(CreateMember(CreateCast(CreateSharedType(L"system::JsonNumber"), CreateReference(L"node")), L"content"), L"value"))))); + return functionDecl; + } + + void AddRpcJsonStructFields(RpcJsonGenerationContext& context, Ptr block, const RpcJsonTypeModel& structModel, const WString& objectName, const WString& valueName) + { + for (auto&& field : *structModel.fields.Obj()) + { + auto fieldNode = AddKnownRpcJsonSerializeValue(context, block, CreateMember(CreateReference(valueName), field.name), field.type.Obj()); + AddRpcJsonObjectField(block, context, CreateReference(objectName), field.name, CreateReference(fieldNode)); + } + } + + Ptr GenerateRpcJsonSerializeStruct(RpcJsonGenerationContext& context, const RpcJsonTypeModel& structModel) + { + auto functionDecl = CreateFunctionDeclaration(GetRpcJsonSerializeStructFunctionName(structModel.fullName), CreateSharedType(L"system::JsonNode"), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"value", CopyType(structModel.type.Obj()))); + auto block = functionDecl->statement.Cast(); + AddStatement(block, CreateInferredVariableStatement(L"object", CreateNewClass(CreateSharedType(L"system::JsonObject")))); + AddRpcJsonStructFields(context, block, structModel, L"object", L"value"); + AddStatement(block, CreateReturn(CreateReference(L"object"))); + return functionDecl; + } + + Ptr GenerateRpcJsonDeserializeStruct(RpcJsonGenerationContext& context, const RpcJsonTypeModel& structModel) + { + auto functionDecl = CreateFunctionDeclaration(GetRpcJsonDeserializeStructFunctionName(structModel.fullName), CopyType(structModel.type.Obj()), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"node", CreateSharedType(L"system::JsonNode"))); + auto block = functionDecl->statement.Cast(); + AddStatement(block, CreateInferredVariableStatement(L"object", CreateCast(CreateSharedType(L"system::JsonObject"), CreateReference(L"node")))); + auto constructor = CreateConstructor(); + for (auto&& field : *structModel.fields.Obj()) + { + auto fieldNode = AddRpcJsonObjectFieldLookup(block, context, CreateReference(L"object"), field.name); + auto fieldValue = AddKnownRpcJsonDeserializeValue(context, block, CreateReference(fieldNode), field.type.Obj()); + constructor->arguments.Add(CreateConstructorArgument(CreateReference(field.name), CreateReference(fieldValue))); + } + AddStatement(block, CreateReturn(constructor)); + return functionDecl; + } + + void AddUnknownSerializeCollectionCase(RpcJsonGenerationContext& context, Ptr block, const WString& varName, const WString& typeFullName, const WString& keyword) + { + AddStatement(block, CreateInferredVariableStatement(varName, CreateWeakCast(CreateSharedType(typeFullName), CreateReference(L"value")))); + auto trueBranch = CreateBlock(); + AddStatement(trueBranch, CreateInferredVariableStatement(L"object", CreateNewClass(CreateSharedType(L"system::JsonObject")))); + auto keywordNode = AddRpcJsonString(trueBranch, context, CreateString(keyword)); + AddRpcJsonObjectField(trueBranch, context, CreateReference(L"object"), L"$", CreateReference(keywordNode)); + AddStatement(trueBranch, CreateInferredVariableStatement(L"values", CreateNewClass(CreateSharedType(L"system::JsonArray")))); + auto forBlock = CreateBlock(); + AddRpcJsonArrayItem(forBlock, L"values", CreateCall(CreateReference(L"rpcjson_Serialize"), CreateReference(L"item"))); + AddStatement(trueBranch, CreateForEach(L"item", CreateReference(varName), forBlock)); + AddRpcJsonObjectField(trueBranch, context, CreateReference(L"object"), L"values", CreateReference(L"values")); + AddStatement(trueBranch, CreateReturn(CreateReference(L"object"))); + AddStatement(block, CreateIf(CreateIsNotNull(CreateReference(varName)), trueBranch)); + } + + void AddUnknownSerializeMapCase(RpcJsonGenerationContext& context, Ptr block, const WString& varName, const WString& typeFullName) + { + AddStatement(block, CreateInferredVariableStatement(varName, CreateWeakCast(CreateSharedType(typeFullName), CreateReference(L"value")))); + auto trueBranch = CreateBlock(); + AddStatement(trueBranch, CreateInferredVariableStatement(L"object", CreateNewClass(CreateSharedType(L"system::JsonObject")))); + auto keywordNode = AddRpcJsonString(trueBranch, context, CreateString(L"map")); + AddRpcJsonObjectField(trueBranch, context, CreateReference(L"object"), L"$", CreateReference(keywordNode)); + AddStatement(trueBranch, CreateInferredVariableStatement(L"values", CreateNewClass(CreateSharedType(L"system::JsonArray")))); + auto forBlock = CreateBlock(); + AddRpcJsonArrayItem(forBlock, L"values", CreateCall(CreateReference(L"rpcjson_Serialize"), CreateReference(L"key"))); + AddRpcJsonArrayItem(forBlock, L"values", CreateCall(CreateReference(L"rpcjson_Serialize"), CreateCall(CreateMember(CreateReference(varName), L"Get"), CreateReference(L"key")))); + AddStatement(trueBranch, CreateForEach(L"key", CreateMember(CreateReference(varName), L"Keys"), forBlock)); + AddRpcJsonObjectField(trueBranch, context, CreateReference(L"object"), L"values", CreateReference(L"values")); + AddStatement(trueBranch, CreateReturn(CreateReference(L"object"))); + AddStatement(block, CreateIf(CreateIsNotNull(CreateReference(varName)), trueBranch)); + } + + void AddUnknownSerializePrimitiveCase(RpcJsonGenerationContext& context, Ptr block, const RpcJsonPrimitiveModel& primitive) + { + if (primitive.kind == RpcJsonPrimitiveKind::Boolean || primitive.fullName == L"system::String") + { + return; + } + + auto varName = L"value_" + MangleRpcFullName(primitive.fullName); + auto nullableType = CreateNullableType(primitive.fullName); + AddStatement(block, CreateInferredVariableStatement(varName, CreateWeakCast(nullableType, CreateReference(L"value")))); + auto trueBranch = CreateBlock(); + auto varValue = CreateCast(CreateTopQualifiedType(primitive.fullName), CreateReference(varName)); + WString nodeName; + switch (primitive.kind) + { + case RpcJsonPrimitiveKind::Number: + nodeName = AddRpcJsonNumber(trueBranch, context, CreateCast(CreatePredefinedType(WfPredefinedTypeName::String), varValue)); + break; + case RpcJsonPrimitiveKind::String: + nodeName = AddRpcJsonString(trueBranch, context, CreateCast(CreatePredefinedType(WfPredefinedTypeName::String), varValue)); + break; + default: + CHECK_FAIL(L"Internal error: Unexpected primitive kind."); + } + AddRpcJsonUnknownTupleReturn(context, trueBranch, primitive.keyword, CreateReference(nodeName)); + AddStatement(block, CreateIf(CreateIsNotNull(CreateReference(varName)), trueBranch)); + } + + void AddUnknownSerializeEnumCase(RpcJsonGenerationContext& context, Ptr block, const RpcJsonTypeModel& enumModel) + { + auto varName = L"value_" + MangleRpcFullName(enumModel.fullName); + auto nullableType = Ptr(new WfNullableType); + nullableType->element = CopyType(enumModel.type.Obj()); + AddStatement(block, CreateInferredVariableStatement(varName, CreateWeakCast(nullableType, CreateReference(L"value")))); + auto trueBranch = CreateBlock(); + auto valueNode = AllocateRpcJsonTemp(context, L"jsonNode"); + AddStatement(trueBranch, CreateInferredVariableStatement(valueNode, CreateCall(CreateReference(GetRpcJsonSerializeEnumFunctionName(enumModel.fullName)), CreateCast(CopyType(enumModel.type.Obj()), CreateReference(varName))))); + AddRpcJsonUnknownTupleReturn(context, trueBranch, enumModel.fullName, CreateReference(valueNode)); + AddStatement(block, CreateIf(CreateIsNotNull(CreateReference(varName)), trueBranch)); + } + + void AddUnknownSerializeStructCase(RpcJsonGenerationContext& context, Ptr block, const RpcJsonTypeModel& structModel) + { + auto varName = L"value_" + MangleRpcFullName(structModel.fullName); + auto nullableType = Ptr(new WfNullableType); + nullableType->element = CopyType(structModel.type.Obj()); + AddStatement(block, CreateInferredVariableStatement(varName, CreateWeakCast(nullableType, CreateReference(L"value")))); + auto trueBranch = CreateBlock(); + AddStatement(trueBranch, CreateInferredVariableStatement(L"object", CreateNewClass(CreateSharedType(L"system::JsonObject")))); + auto keywordNode = AddRpcJsonString(trueBranch, context, CreateString(structModel.fullName)); + AddRpcJsonObjectField(trueBranch, context, CreateReference(L"object"), L"$", CreateReference(keywordNode)); + auto varValueName = AllocateRpcJsonTemp(context, L"value"); + AddStatement(trueBranch, CreateInferredVariableStatement(varValueName, CreateCast(CopyType(structModel.type.Obj()), CreateReference(varName)))); + AddRpcJsonStructFields(context, trueBranch, structModel, L"object", varValueName); + AddStatement(trueBranch, CreateReturn(CreateReference(L"object"))); + AddStatement(block, CreateIf(CreateIsNotNull(CreateReference(varName)), trueBranch)); + } + + Ptr GenerateRpcJsonSerialize(RpcJsonGenerationContext& context) + { + auto functionDecl = CreateFunctionDeclaration(L"rpcjson_Serialize", CreateSharedType(L"system::JsonNode"), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"value", CreatePredefinedType(WfPredefinedTypeName::Object))); + auto block = functionDecl->statement.Cast(); + for (auto&& enumModel : *context.enums) + { + AddUnknownSerializeEnumCase(context, block, enumModel); + } + for (auto&& structModel : *context.structs) + { + AddUnknownSerializeStructCase(context, block, structModel); + } + AddStatement(block, CreateReturn(CreateCall( + CreateQualifiedExpression(L"system::IRpcLifecycle::JsonSerializePredefinedTypes"), + CreateReference(L"value"), + CreateReference(L"rpcjson_Serialize")))); + return functionDecl; + } + + void AddUnknownDeserializePrimitiveCase(Ptr switchStat, const RpcJsonPrimitiveModel& primitive) + { + if (primitive.kind == RpcJsonPrimitiveKind::Boolean || primitive.fullName == L"system::String") + { + return; + } + + auto jsonType = primitive.kind == RpcJsonPrimitiveKind::Number ? L"system::JsonNumber" : L"system::JsonString"; + AddSwitchCase( + switchStat, + CreateString(primitive.keyword), + CreateReturn(CreateCast(CreateTopQualifiedType(primitive.fullName), CreateJsonArrayItemContent(L"array", 1, jsonType)))); + } + + void AddUnknownDeserializeEnumCase(Ptr switchStat, const RpcJsonTypeModel& enumModel) + { + AddSwitchCase( + switchStat, + CreateString(enumModel.fullName), + CreateReturn(CreateCall(CreateReference(GetRpcJsonDeserializeEnumFunctionName(enumModel.fullName)), CreateJsonArrayItem(L"array", 1)))); + } + + void AddUnknownDeserializeStructCase(Ptr switchStat, const RpcJsonTypeModel& structModel) + { + AddSwitchCase( + switchStat, + CreateString(structModel.fullName), + CreateReturn(CreateCall(CreateReference(GetRpcJsonDeserializeStructFunctionName(structModel.fullName)), CreateReference(L"object")))); + } + + Ptr CreateUnknownDeserializeListCase(RpcJsonGenerationContext& context, const WString& variableType) + { + auto block = CreateBlock(); + AddStatement(block, CreateVariableStatement(L"result", CreateSharedType(variableType), CreateConstructor())); + auto valuesNode = AddRpcJsonObjectFieldLookup(block, context, CreateReference(L"object"), L"values"); + AddStatement(block, CreateInferredVariableStatement(L"values", CreateCast(CreateSharedType(L"system::JsonArray"), CreateReference(valuesNode)))); + auto forBlock = CreateBlock(); + AddStatement(forBlock, CreateExpressionStatement(CreateCall(CreateMember(CreateReference(L"result"), L"Add"), CreateCall(CreateReference(L"rpcjson_Deserialize"), CreateReference(L"item"))))); + AddStatement(block, CreateForEach(L"item", CreateMember(CreateReference(L"values"), L"items"), forBlock)); + AddStatement(block, CreateReturn(CreateReference(L"result"))); + return block; + } + + Ptr CreateUnknownDeserializeMapCase(RpcJsonGenerationContext& context) + { + auto block = CreateBlock(); + AddStatement(block, CreateVariableStatement(L"result", CreateSharedType(L"system::Dictionary"), CreateConstructor())); + auto valuesNode = AddRpcJsonObjectFieldLookup(block, context, CreateReference(L"object"), L"values"); + AddStatement(block, CreateInferredVariableStatement(L"values", CreateCast(CreateSharedType(L"system::JsonArray"), CreateReference(valuesNode)))); + AddStatement(block, CreateInferredVariableStatement(L"index", CreateInt(0))); + auto whileBlock = CreateBlock(); + AddStatement(whileBlock, CreateExpressionStatement(CreateCall( + CreateMember(CreateReference(L"result"), L"Set"), + CreateCall(CreateReference(L"rpcjson_Deserialize"), CreateIndex(CreateMember(CreateReference(L"values"), L"items"), CreateReference(L"index"))), + CreateCall(CreateReference(L"rpcjson_Deserialize"), CreateIndex(CreateMember(CreateReference(L"values"), L"items"), CreateBinary(WfBinaryOperator::Add, CreateReference(L"index"), CreateInt(1))))))); + AddStatement(whileBlock, CreateExpressionStatement(CreateAssign(CreateReference(L"index"), CreateBinary(WfBinaryOperator::Add, CreateReference(L"index"), CreateInt(2))))); + AddStatement(block, CreateWhile(CreateBinary(WfBinaryOperator::LT, CreateReference(L"index"), CreateMember(CreateMember(CreateReference(L"values"), L"items"), L"Count")), whileBlock)); + AddStatement(block, CreateReturn(CreateReference(L"result"))); + return block; + } + + Ptr GenerateRpcJsonDeserialize(RpcJsonGenerationContext& context) + { + auto functionDecl = CreateFunctionDeclaration(L"rpcjson_Deserialize", CreatePredefinedType(WfPredefinedTypeName::Object), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"node", CreateSharedType(L"system::JsonNode"))); + auto block = functionDecl->statement.Cast(); + + if (context.enums->Count() > 0) + { + AddStatement(block, CreateInferredVariableStatement(L"array", CreateWeakCast(CreateSharedType(L"system::JsonArray"), CreateReference(L"node")))); + auto arrayBranch = CreateBlock(); + AddStatement(arrayBranch, CreateInferredVariableStatement(L"keyword", CreateJsonArrayItemContent(L"array", 0, L"system::JsonString"))); + auto arraySwitch = Ptr(new WfSwitchStatement); + arraySwitch->expression = CreateReference(L"keyword"); + for (auto&& enumModel : *context.enums) + { + AddUnknownDeserializeEnumCase(arraySwitch, enumModel); + } + AddStatement(arrayBranch, arraySwitch); + AddStatement(block, CreateIf(CreateIsNotNull(CreateReference(L"array")), arrayBranch)); + } + + AddStatement(block, CreateInferredVariableStatement(L"object", CreateWeakCast(CreateSharedType(L"system::JsonObject"), CreateReference(L"node")))); + auto objectBranch = CreateBlock(); + { + auto keywordNode = AddRpcJsonObjectFieldLookup(objectBranch, context, CreateReference(L"object"), L"$", false); + auto keywordBranch = CreateBlock(); + AddStatement(keywordBranch, CreateInferredVariableStatement(L"keyword", CreateMember(CreateMember(CreateCast(CreateSharedType(L"system::JsonString"), CreateReference(keywordNode)), L"content"), L"value"))); + auto objectSwitch = Ptr(new WfSwitchStatement); + objectSwitch->expression = CreateReference(L"keyword"); + for (auto&& structModel : *context.structs) + { + AddUnknownDeserializeStructCase(objectSwitch, structModel); + } + AddStatement(keywordBranch, objectSwitch); + AddStatement(objectBranch, CreateIf(CreateIsNotNull(CreateReference(keywordNode)), keywordBranch)); + } + AddStatement(block, CreateIf(CreateIsNotNull(CreateReference(L"object")), objectBranch)); + AddStatement(block, CreateReturn(CreateCall( + CreateQualifiedExpression(L"system::IRpcLifecycle::JsonDeserializePredefinedTypes"), + CreateReference(L"node"), + CreateReference(L"rpcjson_Deserialize")))); + return functionDecl; + } + + void AddRpcJsonDeclarations(WfLexicalScopeManager* manager, Ptr module) + { + List primitives; + List enums; + List structs; + CollectRpcJsonPrimitives(primitives); + CollectRpcJsonTypes(manager, enums, structs); + + RpcJsonGenerationContext context; + context.manager = manager; + context.primitives = &primitives; + context.enums = &enums; + context.structs = &structs; + + for (auto&& enumModel : enums) + { + module->declarations.Add(GenerateRpcJsonSerializeEnum(context, enumModel)); + module->declarations.Add(GenerateRpcJsonDeserializeEnum(context, enumModel)); + } + for (auto&& structModel : structs) + { + module->declarations.Add(GenerateRpcJsonSerializeStruct(context, structModel)); + module->declarations.Add(GenerateRpcJsonDeserializeStruct(context, structModel)); + } + module->declarations.Add(GenerateRpcJsonSerialize(context)); + module->declarations.Add(GenerateRpcJsonDeserialize(context)); + } + + Ptr GenerateRpcSerializerFactoryJson() + { + auto functionDecl = CreateFunctionDeclaration(L"rpcops_IRpcSerializer", CreateSharedType(L"system::IRpcSerializer"), WfFunctionKind::Normal); + auto newSerializer = CreateNewInterface(CreateSharedType(L"system::IRpcSerializer")).Cast(); + + { + auto serialize = CreateFunctionDeclaration(L"Serialize", CreatePredefinedType(WfPredefinedTypeName::Object), WfFunctionKind::Override); + serialize->arguments.Add(CreateFunctionArgument(L"value", CreatePredefinedType(WfPredefinedTypeName::Object))); + auto block = serialize->statement.Cast(); + AddStatement(block, CreateInferredVariableStatement(L"result", CreateCall(CreateReference(L"rpcjson_Serialize"), CreateReference(L"value")))); + AddStatement(block, CreateReturn(CreateReference(L"result"))); + newSerializer->declarations.Add(serialize); + } + + { + auto deserialize = CreateFunctionDeclaration(L"Deserialize", CreatePredefinedType(WfPredefinedTypeName::Object), WfFunctionKind::Override); + deserialize->arguments.Add(CreateFunctionArgument(L"value", CreatePredefinedType(WfPredefinedTypeName::Object))); + auto block = deserialize->statement.Cast(); + AddStatement(block, CreateReturn(CreateCall( + CreateReference(L"rpcjson_Deserialize"), + CreateCast(CreateSharedType(L"system::JsonNode"), CreateReference(L"value"))))); + newSerializer->declarations.Add(deserialize); + } + + AddStatement(functionDecl->statement.Cast(), CreateReturn(newSerializer)); + return functionDecl; + } + + WString AddRpcJsonSerializeValue(WfLexicalScopeManager* manager, vint& tempIndex, Ptr block, Ptr value, WfType* type) + { + List primitives; + List enums; + List structs; + CollectRpcJsonPrimitives(primitives); + CollectRpcJsonTypes(manager, enums, structs); + + RpcJsonGenerationContext context; + context.manager = manager; + context.primitives = &primitives; + context.enums = &enums; + context.structs = &structs; + context.tempIndex = tempIndex; + + auto result = AddKnownRpcJsonSerializeValue(context, block, value, type); + tempIndex = context.tempIndex; + return result; + } + + WString AddRpcJsonDeserializeValue(WfLexicalScopeManager* manager, vint& tempIndex, Ptr block, Ptr node, WfType* type) + { + List primitives; + List enums; + List structs; + CollectRpcJsonPrimitives(primitives); + CollectRpcJsonTypes(manager, enums, structs); + + RpcJsonGenerationContext context; + context.manager = manager; + context.primitives = &primitives; + context.enums = &enums; + context.structs = &structs; + context.tempIndex = tempIndex; + + auto result = AddKnownRpcJsonDeserializeValue(context, block, node, type); + tempIndex = context.tempIndex; + return result; + } + + Ptr CreateRpcJsonTransferType(ITypeInfo* typeInfo, bool byref, WfType* type) + { + if (IsSharedInterfaceType(typeInfo)) + { + return byref + ? CreateQualifiedType(L"system::RpcObjectReference") + : CreatePredefinedType(WfPredefinedTypeName::Object); + } + return CopyType(type); + } + + Ptr CreateRpcJsonTransferExpression(ITypeInfo* typeInfo, bool byref, Ptr value, Ptr lifecycle) + { + if (IsSharedInterfaceType(typeInfo)) + { + return CreateRpcBoxExpression(typeInfo, byref, value, lifecycle); + } + return value; + } + + Ptr CreateRpcJsonTransferExpression(const RpcParamModel& paramModel, Ptr value, Ptr lifecycle) + { + return CreateRpcJsonTransferExpression(paramModel.typeInfo, paramModel.byref, value, lifecycle); + } + + Ptr CreateJsonDispatchArgument( + WfLexicalScopeManager* manager, + vint& tempIndex, + Ptr block, + Ptr node, + const RpcParamModel& paramModel) + { + auto transferType = CreateRpcJsonTransferType(paramModel.typeInfo, paramModel.byref, paramModel.type.Obj()); + auto valueName = AddRpcJsonDeserializeValue(manager, tempIndex, block, node, transferType.Obj()); + if (IsSharedInterfaceType(paramModel.typeInfo)) + { + return CreateRpcUnboxExpression(paramModel.typeInfo, paramModel.type, paramModel.byref, CreateReference(valueName), CreateReference(L"_lc")); + } + return CreateReference(valueName); + } + + Ptr BuildInvokeMethodBranchJson(WfLexicalScopeManager* manager, const RpcInterfaceModel& interfaceModel, const RpcMethodModel& methodModel) + { + auto block = CreateBlock(); + AddStatement(block, CreateInferredVariableStatement(L"target", CreateCast(CreateSharedType(interfaceModel.fullName), CreateCall(CreateMember(CreateReference(L"_lc"), L"RefToPtr"), CreateReference(L"ref"))))); + + List> arguments; + vint tempIndex = 0; + for (vint i = 0; i < methodModel.params.Count(); i++) + { + auto&& paramModel = methodModel.params[i]; + arguments.Add(CreateJsonDispatchArgument( + manager, + tempIndex, + block, + CreateCast(CreateSharedType(L"system::JsonNode"), CreateRpcJsonSerializedArgument(i)), + paramModel)); + } + + auto invokeTarget = CreateMember(CreateReference(L"target"), methodModel.name); + auto invoke = Ptr(new WfCallExpression); + invoke->function = invokeTarget; + for (auto argument : arguments) + { + invoke->arguments.Add(argument); + } + + if (IsVoidType(methodModel.returnType.Obj())) + { + AddStatement(block, CreateExpressionStatement(invoke)); + RpcJsonGenerationContext context; + context.manager = manager; + context.tempIndex = tempIndex; + auto nodeName = AddRpcJsonLiteral(block, context, L"Null"); + tempIndex = context.tempIndex; + AddStatement(block, CreateReturn(CreateReference(nodeName))); + } + else + { + auto transferType = CreateRpcJsonTransferType(methodModel.returnTypeInfo, methodModel.returnByref, methodModel.returnType.Obj()); + if (IsRpcByvalReturn(methodModel)) + { + AddStatement(block, CreateInferredVariableStatement(L"copiedReturnValue", CreateRpcCopyByvalExpression(invoke, CreateReference(L"_lc")))); + auto transferValue = CreateRpcJsonTransferExpression(methodModel.returnTypeInfo, methodModel.returnByref, CreateReference(L"copiedReturnValue"), CreateReference(L"_lc")); + auto nodeName = AddRpcJsonSerializeValue(manager, tempIndex, block, transferValue, transferType.Obj()); + AddRpcByvalReturnValue(block, CreateReference(nodeName), CreateReference(L"copiedReturnValue")); + } + else + { + auto transferValue = CreateRpcJsonTransferExpression(methodModel.returnTypeInfo, methodModel.returnByref, invoke, CreateReference(L"_lc")); + auto nodeName = AddRpcJsonSerializeValue(manager, tempIndex, block, transferValue, transferType.Obj()); + AddStatement(block, CreateReturn(CreateReference(nodeName))); + } + } + return block; + } + + Ptr BuildInvokeEventBranchJson(WfLexicalScopeManager* manager, const RpcInterfaceModel& interfaceModel, const RpcEventModel& eventModel) + { + auto block = CreateBlock(); + AddStatement(block, CreateInferredVariableStatement(L"target", CreateCast(CreateSharedType(interfaceModel.fullName), CreateCall(CreateMember(CreateReference(L"_lc"), L"RefToPtr"), CreateReference(L"ref"))))); + + auto invoke = Ptr(new WfCallExpression); + invoke->function = CreateMember(CreateReference(L"target"), eventModel.name); + vint tempIndex = 0; + for (vint i = 0; i < eventModel.params.Count(); i++) + { + auto&& paramModel = eventModel.params[i]; + invoke->arguments.Add(CreateJsonDispatchArgument( + manager, + tempIndex, + block, + CreateCast(CreateSharedType(L"system::JsonNode"), CreateRpcJsonSerializedArgument(i)), + paramModel)); + } + AddStatement(block, CreateExpressionStatement(invoke)); + return block; + } + + Ptr BuildDispatchChainJson(WfLexicalScopeManager* manager, const List& interfaces, bool forEvent, const WString& unknownIdVariable = WString::Empty) + { + auto switchStat = Ptr(new WfSwitchStatement); + switchStat->expression = CreateReference(forEvent ? L"eventId" : L"methodId"); + switchStat->defaultBranch = + unknownIdVariable == L"" + ? CreateRaise(forEvent ? L"Unknown RPC event id." : L"Unknown RPC method id.") + : CreateExpressionStatement(CreateAssign(CreateReference(unknownIdVariable), CreateBool(true))); + + for (auto&& interfaceModel : interfaces) + { + if (forEvent) + { + for (auto&& eventModel : interfaceModel.events) + { + auto switchCase = Ptr(new WfSwitchCase); + switchCase->expression = CreateRpcConstantReference(L"rpcevent_", eventModel.fullName); + switchCase->statement = BuildInvokeEventBranchJson(manager, interfaceModel, eventModel); + switchStat->caseBranches.Add(switchCase); + } + } + else + { + for (auto&& methodModel : interfaceModel.methods) + { + auto switchCase = Ptr(new WfSwitchCase); + switchCase->expression = CreateRpcConstantReference(L"rpcmethod_", methodModel.fullName); + switchCase->statement = BuildInvokeMethodBranchJson(manager, interfaceModel, methodModel); + switchStat->caseBranches.Add(switchCase); + } + } + } + return switchStat; + } + + Ptr GenerateObjectOpsFactoryJson(WfLexicalScopeManager* manager, const List& interfaces) + { + auto functionDecl = CreateFunctionDeclaration(L"rpcops_IRpcObjectOpsJson", CreateSharedType(L"system::IRpcObjectOps"), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"lc", CreateRawType(L"system::IRpcLifecycle"))); + auto newOps = CreateNewInterface(CreateSharedType(L"system::IRpcObjectOps")).Cast(); + newOps->declarations.Add(CreateVariableDeclaration(L"_lc", CreateRawType(L"system::IRpcLifecycle"), CreateReference(L"lc"))); + newOps->declarations.Add(CreateVariableDeclaration(L"_slot", CreatePredefinedType(WfPredefinedTypeName::Int), CreateInt(0))); + newOps->declarations.Add(CreateVariableDeclaration(L"_byvalReturnValues", CreateMapType(CreatePredefinedType(WfPredefinedTypeName::Int), CreatePredefinedType(WfPredefinedTypeName::Object)), CreateConstructor())); + + { + auto invokeMethod = CreateFunctionDeclaration(L"InvokeMethod", CreatePredefinedType(WfPredefinedTypeName::Object), WfFunctionKind::Override); + invokeMethod->arguments.Add(CreateFunctionArgument(L"ref", CreateQualifiedType(L"system::RpcObjectReference"))); + invokeMethod->arguments.Add(CreateFunctionArgument(L"methodId", CreatePredefinedType(WfPredefinedTypeName::Int))); + invokeMethod->arguments.Add(CreateFunctionArgument(L"arguments", CreateSharedType(L"system::Array"))); + auto block = invokeMethod->statement.Cast(); + AddStatement(block, CreateVariableStatement(L"unknownId", CreatePredefinedType(WfPredefinedTypeName::Bool), CreateBool(false))); + auto catchBlock = CreateBlock(); + AddStatement(catchBlock, CreateReturn(CreateCall(CreateReference(L"rpcjson_Serialize"), CreateRpcExceptionExpression(CreateMember(CreateReference(L"ex"), L"Message"))))); + AddStatement(block, CreateTryCatch(BuildDispatchChainJson(manager, interfaces, false, L"unknownId"), L"ex", catchBlock)); + auto unknownIdBranch = CreateBlock(); + AddStatement(unknownIdBranch, CreateRaise(L"Unknown RPC method id.")); + AddStatement(block, CreateIf(CreateReference(L"unknownId"), unknownIdBranch)); + AddStatement(block, CreateReturn(CreateCall(CreateReference(L"rpcjson_Serialize"), CreateNull()))); + newOps->declarations.Add(invokeMethod); + } + + { + auto endInvokeMethod = CreateFunctionDeclaration(L"EndInvokeMethod", CreatePredefinedType(WfPredefinedTypeName::Void), WfFunctionKind::Override); + endInvokeMethod->arguments.Add(CreateFunctionArgument(L"slot", CreatePredefinedType(WfPredefinedTypeName::Int))); + AddStatement(endInvokeMethod->statement.Cast(), CreateExpressionStatement(CreateCall(CreateMember(CreateReference(L"_byvalReturnValues"), L"Remove"), CreateReference(L"slot")))); + newOps->declarations.Add(endInvokeMethod); + } + + { + auto objectHold = CreateFunctionDeclaration(L"ObjectHold", CreatePredefinedType(WfPredefinedTypeName::Void), WfFunctionKind::Override); + objectHold->arguments.Add(CreateFunctionArgument(L"ref", CreateQualifiedType(L"system::RpcObjectReference"))); + objectHold->arguments.Add(CreateFunctionArgument(L"remoteClientId", CreatePredefinedType(WfPredefinedTypeName::Int))); + objectHold->arguments.Add(CreateFunctionArgument(L"hold", CreatePredefinedType(WfPredefinedTypeName::Bool))); + auto trueBranch = CreateBlock(); + AddStatement(trueBranch, CreateExpressionStatement(CreateCall(CreateMember(CreateReference(L"_lc"), L"LocalObjectHold"), CreateReference(L"ref"), CreateReference(L"remoteClientId")))); + auto falseBranch = CreateBlock(); + AddStatement(falseBranch, CreateExpressionStatement(CreateCall(CreateMember(CreateReference(L"_lc"), L"LocalObjectUnhold"), CreateReference(L"ref"), CreateReference(L"remoteClientId")))); + AddStatement(objectHold->statement.Cast(), CreateIf(CreateReference(L"hold"), trueBranch, falseBranch)); + newOps->declarations.Add(objectHold); + } + + { + auto registerService = CreateFunctionDeclaration(L"RegisterService", CreatePredefinedType(WfPredefinedTypeName::Void), WfFunctionKind::Override); + registerService->arguments.Add(CreateFunctionArgument(L"typeId", CreatePredefinedType(WfPredefinedTypeName::Int))); + registerService->arguments.Add(CreateFunctionArgument(L"service", CreateSharedType(L"system::Interface"))); + auto block = registerService->statement.Cast(); + AddStatement(block, BuildRegisterService()); + newOps->declarations.Add(registerService); + } + + AddStatement(functionDecl->statement.Cast(), CreateReturn(newOps)); + return functionDecl; + } + + Ptr GenerateObjectEventOpsFactoryJson(WfLexicalScopeManager* manager, const List& interfaces) + { + auto functionDecl = CreateFunctionDeclaration(L"rpcops_IRpcObjectEventOpsJson", CreateSharedType(L"system::IRpcObjectEventOps"), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"lc", CreateRawType(L"system::IRpcLifecycle"))); + auto newOps = CreateNewInterface(CreateSharedType(L"system::IRpcObjectEventOps")).Cast(); + newOps->declarations.Add(CreateVariableDeclaration(L"_lc", CreateRawType(L"system::IRpcLifecycle"), CreateReference(L"lc"))); + + { + auto invokeEvent = CreateFunctionDeclaration(L"InvokeEvent", CreatePredefinedType(WfPredefinedTypeName::Object), WfFunctionKind::Override); + invokeEvent->arguments.Add(CreateFunctionArgument(L"ref", CreateQualifiedType(L"system::RpcObjectReference"))); + invokeEvent->arguments.Add(CreateFunctionArgument(L"eventId", CreatePredefinedType(WfPredefinedTypeName::Int))); + invokeEvent->arguments.Add(CreateFunctionArgument(L"arguments", CreateSharedType(L"system::Array"))); + auto block = invokeEvent->statement.Cast(); + if (!HasRpcEvents(interfaces)) + { + AddStatement(block, CreateRaise(L"Unknown RPC event id.")); + newOps->declarations.Add(invokeEvent); + } + else + { + AddStatement(block, CreateVariableStatement(L"unknownId", CreatePredefinedType(WfPredefinedTypeName::Bool), CreateBool(false))); + AddStatement(block, CreateVariableStatement(L"rpcEventExceptions", CreateRpcEventExceptionMapType(), CreateConstructor())); + AddStatement(block, CreateExpressionStatement(CreateCall(CreateMember(CreateMember(CreateReference(L"_lc"), L"Controller"), L"SetEventSuppressedFlag"), CreateReference(L"ref"), CreateReference(L"eventId"), CreateBool(true)))); + auto finallyBlock = CreateBlock(); + AddStatement(finallyBlock, CreateExpressionStatement(CreateCall(CreateMember(CreateMember(CreateReference(L"_lc"), L"Controller"), L"SetEventSuppressedFlag"), CreateReference(L"ref"), CreateReference(L"eventId"), CreateBool(false)))); + auto catchBlock = CreateBlock(); + AddRpcEventExceptionMapSet(catchBlock, L"rpcEventExceptions", CreateMember(CreateReference(L"_lc"), L"ClientId"), CreateMember(CreateReference(L"ex"), L"Message")); + AddStatement(block, CreateTry(BuildDispatchChainJson(manager, interfaces, true, L"unknownId"), L"ex", catchBlock, finallyBlock)); + auto unknownIdBranch = CreateBlock(); + AddStatement(unknownIdBranch, CreateRaise(L"Unknown RPC event id.")); + AddStatement(block, CreateIf(CreateReference(L"unknownId"), unknownIdBranch)); + auto returnExceptionBranch = CreateBlock(); + AddStatement(returnExceptionBranch, CreateReturn(CreateCall(CreateReference(L"rpcjson_Serialize"), CreateReference(L"rpcEventExceptions")))); + auto returnNullBranch = CreateBlock(); + AddStatement(returnNullBranch, CreateReturn(CreateCall(CreateReference(L"rpcjson_Serialize"), CreateNull()))); + AddStatement( + block, + CreateIf( + CreateBinary(WfBinaryOperator::GT, CreateMember(CreateReference(L"rpcEventExceptions"), L"Count"), CreateInt(0)), + returnExceptionBranch, + returnNullBranch)); + newOps->declarations.Add(invokeEvent); + } + } + + AddStatement(functionDecl->statement.Cast(), CreateReturn(newOps)); + return functionDecl; + } + + void AddRpcOpsArgumentsArrayJson( + WfLexicalScopeManager* manager, + Ptr block, + const List& params, + vint& tempIndex) + { + AddStatement(block, CreateVariableStatement(L"arguments", CreateSharedType(L"system::Array"), CreateConstructor())); + AddStatement(block, CreateExpressionStatement(CreateCall(CreateMember(CreateReference(L"arguments"), L"Resize"), CreateInt(params.Count())))); + + for (vint i = 0; i < params.Count(); i++) + { + auto&& paramModel = params[i]; + auto value = CreateReference(GetRpcOpsArgumentName(paramModel)); + auto transferValue = CreateRpcJsonTransferExpression(paramModel, value, CreateReference(L"_lc")); + auto transferType = CreateRpcJsonTransferType(paramModel.typeInfo, paramModel.byref, paramModel.type.Obj()); + auto nodeName = AddRpcJsonSerializeValue(manager, tempIndex, block, transferValue, transferType.Obj()); + AddStatement(block, CreateExpressionStatement(CreateCall(CreateMember(CreateReference(L"arguments"), L"Set"), CreateInt(i), CreateReference(nodeName)))); + } + } + + Ptr GenerateRpcOpsMethodImplementationJson(WfLexicalScopeManager* manager, const RpcMethodModel& methodModel) + { + auto functionDecl = CreateRpcOpsFunctionDeclaration(GetRpcOpsInvokeMethodName(methodModel), CopyType(methodModel.returnType.Obj()), WfFunctionKind::Override); + AddRpcOpsFunctionArguments(functionDecl, methodModel.params); + auto block = functionDecl->statement.Cast(); + + vint tempIndex = 0; + AddRpcOpsArgumentsArrayJson(manager, block, methodModel.params, tempIndex); + if (IsVoidType(methodModel.returnType.Obj())) + { + auto invoke = CreateRpcOpsObjectInvoke(methodModel); + AddStatement(block, CreateInferredVariableStatement(L"invokeResult", invoke)); + AddStatement(block, CreateInferredVariableStatement( + L"jsonResult", + CreateCast(CreateSharedType(L"system::JsonNode"), CreateReference(L"invokeResult")))); + AddStatement(block, CreateInferredVariableStatement( + L"methodResult", + CreateCall(CreateReference(L"rpcjson_Deserialize"), CreateReference(L"jsonResult")))); + AddRpcMethodExceptionRaise(block, CreateReference(L"methodResult")); + } + else if (IsRpcByvalReturn(methodModel)) + { + AddStatement(block, CreateInferredVariableStatement(L"objectOps", CreateRpcOpsObjectOps())); + auto invoke = CreateRpcOpsObjectInvoke(methodModel, CreateReference(L"objectOps")); + AddStatement(block, CreateInferredVariableStatement(L"invokeResult", invoke)); + AddStatement(block, CreateInferredVariableStatement( + L"byvalReturnValue", + CreateWeakCast(CreateSharedType(L"system::RpcByvalReturnValue"), CreateReference(L"invokeResult")))); + AddStatement(block, CreateVariableStatement(L"jsonResult", CreateSharedType(L"system::JsonNode"), CreateNull())); + auto exceptionBranch = CreateBlock(); + AddStatement(exceptionBranch, CreateExpressionStatement(CreateAssign( + CreateReference(L"jsonResult"), + CreateCast(CreateSharedType(L"system::JsonNode"), CreateReference(L"invokeResult"))))); + auto returnBranch = CreateBlock(); + AddStatement(returnBranch, CreateExpressionStatement(CreateAssign( + CreateReference(L"jsonResult"), + CreateCast(CreateSharedType(L"system::JsonNode"), CreateMember(CreateReference(L"byvalReturnValue"), L"value"))))); + AddStatement(block, CreateIf(CreateIsNull(CreateReference(L"byvalReturnValue")), exceptionBranch, returnBranch)); + AddStatement(block, CreateInferredVariableStatement( + L"methodResult", + CreateCall(CreateReference(L"rpcjson_Deserialize"), CreateReference(L"jsonResult")))); + AddRpcMethodExceptionRaise(block, CreateReference(L"methodResult")); + AddStatement(block, CreateInferredVariableStatement( + L"strongByvalReturnValue", + CreateCast(CreateSharedType(L"system::RpcByvalReturnValue"), CreateReference(L"byvalReturnValue")))); + auto transferType = CreateRpcJsonTransferType(methodModel.returnTypeInfo, methodModel.returnByref, methodModel.returnType.Obj()); + auto valueName = AddRpcJsonDeserializeValue(manager, tempIndex, block, CreateReference(L"jsonResult"), transferType.Obj()); + AddStatement(block, CreateInferredVariableStatement( + L"result", + IsSharedInterfaceType(methodModel.returnTypeInfo) + ? CreateRpcUnboxExpression(methodModel.returnTypeInfo, methodModel.returnType, methodModel.returnByref, CreateReference(valueName), CreateReference(L"_lc")) + : CreateReference(valueName))); + AddStatement(block, CreateExpressionStatement(CreateCall( + CreateMember(CreateReference(L"objectOps"), L"EndInvokeMethod"), + CreateMember(CreateReference(L"strongByvalReturnValue"), L"slot")))); + AddStatement(block, CreateReturn(CreateReference(L"result"))); + } + else + { + auto invoke = CreateRpcOpsObjectInvoke(methodModel); + AddStatement(block, CreateInferredVariableStatement(L"invokeResult", invoke)); + AddStatement(block, CreateInferredVariableStatement(L"jsonResult", CreateCast(CreateSharedType(L"system::JsonNode"), CreateReference(L"invokeResult")))); + AddStatement(block, CreateInferredVariableStatement( + L"methodResult", + CreateCall(CreateReference(L"rpcjson_Deserialize"), CreateReference(L"jsonResult")))); + AddRpcMethodExceptionRaise(block, CreateReference(L"methodResult")); + auto transferType = CreateRpcJsonTransferType(methodModel.returnTypeInfo, methodModel.returnByref, methodModel.returnType.Obj()); + auto valueName = AddRpcJsonDeserializeValue(manager, tempIndex, block, CreateReference(L"jsonResult"), transferType.Obj()); + if (IsSharedInterfaceType(methodModel.returnTypeInfo)) + { + AddStatement(block, CreateReturn(CreateRpcUnboxExpression(methodModel.returnTypeInfo, methodModel.returnType, methodModel.returnByref, CreateReference(valueName), CreateReference(L"_lc")))); + } + else + { + AddStatement(block, CreateReturn(CreateReference(valueName))); + } + } + + return functionDecl; + } + + Ptr GenerateRpcOpsEventImplementationJson(WfLexicalScopeManager* manager, const RpcEventModel& eventModel) + { + auto functionDecl = CreateRpcOpsFunctionDeclaration(GetRpcOpsInvokeEventName(eventModel), CreatePredefinedType(WfPredefinedTypeName::Void), WfFunctionKind::Override); + AddRpcOpsFunctionArguments(functionDecl, eventModel.params); + auto block = functionDecl->statement.Cast(); + + vint tempIndex = 0; + AddRpcOpsArgumentsArrayJson(manager, block, eventModel.params, tempIndex); + AddStatement(block, CreateInferredVariableStatement(L"invokeResult", CreateRpcOpsObjectEventInvoke(eventModel))); + AddStatement(block, CreateInferredVariableStatement( + L"jsonResult", + CreateCast(CreateSharedType(L"system::JsonNode"), CreateReference(L"invokeResult")))); + AddStatement(block, CreateInferredVariableStatement( + L"eventResult", + CreateCall(CreateReference(L"rpcjson_Deserialize"), CreateReference(L"jsonResult")))); + AddRpcEventExceptionRaise(block, CreateCast(CreateRpcEventExceptionMapType(), CreateReference(L"eventResult"))); + return functionDecl; + } + + Ptr GenerateRpcOpsFactoryJson(WfLexicalScopeManager* manager, const WString& assemblyName, const List& interfaces) + { + auto functionDecl = CreateFunctionDeclaration(L"rpcops_IOps_CreateJson", CreateSharedType(GetRpcOpsInterfaceName(assemblyName)), WfFunctionKind::Normal); + functionDecl->arguments.Add(CreateFunctionArgument(L"lc", CreateRawType(L"system::IRpcLifecycle"))); + auto newOps = CreateNewInterface(CreateSharedType(GetRpcOpsInterfaceName(assemblyName))).Cast(); + newOps->declarations.Add(CreateVariableDeclaration(L"_lc", CreateRawType(L"system::IRpcLifecycle"), CreateReference(L"lc"))); + + for (auto&& interfaceModel : interfaces) + { + for (auto&& methodModel : interfaceModel.methods) + { + newOps->declarations.Add(GenerateRpcOpsMethodImplementationJson(manager, methodModel)); + } + for (auto&& eventModel : interfaceModel.events) + { + newOps->declarations.Add(GenerateRpcOpsEventImplementationJson(manager, eventModel)); + } + } + + AddStatement(functionDecl->statement.Cast(), CreateReturn(newOps)); + return functionDecl; + } + } + + Ptr GenerateModuleRpcJson(WfLexicalScopeManager* manager, WString assemblyName) + { + using namespace rpc_generating; + + if (!manager || !manager->rpcMetadata || !manager->rpcMetadata->metadataModule) + { + return nullptr; + } + + CollectMangledNames(manager); + if (manager->errors.Count() > 0) + { + return nullptr; + } + + auto interfaces = BuildInterfaceModels(manager); + if (manager->errors.Count() > 0) + { + return nullptr; + } + + auto module = Ptr(new WfModule); + module->moduleType = WfModuleType::Module; + module->name.value = L"RpcMetadataJson"; + + AddRpcJsonDeclarations(manager, module); + module->declarations.Add(GenerateRpcSerializerFactoryJson()); + module->declarations.Add(GenerateObjectOpsFactoryJson(manager, interfaces)); + module->declarations.Add(GenerateObjectEventOpsFactoryJson(manager, interfaces)); + module->declarations.Add(GenerateRpcOpsFactoryJson(manager, assemblyName, interfaces)); + + return module; + } + } + } +} + + /*********************************************************************** .\ANALYZER\WFANALYZER_MISC.CPP ***********************************************************************/ @@ -10798,6 +15462,2277 @@ CreateTypeInfoFromMethodInfo } } +/*********************************************************************** +.\ANALYZER\WFANALYZER_VALIDATERPC.CPP +***********************************************************************/ + +namespace vl +{ + namespace workflow + { + namespace analyzer + { + namespace rpc_compiling + { + using namespace collections; + using namespace reflection; + using namespace reflection::description; + +/*********************************************************************** +ValidateModuleRPC_Ast +***********************************************************************/ + + enum class RpcDeferredKind + { + Cached, + Dynamic, + ByvalProperty, + ByrefProperty, + ByvalMethod, + ByrefMethod, + ByvalParameter, + ByrefParameter, + }; + + struct RpcDeferredCheck + { + RpcDeferredKind kind = RpcDeferredKind::Cached; + WfAttribute* attribute = nullptr; + ITypeDescriptor* ownerTd = nullptr; + WfPropertyDeclaration* propertyDecl = nullptr; + WfFunctionDeclaration* methodDecl = nullptr; + WfFunctionArgument* parameterDecl = nullptr; + }; + + struct RpcPhase1Context + { + SortedList workflowRpcInterfaceTds; + Dictionary, WfType*> baseTypeNodeMap; + List deferredChecks; + }; + + bool IsRpcAttribute(WfAttribute* attribute, const wchar_t* name) + { + return attribute + && attribute->category.value == L"rpc" + && attribute->name.value == name; + } + + bool HasRpcAttribute(List>& attributes, const wchar_t* name) + { + for (auto attribute : attributes) + { + if (IsRpcAttribute(attribute.Obj(), name)) + { + return true; + } + } + return false; + } + + bool HasEarlierRpcAttribute(List>& attributes, WfAttribute* currentAttribute, const wchar_t* name) + { + for (auto attribute : attributes) + { + if (attribute.Obj() == currentAttribute) + { + break; + } + + if (IsRpcAttribute(attribute.Obj(), name)) + { + return true; + } + } + return false; + } + + ITypeDescriptor* GetClassTypeDescriptor(WfLexicalScopeManager* manager, WfClassDeclaration* classDecl) + { + if (!classDecl) + { + return nullptr; + } + return manager->declarationTypes[classDecl].Obj(); + } + + WfPropertyDeclaration* GetRpcPropertyDeclaration(WfDeclaration* declaration) + { + if (auto propertyDecl = dynamic_cast(declaration)) + { + return propertyDecl; + } + + if (auto autoPropertyDecl = dynamic_cast(declaration)) + { + for (auto expandedDeclaration : autoPropertyDecl->expandedDeclarations) + { + if (auto propertyDecl = expandedDeclaration.Cast()) + { + return propertyDecl.Obj(); + } + } + } + + return nullptr; + } + + WString GetDeclarationFullName(WfLexicalScopeManager* manager, WfDeclaration* declaration, WfClassDeclaration* ownerClassDecl) + { + if (auto classDecl = dynamic_cast(declaration)) + { + if (auto td = GetClassTypeDescriptor(manager, classDecl)) + { + return td->GetTypeName(); + } + } + + if (auto ownerTd = GetClassTypeDescriptor(manager, ownerClassDecl)) + { + if (declaration) + { + return ownerTd->GetTypeName() + L"." + declaration->name.value; + } + return ownerTd->GetTypeName(); + } + + if (declaration && declaration->name.value != L"") + { + return declaration->name.value; + } + + return L""; + } + + WString GetAttributeTargetFullName(WfLexicalScopeManager* manager, WfDeclaration* declaration, WfFunctionArgument* argument, WfClassDeclaration* ownerClassDecl) + { + auto ownerTd = GetClassTypeDescriptor(manager, ownerClassDecl); + auto ownerPrefix = ownerTd ? ownerTd->GetTypeName() + L"." : WString(); + + if (argument && declaration) + { + return ownerPrefix + declaration->name.value + L"(" + argument->name.value + L")"; + } + else if (declaration) + { + return ownerPrefix + declaration->name.value; + } + else if (argument) + { + return ownerPrefix + argument->name.value; + } + else + { + return ownerTd ? ownerTd->GetTypeName() : WString(L""); + } + } + + bool ContainsFunctionType(WfType* type) + { + class V : public Object, public WfType::IVisitor + { + public: + bool found = false; + + void Visit(WfFunctionType* node)override { found = true; } + void Visit(WfRawPointerType* node)override { node->element->Accept(this); } + void Visit(WfSharedPointerType* node)override { node->element->Accept(this); } + void Visit(WfNullableType* node)override { node->element->Accept(this); } + void Visit(WfEnumerableType* node)override { node->element->Accept(this); } + void Visit(WfMapType* node)override { if (node->key) node->key->Accept(this); node->value->Accept(this); } + void Visit(WfObservableListType* node)override { node->element->Accept(this); } + void Visit(WfChildType* node)override { node->parent->Accept(this); } + void Visit(WfPredefinedType* node)override {} + void Visit(WfTopQualifiedType* node)override {} + void Visit(WfReferenceType* node)override {} + }; + + V visitor; + type->Accept(&visitor); + return visitor.found; + } + + bool IsGenericRpcInterface(WfClassDeclaration* classDecl) + { + if (!classDecl || classDecl->kind != WfClassKind::Interface) + { + return false; + } + + for (auto baseType : classDecl->baseTypes) + { + if (ContainsFunctionType(baseType.Obj())) + { + return true; + } + } + return false; + } + + bool IsAstRpcInterface(WfClassDeclaration* classDecl) + { + return classDecl + && classDecl->kind == WfClassKind::Interface + && !IsGenericRpcInterface(classDecl) + && HasRpcAttribute(classDecl->attributes, L"Interface"); + } + + void CollectAllWorkflowRpcInterfaceTds(WfLexicalScopeManager* manager, SortedList& rpcInterfaceTds) + { + for (vint i = 0; i < manager->declarationTypes.Count(); i++) + { + auto classDecl = manager->declarationTypes.Keys()[i].Cast(); + if (!classDecl || !IsAstRpcInterface(classDecl.Obj())) + { + continue; + } + + auto td = manager->declarationTypes.Values()[i].Obj(); + if (td && !rpcInterfaceTds.Contains(td)) + { + rpcInterfaceTds.Add(td); + } + } + } + + void BuildMemberDeclarationMap(WfLexicalScopeManager* manager, Dictionary>& memberDeclMap) + { + for (vint i = 0; i < manager->declarationMemberInfos.Count(); i++) + { + auto memberInfo = manager->declarationMemberInfos.Values()[i].Obj(); + if (memberInfo && !memberDeclMap.Keys().Contains(memberInfo)) + { + memberDeclMap.Add(memberInfo, manager->declarationMemberInfos.Keys()[i]); + } + } + } + + Ptr FindFunctionArgument(WfFunctionDeclaration* functionDecl, const WString& parameterName, vint index) + { + if (!functionDecl) + { + return nullptr; + } + + for (auto argument : functionDecl->arguments) + { + if (argument->name.value == parameterName) + { + return argument; + } + } + + if (0 <= index && index < functionDecl->arguments.Count()) + { + return functionDecl->arguments[index]; + } + + return nullptr; + } + + bool HasAttribute(IAttributeBag* bag, ITypeDescriptor* attrTd) + { + if (!bag || !attrTd) + { + return false; + } + + for (vint i = 0; i < bag->GetAttributeCount(); i++) + { + if (bag->GetAttribute(i)->GetAttributeType() == attrTd) return true; + } + return false; + } + + bool IsRpcInterfaceTd(ITypeDescriptor* td, ITypeDescriptor* rpcInterfaceAttrTd, const SortedList& rpcInterfaceTds) + { + if (!td) return false; + if (rpcInterfaceTds.Contains(td)) return true; + return HasAttribute(td, rpcInterfaceAttrTd); + } + + bool IsStrongTypedCollection(ITypeInfo* type) + { + if (!type || type->GetDecorator() != ITypeInfo::SharedPtr) return false; + auto genericType = type->GetElementType(); + if (!genericType || genericType->GetDecorator() != ITypeInfo::Generic) return false; + + auto collectionType = genericType->GetElementType(); + if (!collectionType || collectionType->GetDecorator() != ITypeInfo::TypeDescriptor) return false; + + auto collectionTd = collectionType->GetTypeDescriptor(); + if (collectionTd == GetTypeDescriptor() + || collectionTd == GetTypeDescriptor() + || collectionTd == GetTypeDescriptor() + || collectionTd == GetTypeDescriptor()) + { + return genericType->GetGenericArgumentCount() == 1; + } + + if (collectionTd == GetTypeDescriptor() + || collectionTd == GetTypeDescriptor()) + { + return genericType->GetGenericArgumentCount() == 2; + } + + switch (type->GetHint()) + { + case TypeInfoHint::LazyList: + case TypeInfoHint::Array: + case TypeInfoHint::List: + return genericType->GetGenericArgumentCount() == 1; + case TypeInfoHint::Dictionary: + return genericType->GetGenericArgumentCount() == 2; + default: + return false; + } + } + + Ptr CreateRpcAttribute(const WString& name) + { + auto attribute = Ptr(new WfAttribute); + attribute->category.value = L"rpc"; + attribute->name.value = name; + return attribute; + } + + Ptr CreateRpcAttribute(const WString& name, Ptr value) + { + auto attribute = CreateRpcAttribute(name); + attribute->value = value; + return attribute; + } + + Ptr CreateRpcStringLiteral(const WString& value) + { + auto expression = Ptr(new WfStringExpression); + expression->value.value = value; + return expression; + } + + Ptr CreateRpcIntegerLiteral(vint value) + { + auto expression = Ptr(new WfIntegerExpression); + expression->value.value = itow(value); + return expression; + } + + void EnsureRpcAttribute(List>& attributes, const WString& name) + { + if (!HasRpcAttribute(attributes, name.Buffer())) + { + attributes.Add(CreateRpcAttribute(name)); + } + } + + ITypeInfo* GetStrongTypedCollectionElementType(ITypeInfo* type) + { + if (!IsStrongTypedCollection(type)) return nullptr; + auto genericType = type->GetElementType(); + if (!genericType || genericType->GetDecorator() != ITypeInfo::Generic) return nullptr; + switch (genericType->GetGenericArgumentCount()) + { + case 1: + return genericType->GetGenericArgument(0); + case 2: + return genericType->GetGenericArgument(1); + default: + return nullptr; + } + } + + bool IsObservableStrongTypedCollection(ITypeInfo* type) + { + if (!IsStrongTypedCollection(type)) return false; + auto genericType = type->GetElementType(); + if (!genericType || genericType->GetDecorator() != ITypeInfo::Generic) return false; + auto collectionType = genericType->GetElementType(); + if (!collectionType || collectionType->GetDecorator() != ITypeInfo::TypeDescriptor) return false; + return collectionType->GetTypeDescriptor() == GetTypeDescriptor(); + } + + bool IsRpcInterfaceSharedType(ITypeInfo* type, ITypeDescriptor* rpcInterfaceAttrTd, const SortedList& rpcInterfaceTds) + { + if (!type || type->GetDecorator() != ITypeInfo::SharedPtr) return false; + auto elementType = type->GetElementType(); + if (!elementType || elementType->GetDecorator() != ITypeInfo::TypeDescriptor) return false; + auto td = elementType->GetTypeDescriptor(); + return td + && (td->GetTypeDescriptorFlags() & TypeDescriptorFlags::Interface) != TypeDescriptorFlags::Undefined + && IsRpcInterfaceTd(td, rpcInterfaceAttrTd, rpcInterfaceTds); + } + + bool IsStrongTypedCollectionContainingRpcInterface(ITypeInfo* type, ITypeDescriptor* rpcInterfaceAttrTd, const SortedList& rpcInterfaceTds) + { + auto elementType = GetStrongTypedCollectionElementType(type); + if (!elementType) return false; + return IsRpcInterfaceSharedType(elementType, rpcInterfaceAttrTd, rpcInterfaceTds) + || IsStrongTypedCollectionContainingRpcInterface(elementType, rpcInterfaceAttrTd, rpcInterfaceTds); + } + + WString GetDefaultRpcTransferAttribute(ITypeInfo* type, ITypeDescriptor* rpcInterfaceAttrTd, const SortedList& rpcInterfaceTds) + { + if (!IsStrongTypedCollection(type)) return L""; + if (IsObservableStrongTypedCollection(type) + || IsStrongTypedCollectionContainingRpcInterface(type, rpcInterfaceAttrTd, rpcInterfaceTds)) + { + return L"Byref"; + } + return L"Byval"; + } + + bool IsSerializableType(ITypeInfo* type, ITypeDescriptor* rpcInterfaceAttrTd, const SortedList& rpcInterfaceTds) + { + if (!type) return false; + switch (type->GetDecorator()) + { + case ITypeInfo::Nullable: + return IsSerializableType(type->GetElementType(), rpcInterfaceAttrTd, rpcInterfaceTds); + + case ITypeInfo::SharedPtr: + { + auto e = type->GetElementType(); + if (!e) return false; + + if (e->GetDecorator() == ITypeInfo::Generic) + { + if (!IsStrongTypedCollection(type)) return false; + for (vint i = 0; i < e->GetGenericArgumentCount(); i++) + { + if (!IsSerializableType(e->GetGenericArgument(i), rpcInterfaceAttrTd, rpcInterfaceTds)) return false; + } + return true; + } + + if (e->GetDecorator() == ITypeInfo::TypeDescriptor) + { + auto td = e->GetTypeDescriptor(); + return (td->GetTypeDescriptorFlags() & TypeDescriptorFlags::Interface) != TypeDescriptorFlags::Undefined + && IsRpcInterfaceTd(td, rpcInterfaceAttrTd, rpcInterfaceTds); + } + + return false; + } + + case ITypeInfo::TypeDescriptor: + { + auto td = type->GetTypeDescriptor(); + if (td == GetTypeDescriptor()) return false; + switch (td->GetTypeDescriptorFlags()) + { + case TypeDescriptorFlags::Primitive: + case TypeDescriptorFlags::Struct: + case TypeDescriptorFlags::FlagEnum: + case TypeDescriptorFlags::NormalEnum: + return true; + default: + return false; + } + } + + default: + return false; + } + } + + bool IsSerializableReturnType(ITypeInfo* type, ITypeDescriptor* rpcInterfaceAttrTd, const SortedList& rpcInterfaceTds) + { + if (!type) return false; + if (type->GetDecorator() == ITypeInfo::TypeDescriptor && type->GetTypeDescriptor() == GetTypeDescriptor()) return true; + return IsSerializableType(type, rpcInterfaceAttrTd, rpcInterfaceTds); + } + + ITypeDescriptor* GetReservedRpcType(ITypeInfo* type) + { + if (!type) return nullptr; + switch (type->GetDecorator()) + { + case ITypeInfo::Nullable: + case ITypeInfo::RawPtr: + return GetReservedRpcType(type->GetElementType()); + case ITypeInfo::SharedPtr: + { + auto elementType = type->GetElementType(); + if (!elementType) return nullptr; + if (elementType->GetDecorator() == ITypeInfo::Generic) + { + for (vint i = 0; i < elementType->GetGenericArgumentCount(); i++) + { + if (auto td = GetReservedRpcType(elementType->GetGenericArgument(i))) + { + return td; + } + } + return nullptr; + } + return GetReservedRpcType(elementType); + } + case ITypeInfo::TypeDescriptor: + { + auto td = type->GetTypeDescriptor(); + if (td == GetTypeDescriptor() + || td == GetTypeDescriptor()) + { + return td; + } + return nullptr; + } + default: + return nullptr; + } + } + + WString GetReservedRpcTypeName(ITypeInfo* type) + { + if (auto td = GetReservedRpcType(type)) + { + return td->GetTypeName(); + } + return L""; + } + + WString GetDeferredAttributeName(RpcDeferredKind kind) + { + switch (kind) + { + case RpcDeferredKind::Cached: return L"Cached"; + case RpcDeferredKind::Dynamic: return L"Dynamic"; + case RpcDeferredKind::ByvalProperty: + case RpcDeferredKind::ByvalMethod: + case RpcDeferredKind::ByvalParameter: return L"Byval"; + case RpcDeferredKind::ByrefProperty: + case RpcDeferredKind::ByrefMethod: + case RpcDeferredKind::ByrefParameter: return L"Byref"; + default: return L""; + } + } + + void ValidateModuleRPC_Ast(WfLexicalScopeManager* manager, Ptr module, RpcPhase1Context& context) + { + class Visitor + : public Object + , public WfDeclaration::IVisitor + , public WfVirtualCseDeclaration::IVisitor + { + public: + WfLexicalScopeManager* manager; + RpcPhase1Context& context; + WfClassDeclaration* currentClassDecl = nullptr; + + Visitor(WfLexicalScopeManager* _manager, RpcPhase1Context& _context) + :manager(_manager) + , context(_context) + { + } + + void VisitDeclaration(Ptr declaration) + { + ProcessAttributes(declaration->attributes, declaration.Obj(), nullptr); + declaration->Accept(this); + } + + void ProcessAttributes(List>& attributes, WfDeclaration* declaration, WfFunctionArgument* argument) + { + for (auto attribute : attributes) + { + auto name = attribute->name.value; + if (attribute->category.value != L"rpc") + { + continue; + } + + if (name == L"Interface") + { + auto classDecl = dynamic_cast(declaration); + if (!classDecl || classDecl->kind != WfClassKind::Interface || IsGenericRpcInterface(classDecl)) + { + manager->errors.Add(WfErrors::RpcInterfaceCanOnlyApplyToInterface(attribute.Obj(), GetDeclarationFullName(manager, declaration, currentClassDecl))); + continue; + } + + auto td = manager->declarationTypes[classDecl].Obj(); + if (td && !context.workflowRpcInterfaceTds.Contains(td)) + { + context.workflowRpcInterfaceTds.Add(td); + + auto scope = manager->nodeScopes[classDecl]; + for (auto baseType : classDecl->baseTypes) + { + auto scopeName = GetScopeNameFromReferenceType(scope->parentScope.Obj(), baseType); + if (scopeName && scopeName->typeDescriptor) + { + auto key = Pair(td, scopeName->typeDescriptor); + if (!context.baseTypeNodeMap.Keys().Contains(key)) + { + context.baseTypeNodeMap.Add(key, baseType.Obj()); + } + } + } + } + } + else if (name == L"Ctor") + { + auto classDecl = dynamic_cast(declaration); + if (!classDecl || !IsAstRpcInterface(classDecl)) + { + manager->errors.Add(WfErrors::RpcCtorCanOnlyApplyToRpcInterface(attribute.Obj())); + } + } + else if (name == L"Byval" || name == L"Byref") + { + auto propertyDecl = GetRpcPropertyDeclaration(declaration); + auto isProperty = propertyDecl != nullptr; + auto isMethod = dynamic_cast(declaration) != nullptr; + auto isParameter = argument != nullptr && isMethod; + if (!isProperty && !isMethod && !isParameter) + { + manager->errors.Add(WfErrors::RpcAttributeCanOnlyApplyToPropertyMethodOrParameter(attribute.Obj(), name)); + continue; + } + + if (name == L"Byref" && HasEarlierRpcAttribute(attributes, attribute.Obj(), L"Byval")) + { + manager->errors.Add(WfErrors::RpcAttributeCannotCoexistWithOther(attribute.Obj(), name, L"Byval", GetAttributeTargetFullName(manager, declaration, argument, currentClassDecl))); + continue; + } + + if (name == L"Byval" && HasEarlierRpcAttribute(attributes, attribute.Obj(), L"Byref")) + { + manager->errors.Add(WfErrors::RpcAttributeCannotCoexistWithOther(attribute.Obj(), name, L"Byref", GetAttributeTargetFullName(manager, declaration, argument, currentClassDecl))); + continue; + } + + if (!IsAstRpcInterface(currentClassDecl)) + { + manager->errors.Add(WfErrors::RpcAttributeCanOnlyBeUsedInsideRpcInterface(attribute.Obj(), name)); + continue; + } + + RpcDeferredCheck check; + check.attribute = attribute.Obj(); + check.ownerTd = GetClassTypeDescriptor(manager, currentClassDecl); + check.propertyDecl = propertyDecl; + check.methodDecl = dynamic_cast(declaration); + check.parameterDecl = argument; + check.kind = + isParameter ? (name == L"Byval" ? RpcDeferredKind::ByvalParameter : RpcDeferredKind::ByrefParameter) : + isMethod ? (name == L"Byval" ? RpcDeferredKind::ByvalMethod : RpcDeferredKind::ByrefMethod) : + (name == L"Byval" ? RpcDeferredKind::ByvalProperty : RpcDeferredKind::ByrefProperty); + context.deferredChecks.Add(check); + } + else if (name == L"Cached" || name == L"Dynamic") + { + auto propertyDecl = GetRpcPropertyDeclaration(declaration); + if (!propertyDecl) + { + manager->errors.Add(WfErrors::RpcAttributeCanOnlyApplyToProperty(attribute.Obj(), name)); + continue; + } + + if (name == L"Dynamic" && HasEarlierRpcAttribute(attributes, attribute.Obj(), L"Cached")) + { + manager->errors.Add(WfErrors::RpcAttributeCannotCoexistWithOther(attribute.Obj(), name, L"Cached", GetAttributeTargetFullName(manager, declaration, argument, currentClassDecl))); + continue; + } + + if (name == L"Cached" && HasEarlierRpcAttribute(attributes, attribute.Obj(), L"Dynamic")) + { + manager->errors.Add(WfErrors::RpcAttributeCannotCoexistWithOther(attribute.Obj(), name, L"Dynamic", GetAttributeTargetFullName(manager, declaration, argument, currentClassDecl))); + continue; + } + + RpcDeferredCheck check; + check.kind = name == L"Cached" ? RpcDeferredKind::Cached : RpcDeferredKind::Dynamic; + check.attribute = attribute.Obj(); + check.ownerTd = GetClassTypeDescriptor(manager, currentClassDecl); + check.propertyDecl = propertyDecl; + context.deferredChecks.Add(check); + } + } + } + + void Visit(WfNamespaceDeclaration* node)override + { + for (auto declaration : node->declarations) + { + VisitDeclaration(declaration); + } + } + + void Visit(WfFunctionDeclaration* node)override + { + for (auto argument : node->arguments) + { + ProcessAttributes(argument->attributes, node, argument.Obj()); + } + } + + void Visit(WfVariableDeclaration* node)override + { + } + + void Visit(WfEventDeclaration* node)override + { + } + + void Visit(WfPropertyDeclaration* node)override + { + } + + void Visit(WfStaticInitDeclaration* node)override + { + } + + void Visit(WfConstructorDeclaration* node)override + { + } + + void Visit(WfDestructorDeclaration* node)override + { + } + + void Visit(WfClassDeclaration* node)override + { + auto oldClassDecl = currentClassDecl; + currentClassDecl = node; + for (auto declaration : node->declarations) + { + VisitDeclaration(declaration); + } + currentClassDecl = oldClassDecl; + } + + void Visit(WfEnumDeclaration* node)override + { + for (auto item : node->items) + { + ProcessAttributes(item->attributes, nullptr, nullptr); + } + } + + void Visit(WfStructDeclaration* node)override + { + for (auto member : node->members) + { + ProcessAttributes(member->attributes, nullptr, nullptr); + } + } + + void Visit(WfVirtualCfeDeclaration* node)override + { + for (auto declaration : node->expandedDeclarations) + { + VisitDeclaration(declaration); + } + } + + void Visit(WfVirtualCseDeclaration* node)override + { + node->Accept((WfVirtualCseDeclaration::IVisitor*)this); + for (auto declaration : node->expandedDeclarations) + { + VisitDeclaration(declaration); + } + } + + void Visit(WfStateMachineDeclaration* node)override + { + } + }; + + Visitor visitor(manager, context); + for (auto declaration : module->declarations) + { + visitor.VisitDeclaration(declaration); + } + } + +/*********************************************************************** +ValidateModuleRPC_Reflection +***********************************************************************/ + + void ValidateModuleRPC_Reflection(WfLexicalScopeManager* manager, const RpcPhase1Context& context) + { + auto rpcInterfaceAttrTd = GetTypeDescriptor(); + SortedList allWorkflowRpcInterfaceTds; + for (auto td : context.workflowRpcInterfaceTds) + { + if (!allWorkflowRpcInterfaceTds.Contains(td)) + { + allWorkflowRpcInterfaceTds.Add(td); + } + } + CollectAllWorkflowRpcInterfaceTds(manager, allWorkflowRpcInterfaceTds); + + Dictionary> memberDeclMap; + BuildMemberDeclarationMap(manager, memberDeclMap); + + for (auto td : context.workflowRpcInterfaceTds) + { + for (vint i = 0; i < td->GetBaseTypeDescriptorCount(); i++) + { + auto baseTd = td->GetBaseTypeDescriptor(i); + if (!IsRpcInterfaceTd(baseTd, rpcInterfaceAttrTd, allWorkflowRpcInterfaceTds)) + { + auto key = Pair(td, baseTd); + auto index = context.baseTypeNodeMap.Keys().IndexOf(key); + if (index != -1) + { + manager->errors.Add(WfErrors::RpcInterfaceBaseNotSerializable(context.baseTypeNodeMap.Values()[index], td->GetTypeName(), baseTd->GetTypeName())); + } + } + } + + for (vint i = 0; i < td->GetPropertyCount(); i++) + { + auto propertyInfo = td->GetProperty(i); + if (propertyInfo->GetOwnerTypeDescriptor() != td) + { + continue; + } + + if (!IsSerializableType(propertyInfo->GetReturn(), rpcInterfaceAttrTd, allWorkflowRpcInterfaceTds)) + { + auto declIndex = memberDeclMap.Keys().IndexOf(propertyInfo); + if (declIndex != -1) + { + manager->errors.Add(WfErrors::RpcInterfaceMemberNotSerializable(memberDeclMap.Values()[declIndex].Obj(), td->GetTypeName(), td->GetTypeName() + L"." + propertyInfo->GetName())); + } + } + else if (auto typeName = GetReservedRpcTypeName(propertyInfo->GetReturn()); typeName != L"") + { + auto declIndex = memberDeclMap.Keys().IndexOf(propertyInfo); + if (declIndex != -1) + { + manager->errors.Add(WfErrors::RpcReservedTypeInReturnValue(memberDeclMap.Values()[declIndex].Obj(), td->GetTypeName(), td->GetTypeName() + L"." + propertyInfo->GetName(), typeName)); + } + } + } + + for (vint i = 0; i < td->GetMethodGroupCount(); i++) + { + auto group = td->GetMethodGroup(i); + if (group->GetOwnerTypeDescriptor() != td) + { + continue; + } + + for (vint j = 0; j < group->GetMethodCount(); j++) + { + auto methodInfo = group->GetMethod(j); + auto declIndex = memberDeclMap.Keys().IndexOf(methodInfo); + if (declIndex == -1) + { + continue; + } + + auto functionDecl = memberDeclMap.Values()[declIndex].Cast(); + if (!functionDecl) + { + continue; + } + + for (vint k = 0; k < methodInfo->GetParameterCount(); k++) + { + auto parameterInfo = methodInfo->GetParameter(k); + if (auto typeName = GetReservedRpcTypeName(parameterInfo->GetType()); typeName != L"") + { + if (auto argument = FindFunctionArgument(functionDecl.Obj(), parameterInfo->GetName(), k)) + { + manager->errors.Add(WfErrors::RpcReservedTypeInFunctionArgument(argument.Obj(), td->GetTypeName(), td->GetTypeName() + L"." + methodInfo->GetName() + L"(" + parameterInfo->GetName() + L")", typeName)); + } + } + else if (!IsSerializableType(parameterInfo->GetType(), rpcInterfaceAttrTd, allWorkflowRpcInterfaceTds)) + { + if (auto argument = FindFunctionArgument(functionDecl.Obj(), parameterInfo->GetName(), k)) + { + manager->errors.Add(WfErrors::RpcInterfaceMemberNotSerializable(argument.Obj(), td->GetTypeName(), td->GetTypeName() + L"." + methodInfo->GetName() + L"(" + parameterInfo->GetName() + L")")); + } + } + } + + if (auto typeName = GetReservedRpcTypeName(methodInfo->GetReturn()); typeName != L"") + { + manager->errors.Add(WfErrors::RpcReservedTypeInReturnValue(functionDecl.Obj(), td->GetTypeName(), td->GetTypeName() + L"." + methodInfo->GetName(), typeName)); + } + else if (!IsSerializableReturnType(methodInfo->GetReturn(), rpcInterfaceAttrTd, allWorkflowRpcInterfaceTds)) + { + manager->errors.Add(WfErrors::RpcInterfaceMemberNotSerializable(functionDecl.Obj(), td->GetTypeName(), td->GetTypeName() + L"." + methodInfo->GetName())); + } + } + } + + for (vint i = 0; i < td->GetEventCount(); i++) + { + auto eventInfo = td->GetEvent(i); + if (eventInfo->GetOwnerTypeDescriptor() != td) + { + continue; + } + + Ptr eventDecl; + auto declIndex = memberDeclMap.Keys().IndexOf(eventInfo); + if (declIndex != -1) + { + eventDecl = memberDeclMap.Values()[declIndex].Cast(); + } + auto handlerType = eventInfo->GetHandlerType(); + if (handlerType && handlerType->GetDecorator() == ITypeInfo::SharedPtr) + { + auto genericType = handlerType->GetElementType(); + if (genericType && genericType->GetDecorator() == ITypeInfo::Generic) + { + for (vint j = 1; j < genericType->GetGenericArgumentCount(); j++) + { + if (auto typeName = GetReservedRpcTypeName(genericType->GetGenericArgument(j)); typeName != L"") + { + if (eventDecl && j - 1 < eventDecl->arguments.Count()) + { + manager->errors.Add(WfErrors::RpcReservedTypeInEventArgument(eventDecl->arguments[j - 1].Obj(), td->GetTypeName(), td->GetTypeName() + L"." + eventInfo->GetName() + L"(" + itow(j - 1) + L")", typeName)); + } + } + } + } + } + } + } + + for (auto&& check : context.deferredChecks) + { + auto attributeName = GetDeferredAttributeName(check.kind); + switch (check.kind) + { + case RpcDeferredKind::Cached: + case RpcDeferredKind::Dynamic: + if (!IsRpcInterfaceTd(check.ownerTd, rpcInterfaceAttrTd, allWorkflowRpcInterfaceTds)) + { + manager->errors.Add(WfErrors::RpcAttributeCanOnlyBeUsedInsideRpcInterface(check.attribute, attributeName)); + } + break; + default: + { + ITypeInfo* targetType = nullptr; + WString memberName; + + switch (check.kind) + { + case RpcDeferredKind::ByvalProperty: + case RpcDeferredKind::ByrefProperty: + { + auto propertyInfo = manager->declarationMemberInfos[check.propertyDecl].Cast(); + targetType = propertyInfo ? propertyInfo->GetReturn() : nullptr; + if (propertyInfo && check.ownerTd) + { + memberName = check.ownerTd->GetTypeName() + L"." + propertyInfo->GetName(); + } + } + break; + case RpcDeferredKind::ByvalMethod: + case RpcDeferredKind::ByrefMethod: + { + auto methodInfo = manager->declarationMemberInfos[check.methodDecl].Cast(); + targetType = methodInfo ? methodInfo->GetReturn() : nullptr; + if (methodInfo && check.ownerTd) + { + memberName = check.ownerTd->GetTypeName() + L"." + methodInfo->GetName(); + } + } + break; + case RpcDeferredKind::ByvalParameter: + case RpcDeferredKind::ByrefParameter: + { + auto methodInfo = manager->declarationMemberInfos[check.methodDecl].Cast(); + if (methodInfo) + { + for (vint i = 0; i < methodInfo->GetParameterCount(); i++) + { + auto parameterInfo = methodInfo->GetParameter(i); + if (parameterInfo->GetName() == check.parameterDecl->name.value) + { + targetType = parameterInfo->GetType(); + if (check.ownerTd) + { + memberName = check.ownerTd->GetTypeName() + L"." + methodInfo->GetName() + L"(" + parameterInfo->GetName() + L")"; + } + break; + } + } + } + } + break; + default: + break; + } + + if (!IsStrongTypedCollection(targetType)) + { + manager->errors.Add(WfErrors::RpcAttributeRequiresStrongTypedCollection(check.attribute, attributeName, memberName)); + } + } + break; + } + } + } + +/*********************************************************************** +ValidateModuleRPC_GenerateMetadata +***********************************************************************/ + + bool IsGeneratedRpcIdAttribute(const WString& category, const WString& name) + { + return category == L"rpc" && (name == L"IdString" || name == L"IdNumber"); + } + + void GenerateAttributesFromBag(IAttributeBag* bag, List>& attributes) + { + if (!bag) return; + for (vint i = 0; i < bag->GetAttributeCount(); i++) + { + auto attrInfo = bag->GetAttribute(i); + auto attrTd = attrInfo->GetAttributeType(); + if (!attrTd) continue; + + WString typeName = attrTd->GetTypeName(); + const wchar_t* reading = typeName.Buffer(); + const wchar_t* simpleName = reading; + while (true) + { + auto delimiter = wcsstr(simpleName, L"::"); + if (!delimiter) break; + simpleName = delimiter + 2; + } + + if (wcsncmp(simpleName, L"att_", 4) != 0) continue; + auto afterAtt = simpleName + 4; + auto underscore = wcschr(afterAtt, L'_'); + if (!underscore) continue; + + auto attr = Ptr(new WfAttribute); + attr->category.value = WString::CopyFrom(afterAtt, vint(underscore - afterAtt)); + attr->name.value = underscore + 1; + if (IsGeneratedRpcIdAttribute(attr->category.value, attr->name.value)) + { + continue; + } + attributes.Add(attr); + } + } + + void AddOrderedRpcId(WfRpcMetadata* metadata, const WString& fullName) + { + if (!metadata->orderedIds.Contains(fullName)) + { + metadata->orderedIds.Add(fullName); + } + } + + void AddGeneratedRpcIdAttributes(WfRpcMetadata* metadata, const WString& fullName, List>& attributes) + { + auto id = metadata->orderedIds.IndexOf(fullName); + CHECK_ERROR(id != -1, L"RPC metadata ID list does not contain a generated RPC full name."); + attributes.Add(CreateRpcAttribute(L"IdString", CreateRpcStringLiteral(fullName))); + attributes.Add(CreateRpcAttribute(L"IdNumber", CreateRpcIntegerLiteral(id))); + } + + void AddGeneratedRpcIdAttributes(WfRpcMetadata* metadata) + { + for (vint i = 0; i < metadata->typeNames.Count(); i++) + { + AddGeneratedRpcIdAttributes(metadata, metadata->typeNames.Keys()[i], metadata->typeNames.Values()[i]->attributes); + } + for (vint i = 0; i < metadata->methodNames.Count(); i++) + { + AddGeneratedRpcIdAttributes(metadata, metadata->methodNames.Keys()[i], metadata->methodNames.Values()[i]->attributes); + } + for (vint i = 0; i < metadata->eventNames.Count(); i++) + { + AddGeneratedRpcIdAttributes(metadata, metadata->eventNames.Keys()[i], metadata->eventNames.Values()[i]->attributes); + } + } + + void CollectSerializableTypesFromTypeInfo( + ITypeInfo* typeInfo, + SortedList& collectedEnums, + SortedList& collectedStructs, + List& structVisitOrder, + const SortedList& rpcInterfaceTds) + { + if (!typeInfo) return; + switch (typeInfo->GetDecorator()) + { + case ITypeInfo::SharedPtr: + { + auto e = typeInfo->GetElementType(); + if (!e) return; + if (e->GetDecorator() == ITypeInfo::Generic) + { + for (vint i = 0; i < e->GetGenericArgumentCount(); i++) + { + CollectSerializableTypesFromTypeInfo(e->GetGenericArgument(i), collectedEnums, collectedStructs, structVisitOrder, rpcInterfaceTds); + } + } + } + break; + case ITypeInfo::TypeDescriptor: + { + auto td = typeInfo->GetTypeDescriptor(); + if (!td) return; + switch (td->GetTypeDescriptorFlags()) + { + case TypeDescriptorFlags::FlagEnum: + case TypeDescriptorFlags::NormalEnum: + if (!collectedEnums.Contains(td)) + { + collectedEnums.Add(td); + } + break; + case TypeDescriptorFlags::Struct: + if (!collectedStructs.Contains(td)) + { + collectedStructs.Add(td); + // Recursively collect types used by struct members + for (vint i = 0; i < td->GetPropertyCount(); i++) + { + CollectSerializableTypesFromTypeInfo(td->GetProperty(i)->GetReturn(), collectedEnums, collectedStructs, structVisitOrder, rpcInterfaceTds); + } + structVisitOrder.Add(td); + } + break; + default: + break; + } + } + break; + default: + break; + } + } + + void CollectTypesFromInterface( + ITypeDescriptor* td, + SortedList& collectedEnums, + SortedList& collectedStructs, + List& structVisitOrder, + const SortedList& rpcInterfaceTds) + { + for (vint i = 0; i < td->GetPropertyCount(); i++) + { + auto propertyInfo = td->GetProperty(i); + if (propertyInfo->GetOwnerTypeDescriptor() != td) continue; + CollectSerializableTypesFromTypeInfo(propertyInfo->GetReturn(), collectedEnums, collectedStructs, structVisitOrder, rpcInterfaceTds); + } + + for (vint i = 0; i < td->GetMethodGroupCount(); i++) + { + auto group = td->GetMethodGroup(i); + if (group->GetOwnerTypeDescriptor() != td) continue; + for (vint j = 0; j < group->GetMethodCount(); j++) + { + auto methodInfo = group->GetMethod(j); + CollectSerializableTypesFromTypeInfo(methodInfo->GetReturn(), collectedEnums, collectedStructs, structVisitOrder, rpcInterfaceTds); + for (vint k = 0; k < methodInfo->GetParameterCount(); k++) + { + CollectSerializableTypesFromTypeInfo(methodInfo->GetParameter(k)->GetType(), collectedEnums, collectedStructs, structVisitOrder, rpcInterfaceTds); + } + } + } + + for (vint i = 0; i < td->GetEventCount(); i++) + { + auto eventInfo = td->GetEvent(i); + if (eventInfo->GetOwnerTypeDescriptor() != td) continue; + auto handlerType = eventInfo->GetHandlerType(); + if (handlerType && handlerType->GetDecorator() == ITypeInfo::SharedPtr) + { + auto genericType = handlerType->GetElementType(); + if (genericType && genericType->GetDecorator() == ITypeInfo::Generic) + { + for (vint j = 1; j < genericType->GetGenericArgumentCount(); j++) + { + CollectSerializableTypesFromTypeInfo(genericType->GetGenericArgument(j), collectedEnums, collectedStructs, structVisitOrder, rpcInterfaceTds); + } + } + } + } + } + + Ptr GenerateEnumDecl(ITypeDescriptor* td) + { + auto enumType = td->GetEnumType(); + if (!enumType) return nullptr; + + auto decl = Ptr(new WfEnumDeclaration); + List fragments; + GetTypeFragments(td, fragments); + decl->name.value = fragments[fragments.Count() - 1]; + decl->kind = enumType->IsFlagEnum() ? WfEnumKind::Flag : WfEnumKind::Normal; + + // Collect items sorted by value + List> items; + for (vint i = 0; i < enumType->GetItemCount(); i++) + { + items.Add({ enumType->GetItemName(i), enumType->GetItemValue(i) }); + } + if (items.Count() > 1) + { + Sort(&items[0], items.Count(), [](const Pair& a, const Pair& b) + { + return (a.value <=> b.value); + }); + } + + if (enumType->IsFlagEnum()) + { + // Build a map from power-of-2 values to item names + Dictionary powerOf2Names; + + // First pass: add constant items (0 and powers of 2) + for (auto&& [name, value] : items) + { + if (value == 0 || (value != 0 && (value & (value - 1)) == 0)) + { + auto item = Ptr(new WfEnumItem); + item->name.value = name; + item->kind = WfEnumItemKind::Constant; + item->number.value = u64tow(value); + decl->items.Add(item); + powerOf2Names.Add(value, name); + } + } + + // Second pass: add intersection items (composite values) + for (auto&& [name, value] : items) + { + if (value != 0 && (value & (value - 1)) != 0) + { + auto item = Ptr(new WfEnumItem); + item->name.value = name; + item->kind = WfEnumItemKind::Intersection; + for (vint bit = 0; bit < 64; bit++) + { + auto mask = (vuint64_t)1 << bit; + if (value & mask) + { + auto nameIndex = powerOf2Names.Keys().IndexOf(mask); + if (nameIndex != -1) + { + auto intersection = Ptr(new WfEnumItemIntersection); + intersection->name.value = powerOf2Names.Values()[nameIndex]; + item->intersections.Add(intersection); + } + } + } + decl->items.Add(item); + } + } + } + else + { + for (auto&& [name, value] : items) + { + auto item = Ptr(new WfEnumItem); + item->name.value = name; + item->kind = WfEnumItemKind::Constant; + item->number.value = u64tow(value); + decl->items.Add(item); + } + } + return decl; + } + + Ptr GenerateStructDecl(ITypeDescriptor* td) + { + auto decl = Ptr(new WfStructDeclaration); + List fragments; + GetTypeFragments(td, fragments); + decl->name.value = fragments[fragments.Count() - 1]; + + for (vint i = 0; i < td->GetPropertyCount(); i++) + { + auto propertyInfo = td->GetProperty(i); + auto member = Ptr(new WfStructMember); + member->name.value = propertyInfo->GetName(); + member->type = GetTypeFromTypeInfo(propertyInfo->GetReturn()); + decl->members.Add(member); + } + return decl; + } + + Ptr GenerateInterfaceDecl(ITypeDescriptor* td, ITypeDescriptor* rpcInterfaceAttrTd, const SortedList& rpcInterfaceTds) + { + auto decl = Ptr(new WfClassDeclaration); + Dictionary getterTransferAttributes; + Dictionary setterTransferAttributes; + List fragments; + GetTypeFragments(td, fragments); + decl->name.value = fragments[fragments.Count() - 1]; + decl->kind = WfClassKind::Interface; + + // Determine constructor type from reflection + if (auto ctorGroup = td->GetConstructorGroup()) + { + if (ctorGroup->GetMethodCount() > 0) + { + auto ctorReturn = ctorGroup->GetMethod(0)->GetReturn(); + if (ctorReturn && ctorReturn->GetDecorator() == ITypeInfo::RawPtr) + { + decl->constructorType = WfConstructorType::RawPtr; + } + else + { + decl->constructorType = WfConstructorType::SharedPtr; + } + } + } + + // Generate attributes from reflection + GenerateAttributesFromBag(td, decl->attributes); + + // Generate base types from reflection (only RPC interfaces, skip implicit IDescriptable) + for (vint i = 0; i < td->GetBaseTypeDescriptorCount(); i++) + { + auto baseTd = td->GetBaseTypeDescriptor(i); + if (!IsRpcInterfaceTd(baseTd, rpcInterfaceAttrTd, rpcInterfaceTds)) continue; + + List baseFragments; + GetTypeFragments(baseTd, baseFragments); + + Ptr parentType; + for (auto fragment : baseFragments) + { + if (!parentType) + { + auto type = Ptr(new WfTopQualifiedType); + type->name.value = fragment; + parentType = type; + } + else + { + auto type = Ptr(new WfChildType); + type->parent = parentType; + type->name.value = fragment; + parentType = type; + } + } + if (parentType) + { + decl->baseTypes.Add(parentType); + } + } + + // Generate properties from reflection + for (vint i = 0; i < td->GetPropertyCount(); i++) + { + auto propertyInfo = td->GetProperty(i); + if (propertyInfo->GetOwnerTypeDescriptor() != td) continue; + + auto propDecl = Ptr(new WfPropertyDeclaration); + propDecl->name.value = propertyInfo->GetName(); + propDecl->type = GetTypeFromTypeInfo(propertyInfo->GetReturn()); + + if (auto getter = propertyInfo->GetGetter()) + { + propDecl->getter.value = getter->GetName(); + } + if (auto setter = propertyInfo->GetSetter()) + { + propDecl->setter.value = setter->GetName(); + } + if (auto valueChangedEvent = propertyInfo->GetValueChangedEvent()) + { + propDecl->valueChangedEvent.value = valueChangedEvent->GetName(); + } + + GenerateAttributesFromBag(propertyInfo, propDecl->attributes); + if (!HasRpcAttribute(propDecl->attributes, L"Cached") && !HasRpcAttribute(propDecl->attributes, L"Dynamic")) + { + EnsureRpcAttribute(propDecl->attributes, L"Cached"); + } + + auto transferAttribute = GetDefaultRpcTransferAttribute(propertyInfo->GetReturn(), rpcInterfaceAttrTd, rpcInterfaceTds); + if (transferAttribute != L"") + { + if (HasRpcAttribute(propDecl->attributes, L"Byref")) + { + transferAttribute = L"Byref"; + } + else if (HasRpcAttribute(propDecl->attributes, L"Byval")) + { + transferAttribute = L"Byval"; + } + + if (propDecl->getter.value != L"") + { + auto getterIndex = getterTransferAttributes.Keys().IndexOf(propDecl->getter.value); + if (getterIndex == -1) + { + getterTransferAttributes.Add(propDecl->getter.value, transferAttribute); + } + else + { + getterTransferAttributes.Set(propDecl->getter.value, transferAttribute); + } + } + + if (propDecl->setter.value != L"") + { + auto setterIndex = setterTransferAttributes.Keys().IndexOf(propDecl->setter.value); + if (setterIndex == -1) + { + setterTransferAttributes.Add(propDecl->setter.value, transferAttribute); + } + else + { + setterTransferAttributes.Set(propDecl->setter.value, transferAttribute); + } + } + } + decl->declarations.Add(propDecl); + } + + // Generate events from reflection + for (vint i = 0; i < td->GetEventCount(); i++) + { + auto eventInfo = td->GetEvent(i); + if (eventInfo->GetOwnerTypeDescriptor() != td) continue; + + auto eventDecl = Ptr(new WfEventDeclaration); + eventDecl->name.value = eventInfo->GetName(); + + // Extract event argument types from handler type + auto handlerType = eventInfo->GetHandlerType(); + if (handlerType && handlerType->GetDecorator() == ITypeInfo::SharedPtr) + { + auto genericType = handlerType->GetElementType(); + if (genericType && genericType->GetDecorator() == ITypeInfo::Generic) + { + for (vint j = 1; j < genericType->GetGenericArgumentCount(); j++) + { + auto argType = GetTypeFromTypeInfo(genericType->GetGenericArgument(j)); + if (argType) + { + eventDecl->arguments.Add(argType); + } + } + } + } + + GenerateAttributesFromBag(eventInfo, eventDecl->attributes); + decl->declarations.Add(eventDecl); + } + + // Generate methods from reflection + for (vint i = 0; i < td->GetMethodGroupCount(); i++) + { + auto group = td->GetMethodGroup(i); + if (group->GetOwnerTypeDescriptor() != td) continue; + + for (vint j = 0; j < group->GetMethodCount(); j++) + { + auto methodInfo = group->GetMethod(j); + if (methodInfo->GetOwnerProperty()) continue; + + auto funcDecl = Ptr(new WfFunctionDeclaration); + funcDecl->name.value = methodInfo->GetName(); + funcDecl->anonymity = WfFunctionAnonymity::Named; + funcDecl->functionKind = WfFunctionKind::Normal; + funcDecl->returnType = GetTypeFromTypeInfo(methodInfo->GetReturn()); + + for (vint k = 0; k < methodInfo->GetParameterCount(); k++) + { + auto parameterInfo = methodInfo->GetParameter(k); + auto argument = Ptr(new WfFunctionArgument); + argument->name.value = parameterInfo->GetName(); + argument->type = GetTypeFromTypeInfo(parameterInfo->GetType()); + GenerateAttributesFromBag(parameterInfo, argument->attributes); + if (!HasRpcAttribute(argument->attributes, L"Byref") && !HasRpcAttribute(argument->attributes, L"Byval")) + { + WString transferAttribute; + if (k == 0) + { + auto setterIndex = setterTransferAttributes.Keys().IndexOf(methodInfo->GetName()); + if (setterIndex != -1) + { + transferAttribute = setterTransferAttributes.Values()[setterIndex]; + } + } + if (transferAttribute == L"") + { + transferAttribute = GetDefaultRpcTransferAttribute(parameterInfo->GetType(), rpcInterfaceAttrTd, rpcInterfaceTds); + } + if (transferAttribute != L"") + { + EnsureRpcAttribute(argument->attributes, transferAttribute); + } + } + funcDecl->arguments.Add(argument); + } + + GenerateAttributesFromBag(methodInfo, funcDecl->attributes); + if (!HasRpcAttribute(funcDecl->attributes, L"Byref") && !HasRpcAttribute(funcDecl->attributes, L"Byval")) + { + WString transferAttribute; + auto getterIndex = getterTransferAttributes.Keys().IndexOf(methodInfo->GetName()); + if (getterIndex != -1) + { + transferAttribute = getterTransferAttributes.Values()[getterIndex]; + } + if (transferAttribute == L"") + { + transferAttribute = GetDefaultRpcTransferAttribute(methodInfo->GetReturn(), rpcInterfaceAttrTd, rpcInterfaceTds); + } + if (transferAttribute != L"") + { + EnsureRpcAttribute(funcDecl->attributes, transferAttribute); + } + } + decl->declarations.Add(funcDecl); + } + } + + return decl; + } + + Ptr EnsureNamespace( + List>& rootDeclarations, + Dictionary>& namespaceMap, + const List& fragments) + { + if (fragments.Count() <= 1) + { + return nullptr; + } + + WString currentPath; + Ptr currentNs; + List>* currentList = &rootDeclarations; + + for (vint i = 0; i < fragments.Count() - 1; i++) + { + if (currentPath.Length() > 0) + { + currentPath = currentPath + L"::" + fragments[i]; + } + else + { + currentPath = fragments[i]; + } + + auto index = namespaceMap.Keys().IndexOf(currentPath); + if (index != -1) + { + currentNs = namespaceMap.Values()[index]; + currentList = ¤tNs->declarations; + } + else + { + auto ns = Ptr(new WfNamespaceDeclaration); + ns->name.value = fragments[i]; + currentList->Add(ns); + namespaceMap.Add(currentPath, ns); + currentNs = ns; + currentList = &ns->declarations; + } + } + + return currentNs; + } + + void AddDeclToModule( + List>& rootDeclarations, + Dictionary>& namespaceMap, + ITypeDescriptor* td, + Ptr decl) + { + List fragments; + GetTypeFragments(td, fragments); + + auto ns = EnsureNamespace(rootDeclarations, namespaceMap, fragments); + if (ns) + { + ns->declarations.Add(decl); + } + else + { + rootDeclarations.Add(decl); + } + } + + void CollectOrderedRpcInterfaces( + WfLexicalScopeManager* manager, + const List>& declarations, + const SortedList& rpcInterfaceTds, + List& orderedInterfaces) + { + for (auto decl : declarations) + { + if (auto classDecl = decl.Cast()) + { + auto td = GetClassTypeDescriptor(manager, classDecl.Obj()); + if (td && rpcInterfaceTds.Contains(td) && !orderedInterfaces.Contains(td)) + { + orderedInterfaces.Add(td); + } + CollectOrderedRpcInterfaces(manager, classDecl->declarations, rpcInterfaceTds, orderedInterfaces); + } + else if (auto nsDecl = decl.Cast()) + { + CollectOrderedRpcInterfaces(manager, nsDecl->declarations, rpcInterfaceTds, orderedInterfaces); + } + } + } + + WfClassDeclaration* FindRpcInterfaceDeclaration(WfLexicalScopeManager* manager, ITypeDescriptor* td) + { + for (vint i = 0; i < manager->declarationTypes.Count(); i++) + { + if (manager->declarationTypes.Values()[i].Obj() == td) + { + if (auto classDecl = manager->declarationTypes.Keys()[i].Cast()) + { + return classDecl.Obj(); + } + } + } + return nullptr; + } + + WfFunctionDeclaration* GetGeneratedMethodByOccurrence(WfClassDeclaration* interfaceDecl, const WString& name, vint occurrence) + { + vint index = 0; + for (auto decl : interfaceDecl->declarations) + { + if (auto methodDecl = decl.Cast()) + { + if (methodDecl->name.value == name) + { + if (index++ == occurrence) + { + return methodDecl.Obj(); + } + } + } + } + return nullptr; + } + + WfEventDeclaration* GetGeneratedEventByOccurrence(WfClassDeclaration* interfaceDecl, const WString& name, vint occurrence) + { + vint index = 0; + for (auto decl : interfaceDecl->declarations) + { + if (auto eventDecl = decl.Cast()) + { + if (eventDecl->name.value == name) + { + if (index++ == occurrence) + { + return eventDecl.Obj(); + } + } + } + } + return nullptr; + } + + WString MakeRpcMethodFullName(const WString& typeFullName, WfFunctionDeclaration* methodDecl, bool appendArgNames) + { + auto name = typeFullName + L"." + methodDecl->name.value; + if (appendArgNames) + { + name += L"("; + for (vint i = 0; i < methodDecl->arguments.Count(); i++) + { + if (i > 0) + { + name += L","; + } + name += methodDecl->arguments[i]->name.value; + } + name += L")"; + } + return name; + } + + void ValidateModuleRPC_GenerateMetadata(WfLexicalScopeManager* manager, Ptr module, const RpcPhase1Context& context) + { + auto rpcInterfaceAttrTd = GetTypeDescriptor(); + SortedList allRpcInterfaceTds; + for (auto td : context.workflowRpcInterfaceTds) + { + if (!allRpcInterfaceTds.Contains(td)) + { + allRpcInterfaceTds.Add(td); + } + } + CollectAllWorkflowRpcInterfaceTds(manager, allRpcInterfaceTds); + + // Collect all enum and struct types used by RPC interfaces + SortedList collectedEnums; + SortedList collectedStructs; + List structVisitOrder; + + for (auto td : context.workflowRpcInterfaceTds) + { + CollectTypesFromInterface(td, collectedEnums, collectedStructs, structVisitOrder, context.workflowRpcInterfaceTds); + } + + // Sort enums by name + List sortedEnums; + for (auto td : collectedEnums) + { + sortedEnums.Add(td); + } + if (sortedEnums.Count() > 1) + { + Sort(&sortedEnums[0], sortedEnums.Count(), [](ITypeDescriptor* a, ITypeDescriptor* b) + { + return wcscmp(a->GetTypeName().Buffer(), b->GetTypeName().Buffer()) <=> 0; + }); + } + + // Collect RPC interfaces in AST order + List orderedInterfaces; + CollectOrderedRpcInterfaces(manager, module->declarations, context.workflowRpcInterfaceTds, orderedInterfaces); + + // Build the metadata module + auto metadataModule = Ptr(new WfModule); + metadataModule->moduleType = WfModuleType::Module; + metadataModule->name.value = L"RpcMetadata"; + manager->rpcMetadata = Ptr(new WfRpcMetadata); + + List> rootDeclarations; + Dictionary> namespaceMap; + + // Add enums (sorted by name) + for (auto td : sortedEnums) + { + auto decl = GenerateEnumDecl(td); + if (decl) + { + AddDeclToModule(rootDeclarations, namespaceMap, td, decl); + } + } + + // Add structs (sorted by visiting order - dependency correct) + for (auto td : structVisitOrder) + { + auto decl = GenerateStructDecl(td); + if (decl) + { + AddDeclToModule(rootDeclarations, namespaceMap, td, decl); + } + } + + // Add interfaces (sorted by AST order) + for (auto td : orderedInterfaces) + { + auto decl = GenerateInterfaceDecl(td, rpcInterfaceAttrTd, allRpcInterfaceTds); + if (decl) + { + AddDeclToModule(rootDeclarations, namespaceMap, td, decl); + + auto typeFullName = td->GetTypeName(); + if (manager->rpcMetadata->typeNames.Keys().Contains(typeFullName)) + { + manager->errors.Add(WfErrors::RpcGeneratedNameConflict(decl.Obj(), L"type", typeFullName)); + } + else + { + manager->rpcMetadata->typeNames.Add(typeFullName, decl.Obj()); + manager->rpcMetadata->typeFullNames.Add(typeFullName); + AddOrderedRpcId(manager->rpcMetadata.Obj(), typeFullName); + } + + auto sourceDecl = FindRpcInterfaceDeclaration(manager, td); + if (!sourceDecl) + { + continue; + } + + List orderedMethods; + List generatedMethods; + List orderedEvents; + List generatedEvents; + Dictionary methodNameCounters; + Dictionary eventNameCounters; + + auto collectSourceMember = [&](WfDeclaration* memberDecl) + { + if (auto methodDecl = dynamic_cast(memberDecl)) + { + auto name = methodDecl->name.value; + auto nameIndex = methodNameCounters.Keys().IndexOf(name); + auto occurrence = nameIndex == -1 ? 0 : methodNameCounters.Values()[nameIndex]; + auto generatedMethod = GetGeneratedMethodByOccurrence(decl.Obj(), name, occurrence); + if (generatedMethod) + { + orderedMethods.Add(methodDecl); + generatedMethods.Add(generatedMethod); + } + + if (nameIndex == -1) + { + methodNameCounters.Add(name, 1); + } + else + { + methodNameCounters.Set(name, occurrence + 1); + } + } + else if (auto eventDecl = dynamic_cast(memberDecl)) + { + auto name = eventDecl->name.value; + auto nameIndex = eventNameCounters.Keys().IndexOf(name); + auto occurrence = nameIndex == -1 ? 0 : eventNameCounters.Values()[nameIndex]; + auto generatedEvent = GetGeneratedEventByOccurrence(decl.Obj(), name, occurrence); + if (generatedEvent) + { + orderedEvents.Add(eventDecl); + generatedEvents.Add(generatedEvent); + } + + if (nameIndex == -1) + { + eventNameCounters.Add(name, 1); + } + else + { + eventNameCounters.Set(name, occurrence + 1); + } + } + }; + + for (auto memberDecl : sourceDecl->declarations) + { + collectSourceMember(memberDecl.Obj()); + if (auto virtualCfeDecl = memberDecl.Cast()) + { + for (auto expandedDecl : virtualCfeDecl->expandedDeclarations) + { + collectSourceMember(expandedDecl.Obj()); + } + } + } + + SortedList processedMethodBaseNames; + for (vint i = 0; i < orderedMethods.Count(); i++) + { + auto baseName = MakeRpcMethodFullName(typeFullName, orderedMethods[i], false); + if (processedMethodBaseNames.Contains(baseName)) + { + continue; + } + processedMethodBaseNames.Add(baseName); + + List methodIndexes; + List candidateNames; + for (vint j = 0; j < orderedMethods.Count(); j++) + { + if (MakeRpcMethodFullName(typeFullName, orderedMethods[j], false) == baseName) + { + methodIndexes.Add(j); + candidateNames.Add(MakeRpcMethodFullName(typeFullName, orderedMethods[j], true)); + } + } + + if (methodIndexes.Count() == 1) + { + candidateNames[0] = baseName; + } + else + { + List duplicateCounts; + for (vint j = 0; j < candidateNames.Count(); j++) + { + vint duplicateCount = 0; + for (vint k = 0; k < candidateNames.Count(); k++) + { + if (candidateNames[j] == candidateNames[k]) + { + duplicateCount++; + } + } + duplicateCounts.Add(duplicateCount); + } + + Dictionary duplicateIndexes; + for (vint j = 0; j < candidateNames.Count(); j++) + { + if (duplicateCounts[j] <= 1) + { + continue; + } + + auto duplicateName = candidateNames[j]; + auto duplicateIndex = duplicateIndexes.Keys().IndexOf(duplicateName); + auto occurrence = duplicateIndex == -1 ? 1 : duplicateIndexes.Values()[duplicateIndex] + 1; + if (duplicateIndex == -1) + { + duplicateIndexes.Add(duplicateName, occurrence); + } + else + { + duplicateIndexes.Set(duplicateName, occurrence); + } + candidateNames[j] = duplicateName + L"." + itow(occurrence); + } + } + + for (vint j = 0; j < methodIndexes.Count(); j++) + { + auto finalName = candidateNames[j]; + auto generatedMethod = generatedMethods[methodIndexes[j]]; + if (manager->rpcMetadata->methodNames.Keys().Contains(finalName)) + { + manager->errors.Add(WfErrors::RpcGeneratedNameConflict(generatedMethod, L"method", finalName)); + } + else + { + manager->rpcMetadata->methodNames.Add(finalName, generatedMethod); + manager->rpcMetadata->methodFullNames.Add(finalName); + AddOrderedRpcId(manager->rpcMetadata.Obj(), finalName); + } + } + } + + for (vint i = 0; i < orderedEvents.Count(); i++) + { + auto finalName = typeFullName + L"." + orderedEvents[i]->name.value; + auto generatedEvent = generatedEvents[i]; + if (manager->rpcMetadata->eventNames.Keys().Contains(finalName)) + { + manager->errors.Add(WfErrors::RpcGeneratedNameConflict(generatedEvent, L"event", finalName)); + } + else + { + manager->rpcMetadata->eventNames.Add(finalName, generatedEvent); + manager->rpcMetadata->eventFullNames.Add(finalName); + AddOrderedRpcId(manager->rpcMetadata.Obj(), finalName); + } + } + } + } + + AddGeneratedRpcIdAttributes(manager->rpcMetadata.Obj()); + + for (auto decl : rootDeclarations) + { + metadataModule->declarations.Add(decl); + } + + manager->rpcMetadata->metadataModule = metadataModule; + } + } + +/*********************************************************************** +PopulateAttributesOnTypeDescriptors +***********************************************************************/ + + namespace attribute_populating + { + using namespace collections; + using namespace reflection; + using namespace reflection::description; + + Value EvaluateAttributeLiteralExpression(WfLexicalScopeManager* manager, Ptr expr, ITypeDescriptor* argumentTd) + { + if (auto literalExpr = expr.Cast()) + { + switch (literalExpr->value) + { + case WfLiteralValue::True: return BoxValue(true); + case WfLiteralValue::False: return BoxValue(false); + default: return Value(); + } + } + else if (auto stringExpr = expr.Cast()) + { + Value output; + argumentTd->GetSerializableType()->Deserialize(stringExpr->value.value, output); + return output; + } + else if (auto intExpr = expr.Cast()) + { + Value output; + argumentTd->GetSerializableType()->Deserialize(intExpr->value.value, output); + return output; + } + else if (auto floatExpr = expr.Cast()) + { + Value output; + argumentTd->GetSerializableType()->Deserialize(floatExpr->value.value, output); + return output; + } + else if (auto typeOfExpr = expr.Cast()) + { + auto scope = manager->nodeScopes[typeOfExpr.Obj()].Obj(); + auto type = CreateTypeInfoFromType(scope, typeOfExpr->type, false); + auto td = type->GetTypeDescriptor(); + if (argumentTd->GetSerializableType()) + { + Value output; + argumentTd->GetSerializableType()->Deserialize(td->GetTypeName(), output); + return output; + } + return BoxValue(td); + } + else + { + auto&& result = manager->expressionResolvings[expr.Obj()]; + if (auto enumType = result.type->GetTypeDescriptor()->GetEnumType()) + { + auto refExpr = expr.Cast(); + auto childExpr = expr.Cast(); + WString name = refExpr ? refExpr->name.value : (childExpr ? childExpr->name.value : WString::Empty); + vint index = enumType->IndexOfItem(name); + if (index != -1) + { + return enumType->ToEnum(enumType->GetItemValue(index)); + } + } + return Value(); + } + } + + void PopulateAttributesOnBag( + WfLexicalScopeManager* manager, + TypeDescriptorImplBase* td, + IMemberInfo* memberInfo, + List>& atts + ) + { + for (auto att : atts) + { + auto info = manager->ResolveWorkflowAttribute(att->category.value, att->name.value); + if (!info.exists || !info.attributeType) continue; + + auto attInfo = Ptr(new AttributeInfoImpl(info.attributeType)); + if (info.hasArgument && att->value) + { + auto valueTypeTd = info.argumentType->GetTypeDescriptor(); + auto boxedValue = EvaluateAttributeLiteralExpression(manager, att->value, valueTypeTd); + attInfo->AddValue(valueTypeTd, boxedValue); + } + td->RegisterAttribute(memberInfo, attInfo); + } + } + } + + void PopulateAttributesOnTypeDescriptors(WfLexicalScopeManager* manager) + { + using namespace collections; + using namespace reflection; + using namespace reflection::description; + + for (auto [decl, index] : indexed(manager->declarationTypes.Keys())) + { + auto td = manager->declarationTypes.Values()[index]; + auto tdImpl = dynamic_cast(td.Obj()); + if (!tdImpl) continue; + + // Type-level attributes + attribute_populating::PopulateAttributesOnBag(manager, tdImpl, nullptr, decl->attributes); + + // Member attributes for class/interface + if (auto classDecl = decl.Cast()) + { + for (auto memberDecl : classDecl->declarations) + { + vint memberIndex = manager->declarationMemberInfos.Keys().IndexOf(memberDecl.Obj()); + if (memberIndex != -1) + { + auto memberInfoPtr = manager->declarationMemberInfos.Values()[memberIndex]; + if (memberDecl->attributes.Count() > 0) + { + attribute_populating::PopulateAttributesOnBag(manager, tdImpl, memberInfoPtr.Obj(), memberDecl->attributes); + } + + // Function argument attributes + if (auto funcDecl = memberDecl.Cast()) + { + if (auto methodInfo = dynamic_cast(memberInfoPtr.Obj())) + { + for (vint k = 0; k < funcDecl->arguments.Count() && k < methodInfo->GetParameterCount(); k++) + { + auto& argAttrs = funcDecl->arguments[k]->attributes; + if (argAttrs.Count() > 0) + { + auto paramInfo = methodInfo->GetParameter(k); + attribute_populating::PopulateAttributesOnBag(manager, tdImpl, paramInfo, argAttrs); + } + } + } + } + } + else if (auto autoPropDecl = memberDecl.Cast()) + { + auto propInfo = td->GetPropertyByName(autoPropDecl->name.value, false); + if (propInfo && memberDecl->attributes.Count() > 0) + { + attribute_populating::PopulateAttributesOnBag(manager, tdImpl, propInfo, memberDecl->attributes); + } + } + } + } + + // Member attributes for struct + if (auto structDecl = decl.Cast()) + { + for (auto member : structDecl->members) + { + if (member->attributes.Count() == 0) continue; + auto propInfo = td->GetPropertyByName(member->name.value, false); + if (!propInfo) continue; + attribute_populating::PopulateAttributesOnBag(manager, tdImpl, propInfo, member->attributes); + } + } + } + } + +/*********************************************************************** +ValidateModuleRPC +***********************************************************************/ + + void ValidateModuleRPC(WfLexicalScopeManager* manager, Ptr module) + { + rpc_compiling::RpcPhase1Context context; + + // Phase 1 collects workflow-defined RPC interfaces and enqueues attribute occurrences for phase 2. + rpc_compiling::ValidateModuleRPC_Ast(manager, module, context); + + // Phase 2 uses reflection (ITypeDescriptor/ITypeInfo) to validate the remaining rules. + rpc_compiling::ValidateModuleRPC_Reflection(manager, context); + + // Phase 3 generates rpc metadata module. + if (context.workflowRpcInterfaceTds.Count() > 0 && manager->errors.Count() == 0) + { + rpc_compiling::ValidateModuleRPC_GenerateMetadata(manager, module, context); + if (manager->rpcMetadata) + { + manager->rpcMetadata->dts = GenerateDtsFromRpcMetadata(manager); + } + } + } + + namespace rpc_metadata_copying + { + using namespace collections; + using namespace reflection; + using namespace reflection::description; + + class ClearExistingTypesVisitor : public empty_visitor::DeclarationVisitor + { + private: + List fragments; + bool removeDeclaration = false; + + WString GetFullName(const WString& name) + { + WString fullName; + for (auto fragment : fragments) + { + if (fullName != L"") + { + fullName += L"::"; + } + fullName += fragment; + } + + if (fullName != L"") + { + fullName += L"::"; + } + fullName += name; + return fullName; + } + + bool IsExistingType(const WString& name) + { + return reflection::description::GetTypeDescriptor(GetFullName(name)) != nullptr; + } + + void VisitNestedType(const WString& name, List>& declarations) + { + if (IsExistingType(name)) + { + removeDeclaration = true; + return; + } + + fragments.Add(name); + Clear(declarations); + fragments.RemoveAt(fragments.Count() - 1); + removeDeclaration = false; + } + + protected: + void Dispatch(WfVirtualCfeDeclaration* node)override + { + removeDeclaration = false; + } + + void Dispatch(WfVirtualCseDeclaration* node)override + { + removeDeclaration = false; + } + + public: + void Clear(List>& declarations) + { + for (vint i = 0; i < declarations.Count();) + { + removeDeclaration = false; + declarations[i]->Accept(this); + if (removeDeclaration) + { + declarations.RemoveAt(i); + } + else + { + i++; + } + } + } + + void Visit(WfNamespaceDeclaration* node)override + { + fragments.Add(node->name.value); + Clear(node->declarations); + fragments.RemoveAt(fragments.Count() - 1); + removeDeclaration = false; + } + + void Visit(WfClassDeclaration* node)override + { + VisitNestedType(node->name.value, node->declarations); + } + + void Visit(WfEnumDeclaration* node)override + { + removeDeclaration = IsExistingType(node->name.value); + } + + void Visit(WfStructDeclaration* node)override + { + removeDeclaration = IsExistingType(node->name.value); + } + }; + } + + Ptr CopyAndClearRpcMetadata(Ptr module) + { + auto copiedModule = CopyModule(module, false); + rpc_metadata_copying::ClearExistingTypesVisitor visitor; + visitor.Clear(copiedModule->declarations); + return copiedModule; + } + + } + } +} + + /*********************************************************************** .\ANALYZER\WFANALYZER_VALIDATESCOPENAME.CPP ***********************************************************************/ @@ -11643,7 +18578,6 @@ ValidateSemantic(ClassMember) void Visit(WfDestructorDeclaration* node)override { ValidateDeclarationSemantic(manager, node); - ValidateStatementSemantic(manager, node->statement); } void Visit(WfClassDeclaration* node)override @@ -11715,23 +18649,20 @@ ValidateSemantic(Declaration) { for (auto attribute : attributes) { - auto key = Pair(attribute->category.value, attribute->name.value); - vint index = manager->attributes.Keys().IndexOf(key); - if (index == -1) + auto info = manager->ResolveWorkflowAttribute(attribute->category.value, attribute->name.value); + if (!info.exists) { manager->errors.Add(WfErrors::AttributeNotExists(attribute.Obj())); + continue; } - else + + if (attribute->value) { - auto expectedType = manager->attributes.Values()[index]; - if (attribute->value) - { - ValidateConstantExpression(manager, attribute->value, expectedType); - } - else if (expectedType->GetTypeDescriptor() != description::GetTypeDescriptor()) - { - manager->errors.Add(WfErrors::AttributeMissValue(attribute.Obj())); - } + ValidateConstantExpression(manager, attribute->value, info.argumentType); + } + else if (info.hasArgument) + { + manager->errors.Add(WfErrors::AttributeMissValue(attribute.Obj())); } } } @@ -11786,6 +18717,7 @@ ValidateSemantic(Declaration) void Visit(WfDestructorDeclaration* node)override { + ValidateStatementSemantic(manager, node->statement); } void Visit(WfClassDeclaration* node)override @@ -12145,7 +19077,7 @@ ValidateSemantic(Expression) if ( lastConfigScope->parentScope != currentScope || - !lastConfigScope->ownerNode.Cast() || + (!lastConfigScope->ownerNode.Cast() && !lastConfigScope->ownerNode.Cast()) || (lastConfigScope->ownerNodeSource && lastConfigScope->ownerNodeSource != currentScope->ownerNode) ) { @@ -13546,7 +20478,7 @@ ValidateSemantic(Expression) WfLexicalScopeManager* manager; List> overrideFunctions; List> variableSymbols; - WfFunctionDeclaration* lastFunction = nullptr; + WfDeclaration* lastDecl = nullptr; NewInterfaceExpressionVisitor(WfLexicalScopeManager* _manager) :manager(_manager) @@ -13568,7 +20500,7 @@ ValidateSemantic(Expression) void Visit(WfFunctionDeclaration* node)override { - lastFunction = node; + lastDecl = node; if (node->functionKind == WfFunctionKind::Override) { overrideFunctions.Add(Ptr(node)); @@ -13587,6 +20519,11 @@ ValidateSemantic(Expression) ); } + void Visit(WfDestructorDeclaration* node)override + { + lastDecl = node; + } + void Execute(WfNewInterfaceExpression* node) { for (auto memberDecl : node->declarations) @@ -13694,14 +20631,14 @@ ValidateSemantic(Expression) NewInterfaceExpressionVisitor declVisitor(manager); declVisitor.Execute(node); - if (declVisitor.lastFunction) + if (auto lastCaptureNode = declVisitor.lastDecl) { for (auto func : declVisitor.overrideFunctions) { implementMethods.Add(func->name.value, func); } - auto capture = manager->lambdaCaptures[declVisitor.lastFunction]; + auto capture = manager->lambdaCaptures[lastCaptureNode]; List> readonlySymbols; CopyFrom(readonlySymbols, From(capture->symbols).Except(declVisitor.variableSymbols)); CopyFrom(capture->symbols, declVisitor.variableSymbols); @@ -15432,6 +22369,11 @@ ValidateStructure(Declaration) ValidateStructureContext context; ValidateStatementStructure(manager, &context, node->statement); } + else if (dynamic_cast(surroundingLambda)) + { + ValidateStructureContext context; + ValidateStatementStructure(manager, &context, node->statement); + } else { manager->errors.Add(WfErrors::WrongDeclaration(node)); @@ -16040,9 +22982,21 @@ ValidateStructure(Expression) void Visit(WfNewInterfaceExpression* node)override { ValidateTypeStructure(manager, node->type); + WfDestructorDeclaration* dtor = nullptr; for (auto memberDecl : node->declarations) { ValidateDeclarationStructure(manager, memberDecl, nullptr, node); + if (auto dtorDecl = memberDecl.Cast()) + { + if (!dtor) + { + dtor = dtorDecl.Obj(); + } + else + { + manager->errors.Add(WfErrors::TooManyDestructor(dtorDecl.Obj(), node)); + } + } } } @@ -18515,6 +25469,26 @@ namespace vl Expression Helpers ***********************************************************************/ + void WriteWStringLiteralUnmanaged(stream::StreamWriter& writer, const WString& value) + { + writer.WriteString(L"::vl::WString::Unmanaged(L\""); + for (vint i = 0; i < value.Length(); i++) + { + auto c = value[i]; + switch (c) + { + case L'\\': writer.WriteString(L"\\\\"); break; + case L'\'': writer.WriteString(L"\\\'"); break; + case L'\"': writer.WriteString(L"\\\""); break; + case L'\r': writer.WriteString(L"\\r"); break; + case L'\n': writer.WriteString(L"\\n"); break; + case L'\t': writer.WriteString(L"\\t"); break; + default: writer.WriteChar(c); + } + } + writer.WriteString(L"\")"); + } + template void WriteBoxValue(WfCppConfig* config, stream::StreamWriter& writer, ITypeInfo* type, const T& writeExpression) { @@ -19065,6 +26039,27 @@ WfGenerateExpressionVisitor return; } } + else if (symbol->creatorNode.Cast()) + { + if (auto closureInfo = GetClosureInfo(node, (forLambdaArgument ? nullptr : symbol))) + { + //if (closureInfo->symbols.Values().Contains(symbol.Obj())) + //{ + // writer.WriteString(L"this->"); + // writer.WriteString(config->ConvertName(symbol->name)); + // return; + //} + //else + if (closureInfo->ctorArgumentSymbols.Values().Contains(symbol.Obj())) + { + writer.WriteString(L"__vwsnctor_"); + writer.WriteString(config->ConvertName(symbol->name)); + return; + } + } + writer.WriteString(config->ConvertName(symbol->name)); + return; + } writer.WriteString(config->ConvertName(symbol->name)); } @@ -19605,22 +26600,7 @@ WfGenerateExpressionVisitor void Visit(WfStringExpression* node)override { - writer.WriteString(L"::vl::WString::Unmanaged(L\""); - for (vint i = 0; i < node->value.value.Length(); i++) - { - auto c = node->value.value[i]; - switch (c) - { - case L'\\': writer.WriteString(L"\\\\"); break; - case L'\'': writer.WriteString(L"\\\'"); break; - case L'\"': writer.WriteString(L"\\\""); break; - case L'\r': writer.WriteString(L"\\r"); break; - case L'\n': writer.WriteString(L"\\n"); break; - case L'\t': writer.WriteString(L"\\t"); break; - default: writer.WriteChar(c); - } - } - writer.WriteString(L"\")"); + WriteWStringLiteralUnmanaged(writer, node->value.value); } void Visit(WfUnaryExpression* node)override @@ -22986,6 +29966,94 @@ namespace vl writer.WriteLine(L")"); } + auto WriteInterfaceProxyInvoke = [&](IMethodInfo* methodInfo, ITypeDescriptor* td, vint methodCount) + { + auto methodName = ConvertName(methodInfo->GetName()); + auto parameterCount = methodInfo->GetParameterCount(); + if (methodCount == 1) + { + if (methodInfo->GetReturn()->GetTypeDescriptor() == description::GetTypeDescriptor()) + { + writer.WriteString(L"\t\t\t\t\tINVOKE_INTERFACE_PROXY"); + } + else + { + writer.WriteString(L"\t\t\t\t\tINVOKEGET_INTERFACE_PROXY"); + } + + if (parameterCount > 0) + { + writer.WriteString(L"("); + writer.WriteString(methodName); + for (vint k = 0; k < parameterCount; k++) + { + writer.WriteString(L", "); + writer.WriteString(ConvertName(methodInfo->GetParameter(k)->GetName())); + } + writer.WriteLine(L");"); + } + else + { + writer.WriteString(L"_NOPARAMS("); + writer.WriteString(methodName); + writer.WriteLine(L");"); + } + return; + } + + writer.WriteLine(L"\t\t\t\t\tstatic ITypeDescriptor* _interface_proxy_typeDescriptor = nullptr;"); + writer.WriteLine(L"\t\t\t\t\tstatic IMethodInfo* _interface_proxy_methodInfo = nullptr;"); + writer.WriteLine(L"\t\t\t\t\tif (_interface_proxy_typeDescriptor != static_cast(this)->GetTypeDescriptor())"); + writer.WriteLine(L"\t\t\t\t\t{"); + writer.WriteLine(L"\t\t\t\t\t\t_interface_proxy_typeDescriptor = static_cast(this)->GetTypeDescriptor();"); + writer.WriteLine(L"\t\t\t\t\t\tCHECK_ERROR(_interface_proxy_typeDescriptor != nullptr, L\"Internal error: The type of this interface has not been registered.\");"); + writer.WriteLine(L"\t\t\t\t\t\tauto impl = dynamic_cast(_interface_proxy_typeDescriptor);"); + writer.WriteLine(L"\t\t\t\t\t\tCHECK_ERROR(impl != nullptr, L\"Internal error: BEGIN_INTERFACE_PROXY is the only correct way to register an interface with a proxy.\");"); + writer.WriteString(L"\t\t\t\t\t\tauto _interface_proxy_method = ("); + writer.WriteString(ConvertFunctionType(methodInfo, L"(_interface_proxy_InterfaceType::*)")); + writer.WriteString(L") &_interface_proxy_InterfaceType::"); + writer.WriteString(methodName); + writer.WriteLine(L";"); + writer.WriteLine(L"\t\t\t\t\t\tMethodPointerBinaryDataRetriver binaryData(_interface_proxy_method);"); + writer.WriteLine(L"\t\t\t\t\t\t_interface_proxy_methodInfo = impl->GetIndexedMethodInfo(binaryData.GetBinaryData());"); + writer.WriteLine(L"\t\t\t\t\t}"); + + if (methodInfo->GetReturn()->GetTypeDescriptor() == description::GetTypeDescriptor()) + { + writer.WriteString(L"\t\t\t\t\tproxy->Invoke(_interface_proxy_methodInfo, "); + } + else + { + writer.WriteString(L"\t\t\t\t\treturn UnboxParameter<"); + writer.WriteString(ConvertType(methodInfo->GetReturn())); + writer.WriteString(L">(proxy->Invoke(_interface_proxy_methodInfo, "); + } + + if (parameterCount > 0) + { + writer.WriteString(L"IValueList::Create(collections::From((collections::Array&)(Value_xs()"); + for (vint k = 0; k < parameterCount; k++) + { + writer.WriteString(L", "); + writer.WriteString(ConvertName(methodInfo->GetParameter(k)->GetName())); + } + writer.WriteString(L")))"); + } + else + { + writer.WriteString(L"IValueList::Create()"); + } + + if (methodInfo->GetReturn()->GetTypeDescriptor() == description::GetTypeDescriptor()) + { + writer.WriteLine(L");"); + } + else + { + writer.WriteLine(L")).Ref();"); + } + }; + vint methodGroupCount = td->GetMethodGroupCount(); for (vint i = 0; i < methodGroupCount; i++) { @@ -23000,34 +30068,7 @@ namespace vl WriteFunctionHeader(writer, methodInfo, ConvertName(methodInfo->GetName()), true); writer.WriteLine(L" override"); writer.WriteLine(L"\t\t\t\t{"); - - if (methodInfo->GetReturn()->GetTypeDescriptor() == description::GetTypeDescriptor()) - { - writer.WriteString(L"\t\t\t\t\tINVOKE_INTERFACE_PROXY"); - } - else - { - writer.WriteString(L"\t\t\t\t\tINVOKEGET_INTERFACE_PROXY"); - } - - if (methodInfo->GetParameterCount() > 0) - { - writer.WriteString(L"("); - writer.WriteString(ConvertName(methodInfo->GetName())); - vint parameterCount = methodInfo->GetParameterCount(); - for (vint k = 0; k < parameterCount; k++) - { - writer.WriteString(L", "); - writer.WriteString(ConvertName(methodInfo->GetParameter(k)->GetName())); - } - writer.WriteLine(L");"); - } - else - { - writer.WriteString(L"_NOPARAMS("); - writer.WriteString(ConvertName(methodInfo->GetName())); - writer.WriteLine(L");"); - } + WriteInterfaceProxyInvoke(methodInfo, td, methodCount); writer.WriteLine(L"\t\t\t\t}"); } @@ -23061,6 +30102,26 @@ namespace vl List tds; LoadTypes(this, tds); + Dictionary> typeDecls; + for (auto [decl, index] : indexed(manager->declarationTypes.Keys())) + { + auto td = manager->declarationTypes.Values()[index].Obj(); + if (!typeDecls.Keys().Contains(td)) + { + typeDecls.Add(td, decl); + } + } + + Dictionary> memberDecls; + for (auto [decl, index] : indexed(manager->declarationMemberInfos.Keys())) + { + auto memberInfo = manager->declarationMemberInfos.Values()[index].Obj(); + if (!memberDecls.Keys().Contains(memberInfo)) + { + memberDecls.Add(memberInfo, decl); + } + } + writer.WriteLine(L"namespace vl"); writer.WriteLine(L"{"); writer.WriteLine(L"\tnamespace reflection"); @@ -23084,6 +30145,108 @@ namespace vl writer.WriteLine(L"#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA"); writer.WriteLine(L"#define _ ,"); + + auto FindTypeDecl = [&](ITypeDescriptor* td) -> Ptr + { + if (auto index = typeDecls.Keys().IndexOf(td); index != -1) + { + return typeDecls.Values()[index]; + } + return nullptr; + }; + + auto FindMemberDecl = [&](IMemberInfo* memberInfo) -> Ptr + { + if (auto index = memberDecls.Keys().IndexOf(memberInfo); index != -1) + { + return memberDecls.Values()[index]; + } + return nullptr; + }; + + auto ResolveAttributeTd = [&](Ptr att) + { + return manager->ResolveWorkflowAttribute(att->category.value, att->name.value); + }; + + auto WriteAttributeMacro = [&](const wchar_t* indent, const wchar_t* macroName, Ptr att, const wchar_t* paramName) + { + auto info = ResolveAttributeTd(att); + if (!info.exists || info.attributeType == nullptr) return; + + writer.WriteString(indent); + writer.WriteString(macroName); + writer.WriteString(L"("); + + if (paramName) + { + writer.WriteString(L"L\""); + writer.WriteString(ConvertName(paramName)); + writer.WriteString(L"\", "); + } + + writer.WriteString(ConvertType(info.attributeType)); + if (info.hasArgument) + { + auto value = attributeEvaluator->GetAttributeValue(att); + writer.WriteString(L", "); + if (value.type == runtime::WfInsType::String) + { + WriteWStringLiteralUnmanaged(writer, value.stringValue); + } + else if (value.type == runtime::WfInsType::Unknown && value.typeDescriptor != nullptr) + { + writer.WriteString(L"::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L\""); + writer.WriteString(value.typeDescriptor->GetTypeName()); + writer.WriteString(L"\"))"); + } + else + { + CHECK_FAIL(L"Attribute argument must be a string or ITypeDescriptor*."); + } + } + + writer.WriteLine(L")"); + }; + + auto WriteDeclarationAttributes = [&](const wchar_t* indent, const wchar_t* macroName, Ptr decl) + { + if (!decl) return; + for (auto att : decl->attributes) + { + WriteAttributeMacro(indent, macroName, att, nullptr); + } + }; + + auto WriteArgumentAttributes = [&](const wchar_t* indent, Ptr arg) + { + if (!arg) return; + for (auto att : arg->attributes) + { + WriteAttributeMacro(indent, L"ATTRIBUTE_PARAMETER", att, arg->name.value.Buffer()); + } + }; + + auto FindFunctionArg = [&](WfFunctionDeclaration* functionDecl, const WString& name) -> Ptr + { + return From(functionDecl->arguments) + .Where([&](Ptr arg) + { + return arg->name.value == name; + }) + .First(Ptr()); + }; + + auto FindCtorArg = [&](WfConstructorDeclaration* ctorDecl, const WString& name) -> Ptr + { + return From(ctorDecl->arguments) + .Where([&](Ptr arg) + { + return arg->name.value == name; + }) + .First(Ptr()); + }; + for (auto td : tds) { switch (td->GetTypeDescriptorFlags()) @@ -23119,13 +30282,16 @@ namespace vl writer.WriteString(L"\t\t\tBEGIN_STRUCT_MEMBER("); writer.WriteString(ConvertType(td)); writer.WriteLine(L")"); + WriteDeclarationAttributes(L"\t\t\t\t", L"ATTRIBUTE_TYPE", FindTypeDecl(td)); vint count = td->GetPropertyCount(); for (vint i = 0; i < count; i++) { + auto propertyInfo = td->GetProperty(i); writer.WriteString(L"\t\t\t\tSTRUCT_MEMBER("); - writer.WriteString(ConvertName(td->GetProperty(i)->GetName())); + writer.WriteString(ConvertName(propertyInfo->GetName())); writer.WriteLine(L")"); + WriteDeclarationAttributes(L"\t\t\t\t", L"ATTRIBUTE_MEMBER", FindMemberDecl(propertyInfo)); } writer.WriteString(L"\t\t\tEND_STRUCT_MEMBER("); @@ -23146,6 +30312,7 @@ namespace vl } writer.WriteString(ConvertType(td)); writer.WriteLine(L")"); + WriteDeclarationAttributes(L"\t\t\t\t", L"ATTRIBUTE_TYPE", FindTypeDecl(td)); vint baseCount = td->GetBaseTypeDescriptorCount(); for (vint i = 0; i < baseCount; i++) @@ -23157,11 +30324,12 @@ namespace vl if (td->GetTypeDescriptorFlags() == TypeDescriptorFlags::Class) { - auto methodGroup = td->GetConstructorGroup(); - vint methodCount = methodGroup->GetMethodCount(); + auto ctorGroup = td->GetConstructorGroup(); + vint methodCount = ctorGroup->GetMethodCount(); for (vint j = 0; j < methodCount; j++) { - auto methodInfo = methodGroup->GetMethod(j); + auto methodInfo = ctorGroup->GetMethod(j); + auto memberDecl = FindMemberDecl(methodInfo); vint parameterCount = methodInfo->GetParameterCount(); writer.WriteString(L"\t\t\t\tCLASS_MEMBER_CONSTRUCTOR("); @@ -23196,6 +30364,15 @@ namespace vl { writer.WriteLine(L", NO_PARAMETER)"); } + + WriteDeclarationAttributes(L"\t\t\t\t", L"ATTRIBUTE_MEMBER", memberDecl); + if (auto ctorDecl = memberDecl.Cast()) + { + for (vint k = 0; k < parameterCount; k++) + { + WriteArgumentAttributes(L"\t\t\t\t", FindCtorArg(ctorDecl.Obj(), methodInfo->GetParameter(k)->GetName())); + } + } } } @@ -23207,6 +30384,7 @@ namespace vl for (vint j = 0; j < methodCount; j++) { auto methodInfo = methodGroup->GetMethod(j); + auto memberDecl = FindMemberDecl(methodInfo); if (methodInfo->IsStatic()) { writer.WriteString(L"\t\t\t\tCLASS_MEMBER_STATIC_METHOD"); @@ -23249,6 +30427,15 @@ namespace vl writer.WriteString(ConvertFunctionType(methodInfo, typeDecorator)); } writer.WriteLine(L")"); + + WriteDeclarationAttributes(L"\t\t\t\t", L"ATTRIBUTE_MEMBER", memberDecl); + if (auto functionDecl = memberDecl.Cast()) + { + for (vint k = 0; k < parameterCount; k++) + { + WriteArgumentAttributes(L"\t\t\t\t", FindFunctionArg(functionDecl.Obj(), methodInfo->GetParameter(k)->GetName())); + } + } } } @@ -23259,6 +30446,7 @@ namespace vl writer.WriteString(L"\t\t\t\tCLASS_MEMBER_EVENT("); writer.WriteString(ConvertName(eventInfo->GetName())); writer.WriteLine(L")"); + WriteDeclarationAttributes(L"\t\t\t\t", L"ATTRIBUTE_MEMBER", FindMemberDecl(eventInfo)); } vint propertyCount = td->GetPropertyCount(); @@ -23292,26 +30480,23 @@ namespace vl writer.WriteLine(L")"); } } + else if (auto setter = propertyInfo->GetSetter()) + { + writer.WriteString(L"\t\t\t\tCLASS_MEMBER_PROPERTY("); + writer.WriteString(ConvertName(propertyInfo->GetName())); + writer.WriteString(L", "); + writer.WriteString(ConvertName(getter->GetName())); + writer.WriteString(L", "); + writer.WriteString(ConvertName(setter->GetName())); + writer.WriteLine(L")"); + } else { - if (auto setter = propertyInfo->GetSetter()) - { - writer.WriteString(L"\t\t\t\tCLASS_MEMBER_PROPERTY("); - writer.WriteString(ConvertName(propertyInfo->GetName())); - writer.WriteString(L", "); - writer.WriteString(ConvertName(getter->GetName())); - writer.WriteString(L", "); - writer.WriteString(ConvertName(setter->GetName())); - writer.WriteLine(L")"); - } - else - { - writer.WriteString(L"\t\t\t\tCLASS_MEMBER_PROPERTY_READONLY("); - writer.WriteString(ConvertName(propertyInfo->GetName())); - writer.WriteString(L", "); - writer.WriteString(ConvertName(getter->GetName())); - writer.WriteLine(L")"); - } + writer.WriteString(L"\t\t\t\tCLASS_MEMBER_PROPERTY_READONLY("); + writer.WriteString(ConvertName(propertyInfo->GetName())); + writer.WriteString(L", "); + writer.WriteString(ConvertName(getter->GetName())); + writer.WriteLine(L")"); } } else @@ -23320,6 +30505,8 @@ namespace vl writer.WriteString(ConvertName(propertyInfo->GetName())); writer.WriteLine(L")"); } + + WriteDeclarationAttributes(L"\t\t\t\t", L"ATTRIBUTE_MEMBER", FindMemberDecl(propertyInfo)); } if (td->GetTypeDescriptorFlags() == TypeDescriptorFlags::Interface) @@ -23388,6 +30575,7 @@ namespace vl } } + /*********************************************************************** .\CPP\WFCPP_WRITESTRUCT.CPP ***********************************************************************/ @@ -24000,14 +31188,17 @@ WfAttributeEvaluator auto attributeAssembly = Ptr(new WfAssembly); WfCodegenContext context(attributeAssembly, manager); - auto typeInfo = manager->attributes[{att->category.value, att->name.value}]; - GenerateExpressionInstructions(context, att->value, typeInfo); + auto info = manager->ResolveWorkflowAttribute(att->category.value, att->name.value); + CHECK_ERROR(info.exists, L"WfAttributeEvaluator::GetAttributeValue(...)#Attribute not resolved."); + + GenerateExpressionInstructions(context, att->value, info.argumentType); CHECK_ERROR(attributeAssembly->instructions.Count() == 1, L"WfAttributeEvaluator::GetAttributeValue(Ptr)#Internal error, attribute argument generates unexpected instructions."); auto& ins = attributeAssembly->instructions[0]; CHECK_ERROR(ins.code == WfInsCode::LoadValue, L"WfAttributeEvaluator::GetAttributeValue(Ptr)#Internal error, attribute argument generates unexpected instructions."); - attributeValues.Add(att, ins.valueParameter); - return ins.valueParameter; + auto value = ins.valueParameter; + attributeValues.Add(att, value); + return value; } /*********************************************************************** @@ -24153,6 +31344,7 @@ WfCodegenContext } } + /*********************************************************************** .\EMITTER\WFEMITTER_ASSEMBLY.CPP ***********************************************************************/ @@ -24996,6 +32188,33 @@ GenerateInstructions(Closure) GenerateFunctionInstructions(context, scope, meta, returnType, 0, argumentSymbols, capturedSymbols, node->body, node); } + void GenerateClosureInstructions_Destructor(WfCodegenContext& context, vint functionIndex, WfDestructorDeclaration* node) + { + auto scope = context.manager->nodeScopes[node].Obj(); + auto meta = context.assembly->functions[functionIndex]; + + List> argumentSymbols, capturedSymbols; + { + vint index = context.manager->lambdaCaptures.Keys().IndexOf(node); + if (index != -1) + { + auto capture = context.manager->lambdaCaptures.Values()[index]; + for (auto symbol : capture->symbols) + { + meta->capturedVariableNames.Add(L"" + symbol->name); + capturedSymbols.Add(symbol); + } + } + + vint count = context.GetThisStackCount(scope); + for (vint i = 0; i < count; i++) + { + meta->capturedVariableNames.Add(L"" + itow(i)); + } + } + GenerateFunctionInstructions(context, scope, meta, nullptr, nullptr, argumentSymbols, capturedSymbols, node->statement, node); + } + void GenerateClosureInstructions(WfCodegenContext& context, Ptr functionContext) { for (vint i = 0; i < functionContext->closuresToCodegen.Count(); i++) @@ -25015,6 +32234,10 @@ GenerateInstructions(Closure) { GenerateClosureInstructions_Function(context, functionIndex, closure.functionDeclaration, true); } + else if (closure.destructorDeclaration) + { + GenerateClosureInstructions_Destructor(context, functionIndex, closure.destructorDeclaration); + } } } @@ -26094,7 +33317,8 @@ GenerateInstructions(Expression) List> variableSymbols; List> closureFunctions; List> overrideFunctions; - WfFunctionDeclaration* firstFunction = nullptr; + WfDeclaration* firstDecl = nullptr; + WfDestructorDeclaration* destructorDecl = nullptr; NewInterfaceExpressionVisitor(WfCodegenContext& _context) :context(_context) @@ -26116,9 +33340,9 @@ GenerateInstructions(Expression) void Visit(WfFunctionDeclaration* node)override { - if (!firstFunction) + if (!firstDecl) { - firstFunction = node; + firstDecl = node; } if (node->functionKind == WfFunctionKind::Normal) @@ -26136,6 +33360,15 @@ GenerateInstructions(Expression) variableCount++; } + void Visit(WfDestructorDeclaration* node)override + { + if (!firstDecl) + { + firstDecl = node; + } + destructorDecl = node; + } + void Execute(WfNewInterfaceExpression* node) { for (auto memberDecl : node->declarations) @@ -26143,9 +33376,9 @@ GenerateInstructions(Expression) memberDecl->Accept(this); } - if (firstFunction != nullptr && variableCount > 0) + if (firstDecl != nullptr && variableCount > 0) { - auto capture = context.manager->lambdaCaptures.Get(firstFunction); + auto capture = context.manager->lambdaCaptures.Get(firstDecl); CopyFrom(variableSymbols, From(capture->symbols).Take(variableCount)); } } @@ -26168,7 +33401,8 @@ GenerateInstructions(Expression) NewInterfaceExpressionVisitor declVisitor(context); declVisitor.Execute(node); - if (declVisitor.firstFunction != nullptr) + auto firstCaptureNode = declVisitor.firstDecl; + if (firstCaptureNode != nullptr) { for (vint i = 0; i < declVisitor.variableCount; i++) { @@ -26176,7 +33410,7 @@ GenerateInstructions(Expression) GenerateExpressionInstructions(context, var->expression); } - auto capture = context.manager->lambdaCaptures.Get(declVisitor.firstFunction); + auto capture = context.manager->lambdaCaptures.Get(firstCaptureNode); for (vint i = declVisitor.variableCount; i < capture->symbols.Count(); i++) { GenerateLoadSymbolInstructions(context, capture->symbols[i].Obj(), node); @@ -26211,13 +33445,30 @@ GenerateInstructions(Expression) return L"name.value + L"<" + result.type->GetTypeDescriptor()->GetTypeName() + L">(" + itow(index + declVisitor.closureFunctions.Count()) + L")> in " + context.functionContext->function->name; }); } + + if (declVisitor.destructorDecl) + { + INSTRUCTION(Ins::LoadValue({})); + WfCodegenLambdaContext lc; + lc.destructorDeclaration = declVisitor.destructorDecl; + auto functionIndex = AddClosure(context, lc, [=, this, &declVisitor](vint index) + { + return L"GetTypeDescriptor()->GetTypeName() + L">(" + itow(index) + L")> in " + context.functionContext->function->name; + }); + INSTRUCTION(Ins::LoadFunction(functionIndex)); + } } else { INSTRUCTION(Ins::LoadValue({})); INSTRUCTION(Ins::CreateClosureContext(1)); } - INSTRUCTION(Ins::CreateInterface(result.constructorInfo, declVisitor.overrideFunctions.Count() * 2)); + vint methodCount = declVisitor.overrideFunctions.Count() * 2; + if (declVisitor.destructorDecl) + { + methodCount += 2; + } + INSTRUCTION(Ins::CreateInterface(result.constructorInfo, methodCount)); } void Visit(WfVirtualCfeExpression* node)override diff --git a/Import/VlppWorkflowCompiler.h b/Import/VlppWorkflowCompiler.h index 5d36b537..0c1ce82b 100644 --- a/Import/VlppWorkflowCompiler.h +++ b/Import/VlppWorkflowCompiler.h @@ -5037,6 +5037,20 @@ Scope Manager collections::Dictionary stateIds; }; + struct WfRpcMetadata + { + vl::Ptr metadataModule; + vl::WString dts; + vl::collections::Dictionary typeNames; + vl::collections::Dictionary methodNames; + vl::collections::Dictionary eventNames; + + vl::collections::List typeFullNames; + vl::collections::List methodFullNames; + vl::collections::List eventFullNames; + vl::collections::SortedList orderedIds; + }; + /// /// CPU architecture /// @@ -5059,7 +5073,14 @@ Scope Manager typedef collections::List> ModuleList; typedef collections::List ModuleCodeList; typedef collections::Pair AttributeKey; - typedef collections::Dictionary> AttributeTypeMap; + + struct ResolvedWorkflowAttribute + { + bool exists = false; + bool hasArgument = false; + Ptr argumentType; + ITypeDescriptor* attributeType = nullptr; + }; typedef collections::Dictionary> TypeNameMap; @@ -5098,10 +5119,14 @@ Scope Manager workflow::Parser& workflowParser; Ptr workflowParserHandler; - AttributeTypeMap attributes; + protected: + collections::Dictionary resolvedAttributes; + + public: Ptr globalName; // root scope TypeNameMap typeNames; // ITypeDescriptor* to scope name map + Ptr rpcMetadata; // rpc metadata module and generated lookup tables vint usedTempVars = 0; ParsingErrorList errors; // compile errors @@ -5132,6 +5157,8 @@ Scope Manager /// The target CPU architecture. WfLexicalScopeManager(workflow::Parser& _workflowParser, WfCpuArchitecture _cpuArchitecture); ~WfLexicalScopeManager(); + ResolvedWorkflowAttribute ResolveWorkflowAttribute(const WString& category, const WString& name); + WString GetWorkflowAttributeTypeName(const WString& category, const WString& name); /// Add a Workflow module. Syntax errors can be found at . /// The source code of a workflow module. @@ -5160,7 +5187,8 @@ Scope Manager /// Perform semantic analyzing for added modules. /// The same to the argument in . /// The callback to receive progress information (optional). - void Rebuild(bool keepTypeDescriptorNames, IWfCompilerCallback* callback = nullptr); + /// Set to false to skip RPC metadata validation and generation. + void Rebuild(bool keepTypeDescriptorNames, IWfCompilerCallback* callback = nullptr, bool validateRpc = true); bool ResolveMember(ITypeDescriptor* typeDescriptor, const WString& name, bool preferStatic, collections::SortedList& searchedTypes, collections::List& results); bool ResolveName(WfLexicalScope* scope, const WString& name, collections::List& results); @@ -5315,6 +5343,83 @@ Semantic Analyzing extern Ptr GetEnumerableExpressionItemType(WfLexicalScopeManager* manager, WfExpression* expression, Ptr expectedType); extern Ptr GetEnumerableExpressionItemType(WfLexicalScopeManager* manager, Ptr expression, Ptr expectedType); +/*********************************************************************** +RPC Analyzing +***********************************************************************/ + + namespace rpc_generating + { + struct RpcParamModel + { + WString name; + Ptr type; + reflection::description::ITypeInfo* typeInfo = nullptr; + bool byref = false; + }; + + enum class RpcMethodKind + { + Normal, + PropertyGetter, + PropertySetter, + }; + + struct RpcPropertyModel + { + WString name; + Ptr type; + reflection::description::ITypeInfo* typeInfo = nullptr; + bool byref = false; + bool cached = false; + WString getterName; + WString setterName; + WString valueChangedEvent; + }; + + struct RpcMethodModel + { + WString fullName; + WString name; + Ptr returnType; + reflection::description::ITypeInfo* returnTypeInfo = nullptr; + bool returnByref = false; + RpcMethodKind kind = RpcMethodKind::Normal; + vint methodId = -1; + collections::List params; + }; + + struct RpcEventModel + { + WString fullName; + WString name; + vint eventId = -1; + collections::List params; + }; + + struct RpcInterfaceModel + { + WString fullName; + WString interfaceName; + vint typeId = -1; + bool ctor = false; + WfClassDeclaration* interfaceDecl = nullptr; + collections::List baseFullNames; + collections::List properties; + collections::List methods; + collections::List events; + }; + + extern WString MangleRpcFullName(const WString& fullName); + extern reflection::description::ITypeDescriptor* FindRpcTypeDescriptor(WfLexicalScopeManager* manager, const WString& fullName); + } + + extern void PopulateAttributesOnTypeDescriptors(WfLexicalScopeManager* manager); + extern void ValidateModuleRPC(WfLexicalScopeManager* manager, Ptr module); + extern Ptr CopyAndClearRpcMetadata(Ptr module); + extern WString GenerateDtsFromRpcMetadata(WfLexicalScopeManager* manager); + extern Ptr GenerateModuleRpc(WfLexicalScopeManager* manager, WString assemblyName); + extern Ptr GenerateModuleRpcJson(WfLexicalScopeManager* manager, WString assemblyName); + /*********************************************************************** Expanding Virtual Nodes ***********************************************************************/ @@ -5537,9 +5642,30 @@ Error Messages static glr::ParsingError WrongBaseConstructorCall(WfBaseConstructorCall* node, reflection::description::ITypeDescriptor* type); static glr::ParsingError DuplicatedBaseConstructorCall(WfBaseConstructorCall* node, reflection::description::ITypeDescriptor* type); static glr::ParsingError TooManyDestructor(WfDestructorDeclaration* node, WfClassDeclaration* classDecl); + static glr::ParsingError TooManyDestructor(WfDestructorDeclaration* node, WfNewInterfaceExpression* newInterfaceExpr); static glr::ParsingError AutoPropertyShouldBeInitialized(WfAutoPropertyDeclaration* node); static glr::ParsingError AutoPropertyCannotBeInitializedInInterface(WfAutoPropertyDeclaration* node, WfClassDeclaration* classDecl); + // H: RPC attribute checking + static glr::ParsingError RpcInterfaceCanOnlyApplyToInterface(WfAttribute* node, const WString& fullName); + static glr::ParsingError RpcInterfaceBaseNotSerializable(WfType* node, const WString& interfaceFullName, const WString& baseFullName); + static glr::ParsingError RpcInterfaceMemberNotSerializable(WfDeclaration* node, const WString& interfaceFullName, const WString& memberName); + static glr::ParsingError RpcInterfaceMemberNotSerializable(WfFunctionArgument* node, const WString& interfaceFullName, const WString& memberName); + static glr::ParsingError RpcCtorCanOnlyApplyToRpcInterface(WfAttribute* node); + static glr::ParsingError RpcAttributeCanOnlyApplyToPropertyMethodOrParameter(WfAttribute* node, const WString& attributeName); + static glr::ParsingError RpcAttributeCanOnlyBeUsedInsideRpcInterface(WfAttribute* node, const WString& attributeName); + static glr::ParsingError RpcAttributeRequiresStrongTypedCollection(WfAttribute* node, const WString& attributeName, const WString& memberName); + static glr::ParsingError RpcAttributeCanOnlyApplyToProperty(WfAttribute* node, const WString& attributeName); + static glr::ParsingError RpcAttributeCannotCoexistWithOther(WfAttribute* node, const WString& attributeName, const WString& otherAttributeName, const WString& memberName); + static glr::ParsingError RpcGeneratedNameConflict(WfDeclaration* node, const WString& category, const WString& generatedName); + static glr::ParsingError RpcReservedTypeInReturnValue(WfDeclaration* node, const WString& interfaceFullName, const WString& memberName, const WString& typeName); + static glr::ParsingError RpcReservedTypeInFunctionArgument(WfFunctionArgument* node, const WString& interfaceFullName, const WString& memberName, const WString& typeName); + static glr::ParsingError RpcReservedTypeInEventArgument(WfType* node, const WString& interfaceFullName, const WString& memberName, const WString& typeName); + static glr::ParsingError RpcWrapperGenerationRequiresPropertyMode(WfPropertyDeclaration* node, const WString& memberName); + static glr::ParsingError RpcWrapperGenerationRequiresCollectionReturnTransfer(WfFunctionDeclaration* node, const WString& memberName); + static glr::ParsingError RpcWrapperGenerationRequiresCollectionParameterTransfer(WfFunctionArgument* node, const WString& memberName); + static glr::ParsingError RpcMangledNameConflict(WfDeclaration* node, const WString& mangledName, const WString& previousFullName, const WString& currentFullName); + // CPP: C++ code generation error static glr::ParsingError CppUnableToDecideClassOrder(WfClassDeclaration* node, collections::List& tds); static glr::ParsingError CppUnableToSeparateCustomFile(WfClassDeclaration* node, collections::List& tds); @@ -5550,6 +5676,52 @@ Error Messages #endif + +/*********************************************************************** +.\ANALYZER\WFANALYZER_GENERATERPC.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Workflow::Analyzer::RPC Generator Helpers + +Interfaces: +**********************************************************************/ + +#ifndef VCZH_WORKFLOW_ANALYZER_WFANALYZER_GENERATERPC +#define VCZH_WORKFLOW_ANALYZER_WFANALYZER_GENERATERPC + + +namespace vl +{ + namespace workflow + { + namespace analyzer + { + namespace rpc_generating + { + extern Ptr CreateIf(Ptr condition, Ptr trueBranch, Ptr falseBranch = nullptr); + extern Ptr CreateFunctionDeclaration(const WString& name, Ptr returnType, WfFunctionKind kind, WfFunctionAnonymity anonymity = WfFunctionAnonymity::Named); + + template + Ptr CreateCall(Ptr function, TArgs... arguments) + { + auto expression = Ptr(new WfCallExpression); + expression->function = function; + if constexpr (sizeof...(arguments) > 0) + { + (expression->arguments.Add(arguments), ...); + } + return expression; + } + } + } + } +} + +#endif + + /*********************************************************************** .\EMITTER\WFEMITTER.H ***********************************************************************/ @@ -5601,6 +5773,7 @@ Code Generation WfFunctionDeclaration* functionDeclaration = 0; WfFunctionExpression* functionExpression = 0; WfOrderedLambdaExpression* orderedLambdaExpression = 0; + WfDestructorDeclaration* destructorDeclaration = 0; }; enum class WfCodegenScopeType @@ -5948,6 +6121,7 @@ WfCppConfig::Write }; extern void GenerateExpression(WfCppConfig* config, stream::StreamWriter& writer, Ptr node, reflection::description::ITypeInfo* expectedType, bool useReturnValue = true); + extern void WriteWStringLiteralUnmanaged(stream::StreamWriter& writer, const WString& value); extern void GenerateStatement(WfCppConfig* config, Ptr functionRecord, stream::StreamWriter& writer, Ptr node, const WString& prefix, const WString& prefixDelta, reflection::description::ITypeInfo* returnType); extern void GenerateClassMemberDecl(WfCppConfig* config, stream::StreamWriter& writer, const WString& className, Ptr memberDecl, const WString& prefix, bool forClassExpr); extern bool GenerateClassMemberImpl(WfCppConfig* config, stream::StreamWriter& writer, WfClassDeclaration* classDef, const WString& classBaseName, const WString& className, const WString& classFullName, Ptr memberDecl, const WString& prefix); @@ -5999,3 +6173,4 @@ GenerateCppFiles } #endif + diff --git a/Import/VlppWorkflowLibrary.cpp b/Import/VlppWorkflowLibrary.cpp index 5c3d60fe..892a621c 100644 --- a/Import/VlppWorkflowLibrary.cpp +++ b/Import/VlppWorkflowLibrary.cpp @@ -1033,6 +1033,39 @@ TypeName IMPL_TYPE_INFO_RENAME(vl::reflection::description::AsyncCoroutine, system::AsyncCoroutine) IMPL_TYPE_INFO_RENAME(vl::reflection::description::StateMachine, system::StateMachine) IMPL_TYPE_INFO_RENAME(vl::reflection::description::Versioning, system::Versioning) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::RpcObjectReference, system::RpcObjectReference) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::RpcException, system::RpcException) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::RpcByvalReturnValue, system::RpcByvalReturnValue) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::IRpcSerializer, system::IRpcSerializer) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::IRpcListOps, system::IRpcListOps) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::IRpcListEventOps, system::IRpcListEventOps) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::IRpcObjectOps, system::IRpcObjectOps) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::IRpcObjectEventOps, system::IRpcObjectEventOps) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::IRpcOperations, system::IRpcOperations) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::IRpcDispatcher, system::IRpcDispatcher) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::IRpcController, system::IRpcController) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::IRpcLifecycle, system::IRpcLifecycle) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::IRpcWrapperBase, system::IRpcWrapperBase) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::RpcByrefEnumerator, system::RpcByrefEnumerator) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::RpcByrefEnumerable, system::RpcByrefEnumerable) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::RpcByrefReadonlyList, system::RpcByrefReadonlyList) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::RpcByrefList, system::RpcByrefList) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::RpcByrefArray, system::RpcByrefArray) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::RpcByrefObservableList, system::RpcByrefObservableList) + IMPL_TYPE_INFO_RENAME(vl::rpc_controller::RpcByrefDictionary, system::RpcByrefDictionary) + IMPL_TYPE_INFO_RENAME(vl::__vwsn::att_cpp_File, system::workflow_attributes::att_cpp_File) + IMPL_TYPE_INFO_RENAME(vl::__vwsn::att_cpp_UserImpl, system::workflow_attributes::att_cpp_UserImpl) + IMPL_TYPE_INFO_RENAME(vl::__vwsn::att_cpp_Private, system::workflow_attributes::att_cpp_Private) + IMPL_TYPE_INFO_RENAME(vl::__vwsn::att_cpp_Protected, system::workflow_attributes::att_cpp_Protected) + IMPL_TYPE_INFO_RENAME(vl::__vwsn::att_cpp_Friend, system::workflow_attributes::att_cpp_Friend) + IMPL_TYPE_INFO_RENAME(vl::__vwsn::att_rpc_Interface, system::workflow_attributes::att_rpc_Interface) + IMPL_TYPE_INFO_RENAME(vl::__vwsn::att_rpc_Ctor, system::workflow_attributes::att_rpc_Ctor) + IMPL_TYPE_INFO_RENAME(vl::__vwsn::att_rpc_Byval, system::workflow_attributes::att_rpc_Byval) + IMPL_TYPE_INFO_RENAME(vl::__vwsn::att_rpc_Byref, system::workflow_attributes::att_rpc_Byref) + IMPL_TYPE_INFO_RENAME(vl::__vwsn::att_rpc_Cached, system::workflow_attributes::att_rpc_Cached) + IMPL_TYPE_INFO_RENAME(vl::__vwsn::att_rpc_Dynamic, system::workflow_attributes::att_rpc_Dynamic) + IMPL_TYPE_INFO_RENAME(vl::__vwsn::att_rpc_IdString, system::workflow_attributes::att_rpc_IdString) + IMPL_TYPE_INFO_RENAME(vl::__vwsn::att_rpc_IdNumber, system::workflow_attributes::att_rpc_IdNumber) #endif @@ -1044,6 +1077,213 @@ WfLoadLibraryTypes #define _ , + template + class CustomMethodInfoImplWithReturn {}; + + template + class CustomMethodInfoImplWithReturn : public CustomMethodInfoImpl + { + public: + CustomMethodInfoImplWithReturn(const wchar_t* parameterNames[], R(__thiscall TClass::* _method)(TArgs...), const wchar_t* _invokeTemplate, const wchar_t* _closureTemplate, Ptr _returnInfo) + : CustomMethodInfoImpl(parameterNames, _method, _invokeTemplate, _closureTemplate) + { + this->returnInfo = _returnInfo; + } + }; + + BEGIN_STRUCT_MEMBER(vl::__vwsn::att_cpp_File) + STRUCT_MEMBER(argument) + END_STRUCT_MEMBER(vl::__vwsn::att_cpp_File) + + BEGIN_STRUCT_MEMBER(vl::__vwsn::att_cpp_UserImpl) + END_STRUCT_MEMBER(vl::__vwsn::att_cpp_UserImpl) + + BEGIN_STRUCT_MEMBER(vl::__vwsn::att_cpp_Private) + END_STRUCT_MEMBER(vl::__vwsn::att_cpp_Private) + + BEGIN_STRUCT_MEMBER(vl::__vwsn::att_cpp_Protected) + END_STRUCT_MEMBER(vl::__vwsn::att_cpp_Protected) + + BEGIN_STRUCT_MEMBER(vl::__vwsn::att_cpp_Friend) + STRUCT_MEMBER(argument) + END_STRUCT_MEMBER(vl::__vwsn::att_cpp_Friend) + + BEGIN_STRUCT_MEMBER(vl::__vwsn::att_rpc_Interface) + END_STRUCT_MEMBER(vl::__vwsn::att_rpc_Interface) + + BEGIN_STRUCT_MEMBER(vl::__vwsn::att_rpc_Ctor) + END_STRUCT_MEMBER(vl::__vwsn::att_rpc_Ctor) + + BEGIN_STRUCT_MEMBER(vl::__vwsn::att_rpc_Byval) + END_STRUCT_MEMBER(vl::__vwsn::att_rpc_Byval) + + BEGIN_STRUCT_MEMBER(vl::__vwsn::att_rpc_Byref) + END_STRUCT_MEMBER(vl::__vwsn::att_rpc_Byref) + + BEGIN_STRUCT_MEMBER(vl::__vwsn::att_rpc_Cached) + END_STRUCT_MEMBER(vl::__vwsn::att_rpc_Cached) + + BEGIN_STRUCT_MEMBER(vl::__vwsn::att_rpc_Dynamic) + END_STRUCT_MEMBER(vl::__vwsn::att_rpc_Dynamic) + + BEGIN_STRUCT_MEMBER(vl::__vwsn::att_rpc_IdString) + STRUCT_MEMBER(argument) + END_STRUCT_MEMBER(vl::__vwsn::att_rpc_IdString) + + BEGIN_STRUCT_MEMBER(vl::__vwsn::att_rpc_IdNumber) + STRUCT_MEMBER(argument) + END_STRUCT_MEMBER(vl::__vwsn::att_rpc_IdNumber) + + BEGIN_STRUCT_MEMBER(vl::rpc_controller::RpcObjectReference) + STRUCT_MEMBER(clientId) + STRUCT_MEMBER(objectId) + STRUCT_MEMBER(typeId) + END_STRUCT_MEMBER(vl::rpc_controller::RpcObjectReference) + + BEGIN_STRUCT_MEMBER(vl::rpc_controller::RpcException) + STRUCT_MEMBER(message) + END_STRUCT_MEMBER(vl::rpc_controller::RpcException) + + BEGIN_CLASS_MEMBER(vl::rpc_controller::RpcByvalReturnValue) + CLASS_MEMBER_CONSTRUCTOR(Ptr(), NO_PARAMETER) + CLASS_MEMBER_FIELD(value) + CLASS_MEMBER_FIELD(slot) + END_CLASS_MEMBER(vl::rpc_controller::RpcByvalReturnValue) + + BEGIN_INTERFACE_MEMBER(vl::rpc_controller::IRpcSerializer) + CLASS_MEMBER_METHOD(Serialize, { L"value" }) + CLASS_MEMBER_METHOD(Deserialize, { L"value" }) + END_INTERFACE_MEMBER(vl::rpc_controller::IRpcSerializer) + + BEGIN_INTERFACE_MEMBER(vl::rpc_controller::IRpcListOps) + CLASS_MEMBER_METHOD(EnumCreate, { L"ref" }) + CLASS_MEMBER_METHOD(EnumNext, { L"enumerator" }) + CLASS_MEMBER_METHOD(EnumGetCurrent, { L"enumerator" }) + + CLASS_MEMBER_METHOD(ListGetCount, { L"ref" }) + CLASS_MEMBER_METHOD(ListGet, { L"ref" _ L"index" }) + CLASS_MEMBER_METHOD(ListSet, { L"ref" _ L"index" _ L"value" }) + CLASS_MEMBER_METHOD(ListAdd, { L"ref" _ L"value" }) + CLASS_MEMBER_METHOD(ListInsert, { L"ref" _ L"index" _ L"value" }) + CLASS_MEMBER_METHOD(ListRemoveAt, { L"ref" _ L"index" }) + CLASS_MEMBER_METHOD(ListClear, { L"ref" }) + CLASS_MEMBER_METHOD(ListContains, { L"ref" _ L"value" }) + CLASS_MEMBER_METHOD(ListIndexOf, { L"ref" _ L"value" }) + + CLASS_MEMBER_METHOD(DictGetCount, { L"ref" }) + CLASS_MEMBER_METHOD(DictGet, { L"ref" _ L"key" }) + CLASS_MEMBER_METHOD(DictSet, { L"ref" _ L"key" _ L"value" }) + CLASS_MEMBER_METHOD(DictRemove, { L"ref" _ L"key" }) + CLASS_MEMBER_METHOD(DictClear, { L"ref" }) + CLASS_MEMBER_METHOD(DictContainsKey, { L"ref" _ L"key" }) + CLASS_MEMBER_METHOD(DictGetKeys, { L"ref" }) + CLASS_MEMBER_METHOD(DictGetValues, { L"ref" }) + END_INTERFACE_MEMBER(vl::rpc_controller::IRpcListOps) + + BEGIN_INTERFACE_MEMBER(vl::rpc_controller::IRpcListEventOps) + CLASS_MEMBER_METHOD(OnItemChanged, { L"ref" _ L"index" _ L"oldCount" _ L"newCount" }) + END_INTERFACE_MEMBER(vl::rpc_controller::IRpcListEventOps) + + BEGIN_INTERFACE_MEMBER(vl::rpc_controller::IRpcObjectOps) + CLASS_MEMBER_METHOD(InvokeMethod, { L"ref" _ L"methodId" _ L"arguments" }) + CLASS_MEMBER_METHOD(EndInvokeMethod, { L"slot" }) + CLASS_MEMBER_METHOD(ObjectHold, { L"ref" _ L"remoteClientId" _ L"hold" }) + CLASS_MEMBER_METHOD(RegisterService, { L"typeId" _ L"service" }) + END_INTERFACE_MEMBER(vl::rpc_controller::IRpcObjectOps) + + BEGIN_INTERFACE_MEMBER(vl::rpc_controller::IRpcObjectEventOps) + CLASS_MEMBER_METHOD(InvokeEvent, { L"ref" _ L"eventId" _ L"arguments" }) + END_INTERFACE_MEMBER(vl::rpc_controller::IRpcObjectEventOps) + + BEGIN_INTERFACE_MEMBER_NOPROXY(vl::rpc_controller::IRpcOperations) + CLASS_MEMBER_PROPERTY_READONLY_FAST(ListOps) + CLASS_MEMBER_PROPERTY_READONLY_FAST(ObjectOps) + CLASS_MEMBER_PROPERTY_READONLY_FAST(ListEventOps) + CLASS_MEMBER_PROPERTY_READONLY_FAST(ObjectEventOps) + END_INTERFACE_MEMBER(vl::rpc_controller::IRpcOperations) + + BEGIN_INTERFACE_MEMBER_NOPROXY(vl::rpc_controller::IRpcDispatcher) + CLASS_MEMBER_METHOD(Finalize, NO_PARAMETER) + CLASS_MEMBER_METHOD(IsRegisteredService, { L"ref" }) + CLASS_MEMBER_METHOD(RegisterService, { L"typeId" _ L"ref" }) + CLASS_MEMBER_METHOD(RequestService, { L"typeId" }) + CLASS_MEMBER_METHOD(BroadcastFromClient_ListEventOps, { L"selfClientId" }) + CLASS_MEMBER_METHOD(BroadcastFromClient_ObjectEventOps, { L"selfClientId" }) + CLASS_MEMBER_METHOD(SendToClient_ListOps, { L"targetClientId" }) + CLASS_MEMBER_METHOD(SendToClient_ObjectOps, { L"targetClientId" }) + END_INTERFACE_MEMBER(vl::rpc_controller::IRpcDispatcher) + + BEGIN_INTERFACE_MEMBER_NOPROXY(vl::rpc_controller::IRpcController) + CLASS_MEMBER_BASE(vl::rpc_controller::IRpcOperations) + CLASS_MEMBER_METHOD(Finalize, NO_PARAMETER) + CLASS_MEMBER_METHOD(SetEventSuppressedFlag, { L"ref" _ L"eventId" _ L"suppressed" }) + CLASS_MEMBER_METHOD(GetEventSuppressedFlag, { L"ref" _ L"eventId" }) + CLASS_MEMBER_METHOD(SetItemChangedSuppressedFlag, { L"ref" _ L"suppressed" }) + CLASS_MEMBER_METHOD(GetItemChangedSuppressedFlag, { L"ref" }) + END_INTERFACE_MEMBER(vl::rpc_controller::IRpcController) + + BEGIN_INTERFACE_MEMBER_NOPROXY(vl::rpc_controller::IRpcLifecycle) + CLASS_MEMBER_METHOD(Finalize, NO_PARAMETER) + CLASS_MEMBER_PROPERTY_READONLY_FAST(ClientId) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Dispatcher) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Controller) + CLASS_MEMBER_PROPERTY_READONLY_FAST(Serializer) + CLASS_MEMBER_METHOD(RefToPtr, { L"ref" }) + CLASS_MEMBER_METHOD(PtrToRef, { L"obj" }) + CLASS_MEMBER_METHOD(LocalObjectHold, { L"ref" _ L"remoteClientId" }) + CLASS_MEMBER_METHOD(LocalObjectUnhold, { L"ref" _ L"remoteClientId" }) + CLASS_MEMBER_METHOD(RegisterService, { L"fullName" _ L"service" }) + CLASS_MEMBER_METHOD(RequestService, { L"fullName" }) + CLASS_MEMBER_STATIC_EXTERNALMETHOD(RpcBoxByref, { L"trivial" _ L"lc" }, vl::rpc_controller::RpcObjectReference(*)(vl::Ptr, vl::rpc_controller::IRpcLifecycle*), vl::rpc_controller::RpcBoxByref) + CLASS_MEMBER_STATIC_EXTERNALMETHOD(RpcUnboxByref, { L"serializable" _ L"lc" }, vl::Ptr(*)(vl::rpc_controller::RpcObjectReference, vl::rpc_controller::IRpcLifecycle*), vl::rpc_controller::RpcUnboxByref) + CLASS_MEMBER_STATIC_EXTERNALMETHOD(RpcCopyByval, { L"trivial" _ L"lc" }, Value(*)(const Value&, vl::rpc_controller::IRpcLifecycle*), vl::rpc_controller::RpcCopyByval) + CLASS_MEMBER_STATIC_EXTERNALMETHOD(RpcBoxByval, { L"trivial" _ L"lc" }, Value(*)(const Value&, vl::rpc_controller::IRpcLifecycle*), vl::rpc_controller::RpcBoxByval) + CLASS_MEMBER_STATIC_EXTERNALMETHOD(RpcUnboxByval, { L"serializable" _ L"lc" }, vl::Ptr(*)(const Value&, vl::rpc_controller::IRpcLifecycle*), vl::rpc_controller::RpcUnboxByval) + CLASS_MEMBER_STATIC_EXTERNALMETHOD(ReadMethodException, { L"value" }, void(*)(const Value&), vl::rpc_controller::ReadMethodException) + CLASS_MEMBER_STATIC_EXTERNALMETHOD(ReadEventException, { L"exceptions" }, void(*)(vl::rpc_controller::RpcEventExceptionMap), vl::rpc_controller::ReadEventException) + CLASS_MEMBER_STATIC_EXTERNALMETHOD(JsonSerializePredefinedTypes, { L"value" _ L"rpcjson_Serialize" }, vl::Ptr(*)(const Value&, const vl::rpc_controller::RpcJsonSerializeCallback&), vl::rpc_controller::JsonSerializePredefinedTypes) + CLASS_MEMBER_STATIC_EXTERNALMETHOD(JsonDeserializePredefinedTypes, { L"value" _ L"rpcjson_Deserialize" }, Value(*)(const Value&, const vl::rpc_controller::RpcJsonDeserializeCallback&), vl::rpc_controller::JsonDeserializePredefinedTypes) + END_INTERFACE_MEMBER(vl::rpc_controller::IRpcLifecycle) + + BEGIN_INTERFACE_MEMBER(vl::rpc_controller::IRpcWrapperBase) + CLASS_MEMBER_METHOD(DisconnectFromLifecycle, NO_PARAMETER) + END_INTERFACE_MEMBER(vl::rpc_controller::IRpcWrapperBase) + + BEGIN_CLASS_MEMBER(vl::rpc_controller::RpcByrefEnumerator) + CLASS_MEMBER_BASE(vl::reflection::description::IValueEnumerator) + CLASS_MEMBER_BASE(vl::rpc_controller::IRpcWrapperBase) + END_CLASS_MEMBER(vl::rpc_controller::RpcByrefEnumerator) + + BEGIN_CLASS_MEMBER(vl::rpc_controller::RpcByrefEnumerable) + CLASS_MEMBER_BASE(vl::reflection::description::IValueEnumerable) + CLASS_MEMBER_BASE(vl::rpc_controller::IRpcWrapperBase) + END_CLASS_MEMBER(vl::rpc_controller::RpcByrefEnumerable) + + BEGIN_CLASS_MEMBER(vl::rpc_controller::RpcByrefReadonlyList) + CLASS_MEMBER_BASE(vl::reflection::description::IValueReadonlyList) + CLASS_MEMBER_BASE(vl::rpc_controller::IRpcWrapperBase) + END_CLASS_MEMBER(vl::rpc_controller::RpcByrefReadonlyList) + + BEGIN_CLASS_MEMBER(vl::rpc_controller::RpcByrefList) + CLASS_MEMBER_BASE(vl::rpc_controller::RpcByrefReadonlyList) + CLASS_MEMBER_BASE(vl::reflection::description::IValueList) + END_CLASS_MEMBER(vl::rpc_controller::RpcByrefList) + + BEGIN_CLASS_MEMBER(vl::rpc_controller::RpcByrefArray) + CLASS_MEMBER_BASE(vl::reflection::description::IValueArray) + CLASS_MEMBER_BASE(vl::rpc_controller::IRpcWrapperBase) + END_CLASS_MEMBER(vl::rpc_controller::RpcByrefArray) + + BEGIN_CLASS_MEMBER(vl::rpc_controller::RpcByrefObservableList) + CLASS_MEMBER_BASE(vl::reflection::description::IValueObservableList) + CLASS_MEMBER_BASE(vl::rpc_controller::IRpcWrapperBase) + END_CLASS_MEMBER(vl::rpc_controller::RpcByrefObservableList) + + BEGIN_CLASS_MEMBER(vl::rpc_controller::RpcByrefDictionary) + CLASS_MEMBER_BASE(vl::reflection::description::IValueDictionary) + CLASS_MEMBER_BASE(vl::rpc_controller::IRpcWrapperBase) + END_CLASS_MEMBER(vl::rpc_controller::RpcByrefDictionary) + BEGIN_CLASS_MEMBER(Sys) CLASS_MEMBER_STATIC_METHOD(Int32ToInt, { L"value" }) CLASS_MEMBER_STATIC_METHOD(Int64ToInt, { L"value" }) @@ -1276,3 +1516,2225 @@ WfLoadLibraryTypes } } + +/*********************************************************************** +.\RPC\WFLIBRARYRPC.CPP +***********************************************************************/ + +namespace vl +{ + namespace rpc_controller + { + using namespace reflection::description; + + Value BoxRpcObjectReference(RpcObjectReference ref) + { + return Value::From(Ptr(new IValueType::TypedBox(ref)), nullptr); + } + + Value BoxRpcException(RpcException exception) + { + return Value::From(Ptr(new IValueType::TypedBox(exception)), nullptr); + } + + RpcEventExceptionMap CreateRpcEventExceptionMap() + { + return IValueDictionary::Create(); + } + + void MergeRpcEventExceptionMap(RpcEventExceptionMap target, RpcEventExceptionMap source) + { + if (!source) return; + auto keys = source->GetKeys(); + for (vint i = 0; i < keys->GetCount(); i++) + { + auto key = keys->Get(i); + target->Set(key, source->Get(key)); + } + } + + Value BoxRpcEventExceptionMap(RpcEventExceptionMap exceptions) + { + return exceptions ? BoxValue(exceptions) : Value(); + } + + RpcEventExceptionMap UnboxRpcEventExceptionMap(const Value& value) + { + return value.IsNull() ? nullptr : UnboxValue(value); + } + } +} + + +/*********************************************************************** +.\RPC\WFLIBRARYRPCCONTROLLER.CPP +***********************************************************************/ + +namespace vl +{ + namespace rpc_controller + { + using namespace collections; + +/*********************************************************************** +* RpcControllerDefault +***********************************************************************/ + + RpcControllerDefault::RpcControllerDefault() + { + } + + RpcControllerDefault::~RpcControllerDefault() + { + } + + void RpcControllerDefault::Register(Ptr _objectCallback, Ptr _eventCallback, Ptr _listCallback, Ptr _listEventCallback) + { + objectCallback = _objectCallback; + eventCallback = _eventCallback; + listCallback = _listCallback; + listEventCallback = _listEventCallback; + } + + IRpcListOps* RpcControllerDefault::GetListOps() + { + return listCallback.Obj(); + } + + IRpcObjectOps* RpcControllerDefault::GetObjectOps() + { + return objectCallback.Obj(); + } + + IRpcListEventOps* RpcControllerDefault::GetListEventOps() + { + return listEventCallback.Obj(); + } + + IRpcObjectEventOps* RpcControllerDefault::GetObjectEventOps() + { + return eventCallback.Obj(); + } + + void RpcControllerDefault::Finalize() + { + } + + template + void RpcControllerDefault::SetSuppressedFlag(Dictionary& flags, const TKey& key, bool suppressed) + { +#define ERROR_MESSAGE_PREFIX L"vl::rpc_controller::RpcControllerDefault::SetSuppressedFlag(collections::Dictionary&, const TKey&, bool)#" + auto index = flags.Keys().IndexOf(key); + if (suppressed) + { + if (index == -1) + { + flags.Add(key, 1); + } + else + { + flags.Set(key, flags.Values()[index] + 1); + } + } + else + { + CHECK_ERROR(index != -1, ERROR_MESSAGE_PREFIX L"Suppression counter is not set."); + auto count = flags.Values()[index] - 1; + CHECK_ERROR(count >= 0, ERROR_MESSAGE_PREFIX L"Suppression counter is negative."); + if (count == 0) + { + flags.Remove(key); + } + else + { + flags.Set(key, count); + } + } +#undef ERROR_MESSAGE_PREFIX + } + + template + bool RpcControllerDefault::GetSuppressedFlag(const Dictionary& flags, const TKey& key) + { + auto index = flags.Keys().IndexOf(key); + return index != -1 && flags.Values()[index] > 0; + } + + void RpcControllerDefault::SetEventSuppressedFlag(RpcObjectReference ref, vint eventId, bool suppressed) + { + SetSuppressedFlag(eventSuppressedFlags, { ref,eventId }, suppressed); + } + + bool RpcControllerDefault::GetEventSuppressedFlag(RpcObjectReference ref, vint eventId) + { + return GetSuppressedFlag(eventSuppressedFlags, { ref,eventId }); + } + + void RpcControllerDefault::SetItemChangedSuppressedFlag(RpcObjectReference ref, bool suppressed) + { + SetSuppressedFlag(itemChangedSuppressedFlags, ref, suppressed); + } + + bool RpcControllerDefault::GetItemChangedSuppressedFlag(RpcObjectReference ref) + { + return GetSuppressedFlag(itemChangedSuppressedFlags, ref); + } + } +} + + +/*********************************************************************** +.\RPC\WFLIBRARYRPCJSON.CPP +***********************************************************************/ + +namespace vl +{ + namespace rpc_controller + { + using namespace collections; + using namespace glr::json; + using namespace reflection; + using namespace reflection::description; + + namespace + { + Ptr CreateJsonLiteral(JsonLiteralValue value) + { + auto node = Ptr(new JsonLiteral); + node->value = value; + return node; + } + + Ptr CreateJsonString(const WString& value) + { + auto node = Ptr(new JsonString); + node->content.value = value; + return node; + } + + Ptr CreateJsonNumber(const WString& value) + { + auto node = Ptr(new JsonNumber); + node->content.value = value; + return node; + } + + Ptr CreateJsonArray() + { + return Ptr(new JsonArray); + } + + Ptr CreateJsonObject() + { + return Ptr(new JsonObject); + } + + void AddJsonObjectField(Ptr object, const WString& name, Ptr value) + { + auto field = Ptr(new JsonObjectField); + field->name.value = name; + field->value = value; + object->fields.Add(field); + } + + Ptr GetJsonObjectField(Ptr object, const WString& name) + { + for (auto field : object->fields) + { + if (field->name.value == name) + { + return field->value; + } + } + auto message = L"JSON object field not found: " + name; + CHECK_FAIL(message.Buffer()); + } + + Ptr FindJsonObjectField(Ptr object, const WString& name) + { + for (auto field : object->fields) + { + if (field->name.value == name) + { + return field->value; + } + } + return nullptr; + } + + WString GetJsonString(Ptr node) + { + auto stringNode = node.Cast(); + CHECK_ERROR(stringNode, L"JSON string is expected."); + return stringNode->content.value; + } + + WString GetJsonNumber(Ptr node) + { + auto numberNode = node.Cast(); + CHECK_ERROR(numberNode, L"JSON number is expected."); + return numberNode->content.value; + } + + Ptr CreateUnknownTuple(const WString& keyword, Ptr value) + { + auto array = CreateJsonArray(); + array->items.Add(CreateJsonString(keyword)); + array->items.Add(value); + return Ptr(array); + } + + template + bool TrySerializeNumberPrimitive(const Value& value, const WString& keyword, Ptr& result) + { + auto primitive = __vwsn::UnboxWeak>(value); + if (primitive) + { + result = CreateUnknownTuple(keyword, CreateJsonNumber(__vwsn::ToString(primitive.Value()))); + return true; + } + return false; + } + + template + bool TrySerializeStringPrimitive(const Value& value, const WString& keyword, Ptr& result) + { + auto primitive = __vwsn::UnboxWeak>(value); + if (primitive) + { + result = CreateUnknownTuple(keyword, CreateJsonString(__vwsn::ToString(primitive.Value()))); + return true; + } + return false; + } + + Ptr SerializeCollection(const WString& keyword, Ptr enumerable, const RpcJsonSerializeCallback& rpcjson_Serialize) + { + auto object = CreateJsonObject(); + AddJsonObjectField(object, WString::Unmanaged(L"$"), CreateJsonString(keyword)); + auto values = CreateJsonArray(); + auto enumerator = enumerable->CreateEnumerator(); + while (enumerator->Next()) + { + values->items.Add(rpcjson_Serialize(enumerator->GetCurrent())); + } + AddJsonObjectField(object, WString::Unmanaged(L"values"), values); + return Ptr(object); + } + + Ptr SerializeMap(Ptr dictionary, const RpcJsonSerializeCallback& rpcjson_Serialize) + { + auto object = CreateJsonObject(); + AddJsonObjectField(object, WString::Unmanaged(L"$"), CreateJsonString(WString::Unmanaged(L"map"))); + auto values = CreateJsonArray(); + auto keys = dictionary->GetKeys(); + for (vint i = 0; i < keys->GetCount(); i++) + { + auto key = keys->Get(i); + auto pair = CreateJsonArray(); + pair->items.Add(rpcjson_Serialize(key)); + pair->items.Add(rpcjson_Serialize(dictionary->Get(key))); + values->items.Add(pair); + } + AddJsonObjectField(object, WString::Unmanaged(L"values"), values); + return Ptr(object); + } + + Ptr TrySerializeCollectionTypes(const Value& value, const RpcJsonSerializeCallback& rpcjson_Serialize) + { + if (auto observableList = __vwsn::UnboxWeak>(value)) + { + return SerializeCollection(WString::Unmanaged(L"oblist"), observableList, rpcjson_Serialize); + } + if (auto dictionary = __vwsn::UnboxWeak>(value)) + { + return SerializeMap(dictionary, rpcjson_Serialize); + } + if (auto readonlyDictionary = __vwsn::UnboxWeak>(value)) + { + return SerializeMap(readonlyDictionary, rpcjson_Serialize); + } + if (auto list = __vwsn::UnboxWeak>(value)) + { + return SerializeCollection(WString::Unmanaged(L"list"), list, rpcjson_Serialize); + } + if (auto readonlyList = __vwsn::UnboxWeak>(value)) + { + return SerializeCollection(WString::Unmanaged(L"list"), readonlyList, rpcjson_Serialize); + } + if (auto enumerable = __vwsn::UnboxWeak>(value)) + { + return SerializeCollection(WString::Unmanaged(L"list"), enumerable, rpcjson_Serialize); + } + return nullptr; + } + + Ptr TrySerializeRpcTypes(const Value& value) + { + if (auto ref = __vwsn::UnboxWeak>(value)) + { + auto object = CreateJsonObject(); + AddJsonObjectField(object, WString::Unmanaged(L"$"), CreateJsonString(WString::Unmanaged(L"system::RpcObjectReference"))); + AddJsonObjectField(object, WString::Unmanaged(L"clientId"), CreateJsonNumber(__vwsn::ToString(ref.Value().clientId))); + AddJsonObjectField(object, WString::Unmanaged(L"objectId"), CreateJsonNumber(__vwsn::ToString(ref.Value().objectId))); + AddJsonObjectField(object, WString::Unmanaged(L"typeId"), CreateJsonNumber(__vwsn::ToString(ref.Value().typeId))); + return Ptr(object); + } + if (auto exception = __vwsn::UnboxWeak>(value)) + { + auto object = CreateJsonObject(); + AddJsonObjectField(object, WString::Unmanaged(L"$"), CreateJsonString(WString::Unmanaged(L"system::RpcException"))); + AddJsonObjectField(object, WString::Unmanaged(L"message"), CreateJsonString(exception.Value().message)); + return Ptr(object); + } + return nullptr; + } + + Value DeserializeList(Ptr object, bool observable, const RpcJsonDeserializeCallback& rpcjson_Deserialize) + { + auto values = GetJsonObjectField(object, WString::Unmanaged(L"values")).Cast(); + CHECK_ERROR(values, L"JSON array is expected."); + if (observable) + { + auto result = IValueObservableList::Create(); + for (auto item : values->items) + { + result->Add(rpcjson_Deserialize(item)); + } + return BoxValue(result); + } + else + { + auto result = IValueList::Create(); + for (auto item : values->items) + { + result->Add(rpcjson_Deserialize(item)); + } + return BoxValue(result); + } + } + + Value DeserializeMap(Ptr object, const RpcJsonDeserializeCallback& rpcjson_Deserialize) + { + auto values = GetJsonObjectField(object, WString::Unmanaged(L"values")).Cast(); + CHECK_ERROR(values, L"JSON array is expected."); + auto result = IValueDictionary::Create(); + for (auto item : values->items) + { + auto pair = item.Cast(); + CHECK_ERROR(pair, L"JSON array is expected."); + result->Set(rpcjson_Deserialize(pair->items[0]), rpcjson_Deserialize(pair->items[1])); + } + return BoxValue(result); + } + + Value TryDeserializeRpcTypes(Ptr object, const WString& keyword) + { + if (keyword == L"system::RpcObjectReference") + { + return BoxRpcObjectReference(RpcObjectReference{ + __vwsn::Parse(GetJsonNumber(GetJsonObjectField(object, WString::Unmanaged(L"clientId")))), + __vwsn::Parse(GetJsonNumber(GetJsonObjectField(object, WString::Unmanaged(L"objectId")))), + __vwsn::Parse(GetJsonNumber(GetJsonObjectField(object, WString::Unmanaged(L"typeId")))), + }); + } + if (keyword == L"system::RpcException") + { + return BoxRpcException(RpcException{ + GetJsonString(GetJsonObjectField(object, WString::Unmanaged(L"message"))), + }); + } + return {}; + } + } + + Ptr JsonSerializePredefinedTypes(const Value& value, const RpcJsonSerializeCallback& rpcjson_Serialize) + { + if (value.IsNull()) + { + return CreateJsonLiteral(JsonLiteralValue::Null); + } + + if (auto primitive = __vwsn::UnboxWeak>(value)) + { + return CreateJsonLiteral(primitive.Value() ? JsonLiteralValue::True : JsonLiteralValue::False); + } + + if (auto primitive = __vwsn::UnboxWeak>(value)) + { + return CreateJsonString(primitive.Value()); + } + + Ptr result; + if (TrySerializeNumberPrimitive(value, WString::Unmanaged(L"UInt8"), result)) return result; + if (TrySerializeNumberPrimitive(value, WString::Unmanaged(L"UInt16"), result)) return result; + if (TrySerializeNumberPrimitive(value, WString::Unmanaged(L"UInt32"), result)) return result; + if (TrySerializeNumberPrimitive(value, WString::Unmanaged(L"UInt64"), result)) return result; + if (TrySerializeNumberPrimitive(value, WString::Unmanaged(L"Int8"), result)) return result; + if (TrySerializeNumberPrimitive(value, WString::Unmanaged(L"Int16"), result)) return result; + if (TrySerializeNumberPrimitive(value, WString::Unmanaged(L"Int32"), result)) return result; + if (TrySerializeNumberPrimitive(value, WString::Unmanaged(L"Int64"), result)) return result; + if (TrySerializeNumberPrimitive(value, WString::Unmanaged(L"Single"), result)) return result; + if (TrySerializeNumberPrimitive(value, WString::Unmanaged(L"Double"), result)) return result; + if (TrySerializeStringPrimitive(value, WString::Unmanaged(L"Char"), result)) return result; + if (TrySerializeStringPrimitive(value, WString::Unmanaged(L"DateTime"), result)) return result; + if (TrySerializeStringPrimitive(value, WString::Unmanaged(L"Locale"), result)) return result; + + if (auto rpcType = TrySerializeRpcTypes(value)) + { + return rpcType; + } + + if (auto collection = TrySerializeCollectionTypes(value, rpcjson_Serialize)) + { + return collection; + } + + CHECK_FAIL(L"Unsupported RPC JSON serialization value."); + } + + Value JsonDeserializePredefinedTypes(const Value& value, const RpcJsonDeserializeCallback& rpcjson_Deserialize) + { + if (value.IsNull()) + { + return {}; + } + + auto node = UnboxValue>(value); + if (!node) + { + return {}; + } + + if (auto literal = node.Cast()) + { + switch (literal->value) + { + case JsonLiteralValue::Null: + return {}; + case JsonLiteralValue::True: + return BoxValue(true); + case JsonLiteralValue::False: + return BoxValue(false); + default: + CHECK_FAIL(L"Unsupported JSON literal."); + } + } + + if (auto stringNode = node.Cast()) + { + return BoxValue(stringNode->content.value); + } + + if (auto numberNode = node.Cast()) + { + return BoxValue(numberNode->content.value); + } + + if (auto array = node.Cast()) + { + if (array->items.Count() == 2) + { + if (auto keywordNode = array->items[0].Cast()) + { + auto keyword = keywordNode->content.value; + auto item = array->items[1]; + if (keyword == L"UInt8") return BoxValue(__vwsn::Parse(GetJsonNumber(item))); + if (keyword == L"UInt16") return BoxValue(__vwsn::Parse(GetJsonNumber(item))); + if (keyword == L"UInt32") return BoxValue(__vwsn::Parse(GetJsonNumber(item))); + if (keyword == L"UInt64") return BoxValue(__vwsn::Parse(GetJsonNumber(item))); + if (keyword == L"Int8") return BoxValue(__vwsn::Parse(GetJsonNumber(item))); + if (keyword == L"Int16") return BoxValue(__vwsn::Parse(GetJsonNumber(item))); + if (keyword == L"Int32") return BoxValue(__vwsn::Parse(GetJsonNumber(item))); + if (keyword == L"Int64") return BoxValue(__vwsn::Parse(GetJsonNumber(item))); + if (keyword == L"Single") return BoxValue(__vwsn::Parse(GetJsonNumber(item))); + if (keyword == L"Double") return BoxValue(__vwsn::Parse(GetJsonNumber(item))); + if (keyword == L"Char") return BoxValue(__vwsn::Parse(GetJsonString(item))); + if (keyword == L"DateTime") return BoxValue(__vwsn::Parse(GetJsonString(item))); + if (keyword == L"Locale") return BoxValue(__vwsn::Parse(GetJsonString(item))); + } + } + + auto result = IValueList::Create(); + for (auto item : array->items) + { + result->Add(rpcjson_Deserialize(item)); + } + return BoxValue(result); + } + + if (auto object = node.Cast()) + { + if (auto keywordNode = FindJsonObjectField(object, WString::Unmanaged(L"$"))) + { + auto keyword = GetJsonString(keywordNode); + if (auto value = TryDeserializeRpcTypes(object, keyword); !value.IsNull()) return value; + if (keyword == L"list") return DeserializeList(object, false, rpcjson_Deserialize); + if (keyword == L"oblist") return DeserializeList(object, true, rpcjson_Deserialize); + if (keyword == L"map") return DeserializeMap(object, rpcjson_Deserialize); + CHECK_FAIL(L"Unknown RPC JSON object schema."); + } + + auto result = IValueDictionary::Create(); + for (auto field : object->fields) + { + result->Set(BoxValue(field->name.value), rpcjson_Deserialize(field->value)); + } + return BoxValue(result); + } + + CHECK_FAIL(L"Unsupported RPC JSON node."); + } + } +} + + +/*********************************************************************** +.\RPC\WFLIBRARYRPCLIFECYCLE.CPP +***********************************************************************/ + +namespace vl +{ + namespace rpc_controller + { + using namespace reflection; + using namespace reflection::description; + using namespace collections; + + namespace + { + bool IsRpcWrapperObject(DescriptableObject* obj) + { + if (!obj) return false; + if (dynamic_cast(obj)) return true; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + if (auto typeDescriptor = obj->GetTypeDescriptor()) + { + if (auto wrapperType = GetTypeDescriptor(WString::Unmanaged(L"system::IRpcWrapperBase"))) + { + return typeDescriptor->CanConvertTo(wrapperType); + } + } +#endif + return false; + } + } + + WString RpcLifecycleBase::InternalProperty_LocalObjectTracker = WString::Unmanaged(L"RpcLocalObjectTracker"); + WString RpcLifecycleBase::InternalProperty_WrapperTracker = WString::Unmanaged(L"RpcWrapperTracker"); + + RpcLocalObjectTracker::RpcLocalObjectTracker(RpcLifecycleBase* lc, RpcObjectReference r) + : lifecycle(lc), ref(r) + { + } + + RpcLocalObjectTracker::~RpcLocalObjectTracker() + { + if (lifecycle && lifecycle->IsTracked(ref.objectId)) + { + lifecycle->RemoveLocalObject(ref, false); + } + } + + void RpcLocalObjectTracker::Attach(RpcLifecycleBase* lc, RpcObjectReference r) + { + lifecycle = lc; + ref = r; + } + + void RpcLocalObjectTracker::Detach() + { + lifecycle = nullptr; + } + + RpcWrapperTracker::RpcWrapperTracker(RpcLifecycleBase* lc, RpcObjectReference r) + : lifecycle(lc), ref(r) + { + } + + RpcWrapperTracker::~RpcWrapperTracker() + { + if (lifecycle) + { + lifecycle->UntrackWrapper(ref); + } + } + + void RpcWrapperTracker::Detach() + { + lifecycle = nullptr; + } + +/*********************************************************************** +* RpcLifecycleBase (Constructor and Setup) +***********************************************************************/ + + RpcLifecycleBase::RpcLifecycleBase(vint _clientId) + : clientId(_clientId) + { + } + + RpcLifecycleBase::~RpcLifecycleBase() + { + } + + void RpcLifecycleBase::SetIdMap(const Dictionary& _idMap) + { + CopyFrom(idMap, _idMap); + } + + void RpcLifecycleBase::SetSerializer(Ptr _serializer) + { + serializer = _serializer; + } + + IRpcSerializer* RpcLifecycleBase::GetSerializer() + { + return serializer.Obj(); + } + + void RpcLifecycleBase::RegisterWrapperFactory(UniversalWrapperFactory factory) + { + universalWrapperFactory = factory; + } + + void RpcLifecycleBase::DisconnectWrappersForFinalize() + { +#define ERROR_MESSAGE_PREFIX L"vl::rpc_controller::RpcLifecycleBase::DisconnectWrappersForFinalize()#" + for (auto [ref, properties] : wrapperProperties) + { + if (properties.root) + { + auto trackerObj = properties.root->GetInternalProperty(InternalProperty_WrapperTracker); + CHECK_ERROR(trackerObj, ERROR_MESSAGE_PREFIX L"Wrapper tracker missing."); + auto tracker = trackerObj.Cast(); + CHECK_ERROR(tracker, ERROR_MESSAGE_PREFIX L"Invalid wrapper tracker type."); + tracker->Detach(); + properties.root->SetInternalProperty(InternalProperty_WrapperTracker, nullptr); + } + + if (properties.proxy) + { + properties.proxy->DisconnectFromLifecycle(); + } + } + wrapperProperties.Clear(); +#undef ERROR_MESSAGE_PREFIX + } + + vint RpcLifecycleBase::DecideTypeId(IDescriptable* obj)const + { + if (dynamic_cast(obj)) return RpcTypeId_IValueObservableList; + if (dynamic_cast(obj)) return RpcTypeId_IValueDictionary; + if (dynamic_cast(obj)) return RpcTypeId_IValueArray; + if (dynamic_cast(obj)) return RpcTypeId_IValueList; + if (dynamic_cast(obj)) return RpcTypeId_IValueReadonlyList; + if (dynamic_cast(obj)) return RpcTypeId_IValueEnumerator; + if (dynamic_cast(obj)) return RpcTypeId_IValueEnumerable; + + return RpcTypeId_NotFound; + } + + void RpcLifecycleBase::TrackLocalObject(RpcObjectReference ref, IDescriptable* obj) + { +#define ERROR_MESSAGE_PREFIX L"vl::rpc_controller::RpcLifecycleBase::TrackLocalObject(RpcObjectReference, reflection::IDescriptable*)#" + auto index = localObjectProperties.Keys().IndexOf(ref.objectId); + CHECK_ERROR(index != -1, ERROR_MESSAGE_PREFIX L"Object not registered."); + auto props = localObjectProperties.Values().Get(index); + CHECK_ERROR(props->rawPtr == nullptr, ERROR_MESSAGE_PREFIX L"Object already tracked."); + + props->rawPtr = obj; + + if (auto observable = dynamic_cast(obj)) + { + auto handler = observable->ItemChanged.Add([this, ref](vint index, vint oldCount, vint newCount) + { + if (this->GetController()->GetItemChangedSuppressedFlag(ref)) + { + return; + } + auto eventResult = this->GetDispatcher()->BroadcastFromClient_ListEventOps(this->GetClientId())->OnItemChanged(ref, index, oldCount, newCount); + auto exceptions = serializer ? serializer->Deserialize(eventResult) : eventResult; + ReadEventException(UnboxRpcEventExceptionMap(exceptions)); + }); + props->eventHandler = handler; + } + + AttachLocalObjectEvents(ref, obj); + + if (auto descriptable = dynamic_cast(obj)) + { + Ptr tracker; + if (auto trackerObj = descriptable->GetInternalProperty(InternalProperty_LocalObjectTracker)) + { + tracker = trackerObj.Cast(); + CHECK_ERROR(tracker, ERROR_MESSAGE_PREFIX L"Invalid local object tracker type."); + if (tracker->GetClientId() != ref.clientId) + { + throw Exception(ERROR_MESSAGE_PREFIX L"Object already tracked by a different client."); + } + CHECK_ERROR(!tracker->IsTracked(), ERROR_MESSAGE_PREFIX L"Object already tracked."); + } + else + { + tracker = Ptr(new RpcLocalObjectTracker(this, ref)); + descriptable->SetInternalProperty(InternalProperty_LocalObjectTracker, tracker); + } + + tracker->Attach(this, ref); + } +#undef ERROR_MESSAGE_PREFIX + } + + void RpcLifecycleBase::UntrackLocalObject(RpcObjectReference ref, bool clearInternalProperty) + { +#define ERROR_MESSAGE_PREFIX L"vl::rpc_controller::RpcLifecycleBase::UntrackLocalObject(RpcObjectReference, bool)#" + auto index = localObjectProperties.Keys().IndexOf(ref.objectId); + CHECK_ERROR(index != -1, ERROR_MESSAGE_PREFIX L"Object not registered."); + auto props = localObjectProperties.Values().Get(index); + + if (props->eventHandler) + { + if (auto observable = dynamic_cast(props->rawPtr)) + { + observable->ItemChanged.Remove(props->eventHandler); + } + props->eventHandler = nullptr; + } + + auto rawPtr = props->rawPtr; + props->rawPtr = nullptr; + + if (clearInternalProperty && rawPtr) + { + if (auto descriptable = dynamic_cast(rawPtr)) + { + if (auto trackerObj = descriptable->GetInternalProperty(InternalProperty_LocalObjectTracker)) + { + auto tracker = trackerObj.Cast(); + CHECK_ERROR(tracker, ERROR_MESSAGE_PREFIX L"Invalid local object tracker type."); + tracker->Detach(); + descriptable->SetInternalProperty(InternalProperty_LocalObjectTracker, nullptr); + } + } + } + + props->ownedPtr = nullptr; +#undef ERROR_MESSAGE_PREFIX + } + + void RpcLifecycleBase::RemoveLocalObject(RpcObjectReference ref, bool clearInternalProperty) + { + if (localObjectProperties.Keys().Contains(ref.objectId)) + { + UntrackLocalObject(ref, clearInternalProperty); + localObjectProperties.Remove(ref.objectId); + } + } + + bool RpcLifecycleBase::IsTracked(vint objectId)const + { + auto index = localObjectProperties.Keys().IndexOf(objectId); + return index != -1 && localObjectProperties.Values().Get(index)->rawPtr != nullptr; + } + + void RpcLifecycleBase::TrackWrapper(DescriptableObject* root, IRpcWrapperBase* proxy, RpcObjectReference ref) + { +#define ERROR_MESSAGE_PREFIX L"vl::rpc_controller::RpcLifecycleBase::TrackWrapper(reflection::DescriptableObject*, IRpcWrapperBase*, RpcObjectReference)#" + CHECK_ERROR(root != nullptr, ERROR_MESSAGE_PREFIX L"Wrapper does not implement DescriptableObject."); + CHECK_ERROR(proxy != nullptr, ERROR_MESSAGE_PREFIX L"Wrapper is null."); +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + root = root->SafeGetAggregationRoot(); +#endif + CHECK_ERROR(root->GetInternalProperty(InternalProperty_WrapperTracker) == nullptr, ERROR_MESSAGE_PREFIX L"Wrapper already tracked."); + + auto tracker = Ptr(new RpcWrapperTracker(this, ref)); + root->SetInternalProperty(InternalProperty_WrapperTracker, tracker); + + RpcWrapperProperties properties; + properties.root = root; + properties.proxy = proxy; + CHECK_ERROR(!wrapperProperties.Keys().Contains(ref), ERROR_MESSAGE_PREFIX L"Reference already tracked."); + wrapperProperties.Set(ref, properties); +#undef ERROR_MESSAGE_PREFIX + } + + void RpcLifecycleBase::UntrackWrapper(RpcObjectReference ref) + { + wrapperProperties.Remove(ref); + } + + bool RpcLifecycleBase::TryGetTrackedWrapperRef(DescriptableObject* obj, RpcObjectReference& ref)const + { +#define ERROR_MESSAGE_PREFIX L"vl::rpc_controller::RpcLifecycleBase::TryGetTrackedWrapperRef(reflection::DescriptableObject*, RpcObjectReference&)const#" + auto wrapperRoot = obj; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + if (wrapperRoot) + { + wrapperRoot = wrapperRoot->SafeGetAggregationRoot(); + } +#endif + + if (wrapperRoot) + { + if (auto trackerObj = wrapperRoot->GetInternalProperty(InternalProperty_WrapperTracker)) + { + auto tracker = trackerObj.Cast(); + CHECK_ERROR(tracker, ERROR_MESSAGE_PREFIX L"Invalid internal property type."); + CHECK_ERROR(tracker->GetLifecycle() == this, ERROR_MESSAGE_PREFIX L"Wrapper registered to a different lifecycle."); + ref = tracker->GetRef(); + return true; + } + } + return false; +#undef ERROR_MESSAGE_PREFIX + } + + IRpcWrapperBase* RpcLifecycleBase::GetTrackedWrapper(RpcObjectReference ref)const + { + if (auto index = wrapperProperties.Keys().IndexOf(ref); index != -1) + { + return wrapperProperties.Values()[index].proxy; + } + return nullptr; + } + + Ptr RpcLifecycleBase::CreateCallerProxy(RpcObjectReference ref, IRpcSerializer* serializer) + { +#define ERROR_MESSAGE_PREFIX L"vl::rpc_controller::RpcLifecycleBase::CreateCallerProxy(RpcObjectReference)#" + IRpcLifecycle* lc = this; + Ptr wrapper; + + switch (ref.typeId) + { + case RpcTypeId_IValueEnumerable: + wrapper = Ptr(new RpcByrefEnumerable(lc, ref, serializer)); + break; + case RpcTypeId_IValueEnumerator: + wrapper = Ptr(new RpcByrefEnumerator(lc, ref, serializer)); + break; + case RpcTypeId_IValueArray: + wrapper = Ptr(new RpcByrefArray(lc, ref, serializer)); + break; + case RpcTypeId_IValueReadonlyList: + wrapper = Ptr(new RpcByrefReadonlyList(lc, ref, serializer)); + break; + case RpcTypeId_IValueList: + wrapper = Ptr(new RpcByrefList(lc, ref, serializer)); + break; + case RpcTypeId_IValueObservableList: + wrapper = Ptr(new RpcByrefObservableList(lc, ref, serializer)); + break; + case RpcTypeId_IValueDictionary: + wrapper = Ptr(new RpcByrefDictionary(lc, ref, serializer)); + break; + default: + CHECK_ERROR(universalWrapperFactory, ERROR_MESSAGE_PREFIX L"No wrapper factory registered."); + wrapper = universalWrapperFactory(ref, this); + CHECK_ERROR(wrapper, ERROR_MESSAGE_PREFIX L"Wrapper factory returned null."); + break; + } + + auto descriptable = dynamic_cast(wrapper.Obj()); + CHECK_ERROR(descriptable, ERROR_MESSAGE_PREFIX L"Wrapper does not implement IDescriptable."); + auto root = dynamic_cast(descriptable); + TrackWrapper(root, wrapper.Obj(), ref); + return Ptr(descriptable); +#undef ERROR_MESSAGE_PREFIX + } + +/*********************************************************************** +* RpcLifecycleBase (IRpcLifecycle) +***********************************************************************/ + + void RpcLifecycleBase::Finalize() + { + DisconnectWrappersForFinalize(); + while (localObjectProperties.Count() > 0) + { + auto props = localObjectProperties.Values().Get(localObjectProperties.Count() - 1); + RemoveLocalObject(props->ref, true); + } + controller.Finalize(); + } + + vint RpcLifecycleBase::GetClientId() + { + return clientId; + } + + IRpcDispatcher* RpcLifecycleBase::GetDispatcher() + { +#define ERROR_MESSAGE_PREFIX L"vl::rpc_controller::RpcLifecycleBase::GetDispatcher()#" + CHECK_ERROR(dispatcher, ERROR_MESSAGE_PREFIX L"No dispatcher registered."); + return dispatcher; +#undef ERROR_MESSAGE_PREFIX + } + + RpcControllerDefault* RpcLifecycleBase::GetController() + { + return &controller; + } + + void RpcLifecycleBase::LocalObjectHold(RpcObjectReference ref, vint remoteClientId) + { +#define ERROR_MESSAGE_PREFIX L"vl::rpc_controller::RpcLifecycleBase::LocalObjectHold(RpcObjectReference, vint)#" + CHECK_ERROR(ref.clientId == clientId, ERROR_MESSAGE_PREFIX L"Ref is not local."); + auto index = localObjectProperties.Keys().IndexOf(ref.objectId); + CHECK_ERROR(index != -1, ERROR_MESSAGE_PREFIX L"Object not registered."); + auto props = localObjectProperties.Values().Get(index); + if (!props->interestedClients.Contains(remoteClientId)) + { + props->interestedClients.Add(remoteClientId); + } +#undef ERROR_MESSAGE_PREFIX + } + + void RpcLifecycleBase::LocalObjectUnhold(RpcObjectReference ref, vint remoteClientId) + { +#define ERROR_MESSAGE_PREFIX L"vl::rpc_controller::RpcLifecycleBase::LocalObjectUnhold(RpcObjectReference, vint)#" + CHECK_ERROR(ref.clientId == clientId, ERROR_MESSAGE_PREFIX L"Ref is not local."); + auto index = localObjectProperties.Keys().IndexOf(ref.objectId); + CHECK_ERROR(index != -1, ERROR_MESSAGE_PREFIX L"Object not registered."); + auto props = localObjectProperties.Values().Get(index); + CHECK_ERROR(props->interestedClients.Contains(remoteClientId), ERROR_MESSAGE_PREFIX L"Client does not hold this object."); + props->interestedClients.Remove(remoteClientId); + if (props->interestedClients.Count() == 0) + { + RemoveLocalObject(ref, true); + } +#undef ERROR_MESSAGE_PREFIX + } + + void RpcLifecycleBase::RegisterService(const WString& fullName, Ptr service) + { + auto index = idMap.Keys().IndexOf(fullName); + if (index == -1) + { + CHECK_FAIL(L"Unknown RPC type id."); + } + controller.GetObjectOps()->RegisterService(idMap.Values()[index], service); + } + + Ptr RpcLifecycleBase::RequestService(const WString& fullName) + { + if (idMap.Keys().Contains(fullName)) + { + auto typeId = idMap.Get(fullName); + auto ref = GetDispatcher()->RequestService(typeId); + return RefToPtr(ref); + } + + return nullptr; + } + + Ptr RpcLifecycleBase::RefToPtr(RpcObjectReference ref) + { + return RefToPtr(ref, serializer.Obj()); + } + + Ptr RpcLifecycleBase::RefToPtr(RpcObjectReference ref, IRpcSerializer* serializer) + { +#define ERROR_MESSAGE_PREFIX L"vl::rpc_controller::RpcLifecycleBase::RefToPtr(RpcObjectReference)#" + if (ref.clientId == clientId) + { + auto index = localObjectProperties.Keys().IndexOf(ref.objectId); + CHECK_ERROR(index != -1, ERROR_MESSAGE_PREFIX L"Object not registered."); + auto props = localObjectProperties.Values().Get(index); + CHECK_ERROR(props->rawPtr != nullptr, ERROR_MESSAGE_PREFIX L"Object not tracked."); + return Ptr(props->rawPtr); + } + else + { + if (auto index = wrapperProperties.Keys().IndexOf(ref); index != -1) + { + auto proxy = wrapperProperties.Values()[index].proxy; + auto descriptable = dynamic_cast(proxy); + CHECK_ERROR(descriptable, ERROR_MESSAGE_PREFIX L"Wrapper does not implement IDescriptable."); + return Ptr(descriptable); + } + + return CreateCallerProxy(ref, serializer); + } +#undef ERROR_MESSAGE_PREFIX + } + + RpcObjectReference RpcLifecycleBase::PtrToRef(Ptr obj) + { +#define ERROR_MESSAGE_PREFIX L"vl::rpc_controller::RpcLifecycleBase::PtrToRef(Ptr)#" + CHECK_ERROR(obj, ERROR_MESSAGE_PREFIX L"A value is required."); + + if (auto descObj = dynamic_cast(obj.Obj())) + { + RpcObjectReference wrapperRef; + if (TryGetTrackedWrapperRef(descObj, wrapperRef)) + { + return wrapperRef; + } + + if (IsRpcWrapperObject(descObj)) + { + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Wrapper tracker lookup unexpectedly failed."); + } + } + + if (auto descObj = dynamic_cast(obj.Obj())) + { + if (auto trackerObj = descObj->GetInternalProperty(InternalProperty_LocalObjectTracker)) + { + auto tracker = trackerObj.Cast(); + CHECK_ERROR(tracker, ERROR_MESSAGE_PREFIX L"Invalid internal property type."); + if (tracker->GetClientId() != clientId) + { + throw Exception(ERROR_MESSAGE_PREFIX L"Object registered to a different lifecycle."); + } + if (tracker->IsTracked()) + { + CHECK_ERROR(tracker->GetLifecycle() == this, ERROR_MESSAGE_PREFIX L"Object tracker registered to an invalid lifecycle instance."); + return tracker->GetRef(); + } + } + } + + auto typeId = DecideTypeId(obj.Obj()); + CHECK_ERROR(typeId != RpcTypeId_NotFound, ERROR_MESSAGE_PREFIX L"DecideTypeId returned RpcTypeId_NotFound (unknown type)."); + auto ref = RpcObjectReference{ clientId, ++nextObjectId, typeId }; + CHECK_ERROR(!localObjectProperties.Keys().Contains(ref.objectId), ERROR_MESSAGE_PREFIX L"Object ID already registered."); + auto props = Ptr(new RpcLocalObjectProperties); + props->ref = ref; + props->ownedPtr = obj; + localObjectProperties.Set(ref.objectId, props); + + TrackLocalObject(ref, obj.Obj()); + return ref; +#undef ERROR_MESSAGE_PREFIX + } + } +} + + +/*********************************************************************** +.\RPC\WFLIBRARYRPCWRAPPERS.CPP +***********************************************************************/ + +namespace vl +{ + using namespace collections; + + namespace rpc_controller + { + using namespace reflection; + using namespace reflection::description; + + namespace + { + bool IsRpcObjectReferenceValue(const Value& value) + { + return value.GetValueType() == Value::BoxedValue && value.GetBoxedValue().Cast>(); + } + + RpcObjectReference GetRpcObjectReference(const Value& value) + { + auto boxed = value.GetBoxedValue().Cast>(); + CHECK_ERROR(boxed, L"RpcObjectReference is expected."); + return boxed->value; + } + + bool IsNullRpcObjectReference(RpcObjectReference ref) + { + return ref.clientId == RpcClientId_Invalid + && ref.objectId == RpcObjectId_Invalid + && ref.typeId == RpcTypeId_NotFound; + } + + IRpcWrapperBase* CastRpcWrapperBase(IDescriptable* obj) + { + if (!obj) return nullptr; + if (auto wrapper = dynamic_cast(obj)) return wrapper; + return obj->SafeAggregationCast(); + } + + template + TInterface* CastRpcInterface(IDescriptable* obj) + { + if (!obj) return nullptr; + if (auto proxy = dynamic_cast(obj)) return proxy; + return obj->SafeAggregationCast(); + } + + template + bool ContainsKey(const Dictionary& xs, const K& key) + { + return xs.Keys().Contains(key); + } + + template + Ptr CreateTrackedProxy(IRpcLifecycle* lc, RpcObjectReference ref, IRpcSerializer* serializer) + { + auto obj = [&]() + { + if (auto lifecycle = dynamic_cast(lc)) + { + return lifecycle->RefToPtr(ref, serializer); + } + return lc->RefToPtr(ref); + }(); + CHECK_ERROR(obj, L"RPC proxy creation returned null."); + if (auto wrapper = Ptr(CastRpcWrapperBase(obj.Obj()))) + { + auto proxy = Ptr(CastRpcInterface(obj.Obj())); + CHECK_ERROR(proxy, L"RPC proxy creation returned an unexpected type."); + return proxy; + } + return Ptr(new TWrapper(lc, ref, serializer)); + } + + void SetRemoteObjectHold(IRpcLifecycle* lc, RpcObjectReference ref, bool hold) + { + lc->GetDispatcher()->SendToClient_ObjectOps(ref.clientId)->ObjectHold(ref, lc->GetClientId(), hold); + } + + IRpcListOps* GetRemoteListOps(IRpcLifecycle* lc, RpcObjectReference ref) + { + return lc->GetDispatcher()->SendToClient_ListOps(ref.clientId); + } + + Value SerializeValue(IRpcSerializer* serializer, const Value& value) + { + return serializer ? serializer->Serialize(value) : value; + } + + Value DeserializeValue(IRpcSerializer* serializer, const Value& value) + { + return serializer ? serializer->Deserialize(value) : value; + } + + extern Value RpcBoxValueByref(const Value& trivial, IRpcLifecycle* lc); + extern Value RpcUnboxValueByref(const Value& serializable, IRpcLifecycle* lc); + extern Value RpcCopyValueByvalInternal(const Value& trivial, Dictionary& visited); + extern Value RpcBoxValueByvalInternal(const Value& trivial, IRpcLifecycle* lc, Dictionary& visited); + extern Value RpcUnboxValueByvalInternal(const Value& serializable, IRpcLifecycle* lc, Dictionary& visited); + + } + +/*********************************************************************** +* RpcByrefEnumerator +***********************************************************************/ + + RpcByrefEnumerator::RpcByrefEnumerator(IRpcLifecycle* lc, RpcObjectReference enumeratorRef, IRpcSerializer* _serializer) + : lifecycle(lc) + , serializer(_serializer) + , ref(enumeratorRef) + { + if (!lifecycle) CHECK_FAIL(L"Invalid IRpcLifecycle."); + SetRemoteObjectHold(lifecycle, ref, true); + } + + RpcByrefEnumerator::~RpcByrefEnumerator() + { + if (lifecycle) SetRemoteObjectHold(lifecycle, ref, false); + } + + void RpcByrefEnumerator::DisconnectFromLifecycle() + { + lifecycle = nullptr; + } + + Value RpcByrefEnumerator::GetCurrent() + { + return RpcUnboxValueByref(DeserializeValue(serializer, GetRemoteListOps(lifecycle, ref)->EnumGetCurrent(ref)), lifecycle); + } + + vint RpcByrefEnumerator::GetIndex() + { + return index; + } + + bool RpcByrefEnumerator::Next() + { + if (GetRemoteListOps(lifecycle, ref)->EnumNext(ref)) + { + index++; + return true; + } + return false; + } + + RpcByrefEnumerable::RpcByrefEnumerable(IRpcLifecycle* lc, RpcObjectReference enumerableRef, IRpcSerializer* _serializer) + : lifecycle(lc) + , serializer(_serializer) + , ref(enumerableRef) + { + if (!lifecycle) CHECK_FAIL(L"Invalid IRpcLifecycle."); + SetRemoteObjectHold(lifecycle, ref, true); + } + + RpcByrefEnumerable::~RpcByrefEnumerable() + { + if (lifecycle) SetRemoteObjectHold(lifecycle, ref, false); + } + + void RpcByrefEnumerable::DisconnectFromLifecycle() + { + lifecycle = nullptr; + } + + Ptr RpcByrefEnumerable::CreateEnumerator() + { + return CreateTrackedProxy(lifecycle, GetRemoteListOps(lifecycle, ref)->EnumCreate(ref), serializer); + } + +/*********************************************************************** +* RpcByrefReadonlyList +***********************************************************************/ + + RpcByrefReadonlyList::RpcByrefReadonlyList(IRpcLifecycle* lc, RpcObjectReference listRef, IRpcSerializer* _serializer) + : lifecycle(lc) + , serializer(_serializer) + , ref(listRef) + { + if (!lifecycle) CHECK_FAIL(L"Invalid IRpcLifecycle."); + SetRemoteObjectHold(lifecycle, ref, true); + } + + RpcByrefReadonlyList::~RpcByrefReadonlyList() + { + if (lifecycle) SetRemoteObjectHold(lifecycle, ref, false); + } + + void RpcByrefReadonlyList::DisconnectFromLifecycle() + { + lifecycle = nullptr; + } + + Ptr RpcByrefReadonlyList::CreateEnumerator() + { + return CreateTrackedProxy(lifecycle, GetRemoteListOps(lifecycle, ref)->EnumCreate(ref), serializer); + } + + vint RpcByrefReadonlyList::GetCount() + { + return GetRemoteListOps(lifecycle, ref)->ListGetCount(ref); + } + + Value RpcByrefReadonlyList::Get(vint index) + { + return RpcUnboxValueByref(DeserializeValue(serializer, GetRemoteListOps(lifecycle, ref)->ListGet(ref, index)), lifecycle); + } + + bool RpcByrefReadonlyList::Contains(const Value& value) + { + return GetRemoteListOps(lifecycle, ref)->ListContains(ref, SerializeValue(serializer, RpcBoxValueByref(value, lifecycle))); + } + + vint RpcByrefReadonlyList::IndexOf(const Value& value) + { + return GetRemoteListOps(lifecycle, ref)->ListIndexOf(ref, SerializeValue(serializer, RpcBoxValueByref(value, lifecycle))); + } + +/*********************************************************************** +* RpcByrefList +***********************************************************************/ + + RpcByrefList::RpcByrefList(IRpcLifecycle* lc, RpcObjectReference listRef, IRpcSerializer* _serializer) + : RpcByrefReadonlyList(lc, listRef, _serializer) + { + } + + RpcByrefList::~RpcByrefList() + { + } + + Ptr RpcByrefList::CreateEnumerator() + { + return RpcByrefReadonlyList::CreateEnumerator(); + } + + vint RpcByrefList::GetCount() + { + return RpcByrefReadonlyList::GetCount(); + } + + Value RpcByrefList::Get(vint index) + { + return RpcByrefReadonlyList::Get(index); + } + + bool RpcByrefList::Contains(const Value& value) + { + return RpcByrefReadonlyList::Contains(value); + } + + vint RpcByrefList::IndexOf(const Value& value) + { + return RpcByrefReadonlyList::IndexOf(value); + } + + void RpcByrefList::Set(vint index, const Value& value) + { + GetRemoteListOps(lifecycle, ref)->ListSet(ref, index, SerializeValue(serializer, RpcBoxValueByref(value, lifecycle))); + } + + vint RpcByrefList::Add(const Value& value) + { + return GetRemoteListOps(lifecycle, ref)->ListAdd(ref, SerializeValue(serializer, RpcBoxValueByref(value, lifecycle))); + } + + vint RpcByrefList::Insert(vint index, const Value& value) + { + return GetRemoteListOps(lifecycle, ref)->ListInsert(ref, index, SerializeValue(serializer, RpcBoxValueByref(value, lifecycle))); + } + + bool RpcByrefList::Remove(const Value& value) + { + auto index = IndexOf(value); + return index == -1 ? false : GetRemoteListOps(lifecycle, ref)->ListRemoveAt(ref, index); + } + + bool RpcByrefList::RemoveAt(vint index) + { + return GetRemoteListOps(lifecycle, ref)->ListRemoveAt(ref, index); + } + + void RpcByrefList::Clear() + { + GetRemoteListOps(lifecycle, ref)->ListClear(ref); + } + +/*********************************************************************** +* RpcByrefArray +***********************************************************************/ + + RpcByrefArray::RpcByrefArray(IRpcLifecycle* lc, RpcObjectReference arrayRef, IRpcSerializer* _serializer) + : lifecycle(lc) + , serializer(_serializer) + , ref(arrayRef) + { + if (!lifecycle) CHECK_FAIL(L"Invalid IRpcLifecycle."); + SetRemoteObjectHold(lifecycle, ref, true); + } + + RpcByrefArray::~RpcByrefArray() + { + if (lifecycle) SetRemoteObjectHold(lifecycle, ref, false); + } + + void RpcByrefArray::DisconnectFromLifecycle() + { + lifecycle = nullptr; + } + + Ptr RpcByrefArray::CreateEnumerator() + { + return CreateTrackedProxy(lifecycle, GetRemoteListOps(lifecycle, ref)->EnumCreate(ref), serializer); + } + + vint RpcByrefArray::GetCount() + { + return GetRemoteListOps(lifecycle, ref)->ListGetCount(ref); + } + + Value RpcByrefArray::Get(vint index) + { + return RpcUnboxValueByref(DeserializeValue(serializer, GetRemoteListOps(lifecycle, ref)->ListGet(ref, index)), lifecycle); + } + + bool RpcByrefArray::Contains(const Value& value) + { + return GetRemoteListOps(lifecycle, ref)->ListContains(ref, SerializeValue(serializer, RpcBoxValueByref(value, lifecycle))); + } + + vint RpcByrefArray::IndexOf(const Value& value) + { + return GetRemoteListOps(lifecycle, ref)->ListIndexOf(ref, SerializeValue(serializer, RpcBoxValueByref(value, lifecycle))); + } + + void RpcByrefArray::Set(vint index, const Value& value) + { + GetRemoteListOps(lifecycle, ref)->ListSet(ref, index, SerializeValue(serializer, RpcBoxValueByref(value, lifecycle))); + } + + void RpcByrefArray::Resize(vint size) + { + auto count = GetCount(); + if (size > count) CHECK_FAIL(L"RpcByrefArray::Resize cannot grow."); + for (vint i = count - 1; i >= size; i--) + { + GetRemoteListOps(lifecycle, ref)->ListRemoveAt(ref, i); + } + } + +/*********************************************************************** +* RpcByrefObservableList +***********************************************************************/ + + RpcByrefObservableList::RpcByrefObservableList(IRpcLifecycle* lc, RpcObjectReference listRef, IRpcSerializer* _serializer) + : lifecycle(lc) + , serializer(_serializer) + , ref(listRef) + { + if (!lifecycle) CHECK_FAIL(L"Invalid IRpcLifecycle."); + SetRemoteObjectHold(lifecycle, ref, true); + } + + RpcByrefObservableList::~RpcByrefObservableList() + { + if (lifecycle) SetRemoteObjectHold(lifecycle, ref, false); + } + + void RpcByrefObservableList::DisconnectFromLifecycle() + { + lifecycle = nullptr; + } + + Ptr RpcByrefObservableList::CreateEnumerator() + { + return CreateTrackedProxy(lifecycle, GetRemoteListOps(lifecycle, ref)->EnumCreate(ref), serializer); + } + + vint RpcByrefObservableList::GetCount() + { + return GetRemoteListOps(lifecycle, ref)->ListGetCount(ref); + } + + Value RpcByrefObservableList::Get(vint index) + { + return RpcUnboxValueByref(DeserializeValue(serializer, GetRemoteListOps(lifecycle, ref)->ListGet(ref, index)), lifecycle); + } + + bool RpcByrefObservableList::Contains(const Value& value) + { + return GetRemoteListOps(lifecycle, ref)->ListContains(ref, SerializeValue(serializer, RpcBoxValueByref(value, lifecycle))); + } + + vint RpcByrefObservableList::IndexOf(const Value& value) + { + return GetRemoteListOps(lifecycle, ref)->ListIndexOf(ref, SerializeValue(serializer, RpcBoxValueByref(value, lifecycle))); + } + + void RpcByrefObservableList::Set(vint index, const Value& value) + { + GetRemoteListOps(lifecycle, ref)->ListSet(ref, index, SerializeValue(serializer, RpcBoxValueByref(value, lifecycle))); + } + + vint RpcByrefObservableList::Add(const Value& value) + { + return GetRemoteListOps(lifecycle, ref)->ListAdd(ref, SerializeValue(serializer, RpcBoxValueByref(value, lifecycle))); + } + + vint RpcByrefObservableList::Insert(vint index, const Value& value) + { + return GetRemoteListOps(lifecycle, ref)->ListInsert(ref, index, SerializeValue(serializer, RpcBoxValueByref(value, lifecycle))); + } + + bool RpcByrefObservableList::Remove(const Value& value) + { + auto index = IndexOf(value); + return index == -1 ? false : GetRemoteListOps(lifecycle, ref)->ListRemoveAt(ref, index); + } + + bool RpcByrefObservableList::RemoveAt(vint index) + { + return GetRemoteListOps(lifecycle, ref)->ListRemoveAt(ref, index); + } + + void RpcByrefObservableList::Clear() + { + GetRemoteListOps(lifecycle, ref)->ListClear(ref); + } + +/*********************************************************************** +* RpcByrefDictionary +***********************************************************************/ + + RpcByrefDictionary::RpcByrefDictionary(IRpcLifecycle* lc, RpcObjectReference dictRef, IRpcSerializer* _serializer) + : lifecycle(lc) + , serializer(_serializer) + , ref(dictRef) + { + if (!lifecycle) CHECK_FAIL(L"Invalid IRpcLifecycle."); + SetRemoteObjectHold(lifecycle, ref, true); + } + + RpcByrefDictionary::~RpcByrefDictionary() + { + if (lifecycle) SetRemoteObjectHold(lifecycle, ref, false); + } + + void RpcByrefDictionary::DisconnectFromLifecycle() + { + lifecycle = nullptr; + } + + Ptr RpcByrefDictionary::GetKeys() + { + return CreateTrackedProxy(lifecycle, GetRemoteListOps(lifecycle, ref)->DictGetKeys(ref), serializer); + } + + Ptr RpcByrefDictionary::GetValues() + { + return CreateTrackedProxy(lifecycle, GetRemoteListOps(lifecycle, ref)->DictGetValues(ref), serializer); + } + + vint RpcByrefDictionary::GetCount() + { + return GetRemoteListOps(lifecycle, ref)->DictGetCount(ref); + } + + Value RpcByrefDictionary::Get(const Value& key) + { + auto serializedKey = SerializeValue(serializer, RpcBoxValueByref(key, lifecycle)); + auto serializedValue = GetRemoteListOps(lifecycle, ref)->DictGet(ref, serializedKey); + return RpcUnboxValueByref(DeserializeValue(serializer, serializedValue), lifecycle); + } + + void RpcByrefDictionary::Set(const Value& key, const Value& value) + { + auto serializedKey = SerializeValue(serializer, RpcBoxValueByref(key, lifecycle)); + auto serializedValue = SerializeValue(serializer, RpcBoxValueByref(value, lifecycle)); + GetRemoteListOps(lifecycle, ref)->DictSet(ref, serializedKey, serializedValue); + } + + bool RpcByrefDictionary::Remove(const Value& key) + { + return GetRemoteListOps(lifecycle, ref)->DictRemove(ref, SerializeValue(serializer, RpcBoxValueByref(key, lifecycle))); + } + + void RpcByrefDictionary::Clear() + { + GetRemoteListOps(lifecycle, ref)->DictClear(ref); + } + +/*********************************************************************** +* RpcCalleeListOps +***********************************************************************/ + + RpcCalleeListOps::RpcCalleeListOps(IRpcLifecycle* lc, IRpcSerializer* _serializer) + : lifecycle(lc) + , serializer(_serializer) + { + if (!lifecycle) CHECK_FAIL(L"Invalid IRpcLifecycle."); + } + + RpcObjectReference RpcCalleeListOps::EnumCreate(RpcObjectReference ref) + { + auto obj = lifecycle->RefToPtr(ref); + Ptr enumerator; + if (auto xs = Ptr(obj.Obj()->SafeAggregationCast())) + { + enumerator = xs->CreateEnumerator(); + } + else + { + CHECK_FAIL(L"RpcCalleeListOps::EnumCreate cannot find the target collection."); + return {}; + } + + return lifecycle->PtrToRef(enumerator); + } + + bool RpcCalleeListOps::EnumNext(RpcObjectReference enumerator) + { + auto obj = lifecycle->RefToPtr(enumerator); + auto e = Ptr(obj.Obj()->SafeAggregationCast()); + CHECK_ERROR(e, L"RpcCalleeListOps::EnumNext cannot find the target enumerator."); + return e->Next(); + } + + Value RpcCalleeListOps::EnumGetCurrent(RpcObjectReference enumerator) + { + auto obj = lifecycle->RefToPtr(enumerator); + auto e = Ptr(obj.Obj()->SafeAggregationCast()); + CHECK_ERROR(e, L"RpcCalleeListOps::EnumGetCurrent cannot find the target enumerator."); + return SerializeValue(serializer, RpcBoxValueByref(e->GetCurrent(), lifecycle)); + } + + vint RpcCalleeListOps::ListGetCount(RpcObjectReference ref) + { + auto obj = lifecycle->RefToPtr(ref); + if (auto roList = Ptr(obj.Obj()->SafeAggregationCast())) + return roList->GetCount(); + CHECK_FAIL(L"RpcCalleeListOps::ListGetCount cannot find the target list."); + return 0; + } + + Value RpcCalleeListOps::ListGet(RpcObjectReference ref, vint index) + { + auto obj = lifecycle->RefToPtr(ref); + if (auto roList = Ptr(obj.Obj()->SafeAggregationCast())) + return SerializeValue(serializer, RpcBoxValueByref(roList->Get(index), lifecycle)); + CHECK_FAIL(L"RpcCalleeListOps::ListGet cannot find the target list."); + return {}; + } + + void RpcCalleeListOps::ListSet(RpcObjectReference ref, vint index, const Value& value) + { + auto trivial = RpcUnboxValueByref(DeserializeValue(serializer, value), lifecycle); + auto obj = lifecycle->RefToPtr(ref); + if (auto array = Ptr(obj.Obj()->SafeAggregationCast())) + { + array->Set(index, trivial); + return; + } + if (auto list = Ptr(obj.Obj()->SafeAggregationCast())) + { + list->Set(index, trivial); + return; + } + CHECK_FAIL(L"RpcCalleeListOps::ListSet cannot find the target list."); + } + + vint RpcCalleeListOps::ListAdd(RpcObjectReference ref, const Value& value) + { + auto trivial = RpcUnboxValueByref(DeserializeValue(serializer, value), lifecycle); + auto obj = lifecycle->RefToPtr(ref); + if (auto list = Ptr(obj.Obj()->SafeAggregationCast())) + return list->Add(trivial); + CHECK_FAIL(L"RpcCalleeListOps::ListAdd cannot find a writable list."); + return -1; + } + + vint RpcCalleeListOps::ListInsert(RpcObjectReference ref, vint index, const Value& value) + { + auto trivial = RpcUnboxValueByref(DeserializeValue(serializer, value), lifecycle); + auto obj = lifecycle->RefToPtr(ref); + if (auto list = Ptr(obj.Obj()->SafeAggregationCast())) + return list->Insert(index, trivial); + CHECK_FAIL(L"RpcCalleeListOps::ListInsert cannot find a writable list."); + return -1; + } + + bool RpcCalleeListOps::ListRemoveAt(RpcObjectReference ref, vint index) + { + auto obj = lifecycle->RefToPtr(ref); + if (auto array = Ptr(obj.Obj()->SafeAggregationCast())) + { + CHECK_ERROR(index == array->GetCount() - 1, L"RpcCalleeListOps::ListRemoveAt only supports tail removal for arrays."); + array->Resize(index); + return true; + } + if (auto list = Ptr(obj.Obj()->SafeAggregationCast())) + return list->RemoveAt(index); + CHECK_FAIL(L"RpcCalleeListOps::ListRemoveAt cannot find the target list."); + return false; + } + + void RpcCalleeListOps::ListClear(RpcObjectReference ref) + { + auto obj = lifecycle->RefToPtr(ref); + if (auto array = Ptr(obj.Obj()->SafeAggregationCast())) + { + array->Resize(0); + return; + } + if (auto list = Ptr(obj.Obj()->SafeAggregationCast())) + { + list->Clear(); + return; + } + CHECK_FAIL(L"RpcCalleeListOps::ListClear cannot find the target list."); + } + + bool RpcCalleeListOps::ListContains(RpcObjectReference ref, const Value& value) + { + auto trivial = RpcUnboxValueByref(DeserializeValue(serializer, value), lifecycle); + auto obj = lifecycle->RefToPtr(ref); + if (auto roList = Ptr(obj.Obj()->SafeAggregationCast())) + return roList->Contains(trivial); + CHECK_FAIL(L"RpcCalleeListOps::ListContains cannot find the target list."); + return false; + } + + vint RpcCalleeListOps::ListIndexOf(RpcObjectReference ref, const Value& value) + { + auto trivial = RpcUnboxValueByref(DeserializeValue(serializer, value), lifecycle); + auto obj = lifecycle->RefToPtr(ref); + if (auto roList = Ptr(obj.Obj()->SafeAggregationCast())) + return roList->IndexOf(trivial); + CHECK_FAIL(L"RpcCalleeListOps::ListIndexOf cannot find the target list."); + return -1; + } + + vint RpcCalleeListOps::DictGetCount(RpcObjectReference ref) + { + auto obj = lifecycle->RefToPtr(ref); + auto dict = Ptr(obj.Obj()->SafeAggregationCast()); + CHECK_ERROR(dict, L"RpcCalleeListOps::DictGetCount cannot find the target dictionary."); + return dict->GetCount(); + } + + Value RpcCalleeListOps::DictGet(RpcObjectReference ref, const Value& key) + { + auto obj = lifecycle->RefToPtr(ref); + auto dict = Ptr(obj.Obj()->SafeAggregationCast()); + CHECK_ERROR(dict, L"RpcCalleeListOps::DictGet cannot find the target dictionary."); + auto trivialKey = RpcUnboxValueByref(DeserializeValue(serializer, key), lifecycle); + return SerializeValue(serializer, RpcBoxValueByref(dict->Get(trivialKey), lifecycle)); + } + + void RpcCalleeListOps::DictSet(RpcObjectReference ref, const Value& key, const Value& value) + { + auto obj = lifecycle->RefToPtr(ref); + auto dict = Ptr(obj.Obj()->SafeAggregationCast()); + CHECK_ERROR(dict, L"RpcCalleeListOps::DictSet cannot find the target dictionary."); + auto trivialKey = RpcUnboxValueByref(DeserializeValue(serializer, key), lifecycle); + auto trivialValue = RpcUnboxValueByref(DeserializeValue(serializer, value), lifecycle); + dict->Set(trivialKey, trivialValue); + } + + bool RpcCalleeListOps::DictRemove(RpcObjectReference ref, const Value& key) + { + auto obj = lifecycle->RefToPtr(ref); + auto dict = Ptr(obj.Obj()->SafeAggregationCast()); + CHECK_ERROR(dict, L"RpcCalleeListOps::DictRemove cannot find the target dictionary."); + return dict->Remove(RpcUnboxValueByref(DeserializeValue(serializer, key), lifecycle)); + } + + void RpcCalleeListOps::DictClear(RpcObjectReference ref) + { + auto obj = lifecycle->RefToPtr(ref); + auto dict = Ptr(obj.Obj()->SafeAggregationCast()); + CHECK_ERROR(dict, L"RpcCalleeListOps::DictClear cannot find the target dictionary."); + dict->Clear(); + } + + bool RpcCalleeListOps::DictContainsKey(RpcObjectReference ref, const Value& key) + { + auto obj = lifecycle->RefToPtr(ref); + auto dict = Ptr(obj.Obj()->SafeAggregationCast()); + CHECK_ERROR(dict, L"RpcCalleeListOps::DictContainsKey cannot find the target dictionary."); + return dict->GetKeys()->Contains(RpcUnboxValueByref(DeserializeValue(serializer, key), lifecycle)); + } + + RpcObjectReference RpcCalleeListOps::DictGetKeys(RpcObjectReference ref) + { + auto obj = lifecycle->RefToPtr(ref); + auto dict = Ptr(obj.Obj()->SafeAggregationCast()); + CHECK_ERROR(dict, L"RpcCalleeListOps::DictGetKeys cannot find the target dictionary."); + return lifecycle->PtrToRef(dict->GetKeys()); + } + + RpcObjectReference RpcCalleeListOps::DictGetValues(RpcObjectReference ref) + { + auto obj = lifecycle->RefToPtr(ref); + auto dict = Ptr(obj.Obj()->SafeAggregationCast()); + CHECK_ERROR(dict, L"RpcCalleeListOps::DictGetValues cannot find the target dictionary."); + return lifecycle->PtrToRef(dict->GetValues()); + } + +/*********************************************************************** +* RpcCalleeListEventBridge +***********************************************************************/ + + RpcCalleeListEventBridge::RpcCalleeListEventBridge(IRpcLifecycle* lc, IRpcSerializer* _serializer) + : lifecycle(lc) + , serializer(_serializer) + { + if (!lifecycle) CHECK_FAIL(L"Invalid IRpcLifecycle."); + } + + Value RpcCalleeListEventBridge::OnItemChanged(RpcObjectReference ref, vint index, vint oldCount, vint newCount) + { + auto controller = lifecycle->GetController(); + auto obj = lifecycle->RefToPtr(ref); + auto observable = Ptr(obj.Obj()->SafeAggregationCast()); + CHECK_ERROR(observable, L"RpcCalleeListEventBridge::OnItemChanged cannot find the target observable list."); + controller->SetItemChangedSuppressedFlag(ref, true); + RpcEventExceptionMap exceptions; + try + { + observable->ItemChanged(index, oldCount, newCount); + } + catch (const Exception& ex) + { + exceptions = CreateRpcEventExceptionMap(); + exceptions->Set(BoxValue(lifecycle->GetClientId()), BoxRpcException(RpcException{ ex.Message() })); + } + catch (...) + { + controller->SetItemChangedSuppressedFlag(ref, false); + throw; + } + controller->SetItemChangedSuppressedFlag(ref, false); + return SerializeValue(serializer, BoxRpcEventExceptionMap(exceptions)); + } + +/*********************************************************************** +* Helpers +***********************************************************************/ + + RpcObjectReference RpcBoxByref(Ptr trivial, IRpcLifecycle* lc) + { + if (!lc) CHECK_FAIL(L"IRpcLifecycle cannot be null."); + if (!trivial) return {}; + return lc->PtrToRef(trivial); + } + + Ptr RpcUnboxByref(RpcObjectReference serializable, IRpcLifecycle* lc) + { + if (!lc) CHECK_FAIL(L"IRpcLifecycle cannot be null."); + if (IsNullRpcObjectReference(serializable)) return nullptr; + return lc->RefToPtr(serializable); + } + + namespace + { + Value RpcBoxValueByref(const Value& trivial, IRpcLifecycle* lc) + { + if (!lc) CHECK_FAIL(L"IRpcLifecycle cannot be null."); + if (trivial.IsNull()) return trivial; + + if (trivial.GetValueType() == Value::SharedPtr) + { + if (auto raw = trivial.GetRawPtr()) + { + if (auto obj = dynamic_cast(raw)) + { + return BoxValue(RpcBoxByref(Ptr(obj), lc)); + } + } + } + + return trivial; + } + + Value RpcUnboxValueByref(const Value& serializable, IRpcLifecycle* lc) + { + if (!lc) CHECK_FAIL(L"IRpcLifecycle cannot be null."); + if (serializable.IsNull()) return serializable; + + if (IsRpcObjectReferenceValue(serializable)) + { + auto ref = GetRpcObjectReference(serializable); + auto obj = RpcUnboxByref(ref, lc); + return obj ? BoxValue(obj) : Value{}; + } + + return serializable; + } + } + + namespace + { + template + Ptr TryGetValueInterface(const Value& value) + { + if (auto raw = value.GetRawPtr()) + { + return Ptr(dynamic_cast(raw)); + } + return nullptr; + } + + Value RpcCopyValueByvalInternal(const Value& trivial, Dictionary& visited) + { + if (trivial.IsNull()) return trivial; + if (trivial.GetValueType() == Value::SharedPtr) + { + if (auto roDict = TryGetValueInterface(trivial)) + { + auto key = static_cast(trivial.GetRawPtr()); + if (ContainsKey(visited, key)) CHECK_FAIL(L"Byval copying does not support cycles."); + visited.Add(key, true); + + auto dict = IValueDictionary::Create(); + auto keys = roDict->GetKeys(); + for (vint i = 0; i < keys->GetCount(); i++) + { + auto dictKey = keys->Get(i); + dict->Set( + RpcCopyValueByvalInternal(dictKey, visited), + RpcCopyValueByvalInternal(roDict->Get(dictKey), visited) + ); + } + visited.Remove(key); + return BoxValue(dict); + } + + if (auto obsList = TryGetValueInterface(trivial)) + { + auto key = static_cast(trivial.GetRawPtr()); + if (ContainsKey(visited, key)) CHECK_FAIL(L"Byval copying does not support cycles."); + visited.Add(key, true); + + auto list = IValueObservableList::Create(); + for (vint i = 0; i < obsList->GetCount(); i++) + { + list->Add(RpcCopyValueByvalInternal(obsList->Get(i), visited)); + } + visited.Remove(key); + return BoxValue(list); + } + + if (auto array = TryGetValueInterface(trivial)) + { + auto key = static_cast(trivial.GetRawPtr()); + if (ContainsKey(visited, key)) CHECK_FAIL(L"Byval copying does not support cycles."); + visited.Add(key, true); + + auto list = IValueArray::Create(); + list->Resize(array->GetCount()); + for (vint i = 0; i < array->GetCount(); i++) + { + list->Set(i, RpcCopyValueByvalInternal(array->Get(i), visited)); + } + visited.Remove(key); + return BoxValue(list); + } + + if (auto roList = TryGetValueInterface(trivial)) + { + auto key = static_cast(trivial.GetRawPtr()); + if (ContainsKey(visited, key)) CHECK_FAIL(L"Byval copying does not support cycles."); + visited.Add(key, true); + + auto list = IValueList::Create(); + for (vint i = 0; i < roList->GetCount(); i++) + { + list->Add(RpcCopyValueByvalInternal(roList->Get(i), visited)); + } + visited.Remove(key); + return BoxValue(list); + } + } + return trivial; + } + + Value RpcBoxValueByvalInternal(const Value& trivial, IRpcLifecycle* lc, Dictionary& visited) + { + if (trivial.IsNull()) return trivial; + if (trivial.GetValueType() == Value::SharedPtr) + { + if (auto roDict = TryGetValueInterface(trivial)) + { + auto key = static_cast(trivial.GetRawPtr()); + if (ContainsKey(visited, key)) CHECK_FAIL(L"Byval boxing does not support cycles."); + visited.Add(key, true); + + auto dict = IValueDictionary::Create(); + auto keys = roDict->GetKeys(); + for (vint i = 0; i < keys->GetCount(); i++) + { + auto dictKey = keys->Get(i); + dict->Set( + RpcBoxValueByvalInternal(dictKey, lc, visited), + RpcBoxValueByvalInternal(roDict->Get(dictKey), lc, visited) + ); + } + visited.Remove(key); + return BoxValue(dict); + } + + if (auto obsList = TryGetValueInterface(trivial)) + { + auto key = static_cast(trivial.GetRawPtr()); + if (ContainsKey(visited, key)) CHECK_FAIL(L"Byval boxing does not support cycles."); + visited.Add(key, true); + + auto list = IValueObservableList::Create(); + for (vint i = 0; i < obsList->GetCount(); i++) + { + list->Add(RpcBoxValueByvalInternal(obsList->Get(i), lc, visited)); + } + visited.Remove(key); + return BoxValue(list); + } + + if (auto array = TryGetValueInterface(trivial)) + { + auto key = static_cast(trivial.GetRawPtr()); + if (ContainsKey(visited, key)) CHECK_FAIL(L"Byval boxing does not support cycles."); + visited.Add(key, true); + + auto list = IValueArray::Create(); + list->Resize(array->GetCount()); + for (vint i = 0; i < array->GetCount(); i++) + { + list->Set(i, RpcBoxValueByvalInternal(array->Get(i), lc, visited)); + } + visited.Remove(key); + return BoxValue(list); + } + + if (auto roList = TryGetValueInterface(trivial)) + { + auto key = static_cast(trivial.GetRawPtr()); + if (ContainsKey(visited, key)) CHECK_FAIL(L"Byval boxing does not support cycles."); + visited.Add(key, true); + + auto list = IValueList::Create(); + for (vint i = 0; i < roList->GetCount(); i++) + { + list->Add(RpcBoxValueByvalInternal(roList->Get(i), lc, visited)); + } + visited.Remove(key); + return BoxValue(list); + } + + if (auto raw = trivial.GetRawPtr()) + { + if (auto obj = dynamic_cast(raw)) + { + auto ref = lc->PtrToRef(Ptr(obj)); + return BoxValue(ref); + } + } + } + return trivial; + } + } + + Value RpcCopyByval(const Value& trivial, IRpcLifecycle* lc) + { + if (!lc) CHECK_FAIL(L"IRpcLifecycle cannot be null."); + if (trivial.IsNull()) return {}; + Dictionary visited; + return RpcCopyValueByvalInternal(trivial, visited); + } + + Value RpcBoxByval(Ptr trivial, IRpcLifecycle* lc) + { + if (!lc) CHECK_FAIL(L"IRpcLifecycle cannot be null."); + if (!trivial) return {}; + return RpcBoxByval(BoxValue(trivial), lc); + } + + Value RpcBoxByval(const Value& trivial, IRpcLifecycle* lc) + { + if (!lc) CHECK_FAIL(L"IRpcLifecycle cannot be null."); + if (trivial.IsNull()) return {}; + Dictionary visited; + return RpcBoxValueByvalInternal(trivial, lc, visited); + } + + namespace + { + Value RpcUnboxValueByvalInternal(const Value& serializable, IRpcLifecycle* lc, Dictionary& visited) + { + if (serializable.IsNull()) return serializable; + + if (IsRpcObjectReferenceValue(serializable)) + { + auto ref = GetRpcObjectReference(serializable); + auto obj = RpcUnboxByref(ref, lc); + return obj ? BoxValue(obj) : Value{}; + } + + if (serializable.GetValueType() == Value::SharedPtr) + { + if (auto roDict = TryGetValueInterface(serializable)) + { + auto key = static_cast(serializable.GetRawPtr()); + if (ContainsKey(visited, key)) CHECK_FAIL(L"Byval unboxing does not support cycles."); + visited.Add(key, true); + + auto dict = IValueDictionary::Create(); + auto keys = roDict->GetKeys(); + for (vint i = 0; i < keys->GetCount(); i++) + { + auto dictKey = keys->Get(i); + dict->Set( + RpcUnboxValueByvalInternal(dictKey, lc, visited), + RpcUnboxValueByvalInternal(roDict->Get(dictKey), lc, visited) + ); + } + visited.Remove(key); + return BoxValue(dict); + } + + if (auto obsList = TryGetValueInterface(serializable)) + { + auto key = static_cast(serializable.GetRawPtr()); + if (ContainsKey(visited, key)) CHECK_FAIL(L"Byval unboxing does not support cycles."); + visited.Add(key, true); + + auto list = IValueObservableList::Create(); + for (vint i = 0; i < obsList->GetCount(); i++) + { + list->Add(RpcUnboxValueByvalInternal(obsList->Get(i), lc, visited)); + } + visited.Remove(key); + return BoxValue(list); + } + + if (auto array = TryGetValueInterface(serializable)) + { + auto key = static_cast(serializable.GetRawPtr()); + if (ContainsKey(visited, key)) CHECK_FAIL(L"Byval unboxing does not support cycles."); + visited.Add(key, true); + + auto list = IValueArray::Create(); + list->Resize(array->GetCount()); + for (vint i = 0; i < array->GetCount(); i++) + { + list->Set(i, RpcUnboxValueByvalInternal(array->Get(i), lc, visited)); + } + visited.Remove(key); + return BoxValue(list); + } + + if (auto roList = TryGetValueInterface(serializable)) + { + auto key = static_cast(serializable.GetRawPtr()); + if (ContainsKey(visited, key)) CHECK_FAIL(L"Byval unboxing does not support cycles."); + visited.Add(key, true); + + auto list = IValueList::Create(); + for (vint i = 0; i < roList->GetCount(); i++) + { + list->Add(RpcUnboxValueByvalInternal(roList->Get(i), lc, visited)); + } + visited.Remove(key); + return BoxValue(list); + } + } + return serializable; + } + } + + Ptr RpcUnboxByval(const Value& serializable, IRpcLifecycle* lc) + { + if (!lc) CHECK_FAIL(L"IRpcLifecycle cannot be null."); + if (serializable.IsNull()) return nullptr; + Dictionary visited; + auto trivial = RpcUnboxValueByvalInternal(serializable, lc, visited); + if (auto raw = trivial.GetRawPtr()) + { + if (auto obj = dynamic_cast(raw)) + { + return Ptr(obj); + } + } + + CHECK_FAIL(L"Interface value or null is expected."); + return nullptr; + } + + void ReadMethodException(const Value& value) + { + if (value.GetValueType() == Value::BoxedValue) + { + if (auto boxed = value.GetBoxedValue().Cast>()) + { + throw Exception(boxed->value.message); + } + } + } + + void ReadEventException(RpcEventExceptionMap exceptions) + { + if (!exceptions || exceptions->GetCount() == 0) return; + + WString message; + auto keys = exceptions->GetKeys(); + for (vint i = 0; i < keys->GetCount(); i++) + { + auto key = keys->Get(i); + auto exception = UnboxValue(exceptions->Get(key)); + message += itow(UnboxValue(key)) + L":" + exception.message + L";"; + } + throw Exception(message); + } + } +} + diff --git a/Import/VlppWorkflowLibrary.h b/Import/VlppWorkflowLibrary.h index a4906e87..482daa26 100644 --- a/Import/VlppWorkflowLibrary.h +++ b/Import/VlppWorkflowLibrary.h @@ -6,6 +6,7 @@ DEVELOPER: Zihan Chen(vczh) #include "VlppOS.h" #include "Vlpp.h" #include "VlppRegex.h" +#include "VlppGlrParser.h" /*********************************************************************** .\WFLIBRARYPREDEFINED.H @@ -446,6 +447,81 @@ MISC } } +namespace vl +{ + namespace __vwsn + { + struct att_cpp_File + { + WString argument; + auto operator<=>(const att_cpp_File&) const = default; + }; + + struct att_cpp_UserImpl + { + auto operator<=>(const att_cpp_UserImpl&) const = default; + }; + + struct att_cpp_Private + { + auto operator<=>(const att_cpp_Private&) const = default; + }; + + struct att_cpp_Protected + { + auto operator<=>(const att_cpp_Protected&) const = default; + }; + + struct att_cpp_Friend + { + reflection::description::ITypeDescriptor* argument = nullptr; + auto operator<=>(const att_cpp_Friend&) const = default; + }; + + struct att_rpc_Interface + { + auto operator<=>(const att_rpc_Interface&) const = default; + }; + + struct att_rpc_Ctor + { + auto operator<=>(const att_rpc_Ctor&) const = default; + }; + + struct att_rpc_Byval + { + auto operator<=>(const att_rpc_Byval&) const = default; + }; + + struct att_rpc_Byref + { + auto operator<=>(const att_rpc_Byref&) const = default; + }; + + struct att_rpc_Cached + { + auto operator<=>(const att_rpc_Cached&) const = default; + }; + + struct att_rpc_Dynamic + { + auto operator<=>(const att_rpc_Dynamic&) const = default; + }; + + struct att_rpc_IdString + { + WString argument; + auto operator<=>(const att_rpc_IdString&) const = default; + }; + + struct att_rpc_IdNumber + { + vint argument = 0; + auto operator<=>(const att_rpc_IdNumber&) const = default; + }; + } +} + #endif @@ -580,6 +656,7 @@ namespace vl TTo* RawPtrCast(TFrom* pointer) { if (!pointer) return nullptr; + if (auto converted = dynamic_cast(pointer)) return converted; return pointer->template SafeAggregationCast(); } @@ -587,6 +664,7 @@ namespace vl Ptr SharedPtrCast(TFrom* pointer) { if (!pointer) return nullptr; + if (auto converted = dynamic_cast(pointer)) return Ptr(converted); return Ptr(pointer->template SafeAggregationCast()); } @@ -618,7 +696,17 @@ namespace vl static T* Unbox(const reflection::description::Value& value) { if (value.IsNull()) return nullptr; - return value.GetRawPtr()->SafeAggregationCast(); + auto rawPtr = value.GetRawPtr(); + if (!rawPtr) return nullptr; + if (auto converted = dynamic_cast(rawPtr)) return converted; + try + { + return rawPtr->SafeAggregationCast(); + } + catch (const Exception&) + { + return nullptr; + } } }; @@ -628,7 +716,17 @@ namespace vl static Ptr Unbox(const reflection::description::Value& value) { if (value.IsNull()) return nullptr; - return Ptr(value.GetRawPtr()->SafeAggregationCast()); + auto rawPtr = value.GetRawPtr(); + if (!rawPtr) return nullptr; + if (auto converted = dynamic_cast(rawPtr)) return Ptr(converted); + try + { + return Ptr(rawPtr->SafeAggregationCast()); + } + catch (const Exception&) + { + return nullptr; + } } }; @@ -822,6 +920,675 @@ namespace vl #endif + +/*********************************************************************** +.\RPC\WFLIBRARYRPC.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::RPC + +Interfaces: +***********************************************************************/ + +#ifndef VCZH_WORKFLOW_LIBRARY_RPC +#define VCZH_WORKFLOW_LIBRARY_RPC + + +namespace vl +{ + namespace rpc_controller + { + class IRpcSerializer; + + constexpr vint RpcTypeId_NotFound = -100; + constexpr vint RpcClientId_Invalid = -1; + constexpr vint RpcObjectId_Invalid = -1; + + struct RpcObjectReference + { + vint clientId = RpcClientId_Invalid; + vint objectId = RpcObjectId_Invalid; + vint typeId = RpcTypeId_NotFound; + + auto operator<=>(const RpcObjectReference&) const = default; + }; + + struct RpcException + { + WString message; + + auto operator<=>(const RpcException&) const = default; + }; + + using RpcEventExceptionMap = Ptr; + + extern reflection::description::Value BoxRpcObjectReference(RpcObjectReference ref); + extern reflection::description::Value BoxRpcException(RpcException exception); + extern RpcEventExceptionMap CreateRpcEventExceptionMap(); + extern void MergeRpcEventExceptionMap(RpcEventExceptionMap target, RpcEventExceptionMap source); + extern reflection::description::Value BoxRpcEventExceptionMap(RpcEventExceptionMap exceptions); + extern RpcEventExceptionMap UnboxRpcEventExceptionMap(const reflection::description::Value& value); + + class RpcByvalReturnValue + : public Object + , public reflection::Description + { + public: + reflection::description::Value value; + vint slot = -1; + }; + + inline constexpr vint RpcTypeId_IValueEnumerable = -1; + inline constexpr vint RpcTypeId_IValueEnumerator = -2; + inline constexpr vint RpcTypeId_IValueArray = -3; + inline constexpr vint RpcTypeId_IValueList = -4; + inline constexpr vint RpcTypeId_IValueObservableList = -5; + inline constexpr vint RpcTypeId_IValueDictionary = -6; + inline constexpr vint RpcTypeId_IValueReadonlyList = -7; + +/*********************************************************************** +* Interfaces (Operations) +***********************************************************************/ + + class IRpcListOps + : public virtual reflection::IDescriptable + , public reflection::Description + { + public: + virtual RpcObjectReference EnumCreate(RpcObjectReference ref) = 0; + virtual bool EnumNext(RpcObjectReference enumerator) = 0; + virtual reflection::description::Value EnumGetCurrent(RpcObjectReference enumerator) = 0; + + virtual vint ListGetCount(RpcObjectReference ref) = 0; + virtual reflection::description::Value ListGet(RpcObjectReference ref, vint index) = 0; + virtual void ListSet(RpcObjectReference ref, vint index, const reflection::description::Value& value) = 0; + virtual vint ListAdd(RpcObjectReference ref, const reflection::description::Value& value) = 0; + virtual vint ListInsert(RpcObjectReference ref, vint index, const reflection::description::Value& value) = 0; + virtual bool ListRemoveAt(RpcObjectReference ref, vint index) = 0; + virtual void ListClear(RpcObjectReference ref) = 0; + virtual bool ListContains(RpcObjectReference ref, const reflection::description::Value& value) = 0; + virtual vint ListIndexOf(RpcObjectReference ref, const reflection::description::Value& value) = 0; + + virtual vint DictGetCount(RpcObjectReference ref) = 0; + virtual reflection::description::Value DictGet(RpcObjectReference ref, const reflection::description::Value& key) = 0; + virtual void DictSet(RpcObjectReference ref, const reflection::description::Value& key, const reflection::description::Value& value) = 0; + virtual bool DictRemove(RpcObjectReference ref, const reflection::description::Value& key) = 0; + virtual void DictClear(RpcObjectReference ref) = 0; + virtual bool DictContainsKey(RpcObjectReference ref, const reflection::description::Value& key) = 0; + virtual RpcObjectReference DictGetKeys(RpcObjectReference ref) = 0; + virtual RpcObjectReference DictGetValues(RpcObjectReference ref) = 0; + }; + + class IRpcObjectOps + : public virtual reflection::IDescriptable + , public reflection::Description + { + public: + virtual reflection::description::Value InvokeMethod(RpcObjectReference ref, vint methodId, Ptr arguments) = 0; + virtual void EndInvokeMethod(vint slot) = 0; + virtual void ObjectHold(RpcObjectReference ref, vint remoteClientId, bool hold) = 0; + virtual void RegisterService(vint typeId, Ptr service) = 0; + }; + + class IRpcListEventOps + : public virtual reflection::IDescriptable + , public reflection::Description + { + public: + virtual reflection::description::Value OnItemChanged(RpcObjectReference ref, vint index, vint oldCount, vint newCount) = 0; + }; + + class IRpcObjectEventOps + : public virtual reflection::IDescriptable + , public reflection::Description + { + public: + virtual reflection::description::Value InvokeEvent(RpcObjectReference ref, vint eventId, Ptr arguments) = 0; + }; + +/*********************************************************************** +* Interfaces (Lifecycle) +***********************************************************************/ + + class IRpcOperations + : public virtual reflection::IDescriptable + , public reflection::Description + { + public: + virtual IRpcListOps* GetListOps() = 0; + virtual IRpcObjectOps* GetObjectOps() = 0; + virtual IRpcListEventOps* GetListEventOps() = 0; + virtual IRpcObjectEventOps* GetObjectEventOps() = 0; + }; + + class IRpcDispatcher + : public virtual reflection::IDescriptable + , public reflection::Description + { + public: + virtual void Finalize() = 0; + virtual bool IsRegisteredService(RpcObjectReference ref) = 0; + virtual void RegisterService(vint typeId, RpcObjectReference ref) = 0; + virtual RpcObjectReference RequestService(vint typeId) = 0; + + virtual IRpcListEventOps* BroadcastFromClient_ListEventOps(vint selfClientId) = 0; + virtual IRpcObjectEventOps* BroadcastFromClient_ObjectEventOps(vint selfClientId) = 0; + virtual IRpcListOps* SendToClient_ListOps(vint targetClientId) = 0; + virtual IRpcObjectOps* SendToClient_ObjectOps(vint targetClientId) = 0; + }; + + class IRpcController + : public virtual IRpcOperations + , public reflection::Description + { + public: + virtual void Finalize() = 0; + virtual void SetEventSuppressedFlag(RpcObjectReference ref, vint eventId, bool suppressed) = 0; + virtual bool GetEventSuppressedFlag(RpcObjectReference ref, vint eventId) = 0; + virtual void SetItemChangedSuppressedFlag(RpcObjectReference ref, bool suppressed) = 0; + virtual bool GetItemChangedSuppressedFlag(RpcObjectReference ref) = 0; + }; + + class IRpcLifecycle + : public virtual reflection::IDescriptable + , public reflection::Description + { + public: + virtual void Finalize() = 0; + virtual vint GetClientId() = 0; + virtual IRpcDispatcher* GetDispatcher() = 0; + virtual IRpcController* GetController() = 0; + virtual IRpcSerializer* GetSerializer() = 0; + virtual Ptr RefToPtr(RpcObjectReference ref) = 0; + virtual RpcObjectReference PtrToRef(Ptr obj) = 0; + virtual void LocalObjectHold(RpcObjectReference ref, vint remoteClientId) = 0; + virtual void LocalObjectUnhold(RpcObjectReference ref, vint remoteClientId) = 0; + virtual void RegisterService(const WString& fullName, Ptr service) = 0; + virtual Ptr RequestService(const WString& fullName) = 0; + }; + + class IRpcWrapperBase + : public virtual reflection::IDescriptable + , public reflection::Description + { + public: + virtual void DisconnectFromLifecycle() = 0; + }; + +/*********************************************************************** +* Helpers +***********************************************************************/ + + extern RpcObjectReference RpcBoxByref (Ptr trivial, IRpcLifecycle* lc); + extern Ptr RpcUnboxByref (RpcObjectReference serializable, IRpcLifecycle* lc); + extern reflection::description::Value RpcCopyByval (const reflection::description::Value& trivial, IRpcLifecycle* lc); + extern reflection::description::Value RpcBoxByval (Ptr trivial, IRpcLifecycle* lc); + extern reflection::description::Value RpcBoxByval (const reflection::description::Value& trivial, IRpcLifecycle* lc); + extern Ptr RpcUnboxByval (const reflection::description::Value& serializable, IRpcLifecycle* lc); + extern void ReadMethodException(const reflection::description::Value& value); + extern void ReadEventException(RpcEventExceptionMap exceptions); + } +} + +#endif + + +/*********************************************************************** +.\RPC\WFLIBRARYRPCCONTROLLER.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::RPC + +Interfaces: +***********************************************************************/ + +#ifndef VCZH_WORKFLOW_LIBRARY_RPC_CONTROLLER +#define VCZH_WORKFLOW_LIBRARY_RPC_CONTROLLER + + +namespace vl +{ + namespace rpc_controller + { + struct RpcEventSuppressionKey + { + RpcObjectReference ref; + vint eventId = 0; + + auto operator<=>(const RpcEventSuppressionKey&) const = default; + }; + + class RpcControllerDefault : public Object, public IRpcController + { + protected: + Ptr objectCallback; + Ptr eventCallback; + Ptr listCallback; + Ptr listEventCallback; + collections::Dictionary eventSuppressedFlags; + collections::Dictionary itemChangedSuppressedFlags; + + template + static void SetSuppressedFlag(collections::Dictionary& flags, const TKey& key, bool suppressed); + + template + static bool GetSuppressedFlag(const collections::Dictionary& flags, const TKey& key); + + public: + + RpcControllerDefault(); + ~RpcControllerDefault(); + + void Register(Ptr objectCallback, Ptr eventCallback, Ptr listCallback, Ptr listEventCallback); + + // IRpcController + + IRpcListOps* GetListOps()override; + IRpcObjectOps* GetObjectOps()override; + IRpcListEventOps* GetListEventOps()override; + IRpcObjectEventOps* GetObjectEventOps()override; + + void Finalize()override; + void SetEventSuppressedFlag(RpcObjectReference ref, vint eventId, bool suppressed)override; + bool GetEventSuppressedFlag(RpcObjectReference ref, vint eventId)override; + void SetItemChangedSuppressedFlag(RpcObjectReference ref, bool suppressed)override; + bool GetItemChangedSuppressedFlag(RpcObjectReference ref)override; + }; + } +} + +#endif + + +/*********************************************************************** +.\RPC\WFLIBRARYRPCJSON.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::RPC + +JSON Helpers: +***********************************************************************/ + +#ifndef VCZH_WORKFLOW_LIBRARY_RPC_JSON +#define VCZH_WORKFLOW_LIBRARY_RPC_JSON + + +namespace vl +{ + namespace rpc_controller + { + using RpcJsonSerializeCallback = Func(const reflection::description::Value&)>; + using RpcJsonDeserializeCallback = Func)>; + + extern Ptr JsonSerializePredefinedTypes(const reflection::description::Value& value, const RpcJsonSerializeCallback& rpcjson_Serialize); + extern reflection::description::Value JsonDeserializePredefinedTypes(const reflection::description::Value& value, const RpcJsonDeserializeCallback& rpcjson_Deserialize); + } +} + +#endif + + +/*********************************************************************** +.\RPC\WFLIBRARYRPCLIFECYCLE.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::RPC + +Lifecycle: +***********************************************************************/ + +#ifndef VCZH_WORKFLOW_LIBRARY_RPC_LIFECYCLE +#define VCZH_WORKFLOW_LIBRARY_RPC_LIFECYCLE + + +namespace vl +{ + namespace rpc_controller + { + class IRpcSerializer; + class RpcLifecycleBase; + + class RpcLocalObjectTracker : public Object + { + friend class RpcLifecycleBase; + private: + RpcLifecycleBase* lifecycle = nullptr; + RpcObjectReference ref; + public: + RpcLocalObjectTracker(RpcLifecycleBase* lc, RpcObjectReference r); + ~RpcLocalObjectTracker(); + void Attach(RpcLifecycleBase* lc, RpcObjectReference r); + void Detach(); + RpcObjectReference GetRef() const { return ref; } + vint GetClientId() const { return ref.clientId; } + RpcLifecycleBase* GetLifecycle() const { return lifecycle; } + bool IsTracked() const { return lifecycle != nullptr; } + }; + + class RpcWrapperTracker : public Object + { + friend class RpcLifecycleBase; + private: + RpcLifecycleBase* lifecycle = nullptr; + RpcObjectReference ref; + public: + RpcWrapperTracker(RpcLifecycleBase* lc, RpcObjectReference r); + ~RpcWrapperTracker(); + void Detach(); + RpcObjectReference GetRef() const { return ref; } + RpcLifecycleBase* GetLifecycle() const { return lifecycle; } + }; + + struct RpcLocalObjectProperties : public Object + { + RpcObjectReference ref; + collections::SortedList interestedClients; + reflection::IDescriptable* rawPtr = nullptr; + Ptr ownedPtr; + Ptr eventHandler; + }; + + class RpcLifecycleBase : public Object, public IRpcLifecycle + { + friend class RpcLocalObjectTracker; + friend class RpcWrapperTracker; + public: + using UniversalWrapperFactory = Func(RpcObjectReference, IRpcLifecycle*)>; + private: + struct RpcWrapperProperties + { + reflection::DescriptableObject* root = nullptr; + IRpcWrapperBase* proxy = nullptr; + }; + using LocalProperties = collections::Dictionary>; + using WrapperProperties = collections::Dictionary; + private: + RpcControllerDefault controller; + vint clientId = RpcClientId_Invalid; + vint nextObjectId = RpcObjectId_Invalid; + LocalProperties localObjectProperties; + static WString InternalProperty_LocalObjectTracker; + static WString InternalProperty_WrapperTracker; + UniversalWrapperFactory universalWrapperFactory; + WrapperProperties wrapperProperties; + + void TrackWrapper(reflection::DescriptableObject* root, IRpcWrapperBase* proxy, RpcObjectReference ref); + void UntrackWrapper(RpcObjectReference ref); + bool TryGetTrackedWrapperRef(reflection::DescriptableObject* obj, RpcObjectReference& ref)const; + IRpcWrapperBase* GetTrackedWrapper(RpcObjectReference ref)const; + void TrackLocalObject(RpcObjectReference ref, reflection::IDescriptable* obj); + void UntrackLocalObject(RpcObjectReference ref, bool clearInternalProperty); + void RemoveLocalObject(RpcObjectReference ref, bool clearInternalProperty); + bool IsTracked(vint objectId)const; + Ptr CreateCallerProxy(RpcObjectReference ref, IRpcSerializer* serializer); + void DisconnectWrappersForFinalize(); + protected: + IRpcDispatcher* dispatcher = nullptr; + collections::Dictionary idMap; + Ptr serializer; + + virtual vint DecideTypeId(reflection::IDescriptable* obj)const; + virtual void AttachLocalObjectEvents(RpcObjectReference ref, reflection::IDescriptable* obj) = 0; + public: + RpcLifecycleBase(vint _clientId); + ~RpcLifecycleBase(); + + void SetIdMap(const collections::Dictionary& _idMap); + void RegisterWrapperFactory(UniversalWrapperFactory factory); + void SetSerializer(Ptr _serializer); + IRpcSerializer* GetSerializer() override; + + // IRpcLifecycle + + void Finalize()override; + vint GetClientId()override; + IRpcDispatcher* GetDispatcher()override; + RpcControllerDefault* GetController()override; + void LocalObjectHold(RpcObjectReference ref, vint remoteClientId)override; + void LocalObjectUnhold(RpcObjectReference ref, vint remoteClientId)override; + void RegisterService(const WString& fullName, Ptr service)override; + Ptr RequestService(const WString& fullName)override; + Ptr RefToPtr(RpcObjectReference ref)override; + Ptr RefToPtr(RpcObjectReference ref, IRpcSerializer* serializer); + RpcObjectReference PtrToRef(Ptr obj)override; + }; + } +} + +#endif + + +/*********************************************************************** +.\RPC\WFLIBRARYRPCWRAPPERS.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Framework::RPC + +Collection Wrappers: +***********************************************************************/ + +#ifndef VCZH_WORKFLOW_LIBRARY_RPC_WRAPPERS +#define VCZH_WORKFLOW_LIBRARY_RPC_WRAPPERS + + +namespace vl +{ + namespace rpc_controller + { + +/*********************************************************************** +* Serialization +***********************************************************************/ + + class IRpcSerializer + : public virtual reflection::IDescriptable + , public reflection::Description + { + public: + virtual reflection::description::Value Serialize(const reflection::description::Value& value) = 0; + virtual reflection::description::Value Deserialize(const reflection::description::Value& value) = 0; + }; + +/*********************************************************************** +* Collection Caller Wrappers +***********************************************************************/ + + class RpcByrefEnumerator : public Object, public reflection::Description, public reflection::description::IValueEnumerator, public virtual IRpcWrapperBase + { + private: + IRpcLifecycle* lifecycle = nullptr; + IRpcSerializer* serializer = nullptr; + RpcObjectReference ref; + vint index = -1; + public: + RpcByrefEnumerator(IRpcLifecycle* lc, RpcObjectReference enumeratorRef, IRpcSerializer* _serializer); + ~RpcByrefEnumerator(); + + void DisconnectFromLifecycle()override; + reflection::description::Value GetCurrent()override; + vint GetIndex()override; + bool Next()override; + }; + + class RpcByrefEnumerable : public Object, public reflection::Description, public reflection::description::IValueEnumerable, public virtual IRpcWrapperBase + { + private: + IRpcLifecycle* lifecycle = nullptr; + IRpcSerializer* serializer = nullptr; + RpcObjectReference ref; + public: + RpcByrefEnumerable(IRpcLifecycle* lc, RpcObjectReference enumerableRef, IRpcSerializer* _serializer); + ~RpcByrefEnumerable(); + + void DisconnectFromLifecycle()override; + Ptr CreateEnumerator()override; + }; + + class RpcByrefReadonlyList : public Object, public reflection::Description, public virtual reflection::description::IValueReadonlyList, public virtual IRpcWrapperBase + { + protected: + IRpcLifecycle* lifecycle = nullptr; + IRpcSerializer* serializer = nullptr; + RpcObjectReference ref; + public: + RpcByrefReadonlyList(IRpcLifecycle* lc, RpcObjectReference listRef, IRpcSerializer* _serializer); + ~RpcByrefReadonlyList(); + + void DisconnectFromLifecycle()override; + Ptr CreateEnumerator()override; + vint GetCount()override; + reflection::description::Value Get(vint index)override; + bool Contains(const reflection::description::Value& value)override; + vint IndexOf(const reflection::description::Value& value)override; + }; + + class RpcByrefList : public RpcByrefReadonlyList, public reflection::Description, public virtual reflection::description::IValueList + { + public: + RpcByrefList(IRpcLifecycle* lc, RpcObjectReference listRef, IRpcSerializer* _serializer); + ~RpcByrefList()override; + + Ptr CreateEnumerator()override; + vint GetCount()override; + reflection::description::Value Get(vint index)override; + bool Contains(const reflection::description::Value& value)override; + vint IndexOf(const reflection::description::Value& value)override; + void Set(vint index, const reflection::description::Value& value)override; + vint Add(const reflection::description::Value& value)override; + vint Insert(vint index, const reflection::description::Value& value)override; + bool Remove(const reflection::description::Value& value)override; + bool RemoveAt(vint index)override; + void Clear()override; + }; + + class RpcByrefArray : public Object, public reflection::Description, public reflection::description::IValueArray, public virtual IRpcWrapperBase + { + private: + IRpcLifecycle* lifecycle = nullptr; + IRpcSerializer* serializer = nullptr; + RpcObjectReference ref; + public: + RpcByrefArray(IRpcLifecycle* lc, RpcObjectReference arrayRef, IRpcSerializer* _serializer); + ~RpcByrefArray(); + + void DisconnectFromLifecycle()override; + Ptr CreateEnumerator()override; + vint GetCount()override; + reflection::description::Value Get(vint index)override; + bool Contains(const reflection::description::Value& value)override; + vint IndexOf(const reflection::description::Value& value)override; + void Set(vint index, const reflection::description::Value& value)override; + void Resize(vint size)override; + }; + + class RpcByrefObservableList : public Object, public reflection::Description, public reflection::description::IValueObservableList, public virtual IRpcWrapperBase + { + private: + IRpcLifecycle* lifecycle = nullptr; + IRpcSerializer* serializer = nullptr; + RpcObjectReference ref; + public: + RpcByrefObservableList(IRpcLifecycle* lc, RpcObjectReference listRef, IRpcSerializer* _serializer); + ~RpcByrefObservableList(); + + void DisconnectFromLifecycle()override; + Ptr CreateEnumerator()override; + vint GetCount()override; + reflection::description::Value Get(vint index)override; + bool Contains(const reflection::description::Value& value)override; + vint IndexOf(const reflection::description::Value& value)override; + void Set(vint index, const reflection::description::Value& value)override; + vint Add(const reflection::description::Value& value)override; + vint Insert(vint index, const reflection::description::Value& value)override; + bool Remove(const reflection::description::Value& value)override; + bool RemoveAt(vint index)override; + void Clear()override; + }; + + class RpcByrefDictionary : public Object, public reflection::Description, public reflection::description::IValueDictionary, public virtual IRpcWrapperBase + { + private: + IRpcLifecycle* lifecycle = nullptr; + IRpcSerializer* serializer = nullptr; + RpcObjectReference ref; + public: + RpcByrefDictionary(IRpcLifecycle* lc, RpcObjectReference dictRef, IRpcSerializer* _serializer); + ~RpcByrefDictionary(); + + void DisconnectFromLifecycle()override; + Ptr GetKeys()override; + Ptr GetValues()override; + vint GetCount()override; + reflection::description::Value Get(const reflection::description::Value& key)override; + void Set(const reflection::description::Value& key, const reflection::description::Value& value)override; + bool Remove(const reflection::description::Value& key)override; + void Clear()override; + }; + +/*********************************************************************** +* Collection Callee Wrappers +***********************************************************************/ + + class RpcCalleeListOps : public Object, public IRpcListOps + { + private: + IRpcLifecycle* lifecycle = nullptr; + IRpcSerializer* serializer = nullptr; + + public: + RpcCalleeListOps(IRpcLifecycle* lc, IRpcSerializer* _serializer); + + RpcObjectReference EnumCreate(RpcObjectReference ref)override; + bool EnumNext(RpcObjectReference enumerator)override; + reflection::description::Value EnumGetCurrent(RpcObjectReference enumerator)override; + + vint ListGetCount(RpcObjectReference ref)override; + reflection::description::Value ListGet(RpcObjectReference ref, vint index)override; + void ListSet(RpcObjectReference ref, vint index, const reflection::description::Value& value)override; + vint ListAdd(RpcObjectReference ref, const reflection::description::Value& value)override; + vint ListInsert(RpcObjectReference ref, vint index, const reflection::description::Value& value)override; + bool ListRemoveAt(RpcObjectReference ref, vint index)override; + void ListClear(RpcObjectReference ref)override; + bool ListContains(RpcObjectReference ref, const reflection::description::Value& value)override; + vint ListIndexOf(RpcObjectReference ref, const reflection::description::Value& value)override; + + vint DictGetCount(RpcObjectReference ref)override; + reflection::description::Value DictGet(RpcObjectReference ref, const reflection::description::Value& key)override; + void DictSet(RpcObjectReference ref, const reflection::description::Value& key, const reflection::description::Value& value)override; + bool DictRemove(RpcObjectReference ref, const reflection::description::Value& key)override; + void DictClear(RpcObjectReference ref)override; + bool DictContainsKey(RpcObjectReference ref, const reflection::description::Value& key)override; + RpcObjectReference DictGetKeys(RpcObjectReference ref)override; + RpcObjectReference DictGetValues(RpcObjectReference ref)override; + }; + + class RpcCalleeListEventBridge : public Object, public IRpcListEventOps + { + private: + IRpcLifecycle* lifecycle = nullptr; + IRpcSerializer* serializer = nullptr; + + public: + RpcCalleeListEventBridge(IRpcLifecycle* lc, IRpcSerializer* _serializer); + + reflection::description::Value OnItemChanged(RpcObjectReference ref, vint index, vint oldCount, vint newCount)override; + }; + } +} + +#endif + + /*********************************************************************** .\WFLIBRARYREFLECTION.H ***********************************************************************/ @@ -850,6 +1617,21 @@ Predefined Types #ifndef VCZH_DEBUG_NO_REFLECTION +#define WORKFLOW_LIBRARY_ATTRIBUTE_TYPES(F)\ + F(vl::__vwsn::att_cpp_File)\ + F(vl::__vwsn::att_cpp_UserImpl)\ + F(vl::__vwsn::att_cpp_Private)\ + F(vl::__vwsn::att_cpp_Protected)\ + F(vl::__vwsn::att_cpp_Friend)\ + F(vl::__vwsn::att_rpc_Interface)\ + F(vl::__vwsn::att_rpc_Ctor)\ + F(vl::__vwsn::att_rpc_Byval)\ + F(vl::__vwsn::att_rpc_Byref)\ + F(vl::__vwsn::att_rpc_Cached)\ + F(vl::__vwsn::att_rpc_Dynamic)\ + F(vl::__vwsn::att_rpc_IdString)\ + F(vl::__vwsn::att_rpc_IdNumber)\ + #define WORKFLOW_LIBRARY_TYPES(F)\ F(Sys) \ F(Math) \ @@ -869,6 +1651,27 @@ Predefined Types F(AsyncCoroutine) \ F(StateMachine) \ F(Versioning) \ + F(vl::rpc_controller::RpcObjectReference)\ + F(vl::rpc_controller::RpcException)\ + F(vl::rpc_controller::RpcByvalReturnValue)\ + F(vl::rpc_controller::IRpcSerializer)\ + F(vl::rpc_controller::IRpcListOps)\ + F(vl::rpc_controller::IRpcListEventOps)\ + F(vl::rpc_controller::IRpcObjectOps)\ + F(vl::rpc_controller::IRpcObjectEventOps)\ + F(vl::rpc_controller::IRpcOperations)\ + F(vl::rpc_controller::IRpcDispatcher)\ + F(vl::rpc_controller::IRpcController)\ + F(vl::rpc_controller::IRpcLifecycle)\ + F(vl::rpc_controller::IRpcWrapperBase)\ + F(vl::rpc_controller::RpcByrefEnumerator)\ + F(vl::rpc_controller::RpcByrefEnumerable)\ + F(vl::rpc_controller::RpcByrefReadonlyList)\ + F(vl::rpc_controller::RpcByrefList)\ + F(vl::rpc_controller::RpcByrefArray)\ + F(vl::rpc_controller::RpcByrefObservableList)\ + F(vl::rpc_controller::RpcByrefDictionary)\ + WORKFLOW_LIBRARY_ATTRIBUTE_TYPES(F)\ WORKFLOW_LIBRARY_TYPES(DECL_TYPE_INFO) @@ -883,6 +1686,163 @@ Interface Implementation Proxy (Implement) #pragma warning(push) #pragma warning(disable:4250) + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(vl::rpc_controller::IRpcSerializer) + vl::reflection::description::Value Serialize(const vl::reflection::description::Value& value)override + { + INVOKEGET_INTERFACE_PROXY(Serialize, value); + } + + vl::reflection::description::Value Deserialize(const vl::reflection::description::Value& value)override + { + INVOKEGET_INTERFACE_PROXY(Deserialize, value); + } + END_INTERFACE_PROXY(vl::rpc_controller::IRpcSerializer) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(vl::rpc_controller::IRpcListOps) + vl::rpc_controller::RpcObjectReference EnumCreate(vl::rpc_controller::RpcObjectReference ref)override + { + INVOKEGET_INTERFACE_PROXY(EnumCreate, ref); + } + + bool EnumNext(vl::rpc_controller::RpcObjectReference enumerator)override + { + INVOKEGET_INTERFACE_PROXY(EnumNext, enumerator); + } + + vl::reflection::description::Value EnumGetCurrent(vl::rpc_controller::RpcObjectReference enumerator)override + { + INVOKEGET_INTERFACE_PROXY(EnumGetCurrent, enumerator); + } + + vl::vint ListGetCount(vl::rpc_controller::RpcObjectReference ref)override + { + INVOKEGET_INTERFACE_PROXY(ListGetCount, ref); + } + + vl::reflection::description::Value ListGet(vl::rpc_controller::RpcObjectReference ref, vl::vint index)override + { + INVOKEGET_INTERFACE_PROXY(ListGet, ref, index); + } + + void ListSet(vl::rpc_controller::RpcObjectReference ref, vl::vint index, const vl::reflection::description::Value& value)override + { + INVOKE_INTERFACE_PROXY(ListSet, ref, index, value); + } + + vl::vint ListAdd(vl::rpc_controller::RpcObjectReference ref, const vl::reflection::description::Value& value)override + { + INVOKEGET_INTERFACE_PROXY(ListAdd, ref, value); + } + + vl::vint ListInsert(vl::rpc_controller::RpcObjectReference ref, vl::vint index, const vl::reflection::description::Value& value)override + { + INVOKEGET_INTERFACE_PROXY(ListInsert, ref, index, value); + } + + bool ListRemoveAt(vl::rpc_controller::RpcObjectReference ref, vl::vint index)override + { + INVOKEGET_INTERFACE_PROXY(ListRemoveAt, ref, index); + } + + void ListClear(vl::rpc_controller::RpcObjectReference ref)override + { + INVOKE_INTERFACE_PROXY(ListClear, ref); + } + + bool ListContains(vl::rpc_controller::RpcObjectReference ref, const vl::reflection::description::Value& value)override + { + INVOKEGET_INTERFACE_PROXY(ListContains, ref, value); + } + + vl::vint ListIndexOf(vl::rpc_controller::RpcObjectReference ref, const vl::reflection::description::Value& value)override + { + INVOKEGET_INTERFACE_PROXY(ListIndexOf, ref, value); + } + + vl::vint DictGetCount(vl::rpc_controller::RpcObjectReference ref)override + { + INVOKEGET_INTERFACE_PROXY(DictGetCount, ref); + } + + vl::reflection::description::Value DictGet(vl::rpc_controller::RpcObjectReference ref, const vl::reflection::description::Value& key)override + { + INVOKEGET_INTERFACE_PROXY(DictGet, ref, key); + } + + void DictSet(vl::rpc_controller::RpcObjectReference ref, const vl::reflection::description::Value& key, const vl::reflection::description::Value& value)override + { + INVOKE_INTERFACE_PROXY(DictSet, ref, key, value); + } + + bool DictRemove(vl::rpc_controller::RpcObjectReference ref, const vl::reflection::description::Value& key)override + { + INVOKEGET_INTERFACE_PROXY(DictRemove, ref, key); + } + + void DictClear(vl::rpc_controller::RpcObjectReference ref)override + { + INVOKE_INTERFACE_PROXY(DictClear, ref); + } + + bool DictContainsKey(vl::rpc_controller::RpcObjectReference ref, const vl::reflection::description::Value& key)override + { + INVOKEGET_INTERFACE_PROXY(DictContainsKey, ref, key); + } + + vl::rpc_controller::RpcObjectReference DictGetKeys(vl::rpc_controller::RpcObjectReference ref)override + { + INVOKEGET_INTERFACE_PROXY(DictGetKeys, ref); + } + + vl::rpc_controller::RpcObjectReference DictGetValues(vl::rpc_controller::RpcObjectReference ref)override + { + INVOKEGET_INTERFACE_PROXY(DictGetValues, ref); + } + END_INTERFACE_PROXY(vl::rpc_controller::IRpcListOps) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(vl::rpc_controller::IRpcObjectOps) + vl::reflection::description::Value InvokeMethod(vl::rpc_controller::RpcObjectReference ref, vl::vint methodId, vl::Ptr arguments)override + { + INVOKEGET_INTERFACE_PROXY(InvokeMethod, ref, methodId, arguments); + } + + void EndInvokeMethod(vl::vint slot)override + { + INVOKE_INTERFACE_PROXY(EndInvokeMethod, slot); + } + + void ObjectHold(vl::rpc_controller::RpcObjectReference ref, vl::vint remoteClientId, bool hold)override + { + INVOKE_INTERFACE_PROXY(ObjectHold, ref, remoteClientId, hold); + } + + void RegisterService(vl::vint typeId, vl::Ptr service)override + { + INVOKE_INTERFACE_PROXY(RegisterService, typeId, service); + } + END_INTERFACE_PROXY(vl::rpc_controller::IRpcObjectOps) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(vl::rpc_controller::IRpcListEventOps) + vl::reflection::description::Value OnItemChanged(vl::rpc_controller::RpcObjectReference ref, vl::vint index, vl::vint oldCount, vl::vint newCount)override + { + INVOKEGET_INTERFACE_PROXY(OnItemChanged, ref, index, oldCount, newCount); + } + END_INTERFACE_PROXY(vl::rpc_controller::IRpcListEventOps) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(vl::rpc_controller::IRpcObjectEventOps) + vl::reflection::description::Value InvokeEvent(vl::rpc_controller::RpcObjectReference ref, vl::vint eventId, vl::Ptr arguments)override + { + INVOKEGET_INTERFACE_PROXY(InvokeEvent, ref, eventId, arguments); + } + END_INTERFACE_PROXY(vl::rpc_controller::IRpcObjectEventOps) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(vl::rpc_controller::IRpcWrapperBase) + void DisconnectFromLifecycle()override + { + INVOKE_INTERFACE_PROXY_NOPARAMS(DisconnectFromLifecycle); + } + END_INTERFACE_PROXY(vl::rpc_controller::IRpcWrapperBase) + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(ICoroutine) void Resume(bool raiseException, Ptr output)override diff --git a/Import/VlppWorkflowRuntime.cpp b/Import/VlppWorkflowRuntime.cpp index ef119b2b..267ddcf4 100644 --- a/Import/VlppWorkflowRuntime.cpp +++ b/Import/VlppWorkflowRuntime.cpp @@ -53,7 +53,7 @@ WfRuntimeCallStackInfo { if (!cache) { - if (!context) + if (context) { Dictionary map; for (auto [name, index] : indexed(names)) @@ -1446,6 +1446,77 @@ Serialization (TypeImpl) //---------------------------------------------------- + static void IOAttributeBag(WfReader& reader, TypeDescriptorImplBase* td, IMemberInfo* memberInfo) + { + vint attCount = 0; + reader << attCount; + for (vint i = 0; i < attCount; i++) + { + WString attTypeName; + reader << attTypeName; + auto attTd = GetTypeDescriptor(attTypeName); + auto attInfo = Ptr(new AttributeInfoImpl(attTd)); + + vint valueCount = 0; + reader << valueCount; + for (vint j = 0; j < valueCount; j++) + { + WString valueTypeName; + WString serializedData; + reader << valueTypeName << serializedData; + auto valueTd = GetTypeDescriptor(valueTypeName); + Value value; + if (auto serializableType = valueTd->GetSerializableType()) + { + serializableType->Deserialize(serializedData, value); + value = Value::From(value.GetBoxedValue(), valueTd); + } + else + { + auto rawTd = GetTypeDescriptor(serializedData); + value = BoxValue(rawTd); + } + attInfo->AddValue(valueTd, value); + } + + td->RegisterAttribute(memberInfo, attInfo); + } + } + + static void IOAttributeBag(WfWriter& writer, IAttributeBag* bag) + { + vint attCount = bag->GetAttributeCount(); + writer << attCount; + for (vint i = 0; i < attCount; i++) + { + auto attInfo = bag->GetAttribute(i); + WString attTypeName = attInfo->GetAttributeType()->GetTypeName(); + writer << attTypeName; + + vint valueCount = attInfo->GetAttributeValueCount(); + writer << valueCount; + for (vint j = 0; j < valueCount; j++) + { + auto valueTd = attInfo->GetAttributeValueType(j); + auto value = attInfo->GetAttributeValue(j); + WString valueTypeName = valueTd->GetTypeName(); + WString serializedData; + if (auto serializableType = valueTd->GetSerializableType()) + { + serializableType->Serialize(value, serializedData); + } + else + { + auto rawTd = UnboxValue(value); + if (rawTd) serializedData = rawTd->GetTypeName(); + } + writer << valueTypeName << serializedData; + } + } + } + + //---------------------------------------------------- + static void IOMethodBase(WfReader& reader, WfMethodBase* info) { Ptr type; @@ -1676,6 +1747,43 @@ Serialization (TypeImpl) td->AddMember(info); } } + + // attributes + { + // type-level attributes + IOAttributeBag(reader, td, nullptr); + + // constructor attributes + if (auto group = td->GetConstructorGroup()) + { + for (vint i = 0; i < group->GetMethodCount(); i++) + { + IOAttributeBag(reader, td, group->GetMethod(i)); + } + } + + // method attributes + for (vint i = 0; i < td->GetMethodGroupCount(); i++) + { + auto group = td->GetMethodGroup(i); + for (vint j = 0; j < group->GetMethodCount(); j++) + { + IOAttributeBag(reader, td, group->GetMethod(j)); + } + } + + // event attributes + for (vint i = 0; i < td->GetEventCount(); i++) + { + IOAttributeBag(reader, td, td->GetEvent(i)); + } + + // property attributes + for (vint i = 0; i < td->GetPropertyCount(); i++) + { + IOAttributeBag(reader, td, td->GetProperty(i)); + } + } } static void IOCustomType(WfWriter& writer, WfCustomType* td, bool isClass) @@ -1790,6 +1898,43 @@ Serialization (TypeImpl) IOType(writer, propInfo->GetReturn()); } } + + // attributes + { + // type-level attributes + IOAttributeBag(writer, td); + + // constructor attributes + if (auto group = td->GetConstructorGroup()) + { + for (vint i = 0; i < group->GetMethodCount(); i++) + { + IOAttributeBag(writer, group->GetMethod(i)); + } + } + + // method attributes + for (vint i = 0; i < td->GetMethodGroupCount(); i++) + { + auto group = td->GetMethodGroup(i); + for (vint j = 0; j < group->GetMethodCount(); j++) + { + IOAttributeBag(writer, group->GetMethod(j)); + } + } + + // event attributes + for (vint i = 0; i < td->GetEventCount(); i++) + { + IOAttributeBag(writer, td->GetEvent(i)); + } + + // property attributes + for (vint i = 0; i < td->GetPropertyCount(); i++) + { + IOAttributeBag(writer, td->GetProperty(i)); + } + } } //---------------------------------------------------- @@ -1837,6 +1982,18 @@ Serialization (TypeImpl) field->SetReturn(typeInfo); td->AddMember(field); } + + // attributes + { + // type-level attributes + IOAttributeBag(reader, td, nullptr); + + // field attributes + for (vint i = 0; i < td->GetPropertyCount(); i++) + { + IOAttributeBag(reader, td, td->GetProperty(i)); + } + } } static void IOStruct(WfWriter& writer, WfStruct* td) @@ -1854,6 +2011,18 @@ Serialization (TypeImpl) ITypeInfo* typeInfo = prop->GetReturn(); IOType(writer, typeInfo); } + + // attributes + { + // type-level attributes + IOAttributeBag(writer, td); + + // field attributes + for (vint i = 0; i < td->GetPropertyCount(); i++) + { + IOAttributeBag(writer, td->GetProperty(i)); + } + } } //---------------------------------------------------- @@ -2481,6 +2650,15 @@ WfRuntimeLambda WfRuntimeInterfaceInstance ***********************************************************************/ + WfRuntimeInterfaceInstance::~WfRuntimeInterfaceInstance() + { + if (destructorFunctionIndex != -1) + { + auto arguments = IValueList::Create(); + WfRuntimeLambda::Invoke(Ptr(globalContext), capturedVariables, destructorFunctionIndex, arguments); + } + } + Value WfRuntimeInterfaceInstance::Invoke(IMethodInfo* methodInfo, Ptr arguments) { vint index = functions.Keys().IndexOf(methodInfo); @@ -3866,9 +4044,16 @@ WfRuntimeThreadContext { CONTEXT_ACTION(PopValue(value), L"failed to pop a value from the stack."); CONTEXT_ACTION(PopValue(key), L"failed to pop a value from the stack."); - auto name = UnboxValue(key); - auto func = UnboxValue(value); - proxy->functions.Add(name, func); + if (key.IsNull()) + { + proxy->destructorFunctionIndex = UnboxValue(value); + } + else + { + auto name = UnboxValue(key); + auto func = UnboxValue(value); + proxy->functions.Add(name, func); + } } CONTEXT_ACTION(PopValue(operand), L"failed to pop a value from the stack."); diff --git a/Import/VlppWorkflowRuntime.h b/Import/VlppWorkflowRuntime.h index 4174804e..def06ac1 100644 --- a/Import/VlppWorkflowRuntime.h +++ b/Import/VlppWorkflowRuntime.h @@ -1089,7 +1089,9 @@ InterfaceInstance WfRuntimeGlobalContext* globalContext = nullptr; Ptr capturedVariables; FunctionMap functions; + vint destructorFunctionIndex = -1; + ~WfRuntimeInterfaceInstance(); Value Invoke(IMethodInfo* methodInfo, Ptr arguments)override; }; } diff --git a/Tools/Executables/GlrParserGen/Main.cpp b/Tools/Executables/GlrParserGen/Main.cpp index ac2024bd..35dee30e 100644 --- a/Tools/Executables/GlrParserGen/Main.cpp +++ b/Tools/Executables/GlrParserGen/Main.cpp @@ -380,6 +380,7 @@ int main(int argc, char* argv[]) { files.Remove(astOutput->jsonH); files.Remove(astOutput->jsonCpp); + files.Remove(astOutput->jsonDts); } else if (utility == L"Builder") { diff --git a/Tools/Reflection32.bin b/Tools/Reflection32.bin index d81b244f..382f6b4f 100644 Binary files a/Tools/Reflection32.bin and b/Tools/Reflection32.bin differ diff --git a/Tools/Reflection64.bin b/Tools/Reflection64.bin index dacd68ed..2df5f44a 100644 Binary files a/Tools/Reflection64.bin and b/Tools/Reflection64.bin differ diff --git a/Tutorial/Console_Workflow/W05_StaticRun/W05_StaticRun.vcxproj b/Tutorial/Console_Workflow/W05_StaticRun/W05_StaticRun.vcxproj index 9da9f8e9..6bc44084 100644 --- a/Tutorial/Console_Workflow/W05_StaticRun/W05_StaticRun.vcxproj +++ b/Tutorial/Console_Workflow/W05_StaticRun/W05_StaticRun.vcxproj @@ -156,6 +156,7 @@ + @@ -179,6 +180,12 @@ true + + /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) /bigobj %(AdditionalOptions) @@ -218,4 +225,4 @@ - \ No newline at end of file + diff --git a/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoReflection.cpp b/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoReflection.cpp index 3b7f573f..e3e20bd7 100644 --- a/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoReflection.cpp @@ -154,51 +154,85 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::AnimationTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::AnimationTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::AnimationTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::AnimationTabPage*(), NO_PARAMETER) CLASS_MEMBER_STATIC_METHOD(BallAnimation, { L"container" _ L"ball" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_STATIC_METHOD(BallAnimationWithDelay, { L"container" _ L"ball" _ L"delay" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(PerformGradientAnimation, { L"target" }) CLASS_MEMBER_STATIC_METHOD(WaitingAnimation, { L"container" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(counter) CLASS_MEMBER_FIELD(gradientColorDef) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(lastGradientAnimation) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) END_CLASS_MEMBER(::demo::AnimationTabPage) BEGIN_CLASS_MEMBER(::demo::AnimationTabPageConstructor) CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::AnimationTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_AnimationTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(animationBackground) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonStartAnimation) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::AnimationTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::CategoryDisplayer) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::CategoryDisplayerConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::CategoryDisplayerConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::CategoryDisplayer*(), NO_PARAMETER) @@ -206,6 +240,7 @@ namespace vl CLASS_MEMBER_METHOD(SetCategory, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(CategoryChanged) CLASS_MEMBER_FIELD(__vwsn_prop_Category) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Category, GetCategory, SetCategory, CategoryChanged) END_CLASS_MEMBER(::demo::CategoryDisplayer) @@ -213,17 +248,27 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::CategoryDisplayerConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_CategoryDisplayer_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::CategoryDisplayerConstructor) BEGIN_CLASS_MEMBER(::demo::CategoryEditor) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::CategoryEditorConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridEditorTemplate) CLASS_MEMBER_BASE(::demo::CategoryEditorConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::CategoryEditor*(), NO_PARAMETER) @@ -234,18 +279,25 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::CategoryEditorConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_CategoryEditor_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::CategoryEditorConstructor) BEGIN_CLASS_MEMBER(::demo::CategoryItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::CategoryItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListItemTemplate) CLASS_MEMBER_BASE(::demo::CategoryItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::CategoryItemTemplate*(::demo::MyCategory), { L"__vwsn_ctor_parameter_SelectedCategory" }) CLASS_MEMBER_METHOD(GetSelectedCategory, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_SelectedCategory) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(SelectedCategory, GetSelectedCategory) END_CLASS_MEMBER(::demo::CategoryItemTemplate) @@ -253,13 +305,19 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::CategoryItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_CategoryItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(SelectedCategory) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::CategoryItemTemplateConstructor) BEGIN_CLASS_MEMBER(::demo::CategoryVisualizer) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::CategoryVisualizerConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridVisualizerTemplate) CLASS_MEMBER_BASE(::demo::CategoryVisualizerConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::CategoryVisualizer*(), NO_PARAMETER) @@ -269,9 +327,13 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::CategoryVisualizerConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_CategoryVisualizer_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::CategoryVisualizerConstructor) BEGIN_CLASS_MEMBER(::demo::ColorAnimation) @@ -291,10 +353,15 @@ namespace vl CLASS_MEMBER_EVENT(CurrentChanged) CLASS_MEMBER_EVENT(EndChanged) CLASS_MEMBER_FIELD(__vwsn_ani_int_) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_ani_int_Thickness) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Begin) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Current) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_End) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Begin, GetBegin, SetBegin, BeginChanged) CLASS_MEMBER_PROPERTY_EVENT(Current, GetCurrent, SetCurrent, CurrentChanged) CLASS_MEMBER_PROPERTY_EVENT(End, GetEnd, SetEnd, EndChanged) @@ -319,9 +386,13 @@ namespace vl CLASS_MEMBER_EVENT(ThicknessChanged) CLASS_MEMBER_EVENT(TopChanged) CLASS_MEMBER_FIELD(__vwsn_prop_Bottom) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Shadow) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Thickness) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Top) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Bottom, GetBottom, SetBottom, BottomChanged) CLASS_MEMBER_PROPERTY_EVENT(Shadow, GetShadow, SetShadow, ShadowChanged) CLASS_MEMBER_PROPERTY_EVENT(Thickness, GetThickness, SetThickness, ThicknessChanged) @@ -329,6 +400,7 @@ namespace vl END_CLASS_MEMBER(::demo::ColorDef) BEGIN_CLASS_MEMBER(::demo::DataGridTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DataGridTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::DataGridTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::DataGridTabPage*(), NO_PARAMETER) @@ -340,36 +412,65 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DataGridTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_DataGridTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dataGrid) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dateFilter) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::DataGridTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::DateEditor) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DateEditorConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridEditorTemplate) CLASS_MEMBER_BASE(::demo::DateEditorConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::DateEditor*(), NO_PARAMETER) @@ -379,43 +480,66 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DateEditorConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_DateEditor_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::DateEditorConstructor) BEGIN_CLASS_MEMBER(::demo::DateFilter) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DateFilterConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::DateFilterConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::DateFilter*(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) CLASS_MEMBER_METHOD(GetFilter, NO_PARAMETER) CLASS_MEMBER_METHOD(SetFilter, { L"__vwsn_value_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_METHOD(UpdateFilter, NO_PARAMETER) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Filter) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(Filter, GetFilter) CLASS_MEMBER_FIELD(callback) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) END_CLASS_MEMBER(::demo::DateFilter) BEGIN_CLASS_MEMBER(::demo::DateFilterConstructor) CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DateFilterConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_DateFilter_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkFrom) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkTo) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dateFrom) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dateTo) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::DateFilterConstructor) BEGIN_CLASS_MEMBER(::demo::DatePickerTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DatePickerTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::DatePickerTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::DatePickerTabPage*(), NO_PARAMETER) @@ -425,30 +549,55 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DatePickerTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_DatePickerTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dc1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dc2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dp1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dp2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::DatePickerTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::DialogStringsInjection) @@ -458,6 +607,7 @@ namespace vl END_CLASS_MEMBER(::demo::DialogStringsInjection) BEGIN_CLASS_MEMBER(::demo::DocumentBoxSubTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DocumentBoxSubTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::DocumentBoxSubTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::DocumentBoxSubTabPage*(), NO_PARAMETER) @@ -465,6 +615,7 @@ namespace vl CLASS_MEMBER_METHOD(SetTextBoxAcceptTabInput, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(TextBoxAcceptTabInputChanged) CLASS_MEMBER_FIELD(__vwsn_prop_TextBoxAcceptTabInput) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(TextBoxAcceptTabInput, GetTextBoxAcceptTabInput, SetTextBoxAcceptTabInput, TextBoxAcceptTabInputChanged) END_CLASS_MEMBER(::demo::DocumentBoxSubTabPage) @@ -472,20 +623,34 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DocumentBoxSubTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_DocumentBoxSubTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::DocumentBoxSubTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::DocumentEditorBase) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_File, ::vl::WString::Unmanaged(L"DocumentEditorBase")) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DocumentEditorBaseConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::DocumentEditorBaseConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::DocumentEditorBase*(), NO_PARAMETER) @@ -495,26 +660,42 @@ namespace vl CLASS_MEMBER_METHOD(GetHasEditableSelection, NO_PARAMETER) CLASS_MEMBER_METHOD(GetHasEditableSelectionInSingleParagraph, NO_PARAMETER) CLASS_MEMBER_METHOD(GetMenuContainer, NO_PARAMETER) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_METHOD(GetToolstripContainer, NO_PARAMETER) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_METHOD(HasEditableCursor, NO_PARAMETER) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(HasEditableHyperlink, { L"forEdit" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(LoadAsPrivateFormat, { L"fileName" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) CLASS_MEMBER_METHOD(SaveAsHTML, { L"fileName" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) CLASS_MEMBER_METHOD(SaveAsPrivateFormat, { L"fileName" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) CLASS_MEMBER_METHOD(SaveAsRTF, { L"fileName" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) CLASS_MEMBER_METHOD(SaveDocument, NO_PARAMETER) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(SelectAlignmentCommand, NO_PARAMETER) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_METHOD(SetAlignment, { L"alignment" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(SetEditMode, { L"editMode" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(SetEditModeCommand, { L"__vwsn_value_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_METHOD(SetHasEditableSelection, { L"__vwsn_value_" }) CLASS_MEMBER_METHOD(SetHasEditableSelectionInSingleParagraph, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(EditModeCommandChanged) CLASS_MEMBER_EVENT(HasEditableSelectionChanged) CLASS_MEMBER_EVENT(HasEditableSelectionInSingleParagraphChanged) CLASS_MEMBER_FIELD(__vwsn_prop_EditModeCommand) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_HasEditableSelection) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_HasEditableSelectionInSingleParagraph) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT_READONLY(EditModeCommand, GetEditModeCommand, EditModeCommandChanged) CLASS_MEMBER_PROPERTY_EVENT(HasEditableSelection, GetHasEditableSelection, SetHasEditableSelection, HasEditableSelectionChanged) CLASS_MEMBER_PROPERTY_EVENT(HasEditableSelectionInSingleParagraph, GetHasEditableSelectionInSingleParagraph, SetHasEditableSelectionInSingleParagraph, HasEditableSelectionInSingleParagraphChanged) @@ -526,63 +707,111 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DocumentEditorBaseConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_DocumentEditorBase_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandAlignCenter) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandAlignDefault) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandAlignLeft) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandAlignRight) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandBackColor) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandBold) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandColor) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandCopy) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandCut) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandDelete) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandEditHyperlink) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandEditable) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandFont) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandInsertImage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandItalic) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandLoadPrivate) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandPaste) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandRedo) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandRemoveHyperlink) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandSaveHtml) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandSavePrivate) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandSaveRtf) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandSelect) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandSelectable) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandStrike) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandUnderline) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandUndo) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandViewOnly) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogColor) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogFont) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogMessage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogNotImpl) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogOpen) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogOpenDoc) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogQueryClose) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogSaveDoc) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogSaveDocPrivate) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(document) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(menuContainer) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(toolstripContainer) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::DocumentEditorBaseConstructor) BEGIN_CLASS_MEMBER(::demo::DocumentEditorRibbon) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DocumentEditorRibbonConstructor"))) CLASS_MEMBER_BASE(::demo::DocumentEditorBase) CLASS_MEMBER_BASE(::demo::DocumentEditorRibbonConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::DocumentEditorRibbon*(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) CLASS_MEMBER_METHOD(GenerateStyleGroups, NO_PARAMETER) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(GetAlignCenterSelected, NO_PARAMETER) CLASS_MEMBER_METHOD(GetAlignLeftSelected, NO_PARAMETER) CLASS_MEMBER_METHOD(GetAlignRightSelected, NO_PARAMETER) CLASS_MEMBER_METHOD(GetStyleGroups, NO_PARAMETER) CLASS_MEMBER_METHOD(SelectStyleName, { L"styleName" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(SetAlignCenterSelected, { L"__vwsn_value_" }) CLASS_MEMBER_METHOD(SetAlignLeftSelected, { L"__vwsn_value_" }) CLASS_MEMBER_METHOD(SetAlignRightSelected, { L"__vwsn_value_" }) @@ -592,9 +821,13 @@ namespace vl CLASS_MEMBER_EVENT(AlignRightSelectedChanged) CLASS_MEMBER_EVENT(StyleGroupsChanged) CLASS_MEMBER_FIELD(__vwsn_prop_AlignCenterSelected) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_AlignLeftSelected) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_AlignRightSelected) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_StyleGroups) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(AlignCenterSelected, GetAlignCenterSelected, SetAlignCenterSelected, AlignCenterSelectedChanged) CLASS_MEMBER_PROPERTY_EVENT(AlignLeftSelected, GetAlignLeftSelected, SetAlignLeftSelected, AlignLeftSelectedChanged) CLASS_MEMBER_PROPERTY_EVENT(AlignRightSelected, GetAlignRightSelected, SetAlignRightSelected, AlignRightSelectedChanged) @@ -605,110 +838,213 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DocumentEditorRibbonConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_DocumentEditorRibbon_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_48) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_49) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_50) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_51) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_52) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_53) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_54) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_55) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_56) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_57) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_58) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_59) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_60) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_61) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_62) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_63) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_64) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_65) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_66) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_67) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_68) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_69) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_70) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_71) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_72) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_73) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_74) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_75) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_76) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_77) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_78) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_79) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_80) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_81) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_82) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_83) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_84) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_85) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_86) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_87) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_88) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_89) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_90) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_91) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_92) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_93) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_94) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_95) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonHome) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogMessage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(styleGallery) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(toolstripHome) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::DocumentEditorRibbonConstructor) BEGIN_CLASS_MEMBER(::demo::DocumentEditorToolstrip) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DocumentEditorToolstripConstructor"))) CLASS_MEMBER_BASE(::demo::DocumentEditorBase) CLASS_MEMBER_BASE(::demo::DocumentEditorToolstripConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::DocumentEditorToolstrip*(), NO_PARAMETER) @@ -718,87 +1054,167 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DocumentEditorToolstripConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_DocumentEditorToolstrip_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_48) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_49) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_50) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_51) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_52) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_53) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_54) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_55) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_56) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_57) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_58) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_59) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_60) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_61) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_62) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_63) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_64) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_65) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_66) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_67) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_68) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_69) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_70) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_71) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_72) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_73) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_74) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_75) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonAlignment) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::DocumentEditorToolstripConstructor) BEGIN_CLASS_MEMBER(::demo::ElementTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::ElementTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::ElementTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::ElementTabPage*(), NO_PARAMETER) @@ -808,65 +1224,123 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ElementTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_ElementTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_48) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_49) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_50) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_51) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_52) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_53) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_54) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::ElementTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::EmbeddedControlsSubTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::EmbeddedControlsSubTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::EmbeddedControlsSubTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::EmbeddedControlsSubTabPage*(), NO_PARAMETER) @@ -876,139 +1350,259 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::EmbeddedControlsSubTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_EmbeddedControlsSubTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_48) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_49) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_50) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_51) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_52) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_53) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_54) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_55) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_56) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_57) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_58) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_59) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_60) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_61) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_62) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_63) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_64) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_65) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_66) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_67) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_68) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_69) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_70) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_71) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_72) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_73) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_74) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_75) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_76) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_77) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_78) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_79) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_80) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_81) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_82) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_83) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_84) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboRun) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogStart) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(docViewer) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::EmbeddedControlsSubTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::EnglishNumbersController) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::EnglishNumbersControllerConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::EnglishNumbersControllerConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::EnglishNumbersController*(), NO_PARAMETER) CLASS_MEMBER_METHOD(GetItemsToBind, NO_PARAMETER) CLASS_MEMBER_METHOD(NumberToText, { L"i" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(NumberToText_0to999, { L"i" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(NumberToText_1To99, { L"i" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(SetItemsToBind, { L"__vwsn_value_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_METHOD(ToText_11to19, { L"i" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(ToText_1to9, { L"i" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_ItemsToBind) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ItemsToBind, GetItemsToBind) CLASS_MEMBER_FIELD(counter) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) END_CLASS_MEMBER(::demo::EnglishNumbersController) BEGIN_CLASS_MEMBER(::demo::EnglishNumbersControllerConstructor) CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::EnglishNumbersControllerConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_EnglishNumbersController_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::EnglishNumbersControllerConstructor) BEGIN_CLASS_MEMBER(::demo::EnglishNumbersControllerTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::EnglishNumbersControllerTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::EnglishNumbersControllerTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::EnglishNumbersControllerTabPage*(), NO_PARAMETER) @@ -1016,9 +1610,13 @@ namespace vl CLASS_MEMBER_METHOD(GetContentComposition, NO_PARAMETER) CLASS_MEMBER_METHOD(GetItemsToBind, NO_PARAMETER) CLASS_MEMBER_METHOD(SetContentComposition, { L"__vwsn_value_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_METHOD(SetItemsToBind, { L"__vwsn_value_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_prop_ContentComposition) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_ItemsToBind) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ContentComposition, GetContentComposition) CLASS_MEMBER_PROPERTY_READONLY(ItemsToBind, GetItemsToBind) END_CLASS_MEMBER(::demo::EnglishNumbersControllerTabPage) @@ -1027,15 +1625,23 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::EnglishNumbersControllerTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_EnglishNumbersControllerTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(content) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(controller) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::EnglishNumbersControllerTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::GenderDisplayer) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::GenderDisplayerConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::GenderDisplayerConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::GenderDisplayer*(), NO_PARAMETER) @@ -1043,6 +1649,7 @@ namespace vl CLASS_MEMBER_METHOD(SetGender, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(GenderChanged) CLASS_MEMBER_FIELD(__vwsn_prop_Gender) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Gender, GetGender, SetGender, GenderChanged) END_CLASS_MEMBER(::demo::GenderDisplayer) @@ -1050,12 +1657,17 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::GenderDisplayerConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_GenderDisplayer_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::GenderDisplayerConstructor) BEGIN_CLASS_MEMBER(::demo::GenderEditor) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::GenderEditorConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridEditorTemplate) CLASS_MEMBER_BASE(::demo::GenderEditorConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::GenderEditor*(), NO_PARAMETER) @@ -1066,18 +1678,25 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::GenderEditorConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_GenderEditor_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::GenderEditorConstructor) BEGIN_CLASS_MEMBER(::demo::GenderItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::GenderItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListItemTemplate) CLASS_MEMBER_BASE(::demo::GenderItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::GenderItemTemplate*(::demo::MyGender), { L"__vwsn_ctor_parameter_SelectedGender" }) CLASS_MEMBER_METHOD(GetSelectedGender, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_SelectedGender) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(SelectedGender, GetSelectedGender) END_CLASS_MEMBER(::demo::GenderItemTemplate) @@ -1085,13 +1704,19 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::GenderItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_GenderItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(SelectedGender) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::GenderItemTemplateConstructor) BEGIN_CLASS_MEMBER(::demo::GenderVisualizer) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::GenderVisualizerConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridVisualizerTemplate) CLASS_MEMBER_BASE(::demo::GenderVisualizerConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::GenderVisualizer*(), NO_PARAMETER) @@ -1101,12 +1726,17 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::GenderVisualizerConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_GenderVisualizer_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::GenderVisualizerConstructor) BEGIN_CLASS_MEMBER(::demo::HyperlinkWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::HyperlinkWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::HyperlinkWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::HyperlinkWindow*(), NO_PARAMETER) @@ -1114,6 +1744,7 @@ namespace vl CLASS_MEMBER_METHOD(SetUrl, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(UrlChanged) CLASS_MEMBER_FIELD(__vwsn_prop_Url) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Url, GetUrl, SetUrl, UrlChanged) END_CLASS_MEMBER(::demo::HyperlinkWindow) @@ -1121,22 +1752,39 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::HyperlinkWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_HyperlinkWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textUrl) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::HyperlinkWindowConstructor) BEGIN_INTERFACE_MEMBER(::demo::IStringResourceStrings) @@ -1156,6 +1804,7 @@ namespace vl END_INTERFACE_MEMBER(::demo::IStringResourceStrings) BEGIN_CLASS_MEMBER(::demo::ListViewTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::ListViewTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::ListViewTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::ListViewTabPage*(), NO_PARAMETER) @@ -1167,38 +1816,69 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ListViewTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_ListViewTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(bindableListView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(listView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::ListViewTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::LocaleSelector) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::LocaleSelectorConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::LocaleSelectorConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::LocaleSelector*(), NO_PARAMETER) @@ -1209,15 +1889,23 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::LocaleSelectorConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_LocaleSelector_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboLocales) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(listLocales) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::LocaleSelectorConstructor) BEGIN_CLASS_MEMBER(::demo::LocalizedColorDialogTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::LocalizedColorDialogTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::LocalizedColorDialogTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::LocalizedColorDialogTabPage*(), NO_PARAMETER) @@ -1227,16 +1915,25 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::LocalizedColorDialogTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_LocalizedColorDialogTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(background) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialog) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::LocalizedColorDialogTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::LocalizedDialogsTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::LocalizedDialogsTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::LocalizedDialogsTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::LocalizedDialogsTabPage*(), NO_PARAMETER) @@ -1246,23 +1943,39 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::LocalizedDialogsTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_LocalizedDialogsTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::LocalizedDialogsTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::LocalizedFileDialogTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::LocalizedFileDialogTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::LocalizedFileDialogTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::LocalizedFileDialogTabPage*(), NO_PARAMETER) @@ -1273,76 +1986,145 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::LocalizedFileDialogTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_LocalizedFileDialogTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogAddToRecent) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogAllowMultipleSelection) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogDereferenceLinks) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogDirectoryMustExist) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogFileMustExist) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogPromptCreateFile) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogPromptOverwriteFile) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogShowNetworkButton) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogShowReadOnlyCheckBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogOpen) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogSave) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(lstFiles) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtDefaultExtension) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtDirectory) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtFileName) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtFilter) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtFilterIndex) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtTitle) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::LocalizedFileDialogTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::LocalizedFontDialogTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::LocalizedFontDialogTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::LocalizedFontDialogTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::LocalizedFontDialogTabPage*(), NO_PARAMETER) @@ -1352,18 +2134,29 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::LocalizedFontDialogTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_LocalizedFontDialogTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkEffect) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialog) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(label) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::LocalizedFontDialogTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::LocalizedMessageDialogTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::LocalizedMessageDialogTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::LocalizedMessageDialogTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::LocalizedMessageDialogTabPage*(), NO_PARAMETER) @@ -1382,46 +2175,85 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::LocalizedMessageDialogTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_LocalizedMessageDialogTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboDefaultButton) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboIcon) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboInput) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialog) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(lblOutput) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtText) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtTitle) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::LocalizedMessageDialogTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::LocalizedStringsTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::LocalizedStringsTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::LocalizedStringsTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::LocalizedStringsTabPage*(), NO_PARAMETER) @@ -1429,6 +2261,7 @@ namespace vl CLASS_MEMBER_METHOD(SetStrings, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(StringsChanged) CLASS_MEMBER_FIELD(__vwsn_prop_Strings) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Strings, GetStrings, SetStrings, StringsChanged) CLASS_MEMBER_FIELD(currency) CLASS_MEMBER_FIELD(dateTime) @@ -1439,31 +2272,56 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::LocalizedStringsTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_LocalizedStringsTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::LocalizedStringsTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_File, ::vl::WString::Unmanaged(L"MainWindow")) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -1474,87 +2332,169 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_48) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_49) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_50) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_51) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_52) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_53) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_54) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_55) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_56) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_57) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_58) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_59) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_60) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_61) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_62) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_63) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_64) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_65) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_66) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_67) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_68) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkBorder) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkFrame) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkIcon) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkMax) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkMin) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkSizeBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkTitle) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogGlobalShortcut) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogLocalShortcut) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(editorRibbon) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(editorToolstrip) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) BEGIN_ENUM_ITEM(::demo::MyCategory) @@ -1584,12 +2524,19 @@ namespace vl CLASS_MEMBER_METHOD(SetSmallImage, { L"__vwsn_value_" }) CLASS_MEMBER_METHOD(SetWebsite, { L"__vwsn_value_" }) CLASS_MEMBER_FIELD(__vwsn_prop_Birthday) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Category) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Gender) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_LargeImage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Name) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_SmallImage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Website) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY(Birthday, GetBirthday, SetBirthday) CLASS_MEMBER_PROPERTY(Category, GetCategory, SetCategory) CLASS_MEMBER_PROPERTY(Gender, GetGender, SetGender) @@ -1612,12 +2559,15 @@ namespace vl CLASS_MEMBER_METHOD(SetChecked, { L"__vwsn_value_" }) CLASS_MEMBER_METHOD(SetName, { L"__vwsn_value_" }) CLASS_MEMBER_FIELD(__vwsn_prop_Checked) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Name) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY(Checked, GetChecked, SetChecked) CLASS_MEMBER_PROPERTY(Name, GetName, SetName) END_CLASS_MEMBER(::demo::MyTextItem) BEGIN_CLASS_MEMBER(::demo::RefreshBindableDataGridTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::RefreshBindableDataGridTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::RefreshBindableDataGridTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::RefreshBindableDataGridTabPage*(), NO_PARAMETER) @@ -1629,39 +2579,71 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshBindableDataGridTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_RefreshBindableDataGridTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dataGrid) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::RefreshBindableDataGridTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::RefreshBindableListViewTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::RefreshBindableListViewTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::RefreshBindableListViewTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::RefreshBindableListViewTabPage*(), NO_PARAMETER) @@ -1673,38 +2655,69 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshBindableListViewTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_RefreshBindableListViewTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(listView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::RefreshBindableListViewTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::RefreshBindableTextListTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::RefreshBindableTextListTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::RefreshBindableTextListTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::RefreshBindableTextListTabPage*(), NO_PARAMETER) @@ -1715,24 +2728,41 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshBindableTextListTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_RefreshBindableTextListTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonRead) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textList) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::RefreshBindableTextListTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::RefreshBindableTreeViewTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::RefreshBindableTreeViewTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::RefreshBindableTreeViewTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::RefreshBindableTreeViewTabPage*(), NO_PARAMETER) @@ -1744,19 +2774,33 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshBindableTreeViewTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_RefreshBindableTreeViewTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(treeView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::RefreshBindableTreeViewTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::RefreshItem) @@ -1774,6 +2818,7 @@ namespace vl CLASS_MEMBER_METHOD(GetSub3, NO_PARAMETER) CLASS_MEMBER_METHOD(GetTitle, NO_PARAMETER) CLASS_MEMBER_METHOD(SetChildren, { L"__vwsn_value_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_METHOD(SetDoNotUse, { L"__vwsn_value_" }) CLASS_MEMBER_METHOD(SetLargeImage, { L"__vwsn_value_" }) CLASS_MEMBER_METHOD(SetName, { L"__vwsn_value_" }) @@ -1784,15 +2829,25 @@ namespace vl CLASS_MEMBER_METHOD(SetSub3, { L"__vwsn_value_" }) CLASS_MEMBER_METHOD(SetTitle, { L"__vwsn_value_" }) CLASS_MEMBER_FIELD(__vwsn_prop_Children) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_DoNotUse) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_LargeImage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Name) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Selected) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_SmallImage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Sub1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Sub2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Sub3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Title) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(Children, GetChildren) CLASS_MEMBER_PROPERTY(DoNotUse, GetDoNotUse, SetDoNotUse) CLASS_MEMBER_PROPERTY(LargeImage, GetLargeImage, SetLargeImage) @@ -1806,6 +2861,7 @@ namespace vl END_CLASS_MEMBER(::demo::RefreshItem) BEGIN_CLASS_MEMBER(::demo::RefreshListViewTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::RefreshListViewTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::RefreshListViewTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::RefreshListViewTabPage*(), NO_PARAMETER) @@ -1815,40 +2871,73 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshListViewTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_RefreshListViewTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(listView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::RefreshListViewTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::RefreshTextListTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::RefreshTextListTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::RefreshTextListTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::RefreshTextListTabPage*(), NO_PARAMETER) @@ -1858,26 +2947,45 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshTextListTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_RefreshTextListTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonRead) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textList) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::RefreshTextListTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::RefreshTreeViewTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::RefreshTreeViewTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::RefreshTreeViewTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::RefreshTreeViewTabPage*(), NO_PARAMETER) @@ -1887,33 +2995,55 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshTreeViewTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_RefreshTreeViewTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(treeView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::RefreshTreeViewTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::RepeatItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::RepeatItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::demo::RepeatItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::RepeatItemTemplate*(::vl::Ptr<::demo::MyTextItem>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::RepeatItemTemplate) @@ -1921,13 +3051,19 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RepeatItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_RepeatItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::RepeatItemTemplateConstructor) BEGIN_CLASS_MEMBER(::demo::RepeatTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::RepeatTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::RepeatTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::RepeatTabPage*(), NO_PARAMETER) @@ -1937,50 +3073,93 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RepeatTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_RepeatTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(hTracker) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(repeatFlowTabPage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(repeatStackTabPage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(sharedSizeFlowTabPage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(sharedSizeListTabPage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::RepeatTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::ResponsiveGroupControl) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::ResponsiveGroupControlConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::ResponsiveGroupControlConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::ResponsiveGroupControl*(), NO_PARAMETER) @@ -1990,52 +3169,97 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ResponsiveGroupControlConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_ResponsiveGroupControl_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(responsive) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::ResponsiveGroupControlConstructor) BEGIN_CLASS_MEMBER(::demo::ResponsiveStackControl) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::ResponsiveStackControlConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::ResponsiveStackControlConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::ResponsiveStackControl*(), NO_PARAMETER) @@ -2045,52 +3269,97 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ResponsiveStackControlConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_ResponsiveStackControl_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(responsive) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::ResponsiveStackControlConstructor) BEGIN_CLASS_MEMBER(::demo::ResponsiveTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::ResponsiveTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::ResponsiveTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::ResponsiveTabPage*(), NO_PARAMETER) @@ -2100,26 +3369,45 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ResponsiveTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_ResponsiveTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::ResponsiveTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::ResponsiveViewControl) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::ResponsiveViewControlConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::ResponsiveViewControlConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::ResponsiveViewControl*(), NO_PARAMETER) @@ -2129,53 +3417,95 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ResponsiveViewControlConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_ResponsiveViewControl_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(documentBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(responsive) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::ResponsiveViewControlConstructor) BEGIN_CLASS_MEMBER(::demo::SharedSizeItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::SharedSizeItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::demo::SharedSizeItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::SharedSizeItemTemplate*(::vl::Ptr<::demo::MyTextItem>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::SharedSizeItemTemplate) @@ -2183,19 +3513,27 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::SharedSizeItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_SharedSizeItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::SharedSizeItemTemplateConstructor) BEGIN_CLASS_MEMBER(::demo::SharedSizeTextItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::SharedSizeTextItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListItemTemplate) CLASS_MEMBER_BASE(::demo::SharedSizeTextItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::SharedSizeTextItemTemplate*(::vl::Ptr<::demo::MyTextItem>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::SharedSizeTextItemTemplate) @@ -2203,10 +3541,15 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::SharedSizeTextItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_SharedSizeTextItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::SharedSizeTextItemTemplateConstructor) BEGIN_CLASS_MEMBER(::demo::StringResource) @@ -2233,12 +3576,14 @@ namespace vl END_CLASS_MEMBER(::demo::StyleItem) BEGIN_CLASS_MEMBER(::demo::StyleItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::StyleItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListItemTemplate) CLASS_MEMBER_BASE(::demo::StyleItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::StyleItemTemplate*(::vl::Ptr<::demo::StyleItem>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::StyleItemTemplate) @@ -2246,21 +3591,35 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::StyleItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_StyleItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(containerControl) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(styleLabel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::StyleItemTemplateConstructor) BEGIN_CLASS_MEMBER(::demo::SubWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::SubWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::SubWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::SubWindow*(), NO_PARAMETER) @@ -2271,27 +3630,47 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::SubWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_SubWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkBorder) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkFrame) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkIcon) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkMax) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkMin) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkSizeBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkTitle) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::SubWindowConstructor) BEGIN_CLASS_MEMBER(::demo::TestWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::TestWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::TestWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::TestWindow*(), NO_PARAMETER) @@ -2301,19 +3680,31 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::TestWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_TestWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::TestWindowConstructor) BEGIN_CLASS_MEMBER(::demo::TextBoxSubTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::TextBoxSubTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::TextBoxSubTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::TextBoxSubTabPage*(), NO_PARAMETER) @@ -2321,6 +3712,7 @@ namespace vl CLASS_MEMBER_METHOD(SetTextBoxAcceptTabInput, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(TextBoxAcceptTabInputChanged) CLASS_MEMBER_FIELD(__vwsn_prop_TextBoxAcceptTabInput) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(TextBoxAcceptTabInput, GetTextBoxAcceptTabInput, SetTextBoxAcceptTabInput, TextBoxAcceptTabInputChanged) END_CLASS_MEMBER(::demo::TextBoxSubTabPage) @@ -2328,46 +3720,73 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::TextBoxSubTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_TextBoxSubTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::TextBoxSubTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::TextBoxTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::TextBoxTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::TextBoxTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::TextBoxTabPage*(), NO_PARAMETER) CLASS_MEMBER_METHOD(UpdateFont, { L"newFont" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_EVENT(OnMakeFontLarger) CLASS_MEMBER_EVENT(OnMakeFontSmaller) CLASS_MEMBER_FIELD(flag) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::TextBoxTabPage) BEGIN_CLASS_MEMBER(::demo::TextBoxTabPageConstructor) CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::TextBoxTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_TextBoxTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(d1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(d2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(t1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(t2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::TextBoxTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::TextEditor) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::TextEditorConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridEditorTemplate) CLASS_MEMBER_BASE(::demo::TextEditorConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::TextEditor*(), NO_PARAMETER) @@ -2377,12 +3796,17 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::TextEditorConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_TextEditor_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::TextEditorConstructor) BEGIN_CLASS_MEMBER(::demo::TextListTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::TextListTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::TextListTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::TextListTabPage*(), NO_PARAMETER) @@ -2394,56 +3818,105 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::TextListTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_TextListTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(bindableTextList) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(mutexGroupController) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textList) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::TextListTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::TreeViewTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::TreeViewTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::TreeViewTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::TreeViewTabPage*(), NO_PARAMETER) @@ -2455,62 +3928,119 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::TreeViewTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_TreeViewTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_48) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_49) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_50) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_51) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_52) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(bindableTreeView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(treeView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::TreeViewTabPageConstructor) #undef _ diff --git a/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoReflection.cpp index b094278f..37eb5e9f 100644 --- a/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoReflection.cpp @@ -36,35 +36,60 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_File, ::vl::WString::Unmanaged(L"MainWindow")) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) CLASS_MEMBER_METHOD(buttonNewWindow_Clicked, { L"sender" _ L"arguments" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) CLASS_MEMBER_METHOD(checkFrame_SelectionChanged, { L"sender" _ L"arguments" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) END_CLASS_MEMBER(::demo::MainWindow) BEGIN_CLASS_MEMBER(::demo::MainWindowConstructor) CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonNewWindow) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkBorder) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkFrame) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkIcon) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkMax) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkMin) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkSizeBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkTitle) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/AddressBook/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/AddressBook/UI/Source/DemoReflection.cpp index 7c4de63f..b8248af7 100644 --- a/Tutorial/GacUI_Controls/AddressBook/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/AddressBook/UI/Source/DemoReflection.cpp @@ -94,12 +94,15 @@ namespace vl END_INTERFACE_MEMBER(::demo::IViewModel) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_File, ::vl::WString::Unmanaged(L"MainWindow")) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(::vl::Ptr<::demo::IViewModel>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(ClearViewSelection, NO_PARAMETER) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::MainWindow) @@ -107,62 +110,117 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandBigIcon) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandDeleteContact) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandDeleteFolder) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandDetail) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandEditContact) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandInformation) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandList) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandNewContact) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandNewFolder) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandSmallIcon) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandTile) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(listViewContacts) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(treeViewFolders) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) BEGIN_CLASS_MEMBER(::demo::NewContactWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::NewContactWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::NewContactWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::NewContactWindow*(), NO_PARAMETER) @@ -171,6 +229,7 @@ namespace vl CLASS_MEMBER_METHOD(SetForEdit, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(ForEditChanged) CLASS_MEMBER_FIELD(__vwsn_prop_ForEdit) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(ForEdit, GetForEdit, SetForEdit, ForEditChanged) CLASS_MEMBER_FIELD(Ready) CLASS_MEMBER_FIELD(contact) @@ -180,38 +239,69 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::NewContactWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_NewContactWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(datePickerBirthday) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxAddress) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxName) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxPhone) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::NewContactWindowConstructor) BEGIN_CLASS_MEMBER(::demo::NewFolderWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::NewFolderWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::NewFolderWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::NewFolderWindow*(), NO_PARAMETER) @@ -219,6 +309,7 @@ namespace vl CLASS_MEMBER_METHOD(SetFolderName, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(FolderNameChanged) CLASS_MEMBER_FIELD(__vwsn_prop_FolderName) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(FolderName, GetFolderName, SetFolderName, FolderNameChanged) CLASS_MEMBER_FIELD(Ready) END_CLASS_MEMBER(::demo::NewFolderWindow) @@ -227,20 +318,35 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::NewFolderWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_NewFolderWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxName) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::NewFolderWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/Animation/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/Animation/UI/Source/DemoReflection.cpp index 2bddeae1..a7b05f25 100644 --- a/Tutorial/GacUI_Controls/Animation/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/Animation/UI/Source/DemoReflection.cpp @@ -54,10 +54,15 @@ namespace vl CLASS_MEMBER_EVENT(CurrentChanged) CLASS_MEMBER_EVENT(EndChanged) CLASS_MEMBER_FIELD(__vwsn_ani_int_) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_ani_int_Thickness) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Begin) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Current) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_End) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Begin, GetBegin, SetBegin, BeginChanged) CLASS_MEMBER_PROPERTY_EVENT(Current, GetCurrent, SetCurrent, CurrentChanged) CLASS_MEMBER_PROPERTY_EVENT(End, GetEnd, SetEnd, EndChanged) @@ -82,9 +87,13 @@ namespace vl CLASS_MEMBER_EVENT(ThicknessChanged) CLASS_MEMBER_EVENT(TopChanged) CLASS_MEMBER_FIELD(__vwsn_prop_Bottom) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Shadow) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Thickness) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Top) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Bottom, GetBottom, SetBottom, BottomChanged) CLASS_MEMBER_PROPERTY_EVENT(Shadow, GetShadow, SetShadow, ShadowChanged) CLASS_MEMBER_PROPERTY_EVENT(Thickness, GetThickness, SetThickness, ThicknessChanged) @@ -92,46 +101,76 @@ namespace vl END_CLASS_MEMBER(::demo::ColorDef) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) CLASS_MEMBER_STATIC_METHOD(BallAnimation, { L"container" _ L"ball" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_STATIC_METHOD(BallAnimationWithDelay, { L"container" _ L"ball" _ L"delay" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(PerformGradientAnimation, { L"target" }) CLASS_MEMBER_STATIC_METHOD(WaitingAnimation, { L"container" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(counter) CLASS_MEMBER_FIELD(gradientColorDef) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(lastGradientAnimation) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) END_CLASS_MEMBER(::demo::MainWindow) BEGIN_CLASS_MEMBER(::demo::MainWindowConstructor) CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(animationBackground) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/CalculatorAndStateMachine/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/CalculatorAndStateMachine/UI/Source/DemoReflection.cpp index 45b14e45..4458c4da 100644 --- a/Tutorial/GacUI_Controls/CalculatorAndStateMachine/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/CalculatorAndStateMachine/UI/Source/DemoReflection.cpp @@ -40,6 +40,7 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::description::StateMachine) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::Calculator>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_state_CreateCoroutine, { L"__vwsn_state_startState" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(Add, NO_PARAMETER) CLASS_MEMBER_METHOD(Calculate, NO_PARAMETER) CLASS_MEMBER_METHOD(Clear, NO_PARAMETER) @@ -52,19 +53,24 @@ namespace vl CLASS_MEMBER_METHOD(Update, { L"value" }) CLASS_MEMBER_EVENT(ValueChanged) CLASS_MEMBER_FIELD(__vwsn_prop_Value) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_stateip_Digit_i) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_statesp_Integer_newNumber) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Value, GetValue, SetValue, ValueChanged) CLASS_MEMBER_FIELD(op) CLASS_MEMBER_FIELD(valueFirst) END_CLASS_MEMBER(::demo::Calculator) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(::vl::Ptr<::demo::Calculator>), { L"__vwsn_ctor_parameter_calculator" }) CLASS_MEMBER_METHOD(Getcalculator, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_calculator) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(calculator, Getcalculator) END_CLASS_MEMBER(::demo::MainWindow) @@ -72,57 +78,109 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_48) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_49) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(calculator) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoReflection.cpp index 0b48a8d7..2492045f 100644 --- a/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoReflection.cpp @@ -42,11 +42,13 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::ColorComboItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::ColorComboItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::demo::ColorComboItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::ColorComboItemTemplate*(::vl::Ptr<::demo::IColorItem>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::ColorComboItemTemplate) @@ -54,21 +56,31 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ColorComboItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_ColorComboItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::ColorComboItemTemplateConstructor) BEGIN_CLASS_MEMBER(::demo::ColorListItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::ColorListItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListItemTemplate) CLASS_MEMBER_BASE(::demo::ColorListItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::ColorListItemTemplate*(::vl::Ptr<::demo::IColorItem>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::ColorListItemTemplate) @@ -76,9 +88,13 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ColorListItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_ColorListItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::ColorListItemTemplateConstructor) BEGIN_INTERFACE_MEMBER(::demo::IColorItem) @@ -96,11 +112,13 @@ namespace vl END_INTERFACE_MEMBER(::demo::IViewModel) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(::vl::Ptr<::demo::IViewModel>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::MainWindow) @@ -108,16 +126,27 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/ColorPicker2/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/ColorPicker2/UI/Source/DemoReflection.cpp index e3f67714..b8cff42a 100644 --- a/Tutorial/GacUI_Controls/ColorPicker2/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/ColorPicker2/UI/Source/DemoReflection.cpp @@ -40,11 +40,13 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::ColorBomboItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::ColorBomboItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::demo::ColorBomboItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::ColorBomboItemTemplate*(::vl::Ptr<::demo::IColorItem>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::ColorBomboItemTemplate) @@ -52,16 +54,27 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ColorBomboItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_ColorBomboItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::ColorBomboItemTemplateConstructor) BEGIN_INTERFACE_MEMBER(::demo::IColorItem) @@ -85,11 +98,13 @@ namespace vl END_INTERFACE_MEMBER(::demo::IViewModel) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(::vl::Ptr<::demo::IViewModel>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::MainWindow) @@ -97,22 +112,39 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboColor) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoReflection.cpp index aa953036..f8d0fd99 100644 --- a/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -45,83 +46,161 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_48) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_49) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_50) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_51) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_52) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_53) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_54) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_55) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_56) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_57) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_58) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_59) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_60) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_61) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_62) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_63) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_64) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_65) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_66) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_67) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_68) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_69) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_70) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_71) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_72) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_73) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_74) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_75) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(radioGroup) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/DataGrid/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/DataGrid/UI/Source/DemoReflection.cpp index 28be50eb..c6fc89e6 100644 --- a/Tutorial/GacUI_Controls/DataGrid/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/DataGrid/UI/Source/DemoReflection.cpp @@ -61,6 +61,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::CategoryDisplayer) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::CategoryDisplayerConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::CategoryDisplayerConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::CategoryDisplayer*(), NO_PARAMETER) @@ -68,6 +69,7 @@ namespace vl CLASS_MEMBER_METHOD(SetCategory, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(CategoryChanged) CLASS_MEMBER_FIELD(__vwsn_prop_Category) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Category, GetCategory, SetCategory, CategoryChanged) END_CLASS_MEMBER(::demo::CategoryDisplayer) @@ -75,17 +77,27 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::CategoryDisplayerConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_CategoryDisplayer_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::CategoryDisplayerConstructor) BEGIN_CLASS_MEMBER(::demo::CategoryEditor) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::CategoryEditorConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridEditorTemplate) CLASS_MEMBER_BASE(::demo::CategoryEditorConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::CategoryEditor*(), NO_PARAMETER) @@ -96,18 +108,25 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::CategoryEditorConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_CategoryEditor_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::CategoryEditorConstructor) BEGIN_CLASS_MEMBER(::demo::CategoryItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::CategoryItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListItemTemplate) CLASS_MEMBER_BASE(::demo::CategoryItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::CategoryItemTemplate*(::demo::MyCategory), { L"__vwsn_ctor_parameter_SelectedCategory" }) CLASS_MEMBER_METHOD(GetSelectedCategory, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_SelectedCategory) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(SelectedCategory, GetSelectedCategory) END_CLASS_MEMBER(::demo::CategoryItemTemplate) @@ -115,13 +134,19 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::CategoryItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_CategoryItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(SelectedCategory) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::CategoryItemTemplateConstructor) BEGIN_CLASS_MEMBER(::demo::CategoryVisualizer) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::CategoryVisualizerConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridVisualizerTemplate) CLASS_MEMBER_BASE(::demo::CategoryVisualizerConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::CategoryVisualizer*(), NO_PARAMETER) @@ -131,12 +156,17 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::CategoryVisualizerConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_CategoryVisualizer_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::CategoryVisualizerConstructor) BEGIN_CLASS_MEMBER(::demo::DateEditor) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DateEditorConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridEditorTemplate) CLASS_MEMBER_BASE(::demo::DateEditorConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::DateEditor*(), NO_PARAMETER) @@ -146,43 +176,66 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DateEditorConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_DateEditor_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::DateEditorConstructor) BEGIN_CLASS_MEMBER(::demo::DateFilter) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DateFilterConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::DateFilterConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::DateFilter*(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) CLASS_MEMBER_METHOD(GetFilter, NO_PARAMETER) CLASS_MEMBER_METHOD(SetFilter, { L"__vwsn_value_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_METHOD(UpdateFilter, NO_PARAMETER) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Filter) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(Filter, GetFilter) CLASS_MEMBER_FIELD(callback) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) END_CLASS_MEMBER(::demo::DateFilter) BEGIN_CLASS_MEMBER(::demo::DateFilterConstructor) CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DateFilterConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_DateFilter_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkFrom) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkTo) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dateFrom) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dateTo) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::DateFilterConstructor) BEGIN_CLASS_MEMBER(::demo::GenderDisplayer) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::GenderDisplayerConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::GenderDisplayerConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::GenderDisplayer*(), NO_PARAMETER) @@ -190,6 +243,7 @@ namespace vl CLASS_MEMBER_METHOD(SetGender, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(GenderChanged) CLASS_MEMBER_FIELD(__vwsn_prop_Gender) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Gender, GetGender, SetGender, GenderChanged) END_CLASS_MEMBER(::demo::GenderDisplayer) @@ -197,12 +251,17 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::GenderDisplayerConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_GenderDisplayer_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::GenderDisplayerConstructor) BEGIN_CLASS_MEMBER(::demo::GenderEditor) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::GenderEditorConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridEditorTemplate) CLASS_MEMBER_BASE(::demo::GenderEditorConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::GenderEditor*(), NO_PARAMETER) @@ -213,18 +272,25 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::GenderEditorConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_GenderEditor_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::GenderEditorConstructor) BEGIN_CLASS_MEMBER(::demo::GenderItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::GenderItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListItemTemplate) CLASS_MEMBER_BASE(::demo::GenderItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::GenderItemTemplate*(::demo::MyGender), { L"__vwsn_ctor_parameter_SelectedGender" }) CLASS_MEMBER_METHOD(GetSelectedGender, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_SelectedGender) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(SelectedGender, GetSelectedGender) END_CLASS_MEMBER(::demo::GenderItemTemplate) @@ -232,13 +298,19 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::GenderItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_GenderItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(SelectedGender) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::GenderItemTemplateConstructor) BEGIN_CLASS_MEMBER(::demo::GenderVisualizer) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::GenderVisualizerConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridVisualizerTemplate) CLASS_MEMBER_BASE(::demo::GenderVisualizerConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::GenderVisualizer*(), NO_PARAMETER) @@ -248,12 +320,17 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::GenderVisualizerConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_GenderVisualizer_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::GenderVisualizerConstructor) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -264,31 +341,57 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dataGrid) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dateFilter) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) BEGIN_ENUM_ITEM(::demo::MyCategory) @@ -318,12 +421,19 @@ namespace vl CLASS_MEMBER_METHOD(SetSmallImage, { L"__vwsn_value_" }) CLASS_MEMBER_METHOD(SetWebsite, { L"__vwsn_value_" }) CLASS_MEMBER_FIELD(__vwsn_prop_Birthday) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Category) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Gender) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_LargeImage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Name) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_SmallImage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Website) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY(Birthday, GetBirthday, SetBirthday) CLASS_MEMBER_PROPERTY(Category, GetCategory, SetCategory) CLASS_MEMBER_PROPERTY(Gender, GetGender, SetGender) @@ -339,6 +449,7 @@ namespace vl END_ENUM_ITEM(::demo::MyGender) BEGIN_CLASS_MEMBER(::demo::TextEditor) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::TextEditorConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiGridEditorTemplate) CLASS_MEMBER_BASE(::demo::TextEditorConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::TextEditor*(), NO_PARAMETER) @@ -348,9 +459,13 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::TextEditorConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_TextEditor_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::TextEditorConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/Dialogs/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/Dialogs/UI/Source/DemoReflection.cpp index 149e23d1..a3b06e27 100644 --- a/Tutorial/GacUI_Controls/Dialogs/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/Dialogs/UI/Source/DemoReflection.cpp @@ -44,6 +44,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::LocalizedColorDialogTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::LocalizedColorDialogTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::LocalizedColorDialogTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::LocalizedColorDialogTabPage*(), NO_PARAMETER) @@ -53,16 +54,25 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::LocalizedColorDialogTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_LocalizedColorDialogTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(background) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialog) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::LocalizedColorDialogTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::LocalizedFileDialogTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::LocalizedFileDialogTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::LocalizedFileDialogTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::LocalizedFileDialogTabPage*(), NO_PARAMETER) @@ -73,76 +83,145 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::LocalizedFileDialogTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_LocalizedFileDialogTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogAddToRecent) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogAllowMultipleSelection) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogDereferenceLinks) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogDirectoryMustExist) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogFileMustExist) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogPromptCreateFile) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogPromptOverwriteFile) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogShowNetworkButton) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(chkFileDialogShowReadOnlyCheckBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogOpen) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogSave) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(lstFiles) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtDefaultExtension) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtDirectory) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtFileName) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtFilter) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtFilterIndex) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtTitle) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::LocalizedFileDialogTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::LocalizedFontDialogTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::LocalizedFontDialogTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::LocalizedFontDialogTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::LocalizedFontDialogTabPage*(), NO_PARAMETER) @@ -152,18 +231,29 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::LocalizedFontDialogTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_LocalizedFontDialogTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkEffect) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialog) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(label) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::LocalizedFontDialogTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::LocalizedMessageDialogTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::LocalizedMessageDialogTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::LocalizedMessageDialogTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::LocalizedMessageDialogTabPage*(), NO_PARAMETER) @@ -182,46 +272,85 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::LocalizedMessageDialogTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_LocalizedMessageDialogTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboDefaultButton) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboIcon) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboInput) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialog) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(lblOutput) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtText) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(txtTitle) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::LocalizedMessageDialogTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -231,14 +360,23 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/DocumentEditor/UI/Source/EditorBaseReflection.cpp b/Tutorial/GacUI_Controls/DocumentEditor/UI/Source/EditorBaseReflection.cpp index 0c9aa640..333dd4e9 100644 --- a/Tutorial/GacUI_Controls/DocumentEditor/UI/Source/EditorBaseReflection.cpp +++ b/Tutorial/GacUI_Controls/DocumentEditor/UI/Source/EditorBaseReflection.cpp @@ -38,6 +38,8 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::DocumentEditorBase) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_File, ::vl::WString::Unmanaged(L"DocumentEditorBase")) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DocumentEditorBaseConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::DocumentEditorBaseConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::DocumentEditorBase*(), NO_PARAMETER) @@ -47,26 +49,42 @@ namespace vl CLASS_MEMBER_METHOD(GetHasEditableSelection, NO_PARAMETER) CLASS_MEMBER_METHOD(GetHasEditableSelectionInSingleParagraph, NO_PARAMETER) CLASS_MEMBER_METHOD(GetMenuContainer, NO_PARAMETER) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_METHOD(GetToolstripContainer, NO_PARAMETER) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_METHOD(HasEditableCursor, NO_PARAMETER) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(HasEditableHyperlink, { L"forEdit" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(LoadAsPrivateFormat, { L"fileName" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) CLASS_MEMBER_METHOD(SaveAsHTML, { L"fileName" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) CLASS_MEMBER_METHOD(SaveAsPrivateFormat, { L"fileName" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) CLASS_MEMBER_METHOD(SaveAsRTF, { L"fileName" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) CLASS_MEMBER_METHOD(SaveDocument, NO_PARAMETER) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(SelectAlignmentCommand, NO_PARAMETER) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_METHOD(SetAlignment, { L"alignment" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(SetEditMode, { L"editMode" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(SetEditModeCommand, { L"__vwsn_value_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_METHOD(SetHasEditableSelection, { L"__vwsn_value_" }) CLASS_MEMBER_METHOD(SetHasEditableSelectionInSingleParagraph, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(EditModeCommandChanged) CLASS_MEMBER_EVENT(HasEditableSelectionChanged) CLASS_MEMBER_EVENT(HasEditableSelectionInSingleParagraphChanged) CLASS_MEMBER_FIELD(__vwsn_prop_EditModeCommand) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_HasEditableSelection) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_HasEditableSelectionInSingleParagraph) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT_READONLY(EditModeCommand, GetEditModeCommand, EditModeCommandChanged) CLASS_MEMBER_PROPERTY_EVENT(HasEditableSelection, GetHasEditableSelection, SetHasEditableSelection, HasEditableSelectionChanged) CLASS_MEMBER_PROPERTY_EVENT(HasEditableSelectionInSingleParagraph, GetHasEditableSelectionInSingleParagraph, SetHasEditableSelectionInSingleParagraph, HasEditableSelectionInSingleParagraphChanged) @@ -78,53 +96,99 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DocumentEditorBaseConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_DocumentEditorBase_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandAlignCenter) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandAlignDefault) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandAlignLeft) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandAlignRight) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandBackColor) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandBold) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandColor) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandCopy) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandCut) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandDelete) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandEditHyperlink) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandEditable) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandFont) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandInsertImage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandItalic) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandLoadPrivate) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandPaste) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandRedo) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandRemoveHyperlink) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandSaveHtml) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandSavePrivate) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandSaveRtf) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandSelect) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandSelectable) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandStrike) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandUnderline) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandUndo) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandViewOnly) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogColor) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogFont) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogMessage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogNotImpl) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogOpen) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogOpenDoc) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogQueryClose) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogSaveDoc) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogSaveDocPrivate) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(document) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(menuContainer) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(toolstripContainer) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::DocumentEditorBaseConstructor) BEGIN_CLASS_MEMBER(::demo::HyperlinkWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::HyperlinkWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::HyperlinkWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::HyperlinkWindow*(), NO_PARAMETER) @@ -132,6 +196,7 @@ namespace vl CLASS_MEMBER_METHOD(SetUrl, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(UrlChanged) CLASS_MEMBER_FIELD(__vwsn_prop_Url) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Url, GetUrl, SetUrl, UrlChanged) END_CLASS_MEMBER(::demo::HyperlinkWindow) @@ -139,22 +204,39 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::HyperlinkWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_HyperlinkWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textUrl) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::HyperlinkWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/DocumentEditorRibbon/UI/Source/EditorRibbonReflection.cpp b/Tutorial/GacUI_Controls/DocumentEditorRibbon/UI/Source/EditorRibbonReflection.cpp index d2fd38af..e2c2895c 100644 --- a/Tutorial/GacUI_Controls/DocumentEditorRibbon/UI/Source/EditorRibbonReflection.cpp +++ b/Tutorial/GacUI_Controls/DocumentEditorRibbon/UI/Source/EditorRibbonReflection.cpp @@ -42,16 +42,19 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::DocumentEditorRibbon) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DocumentEditorRibbonConstructor"))) CLASS_MEMBER_BASE(::demo::DocumentEditorBase) CLASS_MEMBER_BASE(::demo::DocumentEditorRibbonConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::DocumentEditorRibbon*(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) CLASS_MEMBER_METHOD(GenerateStyleGroups, NO_PARAMETER) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(GetAlignCenterSelected, NO_PARAMETER) CLASS_MEMBER_METHOD(GetAlignLeftSelected, NO_PARAMETER) CLASS_MEMBER_METHOD(GetAlignRightSelected, NO_PARAMETER) CLASS_MEMBER_METHOD(GetStyleGroups, NO_PARAMETER) CLASS_MEMBER_METHOD(SelectStyleName, { L"styleName" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(SetAlignCenterSelected, { L"__vwsn_value_" }) CLASS_MEMBER_METHOD(SetAlignLeftSelected, { L"__vwsn_value_" }) CLASS_MEMBER_METHOD(SetAlignRightSelected, { L"__vwsn_value_" }) @@ -61,9 +64,13 @@ namespace vl CLASS_MEMBER_EVENT(AlignRightSelectedChanged) CLASS_MEMBER_EVENT(StyleGroupsChanged) CLASS_MEMBER_FIELD(__vwsn_prop_AlignCenterSelected) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_AlignLeftSelected) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_AlignRightSelected) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_StyleGroups) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(AlignCenterSelected, GetAlignCenterSelected, SetAlignCenterSelected, AlignCenterSelectedChanged) CLASS_MEMBER_PROPERTY_EVENT(AlignLeftSelected, GetAlignLeftSelected, SetAlignLeftSelected, AlignLeftSelectedChanged) CLASS_MEMBER_PROPERTY_EVENT(AlignRightSelected, GetAlignRightSelected, SetAlignRightSelected, AlignRightSelectedChanged) @@ -74,110 +81,213 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DocumentEditorRibbonConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_DocumentEditorRibbon_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_48) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_49) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_50) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_51) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_52) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_53) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_54) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_55) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_56) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_57) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_58) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_59) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_60) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_61) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_62) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_63) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_64) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_65) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_66) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_67) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_68) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_69) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_70) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_71) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_72) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_73) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_74) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_75) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_76) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_77) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_78) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_79) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_80) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_81) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_82) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_83) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_84) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_85) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_86) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_87) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_88) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_89) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_90) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_91) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_92) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_93) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_94) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_95) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonHome) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialogMessage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(styleGallery) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(toolstripHome) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::DocumentEditorRibbonConstructor) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -187,9 +297,13 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(editor) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) BEGIN_CLASS_MEMBER(::demo::StyleGroup) @@ -207,12 +321,14 @@ namespace vl END_CLASS_MEMBER(::demo::StyleItem) BEGIN_CLASS_MEMBER(::demo::StyleItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::StyleItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListItemTemplate) CLASS_MEMBER_BASE(::demo::StyleItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::StyleItemTemplate*(::vl::Ptr<::demo::StyleItem>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::StyleItemTemplate) @@ -220,18 +336,31 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::StyleItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_StyleItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(containerControl) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(styleLabel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::StyleItemTemplateConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/DocumentEditorToolstrip/UI/Source/EditorToolstripReflection.cpp b/Tutorial/GacUI_Controls/DocumentEditorToolstrip/UI/Source/EditorToolstripReflection.cpp index d9512435..216d1b8e 100644 --- a/Tutorial/GacUI_Controls/DocumentEditorToolstrip/UI/Source/EditorToolstripReflection.cpp +++ b/Tutorial/GacUI_Controls/DocumentEditorToolstrip/UI/Source/EditorToolstripReflection.cpp @@ -38,6 +38,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::DocumentEditorToolstrip) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DocumentEditorToolstripConstructor"))) CLASS_MEMBER_BASE(::demo::DocumentEditorBase) CLASS_MEMBER_BASE(::demo::DocumentEditorToolstripConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::DocumentEditorToolstrip*(), NO_PARAMETER) @@ -47,87 +48,167 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DocumentEditorToolstripConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_DocumentEditorToolstrip_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_48) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_49) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_50) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_51) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_52) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_53) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_54) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_55) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_56) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_57) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_58) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_59) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_60) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_61) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_62) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_63) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_64) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_65) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_66) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_67) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_68) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_69) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_70) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_71) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_72) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_73) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_74) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_75) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonAlignment) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::DocumentEditorToolstripConstructor) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -137,9 +218,13 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(editor) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoReflection.cpp index 3556ea2a..95d61072 100644 --- a/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -45,25 +46,45 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandGlobal) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(dialog) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(menuRightClick) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/ListControls/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/ListControls/UI/Source/DemoReflection.cpp index 0938e479..23b0bb33 100644 --- a/Tutorial/GacUI_Controls/ListControls/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/ListControls/UI/Source/DemoReflection.cpp @@ -43,6 +43,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::ListViewTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::ListViewTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::ListViewTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::ListViewTabPage*(), NO_PARAMETER) @@ -53,35 +54,63 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ListViewTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_ListViewTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(bindableListView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(listView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::ListViewTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -91,13 +120,21 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) BEGIN_CLASS_MEMBER(::demo::MyTextItem) @@ -108,12 +145,15 @@ namespace vl CLASS_MEMBER_METHOD(SetChecked, { L"__vwsn_value_" }) CLASS_MEMBER_METHOD(SetName, { L"__vwsn_value_" }) CLASS_MEMBER_FIELD(__vwsn_prop_Checked) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Name) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY(Checked, GetChecked, SetChecked) CLASS_MEMBER_PROPERTY(Name, GetName, SetName) END_CLASS_MEMBER(::demo::MyTextItem) BEGIN_CLASS_MEMBER(::demo::TextListTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::TextListTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::TextListTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::TextListTabPage*(), NO_PARAMETER) @@ -125,38 +165,69 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::TextListTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_TextListTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(bindableTextList) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textList) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::TextListTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::TreeViewTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::TreeViewTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::TreeViewTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::TreeViewTabPage*(), NO_PARAMETER) @@ -168,59 +239,113 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::TreeViewTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_TreeViewTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_48) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_49) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(bindableTreeView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(treeView) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::TreeViewTabPageConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/Localization/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/Localization/UI/Source/DemoReflection.cpp index f05b62e2..63682617 100644 --- a/Tutorial/GacUI_Controls/Localization/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/Localization/UI/Source/DemoReflection.cpp @@ -55,6 +55,7 @@ namespace vl END_INTERFACE_MEMBER(::demo::IStringResourceStrings) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -63,6 +64,7 @@ namespace vl CLASS_MEMBER_METHOD(SetStrings, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(StringsChanged) CLASS_MEMBER_FIELD(__vwsn_prop_Strings) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Strings, GetStrings, SetStrings, StringsChanged) CLASS_MEMBER_FIELD(currency) CLASS_MEMBER_FIELD(dateTime) @@ -73,32 +75,59 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(comboLocales) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(listLocales) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) BEGIN_CLASS_MEMBER(::demo::StringInjectionResource) diff --git a/Tutorial/GacUI_Controls/MenuVisibility/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/MenuVisibility/UI/Source/DemoReflection.cpp index 990e98b8..a5f214c8 100644 --- a/Tutorial/GacUI_Controls/MenuVisibility/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/MenuVisibility/UI/Source/DemoReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -45,37 +46,69 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkList) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(menuItems) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/ProgressAndAsync/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/ProgressAndAsync/UI/Source/DemoReflection.cpp index c46a67aa..659bf448 100644 --- a/Tutorial/GacUI_Controls/ProgressAndAsync/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/ProgressAndAsync/UI/Source/DemoReflection.cpp @@ -50,11 +50,13 @@ namespace vl END_INTERFACE_MEMBER(::demo::IViewModel) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(::vl::Ptr<::demo::IViewModel>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::MainWindow) @@ -62,18 +64,31 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonDownload) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(progressBar) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textResult) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/QueryService/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/QueryService/UI/Source/DemoReflection.cpp index e8b1cfda..53af1b8f 100644 --- a/Tutorial/GacUI_Controls/QueryService/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/QueryService/UI/Source/DemoReflection.cpp @@ -48,42 +48,60 @@ namespace vl END_INTERFACE_MEMBER(::IDemoService) BEGIN_CLASS_MEMBER(::demo::DemoServiceControl) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::DemoServiceControlConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::DemoServiceControlConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::DemoServiceControl*(), NO_PARAMETER) CLASS_MEMBER_FIELD(demoService) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) END_CLASS_MEMBER(::demo::DemoServiceControl) BEGIN_CLASS_MEMBER(::demo::DemoServiceControlConstructor) CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::DemoServiceControlConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_DemoServiceControl_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::DemoServiceControlConstructor) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) CLASS_MEMBER_FIELD(demoService) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) END_CLASS_MEMBER(::demo::MainWindow) BEGIN_CLASS_MEMBER(::demo::MainWindowConstructor) CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/TriplePhaseImageButton/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/TriplePhaseImageButton/UI/Source/DemoReflection.cpp index 3f5dc1c3..e73bbffc 100644 --- a/Tutorial/GacUI_Controls/TriplePhaseImageButton/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/TriplePhaseImageButton/UI/Source/DemoReflection.cpp @@ -47,6 +47,7 @@ namespace vl END_ENUM_ITEM(::TripleState) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -56,17 +57,27 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(button) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) BEGIN_CLASS_MEMBER(::demo::TriplePhaseButton) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::TriplePhaseButtonConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::TriplePhaseButtonConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::TriplePhaseButton*(), NO_PARAMETER) @@ -80,8 +91,11 @@ namespace vl CLASS_MEMBER_EVENT(PartialImageChanged) CLASS_MEMBER_EVENT(StateChanged) CLASS_MEMBER_FIELD(__vwsn_prop_CheckedImage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_PartialImage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_State) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(CheckedImage, GetCheckedImage, SetCheckedImage, CheckedImageChanged) CLASS_MEMBER_PROPERTY_EVENT(PartialImage, GetPartialImage, SetPartialImage, PartialImageChanged) CLASS_MEMBER_PROPERTY_EVENT(State, GetState, SetState, StateChanged) @@ -91,12 +105,17 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::TriplePhaseButtonConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_TriplePhaseButton_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::TriplePhaseButtonConstructor) BEGIN_CLASS_MEMBER(::demo::TriplePhaseImageButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::TriplePhaseImageButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiButtonTemplate) CLASS_MEMBER_BASE(::demo::TriplePhaseImageButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::TriplePhaseImageButtonTemplate*(), NO_PARAMETER) @@ -106,14 +125,23 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::TriplePhaseImageButtonTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_TriplePhaseImageButtonTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::TriplePhaseImageButtonTemplateConstructor) #undef _ diff --git a/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoReflection.cpp index cc4c4a51..ce3c8f33 100644 --- a/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -45,35 +46,65 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandCopy) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandCut) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandDelete) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandExportHtml) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandExportPrivate) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandExportRtf) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandPaste) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandRedo) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(commandUndo) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(menuEdit) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_HelloWorlds/CppXml/UI/Source/HelloWorldReflection.cpp b/Tutorial/GacUI_HelloWorlds/CppXml/UI/Source/HelloWorldReflection.cpp index 957e36cf..4e4a519e 100644 --- a/Tutorial/GacUI_HelloWorlds/CppXml/UI/Source/HelloWorldReflection.cpp +++ b/Tutorial/GacUI_HelloWorlds/CppXml/UI/Source/HelloWorldReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::helloworld::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"helloworld::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::helloworld::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::helloworld::MainWindow*(), NO_PARAMETER) @@ -45,9 +46,13 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::helloworld::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_helloworld_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::helloworld::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_HelloWorlds/MVVM/UI/Source/HelloWorldReflection.cpp b/Tutorial/GacUI_HelloWorlds/MVVM/UI/Source/HelloWorldReflection.cpp index 36371b71..89dca9d9 100644 --- a/Tutorial/GacUI_HelloWorlds/MVVM/UI/Source/HelloWorldReflection.cpp +++ b/Tutorial/GacUI_HelloWorlds/MVVM/UI/Source/HelloWorldReflection.cpp @@ -37,6 +37,8 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::helloworld::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_File, ::vl::WString::Unmanaged(L"MainWindow")) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"helloworld::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::helloworld::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::helloworld::MainWindow*(::vl::Ptr<::vm::IViewModel>), { L"__vwsn_ctor_parameter_ViewModel" }) @@ -44,9 +46,13 @@ namespace vl CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_METHOD(SetHasLoggedIn, { L"__vwsn_value_" }) CLASS_MEMBER_METHOD(buttonSignUp_Clicked, { L"sender" _ L"arguments" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) CLASS_MEMBER_EVENT(HasLoggedInChanged) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_HasLoggedIn) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(HasLoggedIn, GetHasLoggedIn, SetHasLoggedIn, HasLoggedInChanged) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::helloworld::MainWindow) @@ -55,32 +61,59 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::helloworld::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_helloworld_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonCancel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(buttonSignUp) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxPassword) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxUserName) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::helloworld::MainWindowConstructor) BEGIN_INTERFACE_MEMBER(::vm::IViewModel) diff --git a/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x64 b/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x64 index 37dfa659..ac036ba7 100644 Binary files a/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x64 and b/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x64 differ diff --git a/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x86 b/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x86 index 8cf1f129..4cc4beb7 100644 Binary files a/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x86 and b/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x86 differ diff --git a/Tutorial/GacUI_Layout/Alignment/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Layout/Alignment/UI/Source/DemoReflection.cpp index bb601b98..bcccf571 100644 --- a/Tutorial/GacUI_Layout/Alignment/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Layout/Alignment/UI/Source/DemoReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -45,14 +46,23 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Layout/Flow/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Layout/Flow/UI/Source/DemoReflection.cpp index 5edfe954..ab98abc5 100644 --- a/Tutorial/GacUI_Layout/Flow/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Layout/Flow/UI/Source/DemoReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -45,85 +46,165 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_48) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_49) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_50) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_51) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_52) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_53) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_54) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_55) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_56) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_57) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_58) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_59) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_60) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_61) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_62) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_63) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_64) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_65) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_66) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_67) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_68) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_69) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_70) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_71) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_72) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_73) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(flowLayout) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(groupAlignment) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(groupAxis) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(groupBoxAlignment) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(groupBoxAxis) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Layout/Responsive1/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Layout/Responsive1/UI/Source/DemoReflection.cpp index 761a1300..0095df3c 100644 --- a/Tutorial/GacUI_Layout/Responsive1/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Layout/Responsive1/UI/Source/DemoReflection.cpp @@ -42,6 +42,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -51,27 +52,47 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) BEGIN_CLASS_MEMBER(::demo::ResponsiveGroupControl) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::ResponsiveGroupControlConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::ResponsiveGroupControlConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::ResponsiveGroupControl*(), NO_PARAMETER) @@ -81,52 +102,97 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ResponsiveGroupControlConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_ResponsiveGroupControl_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(responsive) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::ResponsiveGroupControlConstructor) BEGIN_CLASS_MEMBER(::demo::ResponsiveStackControl) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::ResponsiveStackControlConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::ResponsiveStackControlConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::ResponsiveStackControl*(), NO_PARAMETER) @@ -136,52 +202,97 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ResponsiveStackControlConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_ResponsiveStackControl_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(responsive) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::ResponsiveStackControlConstructor) BEGIN_CLASS_MEMBER(::demo::ResponsiveViewControl) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::ResponsiveViewControlConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::ResponsiveViewControlConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::ResponsiveViewControl*(), NO_PARAMETER) @@ -191,45 +302,85 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ResponsiveViewControlConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_ResponsiveViewControl_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(documentBox) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(responsive) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::ResponsiveViewControlConstructor) #undef _ diff --git a/Tutorial/GacUI_Layout/Responsive2/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Layout/Responsive2/UI/Source/DemoReflection.cpp index 81c1fa3f..8613b32f 100644 --- a/Tutorial/GacUI_Layout/Responsive2/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Layout/Responsive2/UI/Source/DemoReflection.cpp @@ -46,6 +46,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::AccountButtonTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::AccountButtonTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiSelectableButtonTemplate) CLASS_MEMBER_BASE(::demo::AccountButtonTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::AccountButtonTemplate*(), NO_PARAMETER) @@ -53,6 +54,7 @@ namespace vl CLASS_MEMBER_METHOD(SetViewModel, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(ViewModelChanged) CLASS_MEMBER_FIELD(__vwsn_prop_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(ViewModel, GetViewModel, SetViewModel, ViewModelChanged) END_CLASS_MEMBER(::demo::AccountButtonTemplate) @@ -60,18 +62,31 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::AccountButtonTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_AccountButtonTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::AccountButtonTemplateConstructor) BEGIN_CLASS_MEMBER(::demo::AccountButtonViewModel) @@ -87,19 +102,24 @@ namespace vl CLASS_MEMBER_EVENT(ImageChanged) CLASS_MEMBER_EVENT(NameChanged) CLASS_MEMBER_FIELD(__vwsn_prop_Controller) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Image) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Name) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Controller, GetController, SetController, ControllerChanged) CLASS_MEMBER_PROPERTY_EVENT(Image, GetImage, SetImage, ImageChanged) CLASS_MEMBER_PROPERTY_EVENT(Name, GetName, SetName, NameChanged) END_CLASS_MEMBER(::demo::AccountButtonViewModel) BEGIN_CLASS_MEMBER(::demo::AccountItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::AccountItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::demo::AccountItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::AccountItemTemplate*(::vl::Ptr<::demo::AccountButtonViewModel>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::AccountItemTemplate) @@ -107,18 +127,25 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::AccountItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_AccountItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::AccountItemTemplateConstructor) BEGIN_CLASS_MEMBER(::demo::AccountMenuItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::AccountMenuItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::demo::AccountMenuItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::AccountMenuItemTemplate*(::vl::Ptr<::demo::AccountButtonViewModel>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::AccountMenuItemTemplate) @@ -126,13 +153,19 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::AccountMenuItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_AccountMenuItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::AccountMenuItemTemplateConstructor) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -145,36 +178,61 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(accountController) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(videoContainer) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) BEGIN_CLASS_MEMBER(::demo::VideoItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::VideoItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::demo::VideoItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::VideoItemTemplate*(::vl::Ptr<::demo::VideoViewModel>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::VideoItemTemplate) @@ -182,17 +240,29 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::VideoItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_VideoItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::VideoItemTemplateConstructor) BEGIN_CLASS_MEMBER(::demo::VideoViewModel) @@ -208,8 +278,11 @@ namespace vl CLASS_MEMBER_EVENT(FontChanged) CLASS_MEMBER_EVENT(TitleChanged) CLASS_MEMBER_FIELD(__vwsn_prop_Author) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Font) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Title) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(Author, GetAuthor, SetAuthor, AuthorChanged) CLASS_MEMBER_PROPERTY_EVENT(Font, GetFont, SetFont, FontChanged) CLASS_MEMBER_PROPERTY_EVENT(Title, GetTitle, SetTitle, TitleChanged) diff --git a/Tutorial/GacUI_Layout/RichTextEmbedding/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Layout/RichTextEmbedding/UI/Source/DemoReflection.cpp index 998f056f..8f18bd60 100644 --- a/Tutorial/GacUI_Layout/RichTextEmbedding/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Layout/RichTextEmbedding/UI/Source/DemoReflection.cpp @@ -42,11 +42,13 @@ namespace vl END_INTERFACE_MEMBER(::demo::IViewModel) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(::vl::Ptr<::demo::IViewModel>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::MainWindow) @@ -54,60 +56,115 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_48) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_49) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_50) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_51) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(documentViewer) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Layout/SharedSize/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Layout/SharedSize/UI/Source/DemoReflection.cpp index 0b2581fb..e48c6dee 100644 --- a/Tutorial/GacUI_Layout/SharedSize/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Layout/SharedSize/UI/Source/DemoReflection.cpp @@ -45,47 +45,77 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::EnglishNumbersController) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::EnglishNumbersControllerConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::EnglishNumbersControllerConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::EnglishNumbersController*(), NO_PARAMETER) CLASS_MEMBER_METHOD(GetItemsToBind, NO_PARAMETER) CLASS_MEMBER_METHOD(NumberToText, { L"i" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(NumberToText_0to999, { L"i" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(NumberToText_1To99, { L"i" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(SetItemsToBind, { L"__vwsn_value_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_METHOD(ToText_11to19, { L"i" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_METHOD(ToText_1to9, { L"i" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_ItemsToBind) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ItemsToBind, GetItemsToBind) CLASS_MEMBER_FIELD(counter) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) END_CLASS_MEMBER(::demo::EnglishNumbersController) BEGIN_CLASS_MEMBER(::demo::EnglishNumbersControllerConstructor) CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::EnglishNumbersControllerConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_EnglishNumbersController_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::EnglishNumbersControllerConstructor) BEGIN_CLASS_MEMBER(::demo::EnglishNumbersControllerTabPage) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::EnglishNumbersControllerTabPageConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::EnglishNumbersControllerTabPageConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::EnglishNumbersControllerTabPage*(), NO_PARAMETER) @@ -93,9 +123,13 @@ namespace vl CLASS_MEMBER_METHOD(GetContentComposition, NO_PARAMETER) CLASS_MEMBER_METHOD(GetItemsToBind, NO_PARAMETER) CLASS_MEMBER_METHOD(SetContentComposition, { L"__vwsn_value_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_METHOD(SetItemsToBind, { L"__vwsn_value_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_prop_ContentComposition) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_ItemsToBind) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ContentComposition, GetContentComposition) CLASS_MEMBER_PROPERTY_READONLY(ItemsToBind, GetItemsToBind) END_CLASS_MEMBER(::demo::EnglishNumbersControllerTabPage) @@ -104,15 +138,23 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::EnglishNumbersControllerTabPageConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_EnglishNumbersControllerTabPage_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(content) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(controller) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::EnglishNumbersControllerTabPageConstructor) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -122,20 +164,35 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(sharedSizeFlowTabPage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(sharedSizeListTabPage) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) BEGIN_CLASS_MEMBER(::demo::MyTextItem) @@ -146,17 +203,21 @@ namespace vl CLASS_MEMBER_METHOD(SetChecked, { L"__vwsn_value_" }) CLASS_MEMBER_METHOD(SetName, { L"__vwsn_value_" }) CLASS_MEMBER_FIELD(__vwsn_prop_Checked) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_FIELD(__vwsn_prop_Name) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY(Checked, GetChecked, SetChecked) CLASS_MEMBER_PROPERTY(Name, GetName, SetName) END_CLASS_MEMBER(::demo::MyTextItem) BEGIN_CLASS_MEMBER(::demo::SharedSizeItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::SharedSizeItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::demo::SharedSizeItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::SharedSizeItemTemplate*(::vl::Ptr<::demo::MyTextItem>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::SharedSizeItemTemplate) @@ -164,19 +225,27 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::SharedSizeItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_SharedSizeItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::SharedSizeItemTemplateConstructor) BEGIN_CLASS_MEMBER(::demo::SharedSizeTextItemTemplate) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::SharedSizeTextItemTemplateConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListItemTemplate) CLASS_MEMBER_BASE(::demo::SharedSizeTextItemTemplateConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::SharedSizeTextItemTemplate*(::vl::Ptr<::demo::MyTextItem>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::SharedSizeTextItemTemplate) @@ -184,10 +253,15 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::SharedSizeTextItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_SharedSizeTextItemTemplate_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::SharedSizeTextItemTemplateConstructor) #undef _ diff --git a/Tutorial/GacUI_Layout/Stack/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Layout/Stack/UI/Source/DemoReflection.cpp index 58f6cfe7..f146333d 100644 --- a/Tutorial/GacUI_Layout/Stack/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Layout/Stack/UI/Source/DemoReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -45,31 +46,57 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(groupStackDirection) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(stackLayout) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Layout/Table/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Layout/Table/UI/Source/DemoReflection.cpp index 54e35144..4fbe5d4b 100644 --- a/Tutorial/GacUI_Layout/Table/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Layout/Table/UI/Source/DemoReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -45,38 +46,71 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Layout/TableSplitter/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Layout/TableSplitter/UI/Source/DemoReflection.cpp index e77a1596..46196828 100644 --- a/Tutorial/GacUI_Layout/TableSplitter/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Layout/TableSplitter/UI/Source/DemoReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -45,105 +46,205 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_18) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_19) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_20) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_21) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_22) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_23) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_24) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_25) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_26) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_27) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_28) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_29) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_30) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_31) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_32) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_33) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_34) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_35) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_36) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_37) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_38) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_39) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_40) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_42) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_43) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_44) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_45) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_46) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_47) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_48) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_49) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_50) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_51) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_52) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_53) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_54) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_55) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_56) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_57) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_58) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_59) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_60) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_61) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_62) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_63) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_64) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_65) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_66) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_67) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_68) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_69) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_70) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_71) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_72) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_73) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_74) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_75) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_76) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_77) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_78) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_79) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_80) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_81) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_82) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_83) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_84) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_85) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_86) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_87) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_88) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_89) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_90) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_91) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_92) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_93) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_94) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_95) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_96) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkBorder) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(table) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Windows/Direct2DClock/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Windows/Direct2DClock/UI/Source/DemoReflection.cpp index a49c2e78..387a7a78 100644 --- a/Tutorial/GacUI_Windows/Direct2DClock/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Windows/Direct2DClock/UI/Source/DemoReflection.cpp @@ -36,19 +36,26 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_File, ::vl::WString::Unmanaged(L"MainWindow")) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) CLASS_MEMBER_METHOD(InstallAnimationControl, NO_PARAMETER) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) END_CLASS_MEMBER(::demo::MainWindow) BEGIN_CLASS_MEMBER(::demo::MainWindowConstructor) CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(animationBounds) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Windows/WindowIcon/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Windows/WindowIcon/UI/Source/DemoReflection.cpp index 313475d1..92194dec 100644 --- a/Tutorial/GacUI_Windows/WindowIcon/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Windows/WindowIcon/UI/Source/DemoReflection.cpp @@ -36,6 +36,8 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_File, ::vl::WString::Unmanaged(L"MainWindow")) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -43,6 +45,7 @@ namespace vl CLASS_MEMBER_METHOD(SetCustomIcon, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(CustomIconChanged) CLASS_MEMBER_FIELD(__vwsn_prop_CustomIcon) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(CustomIcon, GetCustomIcon, SetCustomIcon, CustomIconChanged) END_CLASS_MEMBER(::demo::MainWindow) @@ -50,14 +53,23 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkCustom) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(checkVisible) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Xml/Binding_Bind/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Xml/Binding_Bind/UI/Source/DemoReflection.cpp index 9d99aaa9..f584232c 100644 --- a/Tutorial/GacUI_Xml/Binding_Bind/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Xml/Binding_Bind/UI/Source/DemoReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -45,24 +46,43 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxA) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxB) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxC) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Xml/Binding_Eval/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Xml/Binding_Eval/UI/Source/DemoReflection.cpp index 7e9818c6..9e95f1be 100644 --- a/Tutorial/GacUI_Xml/Binding_Eval/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Xml/Binding_Eval/UI/Source/DemoReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -45,9 +46,13 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Xml/Binding_Format/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Xml/Binding_Format/UI/Source/DemoReflection.cpp index 3b2e5933..00ae34c0 100644 --- a/Tutorial/GacUI_Xml/Binding_Format/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Xml/Binding_Format/UI/Source/DemoReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -45,16 +46,27 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxName) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Xml/Binding_Uri/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Xml/Binding_Uri/UI/Source/DemoReflection.cpp index e3c3f4f6..4a89098b 100644 --- a/Tutorial/GacUI_Xml/Binding_Uri/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Xml/Binding_Uri/UI/Source/DemoReflection.cpp @@ -36,26 +36,40 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) CLASS_MEMBER_METHOD(documentLabel_ActiveHyperlinkExecuted, { L"sender" _ L"arguments" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) END_CLASS_MEMBER(::demo::MainWindow) BEGIN_CLASS_MEMBER(::demo::MainWindowConstructor) CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(documentLabel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoReflection.cpp index b747c941..d0ab799d 100644 --- a/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoReflection.cpp @@ -42,11 +42,13 @@ namespace vl END_INTERFACE_MEMBER(::demo::IViewModel) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(::vl::Ptr<::demo::IViewModel>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::MainWindow) @@ -54,17 +56,29 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxName) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/DemoReflection.cpp index 41931721..b9c3b836 100644 --- a/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/DemoReflection.cpp @@ -36,37 +36,63 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_File, ::vl::WString::Unmanaged(L"MainWindow")) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) CLASS_MEMBER_METHOD(buttonCalculate_Clicked, { L"sender" _ L"arguments" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) END_CLASS_MEMBER(::demo::MainWindow) BEGIN_CLASS_MEMBER(::demo::MainWindowConstructor) CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxA) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxB) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxC) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Xml/Event_Script/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Xml/Event_Script/UI/Source/DemoReflection.cpp index 89a93744..5479874f 100644 --- a/Tutorial/GacUI_Xml/Event_Script/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Xml/Event_Script/UI/Source/DemoReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -45,27 +46,49 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxA) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxB) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxC) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/DemoReflection.cpp index 7c4cf186..2aa1dcb5 100644 --- a/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/DemoReflection.cpp @@ -43,11 +43,13 @@ namespace vl END_INTERFACE_MEMBER(::demo::IViewModel) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(::vl::Ptr<::demo::IViewModel>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::MainWindow) @@ -55,28 +57,51 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_12) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_13) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_14) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_15) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_16) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_17) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxA) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxB) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxC) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Xml/Instance_Control/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Xml/Instance_Control/UI/Source/DemoReflection.cpp index 3c764ae5..f4c2f158 100644 --- a/Tutorial/GacUI_Xml/Instance_Control/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Xml/Instance_Control/UI/Source/DemoReflection.cpp @@ -38,6 +38,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -47,12 +48,17 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) BEGIN_CLASS_MEMBER(::demo::MyControl) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MyControlConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::MyControlConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MyControl*(), NO_PARAMETER) @@ -62,10 +68,15 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MyControlConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MyControl_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MyControlConstructor) #undef _ diff --git a/Tutorial/GacUI_Xml/Instance_MultipleWindows/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Xml/Instance_MultipleWindows/UI/Source/DemoReflection.cpp index cb949455..1cf7e0f9 100644 --- a/Tutorial/GacUI_Xml/Instance_MultipleWindows/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Xml/Instance_MultipleWindows/UI/Source/DemoReflection.cpp @@ -38,6 +38,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::AnotherWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::AnotherWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::AnotherWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::AnotherWindow*(), NO_PARAMETER) @@ -47,26 +48,39 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::AnotherWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_AnotherWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::AnotherWindowConstructor) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_File, ::vl::WString::Unmanaged(L"MainWindow")) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) CLASS_MEMBER_METHOD(buttonShowWindow_Clicked, { L"sender" _ L"arguments" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) END_CLASS_MEMBER(::demo::MainWindow) BEGIN_CLASS_MEMBER(::demo::MainWindowConstructor) CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Xml/Instance_Window/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Xml/Instance_Window/UI/Source/DemoReflection.cpp index 7e9818c6..9e95f1be 100644 --- a/Tutorial/GacUI_Xml/Instance_Window/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Xml/Instance_Window/UI/Source/DemoReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -45,9 +46,13 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Xml/Member_Field/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Xml/Member_Field/UI/Source/DemoReflection.cpp index 495b9911..fcdf9dbe 100644 --- a/Tutorial/GacUI_Xml/Member_Field/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Xml/Member_Field/UI/Source/DemoReflection.cpp @@ -36,32 +36,53 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_File, ::vl::WString::Unmanaged(L"MainWindow")) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) CLASS_MEMBER_METHOD(buttonPaste_Clicked, { L"sender" _ L"arguments" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_UserImpl) CLASS_MEMBER_FIELD(integerState) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindow) BEGIN_CLASS_MEMBER(::demo::MainWindowConstructor) CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_10) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_11) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_8) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_9) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxA) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(textBoxB) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Xml/Member_Parameter/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Xml/Member_Parameter/UI/Source/DemoReflection.cpp index 018578da..3c4f1c6f 100644 --- a/Tutorial/GacUI_Xml/Member_Parameter/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Xml/Member_Parameter/UI/Source/DemoReflection.cpp @@ -42,11 +42,13 @@ namespace vl END_INTERFACE_MEMBER(::demo::IViewModel) BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(::vl::Ptr<::demo::IViewModel>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::MainWindow) @@ -54,10 +56,15 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(ViewModel) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _ diff --git a/Tutorial/GacUI_Xml/Member_Property/UI/Source/DemoReflection.cpp b/Tutorial/GacUI_Xml/Member_Property/UI/Source/DemoReflection.cpp index cfd7b2b4..845fc6c4 100644 --- a/Tutorial/GacUI_Xml/Member_Property/UI/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_Xml/Member_Property/UI/Source/DemoReflection.cpp @@ -38,6 +38,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -47,13 +48,19 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(myControl) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) BEGIN_CLASS_MEMBER(::demo::MyControl) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MyControlConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl) CLASS_MEMBER_BASE(::demo::MyControlConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MyControl*(), NO_PARAMETER) @@ -61,6 +68,7 @@ namespace vl CLASS_MEMBER_METHOD(SetSelectedOption, { L"__vwsn_value_" }) CLASS_MEMBER_EVENT(SelectedOptionChanged) CLASS_MEMBER_FIELD(__vwsn_prop_SelectedOption) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Private) CLASS_MEMBER_PROPERTY_EVENT(SelectedOption, GetSelectedOption, SetSelectedOption, SelectedOptionChanged) END_CLASS_MEMBER(::demo::MyControl) @@ -68,16 +76,27 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MyControlConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MyControl_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_6) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_7) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(optionGroup) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MyControlConstructor) #undef _ diff --git a/Tutorial/GacUI_Xml/Misc_ImportFolder/ResDerived/Source/ResDerivedReflection.cpp b/Tutorial/GacUI_Xml/Misc_ImportFolder/ResDerived/Source/ResDerivedReflection.cpp index 114566ed..2b3c7abe 100644 --- a/Tutorial/GacUI_Xml/Misc_ImportFolder/ResDerived/Source/ResDerivedReflection.cpp +++ b/Tutorial/GacUI_Xml/Misc_ImportFolder/ResDerived/Source/ResDerivedReflection.cpp @@ -36,6 +36,7 @@ namespace vl #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA #define _ , BEGIN_CLASS_MEMBER(::demo::MainWindow) + ATTRIBUTE_TYPE(::vl::__vwsn::att_cpp_Friend, ::vl::reflection::description::GetTypeDescriptor(::vl::WString::Unmanaged(L"demo::MainWindowConstructor"))) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) CLASS_MEMBER_BASE(::demo::MainWindowConstructor) CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(), NO_PARAMETER) @@ -45,12 +46,19 @@ namespace vl CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_demo_MainWindow_Initialize, { L"__vwsn_this_" }) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_0) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_1) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_2) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_3) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(__vwsn_precompile_4) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) CLASS_MEMBER_FIELD(self) + ATTRIBUTE_MEMBER(::vl::__vwsn::att_cpp_Protected) END_CLASS_MEMBER(::demo::MainWindowConstructor) #undef _