Ejemplo n.º 1
0
 void Start()
 {
     c = this;
     l = new LuaSvr();
     l.init(null, () =>
     {
         l.start("BindCSharp");
     });
 }
Ejemplo n.º 2
0
    static public int instanceCustom(IntPtr l)
    {
        BindCSharp self = (BindCSharp)LuaObject.checkSelf(l);

        LuaObject.pushValue(l, true);
        LuaDLL.lua_pushstring(l, "xiaoming");
        LuaDLL.lua_pushstring(l, "hanmeimei");
        LuaDLL.lua_pushinteger(l, self.v);
        return(4);
    }
Ejemplo n.º 3
0
    static void Main(string[] args)
    {
        // This application needs parameters to work!
        if (args.Length == 0)
        {
            Console.WriteLine("ERROR: No parameters provided.");
            DisplayHelp();
            return;
        }

        // Parse the parameters into stuff we can work with
        List <string> files      = new List <string>();
        BindLang      lang       = BindLang.None;
        string        destFolder = "";
        int           curr       = 0;

        while (curr < args.Length)
        {
            if (args[curr].ToLower() == "-o")
            {
                if (curr + 1 < args.Length)
                {
                    if (!NameOverrides.Load(args[curr + 1]))
                    {
                        return;
                    }
                    curr += 2;
                }
                else
                {
                    Console.WriteLine("ERROR: Missing parameter for -o, need a file path for name overrides!");
                    DisplayHelp();
                    return;
                }
            }
            else if (args[curr].ToLower() == "-f")
            {
                if (curr + 1 < args.Length)
                {
                    files.Add(args[curr + 1]);
                    curr += 2;
                }
                else
                {
                    Console.WriteLine("ERROR: Missing parameter for -f, need a file path to a C++ header!");
                    DisplayHelp();
                    return;
                }
            }
            else if (args[curr].ToLower() == "-l")
            {
                if (curr + 1 < args.Length)
                {
                    if (Enum.TryParse(args[curr + 1], true, out BindLang langArg))
                    {
                        lang = langArg;
                    }
                    else
                    {
                        Console.WriteLine($"Invalid language identifier '{args[curr + 1]}'!"); return;
                    }

                    curr += 2;
                }
                else
                {
                    Console.WriteLine("ERROR: Missing parameter for -l, need a language identifier!");
                    DisplayHelp();
                    return;
                }
            }
            else if (args[curr].ToLower() == "-d")
            {
                if (curr + 1 < args.Length)
                {
                    destFolder = args[curr + 1];
                    curr      += 2;
                }
                else
                {
                    Console.WriteLine("ERROR: Missing parameter for -d, need a file path to a destination folder!");
                    DisplayHelp();
                    return;
                }
            }
            else if (args[curr].ToLower() == "-h" || args[curr].ToLower() == "--help" || args[curr].ToLower() == "/help")
            {
                DisplayHelp();
                return;
            }
            else
            {
                Console.WriteLine($"ERROR: Unrecognized parameter '{args[curr]}'!");
                DisplayHelp();
                return;
            }
        }

        // Set a default language binding
        if (lang == BindLang.None)
        {
            Console.WriteLine($"No language binding specified, defaulting to CSharp.");
            lang = BindLang.CSharp;
        }

        // Parse the files provided
        Console.WriteLine($"Parsing {files.Count} file(s)");
        CppCompilation ast = CppParser.ParseFiles(files);

        // And create bindings for it all!
        switch (lang)
        {
        case BindLang.CSharp: BindCSharp.Bind(ast, destFolder); break;
        }
    }