1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/vjine-vJine.Lua

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

vJine.Lua

vJine.Lua — это библиотека-обёртка для языка Lua на C#. Она позволяет запускать Lua-скрипты напрямую из C# и взаимодействовать с ними.

1. Лицензия:

MPL2.0 (https://www.mozilla.org/MPL/2.0/)

Связанные ресурсы:

2. Описание:

  1. vJine.Lua использует C++/CIL для обёртки Lua. Текущая версия Lua — Lua 5.3.0.
  2. В настоящее время не поддерживается перегрузка методов, при внедрении одноимённые методы будут перекрываться.

3. Функциональность:

// Импорт пространства имён

using vJine.Lua;

// Получение версии Lua

string V = LuaContext.Version;

// Создание экземпляра LuaContext

LuaContext luaContext = new LuaContext();
string vars_name = "vJine.Lua.Vars.bool";

// Установка и чтение переменных стека

bool v_bool = true;
luaContext.set(true);
luaContext.get(out v_bool);
Debug.Assert(v_bool == true);
luaContext.set(false);
luaContext.get(out v_bool);
Debug.Assert(v_bool == false);

// Установка и чтение глобальных переменных

luaContext.set(vars_name, true);
luaContext.get(vars_name, out v_bool);
Debug.Assert(v_bool == true);
luaContext.set(vars_name, false);
luaContext.get(vars_name, out v_bool);
Debug.Assert(v_bool == false);

// Регистрация: анонимный метод

luaContext.reg("vJine.Lua.funcs.anony", new Action<MyStatus>((MyStatus E) => {
    string msg = string.Format("result[anonymous]:{0}", E);
}));

// Регистрация: статический метод

luaContext.reg("vJine.Lua.funcs.M", new Action<MyStatus>(MyClass.M));

// Регистрация: метод экземпляра

MyClass xq = new MyClass();
luaContext.reg("vJine.Lua.funcs.m", new Action<MyStatus>(x1.m));

// Регистрация класса: по умолчанию

luaContext.reg<MyClass>();

// Регистрация класса: пользовательское имя

luaContext.reg<MyClass>("vJine.Lua.YourClass");

// Внедрение скрипта:

object[] R = luaContext.inject(
                "function callback(my_arg) return my_arg .. ' on_the_fly' end return true, 1.234, callback('vJine.Lua')");

// Вызов скрипта

object[] Obj = luaContext.exec("callback", "vJine.Lua");

// Загрузка скрипта:

R = luaContext.load("d:/vJine.Lua/start.lua");

// Печать переменных стека:

luaContext.print_vars();

// Печать глобальной переменной:

luaContext.print_var("vJine.Lua.UT.MyClass");

// Определение класса:

public class MyClass {
    public MyClass My { get; set; }

    public bool B { get; set; }
    public bool? b { get; set; }
    public byte[] B_ { get; set; }

    public double D { get; set; }
    public double d { get; set; }

    public Guid G { get; set; }
    public Guid? g { get; set; }
    public Guid[] G_ { get; set; }

    public string S { get; set; }
    public string s { get; set; }
    public string[] s_ { get; set; }

    public DateTime DT { get; set; }
    public DateTime? dt { get; set; }
    public DateTime[] DT_ { get; set; }

    public MyStatus E { get; set; }
    public MyStatus? e { get; set; }
    public MyStatus[] E_ { get; set; }

    public static void M(MyStatus E) {
        string msg = string.Format("result[anonymous]:{0}", E);
    }

    public void m(MyStatus E) {
        string msg = string.Format("result[anonymous]:{0}", E);
    }

    public static string SM(int a, string b) {
        return string.Format("SM:Result:a,{0};b,{1}", a, b);
    }

    public string IM(int a, string b) {
        return string.Format("IM:Result:a,{0};b,{1}", a, b);
    }

    public string show_properties() {
        return string.Format("Properties:b,{0};d,{1};s,{2}", this.B, this.D, this.s);
    }
}

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MPL-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/vjine-vJine.Lua.git
git@api.gitlife.ru:oschina-mirror/vjine-vJine.Lua.git
oschina-mirror
vjine-vJine.Lua
vjine-vJine.Lua
master