コード例 #1
0
ファイル: lVoslib.c プロジェクト: AnySoWhat/LuaViewSDK
static int os_pushresult (lv_State *L, int i, const char *filename) {
  int en = errno;  /* calls to [L u a] API may change this value */
  if (i) {
    lv_pushboolean(L, 1);
    return 1;
  }
  else {
    lv_pushnil(L);
    lv_pushfstring(L, "%s: %s", filename, strerror(en));
    lv_pushinteger(L, en);
    return 3;
  }
}
コード例 #2
0
ファイル: lVtablib.c プロジェクト: RoadsInFarAway/LuaViewSDK
static int foreachi (lv_State *L) {
    lv_clearFirstTableValue(L);
    int i;
    int n = aux_getn(L, 1);
    lvL_checktype(L, 2, LV_TFUNCTION);
    for (i=1; i <= n; i++) {
        lv_pushvalue(L, 2);  /* function */
        lv_pushinteger(L, i);  /* 1st argument */
        lv_rawgeti(L, 1, i);  /* 2nd argument */
        lv_call(L, 2, 1);
        if (!lv_isnil(L, -1))
            return 1;
        lv_pop(L, 1);  /* remove nil result */
    }
    return 0;
}
コード例 #3
0
ファイル: lVdblib.c プロジェクト: AnySoWhat/LuaViewSDK
static void hookf (lv_State *L, lv_Debug *ar) {
    static const char *const hooknames[] =
    {"call", "return", "line", "count", "tail return"};
    lv_pushlightuserdata(L, (void *)&KEY_HOOK);
    lv_rawget(L, LV_REGISTRYINDEX);
    lv_pushlightuserdata(L, L);
    lv_rawget(L, -2);
    if (lv_isfunction(L, -1)) {
        lv_pushstring(L, hooknames[(int)ar->event]);
        if (ar->currentline >= 0)
            lv_pushinteger(L, ar->currentline);
        else lv_pushnil(L);
        lv_assert(lv_getinfo(L, "lS", ar));
        lv_call(L, 2, 0);
    }
}
コード例 #4
0
ファイル: lVdblib.c プロジェクト: AnySoWhat/LuaViewSDK
static int db_gethook (lv_State *L) {
    int arg;
    lv_State *L1 = getthread(L, &arg);
    char buff[5];
    int mask = lv_gethookmask(L1);
    lv_Hook hook = lv_gethook(L1);
    if (hook != NULL && hook != hookf)  /* external hook? */
        lv_pushliteral(L, "external hook");
    else {
        gethooktable(L);
        lv_pushlightuserdata(L, L1);
        lv_rawget(L, -2);   /* get hook */
        lv_remove(L, -2);  /* remove hook table */
    }
    lv_pushstring(L, unmakemask(mask, buff));
    lv_pushinteger(L, lv_gethookcount(L1));
    return 3;
}
コード例 #5
0
ファイル: lVoslib.c プロジェクト: AnySoWhat/LuaViewSDK
static void setfield (lv_State *L, const char *key, int value) {
  lv_pushinteger(L, value);
  lv_setfield(L, -2, key);
}
コード例 #6
0
ファイル: lVoslib.c プロジェクト: AnySoWhat/LuaViewSDK
static int os_execute (lv_State *L) {
    //lv_pushinteger(L, system(lvL_optstring(L, 1, NULL)));
    lv_pushinteger(L, 0);
    return 1;
}
コード例 #7
0
ファイル: lVtablib.c プロジェクト: RoadsInFarAway/LuaViewSDK
static int getn (lv_State *L) {
    lv_clearFirstTableValue(L);
    lv_pushinteger(L, aux_getn(L, 1));
    return 1;
}
コード例 #8
0
ファイル: lVdblib.c プロジェクト: AnySoWhat/LuaViewSDK
static void settabsi (lv_State *L, const char *i, int v) {
    lv_pushinteger(L, v);
    lv_setfield(L, -2, i);
}