public void TestEnumParamsWithNullable() { const EnumParam a = EnumParam.A; EnumParam? b = EnumParam.B, c = null; var obj = connection.Query <EnumParamObject>("select @a as A, @b as B, @c as C", new { a, b, c }).Single(); Assert.Equal(EnumParam.A, obj.A); Assert.Equal(EnumParam.B, obj.B); Assert.Null(obj.C); }
public void TestEnumParamsWithoutNullable() { const EnumParam a = EnumParam.A; const EnumParam b = EnumParam.B, c = 0; var obj = connection.Query <EnumParamObjectNonNullable>("select @a as A, @b as B, @c as C", new { a, b, c }).Single(); Assert.Equal(EnumParam.A, obj.A); Assert.Equal(EnumParam.B, obj.B); Assert.Equal(obj.C, (EnumParam)0); }
public void TestEnumParams() { EnumParam a = EnumParam.A; EnumParam?b = EnumParam.B, c = null; var obj = connection.Query <EnumParamObject>("select @a as A, @b as B, @c as C", new { a, b, c }).Single(); obj.A.IsEqualTo(EnumParam.A); obj.B.IsEqualTo(EnumParam.B); obj.C.IsEqualTo(null); }
public void TestEnumParamsWithoutNullable() { EnumParam a = EnumParam.A; EnumParam b = EnumParam.B, c = 0; var obj = connection.Query <EnumParamObjectNonNullable>("select @a as A, @b as B, @c as C", new { a, b, c }).Single(); obj.A.IsEqualTo(EnumParam.A); obj.B.IsEqualTo(EnumParam.B); obj.C.IsEqualTo((EnumParam)0); }
void OnDestroy() { f1 = null; f2 = null; f3 = null; f4 = null; f5 = null; farr = null; flua = null; ie = null; add = null; luaenv.Dispose(); }
private static object Map(object providedValue, Type type) { if (providedValue == null) { return(null); } if (providedValue.GetType().IsArray) { return(ArrayParam <IParam> .FromObject(providedValue)); } // Usually providedValue contains all needed type information, // but in case of F# enum types in attributes are erased. // We can to restore them from types of arguments and fields. // See also: // https://github.com/dotnet/fsharp/issues/995 else if (providedValue.GetType().IsEnum || type.IsEnum) { return(EnumParam.FromObject(providedValue, type)); } return(providedValue); }
public Configuration(string[] supportedAvailability, string publicAvailabilityFlag, string[] supportedLanguages, bool runningGUI) { ParamsManager = new ParamsManager(); var groupDescBoth = new ParamsDescriptionGroup(() => Language.Message("ParamGroupDescBoth")); var groupDescDir = new ParamsDescriptionGroup(() => Language.Message("ParamGroupDescDir")); var groupDescFile = new ParamsDescriptionGroup(() => Language.Message("ParamGroupDescFile")); // looking for localization param, before any text display LocParam = new EnumParam<LocalizationLanguage>( "loc", "Localization language", () => Language.Message("ParamDescLoc", string.Join(", ", Language.AvailableLangIDs)), LocalizationLanguage.INT, groupDescBoth, arg => { // need to update it right after parsing to allow proper messages Language.LangID = arg; }); PublishFlagsParam = new MultipleChoiceParam( "publish", "Publish flags", supportedAvailability, Enumerable.Range(0, supportedAvailability.Length), () => Language.Message("ParamDescPublish", publicAvailabilityFlag, string.Join(", ", supportedAvailability)), groupDescBoth); OutputFormatParam = new EnumParam<OutputFormat>( "outputFormat", "Output format", () => Language.Message("ParamDescOutputFormat"), OutputFormat.HTML, groupDescBoth); LangParam = new MultipleChoiceParam( "lang", "Languages", supportedLanguages, Enumerable.Range(0, supportedLanguages.Length), () => Language.Message("ParamDescLang", string.Join(", ", supportedLanguages)), groupDescDir); LinksToAllLangs = new Flag( "linksToAllLangs", "Links to all langs", () => Language.Message("ParamDescLinksToAllLangs"), groupDescDir); if (runningGUI) { PublishFlagsParam.Parse(User.Default.SupportedAvailability); OutputFormatParam.Parse(User.Default.OutputFormat); LangParam.Parse(User.Default.SupportedLanguages); } TemplateParam = new StringParam( "t", "Default template", () => Language.Message("ParamDescT"), runningGUI ? User.Default.DefaultTemplate : Settings.Default.DefaultTemplate, groupDescBoth); OutputParam = new StringParam( "o", "Output directory", () => Language.Message("ParamDescO"), runningGUI ? User.Default.OutputDirectory : Settings.Default.OutputDirectory, groupDescBoth); SourceParam = new StringParam( "s", "Source directory", () => Language.Message("ParamDescS"), runningGUI ? User.Default.SourceDirectory : Settings.Default.SourceDirectory, groupDescBoth); LogVerbosityParam = new EnumParam<LogVerbosity>( "v", "Logging verbosity", () => Language.Message("ParamDescV"), LogVerbosity.Info, groupDescBoth); DoxygenCacheParam = new StringParam( "doxygenCache", "Doxygen cache location", () => Language.Message("ParamDescDoxygenCache"), "", groupDescBoth); RebuildDoxygenCacheParam = new StringParam( "rebuildDoxygenCache", "If you want to rebuild Doxygen cache put here doxygen exec path", () => Language.Message("ParamDescRebuildDoxygenCache"), "", groupDescBoth); var absoluteSourceDir = new DirectoryInfo(Settings.Default.SourceDirectory).FullName; PathPrefixParam = new PathParam( "pathPrefix", "Path prefix", () => Language.Message("ParamDescPathPrefix"), runningGUI ? User.Default.PathPrefix : absoluteSourceDir, runningGUI ? User.Default.SourceDirectory : absoluteSourceDir, null, groupDescBoth); if (runningGUI) { HelpFlag = new Flag("h", "", () => Language.Message("ParamDescH"), User.Default.HelpFlag); LogOnlyFlag = new Flag("log", "Log Only", () => Language.Message("ParamDescLog"), User.Default.LogOnlyFlag, groupDescBoth); PreviewFlag = new Flag("p", "Preview", () => Language.Message("ParamDescP"), User.Default.PreviewFlag, groupDescFile); CleanFlag = new Flag("clean", "Clean", () => Language.Message("ParamDescClean"), User.Default.CleanFlag, groupDescBoth); LogVerbosityParam.Parse(User.Default.LogVerbosityParam); } else { HelpFlag = new Flag("h", "", () => Language.Message("ParamDescH")); LogOnlyFlag = new Flag("log", "Log Only", () => Language.Message("ParamDescLog"), groupDescBoth); PreviewFlag = new Flag("p", "Preview", () => Language.Message("ParamDescP"), groupDescFile); CleanFlag = new Flag("clean", "Clean", () => Language.Message("ParamDescClean"), groupDescBoth); } ParamsManager.Add( new List<Param> { LocParam, PathPrefixParam, PublishFlagsParam, OutputFormatParam, LangParam, LinksToAllLangs, TemplateParam, OutputParam, SourceParam, LogVerbosityParam, RebuildDoxygenCacheParam, DoxygenCacheParam, HelpFlag, LogOnlyFlag, PreviewFlag, CleanFlag }); PathsSpec = new StringParam( "PathsSpecifier", "Semicolon separated documentation source file or directory paths.", () => Language.Message("PathSpecParamDesc"), runningGUI ? Path.GetFileName(User.Default.PathsSpec) : "", null); ParamsManager.SetMainParam(PathsSpec); }
// Use this for initialization void Start() { XLuaEnv.onDispose += () => { f1 = null; f2 = null; f3 = null; f4 = null; f5 = null; farr = null; flua = null; ie = null; add = null; }; XLuaEnv.DoString(@" function id(...) return ... end function add(a, b) return a + b end function array_exchange(arr) arr[0], arr[1] = arr[1], arr[0] end local v3 = CS.UnityEngine.Vector3(7, 8, 9) local vt = CS.IFramework.Hotfix.Lua.MyStruct(5, 6) function lua_access_csharp() monoBehaviour:FloatParamMethod(123) --primitive monoBehaviour:Vector3ParamMethod(v3) --vector3 local rnd = math.random(1, 100) local r = monoBehaviour:Vector3ParamMethod({x = 1, y = 2, z = rnd}) --vector3 assert(r.x == 1 and r.y == 2 and r.z == rnd) monoBehaviour:StructParamMethod(vt) --custom struct r = monoBehaviour:StructParamMethod({a = 1, b = rnd, e = {c = rnd}}) assert(r.b == rnd and r.e.c == rnd) monoBehaviour:EnumParamMethod(CS.IFramework.Hotfix.Lua.MyEnum.E2) --enum monoBehaviour:DecimalParamMethod(monoBehaviour.a5[0]) monoBehaviour.a1[0], monoBehaviour.a1[1] = monoBehaviour.a1[1], monoBehaviour.a1[0] -- field end exchanger = { exchange = function(self, arr) array_exchange(arr) end } A = { B = { C = 789}} GDATA = 1234; "); XLuaEnv.gtable.Set("monoBehaviour", this); XLuaEnv.gtable.Get("id", out f1); XLuaEnv.gtable.Get("id", out f2); XLuaEnv.gtable.Get("id", out f3); XLuaEnv.gtable.Get("id", out f4); XLuaEnv.gtable.Get("id", out f5); XLuaEnv.gtable.Get("array_exchange", out farr); XLuaEnv.gtable.Get("lua_access_csharp", out flua); XLuaEnv.gtable.Get("exchanger", out ie); XLuaEnv.gtable.Get("add", out add); XLuaEnv.gtable.Set("g_int", 123); XLuaEnv.gtable.Set(123, 456); int i; XLuaEnv.gtable.Get("g_int", out i); Debug.Log("g_int:" + i); XLuaEnv.gtable.Get(123, out i); Debug.Log("123:" + i); }
public Configuration(string[] supportedAvailability, string publicAvailabilityFlag, string[] supportedLanguages, bool runningGUI) { ParamsManager = new ParamsManager(); var groupDescBoth = new ParamsDescriptionGroup(() => Language.Message("ParamGroupDescBoth")); var groupDescDir = new ParamsDescriptionGroup(() => Language.Message("ParamGroupDescDir")); var groupDescFile = new ParamsDescriptionGroup(() => Language.Message("ParamGroupDescFile")); // looking for localization param, before any text display LocParam = new EnumParam <LocalizationLanguage>( "loc", "Localization language", () => Language.Message("ParamDescLoc", string.Join(", ", Language.AvailableLangIDs)), LocalizationLanguage.INT, groupDescBoth, arg => { // need to update it right after parsing to allow proper messages Language.LangID = arg; }); PublishFlagsParam = new MultipleChoiceParam( "publish", "Publish flags", supportedAvailability, Enumerable.Range(0, supportedAvailability.Length), () => Language.Message("ParamDescPublish", publicAvailabilityFlag, string.Join(", ", supportedAvailability)), groupDescBoth); OutputFormatParam = new EnumParam <OutputFormat>( "outputFormat", "Output format", () => Language.Message("ParamDescOutputFormat"), OutputFormat.HTML, groupDescBoth); LangParam = new MultipleChoiceParam( "lang", "Languages", supportedLanguages, Enumerable.Range(0, supportedLanguages.Length), () => Language.Message("ParamDescLang", string.Join(", ", supportedLanguages)), groupDescDir); LinksToAllLangs = new Flag( "linksToAllLangs", "Links to all langs", () => Language.Message("ParamDescLinksToAllLangs"), groupDescDir); if (runningGUI) { PublishFlagsParam.Parse(User.Default.SupportedAvailability); OutputFormatParam.Parse(User.Default.OutputFormat); LangParam.Parse(User.Default.SupportedLanguages); } TemplateParam = new StringParam( "t", "Default template", () => Language.Message("ParamDescT"), runningGUI ? User.Default.DefaultTemplate : Settings.Default.DefaultTemplate, groupDescBoth); OutputParam = new StringParam( "o", "Output directory", () => Language.Message("ParamDescO"), runningGUI ? User.Default.OutputDirectory : Settings.Default.OutputDirectory, groupDescBoth); SourceParam = new StringParam( "s", "Source directory", () => Language.Message("ParamDescS"), runningGUI ? User.Default.SourceDirectory : Settings.Default.SourceDirectory, groupDescBoth); LogVerbosityParam = new EnumParam <LogVerbosity>( "v", "Logging verbosity", () => Language.Message("ParamDescV"), LogVerbosity.Info, groupDescBoth); DoxygenCacheParam = new StringParam( "doxygenCache", "Doxygen cache location", () => Language.Message("ParamDescDoxygenCache"), "", groupDescBoth); RebuildDoxygenCacheParam = new StringParam( "rebuildDoxygenCache", "If you want to rebuild Doxygen cache put here doxygen exec path", () => Language.Message("ParamDescRebuildDoxygenCache"), "", groupDescBoth); var absoluteSourceDir = new DirectoryInfo(Settings.Default.SourceDirectory).FullName; PathPrefixParam = new PathParam( "pathPrefix", "Path prefix", () => Language.Message("ParamDescPathPrefix"), runningGUI ? User.Default.PathPrefix : absoluteSourceDir, runningGUI ? User.Default.SourceDirectory : absoluteSourceDir, null, groupDescBoth); if (runningGUI) { HelpFlag = new Flag("h", "", () => Language.Message("ParamDescH"), User.Default.HelpFlag); LogOnlyFlag = new Flag("log", "Log Only", () => Language.Message("ParamDescLog"), User.Default.LogOnlyFlag, groupDescBoth); PreviewFlag = new Flag("p", "Preview", () => Language.Message("ParamDescP"), User.Default.PreviewFlag, groupDescFile); CleanFlag = new Flag("clean", "Clean", () => Language.Message("ParamDescClean"), User.Default.CleanFlag, groupDescBoth); LogVerbosityParam.Parse(User.Default.LogVerbosityParam); } else { HelpFlag = new Flag("h", "", () => Language.Message("ParamDescH")); LogOnlyFlag = new Flag("log", "Log Only", () => Language.Message("ParamDescLog"), groupDescBoth); PreviewFlag = new Flag("p", "Preview", () => Language.Message("ParamDescP"), groupDescFile); CleanFlag = new Flag("clean", "Clean", () => Language.Message("ParamDescClean"), groupDescBoth); } ParamsManager.Add( new List <Param> { LocParam, PathPrefixParam, PublishFlagsParam, OutputFormatParam, LangParam, LinksToAllLangs, TemplateParam, OutputParam, SourceParam, LogVerbosityParam, RebuildDoxygenCacheParam, DoxygenCacheParam, HelpFlag, LogOnlyFlag, PreviewFlag, CleanFlag }); PathsSpec = new StringParam( "PathsSpecifier", "Semicolon separated documentation source file or directory paths.", () => Language.Message("PathSpecParamDesc"), runningGUI ? Path.GetFileName(User.Default.PathsSpec) : "", null); ParamsManager.SetMainParam(PathsSpec); }