Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
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);
        }
Example #4
0
        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);
        }
Example #5
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);
        }
Example #8
0
        // 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);
        }
Example #9
0
        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);
        }