Update release

This commit is contained in:
Zihan Chen
2017-04-02 16:13:28 -07:00
parent 4aa2bb423e
commit b951c36bf2
22 changed files with 1875 additions and 1209 deletions
+57 -13
View File
@@ -590,6 +590,44 @@ Helpers
GuiApplicationMain
***********************************************************************/
class UIThreadAsyncScheduler :public Object, public IAsyncScheduler, public Description<UIThreadAsyncScheduler>
{
public:
void Execute(const Func<void()>& callback)override
{
GetApplication()->InvokeInMainThread(callback);
}
void ExecuteInBackground(const Func<void()>& callback)override
{
GetApplication()->InvokeAsync(callback);
}
void DelayExecute(const Func<void()>& callback, vint milliseconds)override
{
GetApplication()->DelayExecuteInMainThread(callback, milliseconds);
}
};
class OtherThreadAsyncScheduler :public Object, public IAsyncScheduler, public Description<UIThreadAsyncScheduler>
{
public:
void Execute(const Func<void()>& callback)override
{
GetApplication()->InvokeAsync(callback);
}
void ExecuteInBackground(const Func<void()>& callback)override
{
GetApplication()->InvokeAsync(callback);
}
void DelayExecute(const Func<void()>& callback, vint milliseconds)override
{
GetApplication()->DelayExecute(callback, milliseconds);
}
};
void GuiApplicationInitialize()
{
Ptr<theme::ITheme> theme;
@@ -625,9 +663,13 @@ GuiApplicationMain
{
GuiApplication app;
application = &app;
IAsyncScheduler::RegisterSchedulerForCurrentThread(new UIThreadAsyncScheduler);
IAsyncScheduler::RegisterDefaultScheduler(new OtherThreadAsyncScheduler);
GuiMain();
IAsyncScheduler::UnregisterDefaultScheduler();
IAsyncScheduler::UnregisterSchedulerForCurrentThread();
application = nullptr;
}
application = nullptr;
theme::SetCurrentTheme(0);
DestroyPluginManager();
@@ -3529,6 +3571,7 @@ namespace vl
using namespace elements;
using namespace compositions;
using namespace collections;
using namespace reflection::description;
/***********************************************************************
GuiControlHost
@@ -4419,20 +4462,21 @@ GuiWindow
void GuiWindow::ShowModalAndDelete(GuiWindow* owner, const Func<void()>& callback)
{
owner->SetEnabled(false);
GetNativeWindow()->SetParent(owner->GetNativeWindow());
WindowClosed.AttachLambda([=](GuiGraphicsComposition* sender, GuiEventArgs& arguments)
ShowModal(owner, [=]()
{
GetApplication()->InvokeInMainThread([=]()
{
GetNativeWindow()->SetParent(0);
callback();
owner->SetEnabled(true);
owner->SetActivated();
delete this;
});
callback();
delete this;
});
Show();
}
Ptr<reflection::description::IAsync> GuiWindow::ShowModalAsync(GuiWindow* owner)
{
auto future = IFuture::Create();
ShowModal(owner, [promise = future->GetPromise()]()
{
promise->SendResult({});
});
return future;
}
/***********************************************************************
+8 -2
View File
@@ -9803,15 +9803,21 @@ Window
/// <summary>
/// Show a model window, get a callback when the window is closed.
/// </summary>
/// <param name="owner">The window to show.</param>
/// <param name="owner">The window to disable as a parent window.</param>
/// <param name="callback">The callback to call after the window is closed.</param>
void ShowModal(GuiWindow* owner, const Func<void()>& callback);
/// <summary>
/// Show a model window, get a callback when the window is closed, and then delete itself.
/// </summary>
/// <param name="owner">The window to show.</param>
/// <param name="owner">The window to disable as a parent window.</param>
/// <param name="callback">The callback to call after the window is closed.</param>
void ShowModalAndDelete(GuiWindow* owner, const Func<void()>& callback);
/// <summary>
/// Show a model window as an async operation, which ends when the window is closed.
/// </summary>
/// <returns>Returns true if the size box is visible.</returns>
/// <param name="owner">The window to disable as a parent window.</param>
Ptr<reflection::description::IAsync> ShowModalAsync(GuiWindow* owner);
};
/// <summary>
+44 -5
View File
@@ -1532,7 +1532,29 @@ GuiEvalInstanceEventBinder (eval)
Ptr<workflow::WfStatement> GenerateInstallStatement(GuiResourcePrecompileContext& precompileContext, types::ResolvingResult& resolvingResult, GlobalStringKey variableName, description::IEventInfo* eventInfo, const WString& code, GuiResourceTextPos position, GuiResourceError::List& errors)override
{
if(auto statement = Workflow_ParseStatement(precompileContext, { resolvingResult.resource }, code, position, errors))
bool coroutine = false;
{
auto reading = code.Buffer();
while (true)
{
switch (*reading)
{
case ' ':
case '\t':
case '\r':
case '\n':
reading++;
break;
default:
goto BEGIN_TESTING;
}
}
BEGIN_TESTING:
coroutine = *reading == '$';
}
auto parseFunction = coroutine ? &Workflow_ParseCoProviderStatement : &Workflow_ParseStatement;
if (auto statement = parseFunction(precompileContext, { resolvingResult.resource }, code, position, errors, { 0,0 }))
{
return Workflow_InstallEvalEvent(precompileContext, resolvingResult, variableName, eventInfo, statement);
}
@@ -1565,6 +1587,7 @@ GuiPredefinedInstanceBindersPlugin
manager->SetTableParser(L"WORKFLOW", L"WORKFLOW-TYPE", &WfParseType);
manager->SetTableParser(L"WORKFLOW", L"WORKFLOW-EXPRESSION", &WfParseExpression);
manager->SetTableParser(L"WORKFLOW", L"WORKFLOW-STATEMENT", &WfParseStatement);
manager->SetTableParser(L"WORKFLOW", L"WORKFLOW-COPROVIDER-STATEMENT", &WfParseCoProviderStatement);
manager->SetTableParser(L"WORKFLOW", L"WORKFLOW-DECLARATION", &WfParseDeclaration);
manager->SetTableParser(L"WORKFLOW", L"WORKFLOW-MODULE", &WfParseModule);
manager->SetParsingTable(L"INSTANCE-QUERY", &GuiIqLoadTable);
@@ -9394,10 +9417,21 @@ Workflow_InstallEvalEvent
Ptr<workflow::WfStatement> Workflow_InstallEvalEvent(GuiResourcePrecompileContext& precompileContext, types::ResolvingResult& resolvingResult, GlobalStringKey variableName, description::IEventInfo* eventInfo, Ptr<workflow::WfStatement> evalStatement)
{
auto func = Workflow_GenerateEventHandler(precompileContext, eventInfo);
auto funcBlock = MakePtr<WfBlockStatement>();
funcBlock->statements.Add(evalStatement);
func->statement = funcBlock;
if (evalStatement.Cast<WfBlockStatement>())
{
func->statement = evalStatement;
}
else if (evalStatement.Cast<WfCoProviderStatement>())
{
func->statement = evalStatement;
}
else
{
auto funcBlock = MakePtr<WfBlockStatement>();
funcBlock->statements.Add(evalStatement);
func->statement = funcBlock;
}
auto subBlock = MakePtr<WfBlockStatement>();
@@ -9738,6 +9772,11 @@ Parser
return Workflow_Parse<WfStatement>(precompileContext, L"WORKFLOW-STATEMENT", location, code, position, errors, availableAfter);
}
Ptr<workflow::WfStatement> Workflow_ParseCoProviderStatement(GuiResourcePrecompileContext& precompileContext, GuiResourceLocation location, const WString& code, GuiResourceTextPos position, collections::List<GuiResourceError>& errors, parsing::ParsingTextPos availableAfter)
{
return Workflow_Parse<WfStatement>(precompileContext, L"WORKFLOW-COPROVIDER-STATEMENT", location, code, position, errors, availableAfter);
}
Ptr<workflow::WfModule> Workflow_ParseModule(GuiResourcePrecompileContext& precompileContext, GuiResourceLocation location, const WString& code, GuiResourceTextPos position, collections::List<GuiResourceError>& errors, parsing::ParsingTextPos availableAfter)
{
return Workflow_Parse<WfModule>(precompileContext, L"WORKFLOW-MODULE", location, code, position, errors, availableAfter);
+5 -4
View File
@@ -738,10 +738,11 @@ namespace vl
WorkflowCompiler (Parser)
***********************************************************************/
extern Ptr<workflow::WfType> Workflow_ParseType (GuiResourcePrecompileContext& precompileContext, GuiResourceLocation location, const WString& code, GuiResourceTextPos position, collections::List<GuiResourceError>& errors, parsing::ParsingTextPos availableAfter = { 0,0 });
extern Ptr<workflow::WfExpression> Workflow_ParseExpression (GuiResourcePrecompileContext& precompileContext, GuiResourceLocation location, const WString& code, GuiResourceTextPos position, collections::List<GuiResourceError>& errors, parsing::ParsingTextPos availableAfter = { 0,0 });
extern Ptr<workflow::WfStatement> Workflow_ParseStatement (GuiResourcePrecompileContext& precompileContext, GuiResourceLocation location, const WString& code, GuiResourceTextPos position, collections::List<GuiResourceError>& errors, parsing::ParsingTextPos availableAfter = { 0,0 });
extern Ptr<workflow::WfModule> Workflow_ParseModule (GuiResourcePrecompileContext& precompileContext, GuiResourceLocation location, const WString& code, GuiResourceTextPos position, collections::List<GuiResourceError>& errors, parsing::ParsingTextPos availableAfter = { 0,0 });
extern Ptr<workflow::WfType> Workflow_ParseType (GuiResourcePrecompileContext& precompileContext, GuiResourceLocation location, const WString& code, GuiResourceTextPos position, collections::List<GuiResourceError>& errors, parsing::ParsingTextPos availableAfter = { 0,0 });
extern Ptr<workflow::WfExpression> Workflow_ParseExpression (GuiResourcePrecompileContext& precompileContext, GuiResourceLocation location, const WString& code, GuiResourceTextPos position, collections::List<GuiResourceError>& errors, parsing::ParsingTextPos availableAfter = { 0,0 });
extern Ptr<workflow::WfStatement> Workflow_ParseStatement (GuiResourcePrecompileContext& precompileContext, GuiResourceLocation location, const WString& code, GuiResourceTextPos position, collections::List<GuiResourceError>& errors, parsing::ParsingTextPos availableAfter = { 0,0 });
extern Ptr<workflow::WfStatement> Workflow_ParseCoProviderStatement (GuiResourcePrecompileContext& precompileContext, GuiResourceLocation location, const WString& code, GuiResourceTextPos position, collections::List<GuiResourceError>& errors, parsing::ParsingTextPos availableAfter = { 0,0 });
extern Ptr<workflow::WfModule> Workflow_ParseModule (GuiResourcePrecompileContext& precompileContext, GuiResourceLocation location, const WString& code, GuiResourceTextPos position, collections::List<GuiResourceError>& errors, parsing::ParsingTextPos availableAfter = { 0,0 });
extern WString Workflow_ModuleToString(Ptr<workflow::WfModule> module);
extern Ptr<workflow::WfExpression> Workflow_ParseTextValue(GuiResourcePrecompileContext& precompileContext, description::ITypeDescriptor* typeDescriptor, GuiResourceLocation location, const WString& textValue, GuiResourceTextPos position, collections::List<GuiResourceError>& errors);
+1
View File
@@ -1727,6 +1727,7 @@ Type Declaration
CLASS_MEMBER_METHOD(MoveToScreenCenter, NO_PARAMETER)
CLASS_MEMBER_METHOD(ShowModal, { L"owner" _ L"callback" })
CLASS_MEMBER_METHOD(ShowModalAndDelete, { L"owner" _ L"callback" })
CLASS_MEMBER_METHOD(ShowModalAsync, { L"owner" })
END_CLASS_MEMBER(GuiWindow)
BEGIN_INTERFACE_MEMBER(GuiWindow::IStyleController)
+139 -53
View File
@@ -1924,28 +1924,20 @@ Locale
#ifdef VCZH_MSVC
WString Locale::FormatNumber(const WString& number)const
{
#if defined VCZH_MSVC
int length=GetNumberFormatEx(localeName.Buffer(), 0, number.Buffer(), NULL, NULL, 0);
if(length==0) return L"";
Array<wchar_t> buffer(length);
GetNumberFormatEx(localeName.Buffer(), 0, number.Buffer(), NULL, &buffer[0], (int)buffer.Count());
return &buffer[0];
#elif defined VCZH_GCC
throw 0;
#endif
}
WString Locale::FormatCurrency(const WString& currency)const
{
#if defined VCZH_MSVC
int length=GetCurrencyFormatEx(localeName.Buffer(), 0, currency.Buffer(), NULL, NULL, 0);
if(length==0) return L"";
Array<wchar_t> buffer(length);
GetCurrencyFormatEx(localeName.Buffer(), 0, currency.Buffer(), NULL, &buffer[0], (int)buffer.Count());
return &buffer[0];
#elif defined VCZH_GCC
throw 0;
#endif
}
#endif
@@ -2038,38 +2030,22 @@ Locale
#ifdef VCZH_MSVC
WString Locale::ToFullWidth(const WString& str)const
{
#if defined VCZH_MSVC
return Transform(localeName, str, LCMAP_FULLWIDTH);
#elif defined VCZH_GCC
throw 0;
#endif
}
WString Locale::ToHalfWidth(const WString& str)const
{
#if defined VCZH_MSVC
return Transform(localeName, str, LCMAP_HALFWIDTH);
#elif defined VCZH_GCC
throw 0;
#endif
}
WString Locale::ToHiragana(const WString& str)const
{
#if defined VCZH_MSVC
return Transform(localeName, str, LCMAP_HIRAGANA);
#elif defined VCZH_GCC
throw 0;
#endif
}
WString Locale::ToKatagana(const WString& str)const
{
#if defined VCZH_MSVC
return Transform(localeName, str, LCMAP_KATAKANA);
#elif defined VCZH_GCC
throw 0;
#endif
}
#endif
@@ -2112,29 +2088,17 @@ Locale
#ifdef VCZH_MSVC
WString Locale::ToSimplifiedChinese(const WString& str)const
{
#if defined VCZH_MSVC
return Transform(localeName, str, LCMAP_SIMPLIFIED_CHINESE);
#elif defined VCZH_GCC
throw 0;
#endif
}
WString Locale::ToTraditionalChinese(const WString& str)const
{
#if defined VCZH_MSVC
return Transform(localeName, str, LCMAP_TRADITIONAL_CHINESE);
#elif defined VCZH_GCC
throw 0;
#endif
}
WString Locale::ToTileCase(const WString& str)const
{
#if defined VCZH_MSVC
return Transform(localeName, str, LCMAP_TITLECASE);
#elif defined VCZH_GCC
throw 0;
#endif
}
#endif
@@ -2154,8 +2118,6 @@ Locale
return wcscmp(s1.Buffer(), s2.Buffer());
case Normalization::IgnoreCase:
return wcscasecmp(s1.Buffer(), s2.Buffer());
default:
throw 0;
}
#endif
}
@@ -2230,8 +2192,6 @@ Locale
}
}
break;
default:
throw 0;
}
return result == nullptr ? Pair<vint, vint>(-1, 0) : Pair<vint, vint>(result - text.Buffer(), find.Length());
#endif
@@ -2277,8 +2237,6 @@ Locale
}
}
break;
default:
throw 0;
}
return result == nullptr ? Pair<vint, vint>(-1, 0) : Pair<vint, vint>(result - text.Buffer(), find.Length());
#endif
@@ -2300,8 +2258,6 @@ Locale
return wcsncmp(text.Buffer(), find.Buffer(), find.Length()) == 0;
case Normalization::IgnoreCase:
return wcsncasecmp(text.Buffer(), find.Buffer(), find.Length()) == 0;
default:
throw 0;
}
#endif
}
@@ -2322,8 +2278,6 @@ Locale
return wcsncmp(text.Buffer() + text.Length() - find.Length(), find.Buffer(), find.Length()) == 0;
case Normalization::IgnoreCase:
return wcsncasecmp(text.Buffer() + text.Length() - find.Length(), find.Buffer(), find.Length()) == 0;
default:
throw 0;
}
#endif
}
@@ -18338,6 +18292,7 @@ IAsync
class DelayAsync : public Object, public virtual IAsync, public Description<DelayAsync>
{
protected:
SpinLock lock;
vint milliseconds;
AsyncStatus status = AsyncStatus::Ready;
@@ -18354,12 +18309,18 @@ IAsync
bool Execute(const Func<void(Ptr<CoroutineResult>)>& _callback)override
{
if (status != AsyncStatus::Ready) return false;
status = AsyncStatus::Executing;
IAsyncScheduler::GetSchedulerForCurrentThread()->DelayExecute([async = Ptr<DelayAsync>(this), callback = _callback]()
SPIN_LOCK(lock)
{
callback(nullptr);
}, milliseconds);
if (status != AsyncStatus::Ready) return false;
status = AsyncStatus::Executing;
IAsyncScheduler::GetSchedulerForCurrentThread()->DelayExecute([async = Ptr<DelayAsync>(this), callback = _callback]()
{
if (callback)
{
callback(nullptr);
}
}, milliseconds);
}
return true;
}
};
@@ -18369,6 +18330,95 @@ IAsync
return new DelayAsync(milliseconds);
}
/***********************************************************************
IFuture
***********************************************************************/
class FutureAndPromiseAsync : public virtual IFuture, public virtual IPromise, public Description<FutureAndPromiseAsync>
{
public:
SpinLock lock;
AsyncStatus status = AsyncStatus::Ready;
Ptr<CoroutineResult> cr;
Func<void(Ptr<CoroutineResult>)> callback;
void ExecuteCallbackAndClear()
{
status = AsyncStatus::Stopped;
if (callback)
{
callback(cr);
}
cr = nullptr;
callback = {};
}
template<typename F>
bool Send(F f)
{
SPIN_LOCK(lock)
{
if (status == AsyncStatus::Stopped || cr) return false;
cr = MakePtr<CoroutineResult>();
f();
if (status == AsyncStatus::Executing)
{
ExecuteCallbackAndClear();
}
}
return true;
}
AsyncStatus GetStatus()override
{
return status;
}
bool Execute(const Func<void(Ptr<CoroutineResult>)>& _callback)override
{
SPIN_LOCK(lock)
{
if (status != AsyncStatus::Ready) return false;
callback = _callback;
if (cr)
{
ExecuteCallbackAndClear();
}
else
{
status = AsyncStatus::Executing;
}
}
return true;
}
Ptr<IPromise> GetPromise()override
{
return this;
}
bool SendResult(const Value& result)override
{
return Send([=]()
{
cr->SetResult(result);
});
}
bool SendFailure(Ptr<IValueException> failure)override
{
return Send([=]()
{
cr->SetFailure(failure);
});
}
};
Ptr<IFuture> IFuture::Create()
{
return new FutureAndPromiseAsync();
}
/***********************************************************************
IAsyncScheduler
***********************************************************************/
@@ -18567,10 +18617,21 @@ AsyncCoroutine
{
return new CoroutineAsync(creator);
}
void AsyncCoroutine::CreateAndRun(const Creator& creator)
{
MakePtr<CoroutineAsync>(creator)->Execute({});
MakePtr<CoroutineAsync>(creator)->Execute(
[](Ptr<CoroutineResult> cr)
{
if (cr->GetFailure())
{
#pragma push_macro("GetMessage")
#if defined GetMessage
#undef GetMessage
#endif
throw Exception(cr->GetFailure()->GetMessage());
#pragma pop_macro("GetMessage")
}
});
}
/***********************************************************************
@@ -18705,6 +18766,9 @@ TypeName
IMPL_TYPE_INFO_RENAME(vl::reflection::description::EnumerableCoroutine, system::EnumerableCoroutine)
IMPL_TYPE_INFO_RENAME(vl::reflection::description::AsyncStatus, system::AsyncStatus)
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IAsync, system::Async)
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IPromise, system::Promise)
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IFuture, system::Future)
IMPL_TYPE_INFO_RENAME(vl::reflection::description::IAsyncScheduler, system::AsyncScheduler)
IMPL_TYPE_INFO_RENAME(vl::reflection::description::AsyncCoroutine::IImpl, system::AsyncCoroutine::IImpl)
IMPL_TYPE_INFO_RENAME(vl::reflection::description::AsyncCoroutine, system::AsyncCoroutine)
@@ -19405,6 +19469,25 @@ LoadPredefinedTypes
CLASS_MEMBER_STATIC_METHOD(Delay, { L"milliseconds" })
END_INTERFACE_MEMBER(IAsync)
BEGIN_INTERFACE_MEMBER_NOPROXY(IPromise)
CLASS_MEMBER_METHOD(SendResult, { L"result" })
CLASS_MEMBER_METHOD(SendFailure, { L"failure" })
END_INTERFACE_MEMBER(IPromise)
BEGIN_INTERFACE_MEMBER_NOPROXY(IFuture)
CLASS_MEMBER_BASE(IAsync)
CLASS_MEMBER_BASE(IPromise)
CLASS_MEMBER_PROPERTY_READONLY_FAST(Promise)
CLASS_MEMBER_STATIC_METHOD(Create, NO_PARAMETER)
END_INTERFACE_MEMBER(IFuture)
BEGIN_INTERFACE_MEMBER_NOPROXY(IAsyncScheduler)
CLASS_MEMBER_METHOD(Execute, { L"callback" })
CLASS_MEMBER_METHOD(ExecuteInBackground, { L"callback" })
CLASS_MEMBER_METHOD(DelayExecute, { L"callback" _ L"milliseconds" })
CLASS_MEMBER_STATIC_METHOD(GetSchedulerForCurrentThread, NO_PARAMETER)
END_INTERFACE_MEMBER(IAsyncScheduler)
BEGIN_INTERFACE_MEMBER_NOPROXY(AsyncCoroutine::IImpl)
CLASS_MEMBER_BASE(IAsync)
END_INTERFACE_MEMBER(AsyncCoroutine::IImpl)
@@ -19632,6 +19715,9 @@ LoadPredefinedTypes
ADD_TYPE_INFO(EnumerableCoroutine)
ADD_TYPE_INFO(AsyncStatus)
ADD_TYPE_INFO(IAsync)
ADD_TYPE_INFO(IPromise)
ADD_TYPE_INFO(IFuture)
ADD_TYPE_INFO(IAsyncScheduler)
ADD_TYPE_INFO(AsyncCoroutine::IImpl)
ADD_TYPE_INFO(AsyncCoroutine)
+23 -2
View File
@@ -7435,6 +7435,7 @@ namespace vl
None=0,
/// <summary>Ignore case using the file system rule.</summary>
IgnoreCase=1,
#ifdef VCZH_MSVC
/// <summary>Ignore case using the linguistic rule.</summary>
IgnoreCaseLinguistic=2,
/// <summary>Ignore the difference between between hiragana and katakana characters.</summary>
@@ -7449,6 +7450,7 @@ namespace vl
DigitsAsNumbers=64,
/// <summary>Treat punctuation the same as symbols.</summary>
StringSoft=128,
#endif
};
/// <summary>Compare two strings.</summary>
@@ -11165,7 +11167,7 @@ Coroutine (Async)
Stopped,
};
class IAsync : public IDescriptable, public Description<IAsync>
class IAsync : public virtual IDescriptable, public Description<IAsync>
{
public:
virtual AsyncStatus GetStatus() = 0;
@@ -11174,10 +11176,26 @@ Coroutine (Async)
static Ptr<IAsync> Delay(vint milliseconds);
};
class IAsyncScheduler : public IDescriptable, public Description<IAsyncScheduler>
class IPromise : public virtual IDescriptable, public Description<IPromise>
{
public:
virtual bool SendResult(const Value& result) = 0;
virtual bool SendFailure(Ptr<IValueException> failure) = 0;
};
class IFuture : public virtual IAsync, public Description<IFuture>
{
public:
virtual Ptr<IPromise> GetPromise() = 0;
static Ptr<IFuture> Create();
};
class IAsyncScheduler : public virtual IDescriptable, public Description<IAsyncScheduler>
{
public:
virtual void Execute(const Func<void()>& callback) = 0;
virtual void ExecuteInBackground(const Func<void()>& callback) = 0;
virtual void DelayExecute(const Func<void()>& callback, vint milliseconds) = 0;
static void RegisterDefaultScheduler(Ptr<IAsyncScheduler> scheduler);
@@ -15058,6 +15076,9 @@ Predefined Types
DECL_TYPE_INFO(EnumerableCoroutine)
DECL_TYPE_INFO(AsyncStatus)
DECL_TYPE_INFO(IAsync)
DECL_TYPE_INFO(IPromise)
DECL_TYPE_INFO(IFuture)
DECL_TYPE_INFO(IAsyncScheduler)
DECL_TYPE_INFO(AsyncCoroutine::IImpl)
DECL_TYPE_INFO(AsyncCoroutine)
File diff suppressed because one or more lines are too long
+33
View File
@@ -224,6 +224,7 @@ namespace vl
class WfBindExpression;
class WfFormatExpression;
class WfNewCoroutineExpression;
class WfMixinCastExpression;
class WfModuleUsingFragment;
class WfModuleUsingNameFragment;
class WfModuleUsingWildCardFragment;
@@ -1391,6 +1392,7 @@ namespace vl
virtual void Visit(WfBindExpression* node)=0;
virtual void Visit(WfFormatExpression* node)=0;
virtual void Visit(WfNewCoroutineExpression* node)=0;
virtual void Visit(WfMixinCastExpression* node)=0;
};
virtual void Accept(WfVirtualExpression::IVisitor* visitor)=0;
@@ -1431,6 +1433,17 @@ namespace vl
static vl::Ptr<WfNewCoroutineExpression> Convert(vl::Ptr<vl::parsing::ParsingTreeNode> node, const vl::collections::List<vl::regex::RegexToken>& tokens);
};
class WfMixinCastExpression : public WfVirtualExpression, vl::reflection::Description<WfMixinCastExpression>
{
public:
vl::Ptr<WfType> type;
vl::Ptr<WfExpression> expression;
void Accept(WfVirtualExpression::IVisitor* visitor)override;
static vl::Ptr<WfMixinCastExpression> Convert(vl::Ptr<vl::parsing::ParsingTreeNode> node, const vl::collections::List<vl::regex::RegexToken>& tokens);
};
class WfModuleUsingFragment abstract : public vl::parsing::ParsingTreeCustomBase, vl::reflection::Description<WfModuleUsingFragment>
{
public:
@@ -1614,6 +1627,7 @@ namespace vl
DECL_TYPE_INFO(vl::workflow::WfBindExpression)
DECL_TYPE_INFO(vl::workflow::WfFormatExpression)
DECL_TYPE_INFO(vl::workflow::WfNewCoroutineExpression)
DECL_TYPE_INFO(vl::workflow::WfMixinCastExpression)
DECL_TYPE_INFO(vl::workflow::WfModuleUsingFragment)
DECL_TYPE_INFO(vl::workflow::WfModuleUsingNameFragment)
DECL_TYPE_INFO(vl::workflow::WfModuleUsingWildCardFragment)
@@ -2028,6 +2042,11 @@ namespace vl
INVOKE_INTERFACE_PROXY(Visit, node);
}
void Visit(vl::workflow::WfMixinCastExpression* node)override
{
INVOKE_INTERFACE_PROXY(Visit, node);
}
END_INTERFACE_PROXY(vl::workflow::WfVirtualExpression::IVisitor)
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(vl::workflow::WfModuleUsingFragment::IVisitor)
@@ -2073,6 +2092,11 @@ namespace vl
extern vl::Ptr<vl::parsing::ParsingTreeCustomBase> WfConvertParsingTreeNode(vl::Ptr<vl::parsing::ParsingTreeNode> node, const vl::collections::List<vl::regex::RegexToken>& tokens);
extern vl::Ptr<vl::parsing::tabling::ParsingTable> WfLoadTable();
extern vl::Ptr<vl::parsing::ParsingTreeNode> WfParseCoProviderStatementAsParsingTreeNode(const vl::WString& input, vl::Ptr<vl::parsing::tabling::ParsingTable> table, vl::collections::List<vl::Ptr<vl::parsing::ParsingError>>& errors, vl::vint codeIndex = -1);
extern vl::Ptr<vl::parsing::ParsingTreeNode> WfParseCoProviderStatementAsParsingTreeNode(const vl::WString& input, vl::Ptr<vl::parsing::tabling::ParsingTable> table, vl::vint codeIndex = -1);
extern vl::Ptr<WfStatement> WfParseCoProviderStatement(const vl::WString& input, vl::Ptr<vl::parsing::tabling::ParsingTable> table, vl::collections::List<vl::Ptr<vl::parsing::ParsingError>>& errors, vl::vint codeIndex = -1);
extern vl::Ptr<WfStatement> WfParseCoProviderStatement(const vl::WString& input, vl::Ptr<vl::parsing::tabling::ParsingTable> table, vl::vint codeIndex = -1);
extern vl::Ptr<vl::parsing::ParsingTreeNode> WfParseDeclarationAsParsingTreeNode(const vl::WString& input, vl::Ptr<vl::parsing::tabling::ParsingTable> table, vl::collections::List<vl::Ptr<vl::parsing::ParsingError>>& errors, vl::vint codeIndex = -1);
extern vl::Ptr<vl::parsing::ParsingTreeNode> WfParseDeclarationAsParsingTreeNode(const vl::WString& input, vl::Ptr<vl::parsing::tabling::ParsingTable> table, vl::vint codeIndex = -1);
extern vl::Ptr<WfDeclaration> WfParseDeclaration(const vl::WString& input, vl::Ptr<vl::parsing::tabling::ParsingTable> table, vl::collections::List<vl::Ptr<vl::parsing::ParsingError>>& errors, vl::vint codeIndex = -1);
@@ -2444,15 +2468,18 @@ namespace vl
void CopyFields(WfExpression* from, WfExpression* to);
void CopyFields(WfFormatExpression* from, WfFormatExpression* to);
void CopyFields(WfNewCoroutineExpression* from, WfNewCoroutineExpression* to);
void CopyFields(WfMixinCastExpression* from, WfMixinCastExpression* to);
// CreateField (virtual) -----------------------------
virtual vl::Ptr<WfExpression> CreateField(vl::Ptr<WfExpression> from) = 0;
virtual vl::Ptr<WfStatement> CreateField(vl::Ptr<WfStatement> from) = 0;
virtual vl::Ptr<WfType> CreateField(vl::Ptr<WfType> from) = 0;
// Visitor Members -----------------------------------
void Visit(WfBindExpression* node)override;
void Visit(WfFormatExpression* node)override;
void Visit(WfNewCoroutineExpression* node)override;
void Visit(WfMixinCastExpression* node)override;
};
class ModuleUsingFragmentVisitor : public virtual VisitorBase, public WfModuleUsingFragment::IVisitor
@@ -2863,15 +2890,18 @@ namespace vl
virtual void Traverse(WfExpression* node);
virtual void Traverse(WfFormatExpression* node);
virtual void Traverse(WfNewCoroutineExpression* node);
virtual void Traverse(WfMixinCastExpression* node);
// VisitField (virtual) ------------------------------
virtual void VisitField(WfExpression* node) = 0;
virtual void VisitField(WfStatement* node) = 0;
virtual void VisitField(WfType* node) = 0;
// Visitor Members -----------------------------------
void Visit(WfBindExpression* node)override;
void Visit(WfFormatExpression* node)override;
void Visit(WfNewCoroutineExpression* node)override;
void Visit(WfMixinCastExpression* node)override;
};
class ModuleUsingFragmentVisitor : public Object, public WfModuleUsingFragment::IVisitor
@@ -3093,6 +3123,7 @@ namespace vl
void Visit(WfBindExpression* node)override;
void Visit(WfFormatExpression* node)override;
void Visit(WfNewCoroutineExpression* node)override;
void Visit(WfMixinCastExpression* node)override;
};
class ModuleUsingFragmentVisitor : public Object, public WfModuleUsingFragment::IVisitor
@@ -3595,6 +3626,7 @@ Expanding Virtual Nodes
extern void ExpandBindExpression(WfLexicalScopeManager* manager, WfBindExpression* node);
extern void ExpandNewCoroutineExpression(WfLexicalScopeManager* manager, WfNewCoroutineExpression* node);
extern void ExpandMixinCastExpression(WfLexicalScopeManager* manager, WfMixinCastExpression* node);
extern void ExpandSwitchStatement(WfLexicalScopeManager* manager, WfSwitchStatement* node);
extern void ExpandForEachStatement(WfLexicalScopeManager* manager, WfForEachStatement* node);
extern void ExpandCoProviderStatement(WfLexicalScopeManager* manager, WfCoProviderStatement* node);
@@ -3656,6 +3688,7 @@ Error Messages
static Ptr<parsing::ParsingError> IncorrectTypeForUnion(WfExpression* node, reflection::description::ITypeInfo* type);
static Ptr<parsing::ParsingError> IncorrectTypeForIntersect(WfExpression* node, reflection::description::ITypeInfo* type);
static Ptr<parsing::ParsingError> ExpressionIsNotConstant(WfExpression* node);
static Ptr<parsing::ParsingError> WrongMixinTargetType(WfExpression* node, reflection::description::ITypeInfo* fromType, reflection::description::ITypeInfo* toType);
// B: Type error
static Ptr<parsing::ParsingError> WrongVoidType(WfType* node);
BIN
View File
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -29,20 +29,23 @@ namespace demo
{
friend class ::demo::MainWindowConstructor;
friend class ::vl_workflow_global::__vwsnc10_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener;
friend class ::vl_workflow_global::__vwsnc11_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription;
friend class ::vl_workflow_global::__vwsnc12_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener;
friend class ::vl_workflow_global::__vwsnc13_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription;
friend class ::vl_workflow_global::__vwsnc14_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener;
friend class ::vl_workflow_global::__vwsnc15_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription;
friend class ::vl_workflow_global::__vwsnc16_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener;
friend class ::vl_workflow_global::__vwsnc11_Demo_demo_MainWindowConstructor___vwsn_initialize_instance_____vl_reflection_description_ICoroutine;
friend class ::vl_workflow_global::__vwsnc12_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription;
friend class ::vl_workflow_global::__vwsnc13_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener;
friend class ::vl_workflow_global::__vwsnc14_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription;
friend class ::vl_workflow_global::__vwsnc15_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener;
friend class ::vl_workflow_global::__vwsnc16_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription;
friend class ::vl_workflow_global::__vwsnc17_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener;
friend class ::vl_workflow_global::__vwsnc18_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription;
friend class ::vl_workflow_global::__vwsnc19_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener;
friend class ::vl_workflow_global::__vwsnc1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription;
friend class ::vl_workflow_global::__vwsnc2_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener;
friend class ::vl_workflow_global::__vwsnc3_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription;
friend class ::vl_workflow_global::__vwsnc4_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener;
friend class ::vl_workflow_global::__vwsnc5_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription;
friend class ::vl_workflow_global::__vwsnc6_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener;
friend class ::vl_workflow_global::__vwsnc7_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription;
friend class ::vl_workflow_global::__vwsnc8_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener;
friend class ::vl_workflow_global::__vwsnc3_Demo_demo_MainWindowConstructor___vwsn_initialize_instance_____vl_reflection_description_ICoroutine;
friend class ::vl_workflow_global::__vwsnc4_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription;
friend class ::vl_workflow_global::__vwsnc5_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener;
friend class ::vl_workflow_global::__vwsnc6_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription;
friend class ::vl_workflow_global::__vwsnc7_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener;
friend class ::vl_workflow_global::__vwsnc8_Demo_demo_MainWindowConstructor___vwsn_initialize_instance_____vl_reflection_description_ICoroutine;
friend class ::vl_workflow_global::__vwsnc9_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription;
friend struct ::vl_workflow_global::__vwsnf10_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__;
friend struct ::vl_workflow_global::__vwsnf11_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__;
@@ -161,11 +161,9 @@ Closures
void __vwsnf27_Demo_demo_FindWindowConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const
{
if ((! ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->self)->FindNext(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textFind)->GetText(), ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->checkCase)->GetSelected(), ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->radioDown)->GetSelected())))
{
if ((! ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->self)->FindNext(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textFind)->GetText(), ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->checkCase)->GetSelected(), ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->radioDown)->GetSelected())))
{
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->dialogContentNotFound)->ShowDialog();
}
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->dialogContentNotFound)->ShowDialog();
}
}
Binary file not shown.
File diff suppressed because it is too large Load Diff
@@ -59,12 +59,10 @@ Closures
void __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const
{
auto radioButton = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::controls::GuiSelectableButton>(::vl::__vwsn::This(sender)->GetRelatedControl()));
if (::vl::__vwsn::This(radioButton)->GetSelected())
{
auto radioButton = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::controls::GuiSelectableButton>(::vl::__vwsn::This(sender)->GetRelatedControl()));
if (::vl::__vwsn::This(radioButton)->GetSelected())
{
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->SetDirection(((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Horizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Horizontal : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Vertical", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Vertical : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"ReversedHorizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedHorizontal : ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedVertical))));
}
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->SetDirection(((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Horizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Horizontal : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Vertical", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Vertical : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"ReversedHorizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedHorizontal : ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedVertical))));
}
}
@@ -77,12 +75,10 @@ Closures
void __vwsnf2_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const
{
auto radioButton = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::controls::GuiSelectableButton>(::vl::__vwsn::This(sender)->GetRelatedControl()));
if (::vl::__vwsn::This(radioButton)->GetSelected())
{
auto radioButton = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::controls::GuiSelectableButton>(::vl::__vwsn::This(sender)->GetRelatedControl()));
if (::vl::__vwsn::This(radioButton)->GetSelected())
{
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->SetDirection(((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Horizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Horizontal : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Vertical", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Vertical : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"ReversedHorizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedHorizontal : ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedVertical))));
}
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->SetDirection(((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Horizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Horizontal : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Vertical", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Vertical : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"ReversedHorizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedHorizontal : ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedVertical))));
}
}
@@ -95,12 +91,10 @@ Closures
void __vwsnf3_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const
{
auto radioButton = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::controls::GuiSelectableButton>(::vl::__vwsn::This(sender)->GetRelatedControl()));
if (::vl::__vwsn::This(radioButton)->GetSelected())
{
auto radioButton = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::controls::GuiSelectableButton>(::vl::__vwsn::This(sender)->GetRelatedControl()));
if (::vl::__vwsn::This(radioButton)->GetSelected())
{
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->SetDirection(((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Horizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Horizontal : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Vertical", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Vertical : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"ReversedHorizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedHorizontal : ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedVertical))));
}
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->SetDirection(((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Horizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Horizontal : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Vertical", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Vertical : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"ReversedHorizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedHorizontal : ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedVertical))));
}
}
@@ -113,12 +107,10 @@ Closures
void __vwsnf4_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const
{
auto radioButton = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::controls::GuiSelectableButton>(::vl::__vwsn::This(sender)->GetRelatedControl()));
if (::vl::__vwsn::This(radioButton)->GetSelected())
{
auto radioButton = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::controls::GuiSelectableButton>(::vl::__vwsn::This(sender)->GetRelatedControl()));
if (::vl::__vwsn::This(radioButton)->GetSelected())
{
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->SetDirection(((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Horizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Horizontal : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Vertical", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Vertical : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"ReversedHorizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedHorizontal : ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedVertical))));
}
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->SetDirection(((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Horizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Horizontal : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"Vertical", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::Vertical : ((::vl::__vwsn::This(radioButton)->GetText() == ::vl::WString(L"ReversedHorizontal", false)) ? ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedHorizontal : ::vl::presentation::compositions::GuiStackComposition::Direction::ReversedVertical))));
}
}
@@ -132,21 +124,19 @@ Closures
void __vwsnf5_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const
{
{
auto __vwsn_for_enumerable_stackItem = ::vl::Ptr<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueReadonlyList>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->GetStackItems()));
auto __vwsn_for_enumerator_stackItem = ::vl::__vwsn::This(__vwsn_for_enumerable_stackItem.Obj())->CreateEnumerator();
while (::vl::__vwsn::This(__vwsn_for_enumerator_stackItem.Obj())->Next())
{
auto __vwsn_for_enumerable_stackItem = ::vl::Ptr<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueReadonlyList>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->GetStackItems()));
auto __vwsn_for_enumerator_stackItem = ::vl::__vwsn::This(__vwsn_for_enumerable_stackItem.Obj())->CreateEnumerator();
while (::vl::__vwsn::This(__vwsn_for_enumerator_stackItem.Obj())->Next())
auto stackItem = ::vl::__vwsn::Unbox<::vl::presentation::compositions::GuiStackItemComposition*>(::vl::__vwsn::This(__vwsn_for_enumerator_stackItem.Obj())->GetCurrent());
{
auto stackItem = ::vl::__vwsn::Unbox<::vl::presentation::compositions::GuiStackItemComposition*>(::vl::__vwsn::This(__vwsn_for_enumerator_stackItem.Obj())->GetCurrent());
{
::vl::__vwsn::This(stackItem)->SetExtraMargin(::vl::presentation::Margin{});
}
::vl::__vwsn::This(stackItem)->SetExtraMargin(::vl::presentation::Margin{});
}
}
auto selectedItem = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::compositions::GuiStackItemComposition>(::vl::__vwsn::This(sender)->GetParent()));
::vl::__vwsn::This(selectedItem)->SetExtraMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 10; __vwsn_temp__.top = 10; __vwsn_temp__.right = 10; __vwsn_temp__.bottom = 10; return __vwsn_temp__; }());
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->MoveChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(selectedItem), (::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueReadonlyList>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->GetStackItems()).Obj())->GetCount() - 1));
}
auto selectedItem = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::compositions::GuiStackItemComposition>(::vl::__vwsn::This(sender)->GetParent()));
::vl::__vwsn::This(selectedItem)->SetExtraMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 10; __vwsn_temp__.top = 10; __vwsn_temp__.right = 10; __vwsn_temp__.bottom = 10; return __vwsn_temp__; }());
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->MoveChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(selectedItem), (::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueReadonlyList>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->GetStackItems()).Obj())->GetCount() - 1));
}
//-------------------------------------------------------------------
@@ -159,21 +149,19 @@ Closures
void __vwsnf6_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const
{
{
auto __vwsn_for_enumerable_stackItem = ::vl::Ptr<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueReadonlyList>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->GetStackItems()));
auto __vwsn_for_enumerator_stackItem = ::vl::__vwsn::This(__vwsn_for_enumerable_stackItem.Obj())->CreateEnumerator();
while (::vl::__vwsn::This(__vwsn_for_enumerator_stackItem.Obj())->Next())
{
auto __vwsn_for_enumerable_stackItem = ::vl::Ptr<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueReadonlyList>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->GetStackItems()));
auto __vwsn_for_enumerator_stackItem = ::vl::__vwsn::This(__vwsn_for_enumerable_stackItem.Obj())->CreateEnumerator();
while (::vl::__vwsn::This(__vwsn_for_enumerator_stackItem.Obj())->Next())
auto stackItem = ::vl::__vwsn::Unbox<::vl::presentation::compositions::GuiStackItemComposition*>(::vl::__vwsn::This(__vwsn_for_enumerator_stackItem.Obj())->GetCurrent());
{
auto stackItem = ::vl::__vwsn::Unbox<::vl::presentation::compositions::GuiStackItemComposition*>(::vl::__vwsn::This(__vwsn_for_enumerator_stackItem.Obj())->GetCurrent());
{
::vl::__vwsn::This(stackItem)->SetExtraMargin(::vl::presentation::Margin{});
}
::vl::__vwsn::This(stackItem)->SetExtraMargin(::vl::presentation::Margin{});
}
}
auto selectedItem = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::compositions::GuiStackItemComposition>(::vl::__vwsn::This(sender)->GetParent()));
::vl::__vwsn::This(selectedItem)->SetExtraMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 10; __vwsn_temp__.top = 10; __vwsn_temp__.right = 10; __vwsn_temp__.bottom = 10; return __vwsn_temp__; }());
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->MoveChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(selectedItem), (::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueReadonlyList>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->GetStackItems()).Obj())->GetCount() - 1));
}
auto selectedItem = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::compositions::GuiStackItemComposition>(::vl::__vwsn::This(sender)->GetParent()));
::vl::__vwsn::This(selectedItem)->SetExtraMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 10; __vwsn_temp__.top = 10; __vwsn_temp__.right = 10; __vwsn_temp__.bottom = 10; return __vwsn_temp__; }());
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->MoveChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(selectedItem), (::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueReadonlyList>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->GetStackItems()).Obj())->GetCount() - 1));
}
//-------------------------------------------------------------------
@@ -186,21 +174,19 @@ Closures
void __vwsnf7_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const
{
{
auto __vwsn_for_enumerable_stackItem = ::vl::Ptr<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueReadonlyList>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->GetStackItems()));
auto __vwsn_for_enumerator_stackItem = ::vl::__vwsn::This(__vwsn_for_enumerable_stackItem.Obj())->CreateEnumerator();
while (::vl::__vwsn::This(__vwsn_for_enumerator_stackItem.Obj())->Next())
{
auto __vwsn_for_enumerable_stackItem = ::vl::Ptr<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueReadonlyList>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->GetStackItems()));
auto __vwsn_for_enumerator_stackItem = ::vl::__vwsn::This(__vwsn_for_enumerable_stackItem.Obj())->CreateEnumerator();
while (::vl::__vwsn::This(__vwsn_for_enumerator_stackItem.Obj())->Next())
auto stackItem = ::vl::__vwsn::Unbox<::vl::presentation::compositions::GuiStackItemComposition*>(::vl::__vwsn::This(__vwsn_for_enumerator_stackItem.Obj())->GetCurrent());
{
auto stackItem = ::vl::__vwsn::Unbox<::vl::presentation::compositions::GuiStackItemComposition*>(::vl::__vwsn::This(__vwsn_for_enumerator_stackItem.Obj())->GetCurrent());
{
::vl::__vwsn::This(stackItem)->SetExtraMargin(::vl::presentation::Margin{});
}
::vl::__vwsn::This(stackItem)->SetExtraMargin(::vl::presentation::Margin{});
}
}
auto selectedItem = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::compositions::GuiStackItemComposition>(::vl::__vwsn::This(sender)->GetParent()));
::vl::__vwsn::This(selectedItem)->SetExtraMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 10; __vwsn_temp__.top = 10; __vwsn_temp__.right = 10; __vwsn_temp__.bottom = 10; return __vwsn_temp__; }());
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->MoveChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(selectedItem), (::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueReadonlyList>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->GetStackItems()).Obj())->GetCount() - 1));
}
auto selectedItem = ::vl::__vwsn::Ensure(::vl::__vwsn::RawPtrCast<::vl::presentation::compositions::GuiStackItemComposition>(::vl::__vwsn::This(sender)->GetParent()));
::vl::__vwsn::This(selectedItem)->SetExtraMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 10; __vwsn_temp__.top = 10; __vwsn_temp__.right = 10; __vwsn_temp__.bottom = 10; return __vwsn_temp__; }());
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->MoveChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(selectedItem), (::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueReadonlyList>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->stackLayout)->GetStackItems()).Obj())->GetCount() - 1));
}
}
@@ -59,12 +59,10 @@ Closures
void __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const
{
{
auto a = ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxA)->GetText();
auto b = ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxB)->GetText();
auto c = [&](){ try{ return ::vl::__vwsn::ToString((::vl::__vwsn::Parse<::vl::vint32_t>(a) + ::vl::__vwsn::Parse<::vl::vint32_t>(b))); } catch(...){ return ::vl::WString(L"<ERROR>", false); } }();
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxC)->SetText(c);
}
auto a = ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxA)->GetText();
auto b = ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxB)->GetText();
auto c = [&](){ try{ return ::vl::__vwsn::ToString((::vl::__vwsn::Parse<::vl::vint32_t>(a) + ::vl::__vwsn::Parse<::vl::vint32_t>(b))); } catch(...){ return ::vl::WString(L"<ERROR>", false); } }();
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxC)->SetText(c);
}
}
@@ -59,9 +59,7 @@ Closures
void __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const
{
{
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxC)->SetText([&](){ try{ return ::vl::__vwsn::ToString(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->ViewModel.Obj())->Add(::vl::__vwsn::Parse<::vl::vint32_t>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxA)->GetText()), ::vl::__vwsn::Parse<::vl::vint32_t>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxB)->GetText()))); } catch(...){ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->ViewModel.Obj())->Error(); } }());
}
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxC)->SetText([&](){ try{ return ::vl::__vwsn::ToString(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->ViewModel.Obj())->Add(::vl::__vwsn::Parse<::vl::vint32_t>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxA)->GetText()), ::vl::__vwsn::Parse<::vl::vint32_t>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxB)->GetText()))); } catch(...){ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->ViewModel.Obj())->Error(); } }());
}
}
@@ -77,9 +77,7 @@ Closures
void __vwsnf2_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const
{
{
(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->self)->integerState = ::vl::__vwsn::Parse<::vl::vint32_t>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxA)->GetText()));
}
(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->self)->integerState = ::vl::__vwsn::Parse<::vl::vint32_t>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxA)->GetText()));
}
//-------------------------------------------------------------------
@@ -77,9 +77,7 @@ Closures
void __vwsnf2_Demo_demo_MyControlConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const
{
{
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->self)->SetSelectedOption(::vl::WString(L"A", false));
}
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->self)->SetSelectedOption(::vl::WString(L"A", false));
}
//-------------------------------------------------------------------
@@ -91,9 +89,7 @@ Closures
void __vwsnf3_Demo_demo_MyControlConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const
{
{
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->self)->SetSelectedOption(::vl::WString(L"B", false));
}
::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->self)->SetSelectedOption(::vl::WString(L"B", false));
}
//-------------------------------------------------------------------