您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ ttisstring函数代码示例

51自学网 2021-06-03 09:00:05
  C++
这篇教程C++ ttisstring函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中ttisstring函数的典型用法代码示例。如果您正苦于以下问题:C++ ttisstring函数的具体用法?C++ ttisstring怎么用?C++ ttisstring使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了ttisstring函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: luaG_concaterror

void luaG_concaterror (lua_State *L, StkId p1, StkId p2) {  if (ttisstring(p1) || ttisnumber(p1)) p1 = p2;  lua_assert(!ttisstring(p1) && !ttisnumber(p1));  luaG_typeerror(L, p1, "concatenate");}
开发者ID:Andais,项目名称:dmz,代码行数:5,


示例2: luaG_symbexec

static Instruction luaG_symbexec (const Proto *pt, int lastpc, int reg) {  int pc;  int last;  /* stores position of last instruction that changed `reg' */  last = pt->sizecode-1;  /* points to final return (a `neutral' instruction) */  check(precheck(pt));  for (pc = 0; pc < lastpc; pc++) {    const Instruction i = pt->code[pc];    OpCode op = GET_OPCODE(i);    int a = GETARG_A(i);    int b = 0;    int c = 0;    checkreg(pt, a);    switch (getOpMode(op)) {      case iABC: {        b = GETARG_B(i);        c = GETARG_C(i);        if (testOpMode(op, OpModeBreg)) {          checkreg(pt, b);        }        else if (testOpMode(op, OpModeBrk))          check(checkRK(pt, b));        if (testOpMode(op, OpModeCrk))          check(checkRK(pt, c));        break;      }      case iABx: {        b = GETARG_Bx(i);        if (testOpMode(op, OpModeK)) check(b < pt->sizek);        break;      }      case iAsBx: {        b = GETARG_sBx(i);        break;      }    }    if (testOpMode(op, OpModesetA)) {      if (a == reg) last = pc;  /* change register `a' */    }    if (testOpMode(op, OpModeT)) {      check(pc+2 < pt->sizecode);  /* check skip */      check(GET_OPCODE(pt->code[pc+1]) == OP_JMP);    }    switch (op) {      case OP_LOADBOOL: {        check(c == 0 || pc+2 < pt->sizecode);  /* check its jump */        break;      }      case OP_LOADNIL: {        if (a <= reg && reg <= b)          last = pc;  /* set registers from `a' to `b' */        break;      }      case OP_GETUPVAL:      case OP_SETUPVAL: {        check(b < pt->nups);        break;      }      case OP_GETGLOBAL:      case OP_SETGLOBAL: {        check(ttisstring(&pt->k[b]));        break;      }      case OP_SELF: {        checkreg(pt, a+1);        if (reg == a+1) last = pc;        break;      }      case OP_CONCAT: {        /* `c' is a register, and at least two operands */        check(c < MAXSTACK && b < c);        break;      }      case OP_TFORLOOP:        checkreg(pt, a+c+5);        if (reg >= a) last = pc;  /* affect all registers above base */        /* go through */      case OP_FORLOOP:        checkreg(pt, a+2);        /* go through */      case OP_JMP: {        int dest = pc+1+b;	check(0 <= dest && dest < pt->sizecode);        /* not full check and jump is forward and do not skip `lastpc'? */        if (reg != NO_REG && pc < dest && dest <= lastpc)          pc += b;  /* do the jump */        break;      }      case OP_CALL:      case OP_TAILCALL: {        if (b != 0) {          checkreg(pt, a+b-1);        }        c--;  /* c = num. returns */        if (c == LUA_MULTRET) {          check(checkopenop(pt, pc));        }        else if (c != 0)          checkreg(pt, a+c-1);        if (reg >= a) last = pc;  /* affect all registers above base */        break;//.........这里部分代码省略.........
开发者ID:dodong471520,项目名称:pap,代码行数:101,


示例3: symbexec

static Instruction symbexec (const Proto *pt, int lastpc, int reg) {  int pc;  int last;  /* stores position of last instruction that changed `reg' */  last = pt->sizecode-1;  /* points to final return (a `neutral' instruction) */  check(precheck(pt));  for (pc = 0; pc < lastpc; pc++) {    Instruction i = pt->code[pc];    OpCode op = GET_OPCODE(i);    int a = GETARG_A(i);    int b = 0;    int c = 0;    check(op < NUM_OPCODES);    checkreg(pt, a);    switch (getOpMode(op)) {      case iABC: {        b = GETARG_B(i);        c = GETARG_C(i);        check(checkArgMode(pt, b, getBMode(op)));        check(checkArgMode(pt, c, getCMode(op)));        break;      }      case iABx: {        b = GETARG_Bx(i);        if (getBMode(op) == OpArgK) check(b < pt->sizek);        break;      }      case iAsBx: {        b = GETARG_sBx(i);        if (getBMode(op) == OpArgR) {          int dest = pc+1+b;          check(0 <= dest && dest < pt->sizecode);          if (dest > 0) {            /* cannot jump to a setlist count */            Instruction d = pt->code[dest-1];            check(!(GET_OPCODE(d) == OP_SETLIST && GETARG_C(d) == 0));          }        }        break;      }    }    if (testAMode(op)) {      if (a == reg) last = pc;  /* change register `a' */    }    if (testTMode(op)) {      check(pc+2 < pt->sizecode);  /* check skip */      check(GET_OPCODE(pt->code[pc+1]) == OP_JMP);    }    switch (op) {      case OP_LOADBOOL: {        check(c == 0 || pc+2 < pt->sizecode);  /* check its jump */        break;      }      case OP_LOADNIL: {        if (a <= reg && reg <= b)          last = pc;  /* set registers from `a' to `b' */        break;      }      case OP_GETUPVAL:      case OP_SETUPVAL: {        check(b < pt->nups);        break;      }      case OP_GETGLOBAL:      case OP_SETGLOBAL: {        check(ttisstring(&pt->k[b]));        break;      }      case OP_SELF: {        checkreg(pt, a+1);        if (reg == a+1) last = pc;        break;      }      case OP_CONCAT: {        check(b < c);  /* at least two operands */        break;      }      case OP_TFORLOOP: {        check(c >= 1);  /* at least one result (control variable) */        checkreg(pt, a+2+c);  /* space for results */        if (reg >= a+2) last = pc;  /* affect all regs above its base */        break;      }      case OP_FORLOOP:      case OP_FORPREP:        checkreg(pt, a+3);        /* go through */      case OP_JMP: {        int dest = pc+1+b;        /* not full check and jump is forward and do not skip `lastpc'? */        if (reg != NO_REG && pc < dest && dest <= lastpc)          pc += b;  /* do the jump */        break;      }      case OP_CALL:      case OP_TAILCALL: {        if (b != 0) {          checkreg(pt, a+b-1);        }        c--;  /* c = num. returns */        if (c == LUA_MULTRET) {//.........这里部分代码省略.........
开发者ID:Andais,项目名称:dmz,代码行数:101,


示例4: svalue

static const char *kname (Proto *p, int c) {  if (ISK(c) && ttisstring(&p->k[INDEXK(c)]))    return svalue(&p->k[INDEXK(c)]);  else    return "?";}
开发者ID:Andais,项目名称:dmz,代码行数:6,


示例5: luaG_concaterror

l_noret luaG_concaterror (lua_State *L, const TValue *p1, const TValue *p2) {  if (ttisstring(p1) || cvt2str(p1)) p1 = p2;  luaG_typeerror(L, p1, "concatenate");}
开发者ID:hongzhidao,项目名称:yet-another-lua,代码行数:4,


示例6: luaV_execute

void luaV_execute (lua_State *L, int nexeccalls) {  LClosure *cl;  StkId base;  TValue *k;  const Instruction *pc; reentry:  /* entry point */  lua_assert(isLua(L->ci));  pc = L->savedpc;  cl = &clvalue(L->ci->func)->l;  base = L->base;  k = cl->p->k;  /* main loop of interpreter */  for (;;) {    const Instruction i = *pc++;    StkId ra;    if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&        (--L->hookcount == 0 || L->hookmask & LUA_MASKLINE)) {      traceexec(L, pc);      if (L->status == LUA_YIELD) {  /* did hook yield? */        L->savedpc = pc - 1;        return;      }      base = L->base;    }    /* warning!! several calls may realloc the stack and invalidate `ra' */    ra = RA(i);    lua_assert(base == L->base && L->base == L->ci->base);    lua_assert(base <= L->top && L->top <= L->stack + L->stacksize);    lua_assert(L->top == L->ci->top || luaG_checkopenop(i));    switch (GET_OPCODE(i)) {      case OP_MOVE: {        setobjs2s(L, ra, RB(i));        continue;      }      case OP_LOADK: {        setobj2s(L, ra, KBx(i));        continue;      }      case OP_LOADBOOL: {        setbvalue(ra, GETARG_B(i));        if (GETARG_C(i)) pc++;  /* skip next instruction (if C) */        continue;      }      case OP_LOADNIL: {        TValue *rb = RB(i);        do {          setnilvalue(rb--);        } while (rb >= ra);        continue;      }      case OP_GETUPVAL: {        int b = GETARG_B(i);        setobj2s(L, ra, cl->upvals[b]->v);        continue;      }      case OP_GETGLOBAL: {        TValue g;        TValue *rb = KBx(i);        sethvalue(L, &g, cl->env);        lua_assert(ttisstring(rb));        Protect(luaV_gettable(L, &g, rb, ra));        continue;      }      case OP_GETTABLE: {        Protect(luaV_gettable(L, RB(i), RKC(i), ra));        continue;      }      case OP_SETGLOBAL: {        TValue g;        sethvalue(L, &g, cl->env);        lua_assert(ttisstring(KBx(i)));        Protect(luaV_settable(L, &g, KBx(i), ra));        continue;      }      case OP_SETUPVAL: {        UpVal *uv = cl->upvals[GETARG_B(i)];        setobj(L, uv->v, ra);        luaC_barrier(L, uv, ra);        continue;      }      case OP_SETTABLE: {        Protect(luaV_settable(L, ra, RKB(i), RKC(i)));        continue;      }      case OP_NEWTABLE: {        int b = GETARG_B(i);        int c = GETARG_C(i);        sethvalue(L, ra, luaH_new(L, luaO_fb2int(b), luaO_fb2int(c)));        Protect(luaC_checkGC(L));        continue;      }      case OP_SELF: {        StkId rb = RB(i);        setobjs2s(L, ra+1, rb);        Protect(luaV_gettable(L, rb, RKC(i), ra));        continue;      }      case OP_ADD: {        arith_op(luai_numadd, TM_ADD);        continue;//.........这里部分代码省略.........
开发者ID:aronarts,项目名称:FireNET,代码行数:101,


示例7: Arith

//.........这里部分代码省略.........      case OP_MOVE: {        setobjs2s(L, ra, RB(i));        continue;      }      case OP_LOADK: {        setobj2s(L, ra, KBx(i));        continue;      }      case OP_LOADBOOL: {        setbvalue(ra, GETARG_B(i));        if (GETARG_C(i)) pc++;  /* skip next instruction (if C) */        continue;      }      case OP_LOADNIL: {        TValue *rb = RB(i);        do {          setnilvalue(rb--);        } while (rb >= ra);        continue;      }      case OP_GETUPVAL: {        int b = GETARG_B(i);        setobj2s(L, ra, cl->upvals[b]->v);        continue;      }      case OP_GETGLOBAL: {        TValue g;        TValue *rb = KBx(i);#if LUA_REFCOUNT        sethvalue2n(L, &g, cl->env);#else        sethvalue(L, &g, cl->env);#endif /* LUA_REFCOUNT */        lua_assert(ttisstring(rb));        Protect(luaV_gettable(L, &g, rb, ra));#if LUA_REFCOUNT		setnilvalue(&g);#endif /* LUA_REFCOUNT */        continue;      }      case OP_GETTABLE: {        Protect(luaV_gettable(L, RB(i), RKC(i), ra));        continue;      }      case OP_SETGLOBAL: {        TValue g;#if LUA_REFCOUNT        sethvalue2n(L, &g, cl->env);#else        sethvalue(L, &g, cl->env);#endif /* LUA_REFCOUNT */        lua_assert(ttisstring(KBx(i)));        Protect(luaV_settable(L, &g, KBx(i), ra));#if LUA_REFCOUNT		setnilvalue(&g);#endif /* LUA_REFCOUNT */        continue;      }      case OP_SETUPVAL: {        UpVal *uv = cl->upvals[GETARG_B(i)];        setobj(L, uv->v, ra);        luaC_barrier(L, uv, ra);        continue;      }      case OP_SETTABLE: {        Protect(luaV_settable(L, ra, RKB(i), RKC(i)));
开发者ID:zapline,项目名称:zlib,代码行数:67,


示例8: valismarked

static int valismarked (const TObject *o) {  if (ttisstring(o) || ttiswstring(o))    stringmark(tsvalue(o));  /* strings are `values', so are never weak */  return !iscollectable(o) || testbit(o->value.gc->gch.marked, 0);}
开发者ID:ueverything,项目名称:mmo-resourse,代码行数:5,


示例9: lua_isstring

LUA_API int lua_isstring (lua_State *L, int idx) {  const TValue *o = index2addr(L, idx);  return (ttisstring(o) || cvt2str(o));}
开发者ID:zentner-kyle,项目名称:lua-live,代码行数:4,


示例10: luaV_execute

//.........这里部分代码省略.........	  // 类似于bzero,这个指令会把一段内存中的变量置为nil	  // iABC: A第一个要置nil的变量参数栈索引,B最后一个要置nil的变量参数栈索引      case OP_LOADNIL: {		// local a, b, c, d, e, f, g = 1, 2, 3, 4 -----> index(a~g) = 0~6		//                                        >----> OP_LOADNIL 4 6        TValue *rb = RB(i);        do {          setnilvalue(rb--);        } while (rb >= ra);        continue;      }	  // 功能:用upvalue来创建一个新的变量	  // 所谓的“创建”操作,其实创建的不是副本而是引用	  // iABC: A待创建变量在参数栈索引,B当前函数的upvalue表的索引      case OP_GETUPVAL: {			// local x = {}		// ...  -- do something to x		// function f() local a = x[1] end   -----> 记录index(a) = 0, index(upval(x)) = 1		//                                   >----> OP_GETUPVAL 0 1        int b = GETARG_B(i);        setobj2s(L, ra, cl->upvals[b]->v);        continue;      }	  // 功能:从全局表中取某个key的值来创建一个新的变量	  // iABx:A待创建变量在参数栈索引,Bxkey对应的常量在常量池的索引      case OP_GETGLOBAL: {		// local a = dofile    ------> 记录 index(a) = 0, index(constval("dofile")) = 1		//                     >-----> OP_GETGLOBAL 0 1        TValue g;        TValue *rb = KBx(i);        sethvalue(L, &g, cl->env);        lua_assert(ttisstring(rb));        Protect(luaV_gettable(L, &g, rb, ra));        continue;      }	  // 功能:从某个table中取某个key的值来创建一个新的变量	  // iABC:A待创建变量在参数栈索引,B要取出key的table变量在参数栈的索引,Ckey对应的参数栈下标或者常量池下标      case OP_GETTABLE: {		// local a = hello["world"] -----> 记录 index(a) = 0, index(hello) = 1 index(constval("world")) = 0		//                          >----> OP_GETTABLE 0 1 0|BITRK        Protect(luaV_gettable(L, RB(i), RKC(i), ra));        continue;      }	  // 功能:将参数栈上变量设置到全局表中	  // iABx:A要写入全局表的变量在栈上的索引,Bx写入到全局表的key在常量池中的下标      case OP_SETGLOBAL: {		// 假设我要替换 bit库		// local mybit = {}		// mybit.band = ...		// mybit.bor = ...		// mybit.bxor = ...		// ...		// bit = mybit -----> 记录 index(mybit) = 0, index(constval("bit")) = 1		//             >----> OP_SETGLOBAL 0 1        TValue g;        sethvalue(L, &g, cl->env);        lua_assert(ttisstring(KBx(i)));        Protect(luaV_settable(L, &g, KBx(i), ra));        continue;      }	  // 功能:修改upvalue的值
开发者ID:anod221,项目名称:Lua51SourceCodeNote,代码行数:67,


示例11: luaV_execute

StkId luaV_execute (lua_State *L) {  LClosure *cl;  TObject *k;  const Instruction *pc; callentry:  /* entry point when calling new functions */  if (L->hookmask & LUA_MASKCALL)    luaD_callhook(L, LUA_HOOKCALL, -1); retentry:  /* entry point when returning to old functions */  L->ci->u.l.pc = &pc;  lua_assert(L->ci->state == CI_SAVEDPC ||             L->ci->state == (CI_SAVEDPC | CI_CALLING));  L->ci->state = CI_HASFRAME;  /* activate frame */  pc = L->ci->u.l.savedpc;  cl = &clvalue(L->base - 1)->l;  k = cl->p->k;  /* main loop of interpreter */  for (;;) {    const Instruction i = *pc++;    StkId base, ra;    if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&        (--L->hookcount == 0 || L->hookmask & LUA_MASKLINE)) {      traceexec(L);      if (L->ci->state & CI_YIELD) {  /* did hook yield? */        L->ci->u.l.savedpc = pc - 1;        L->ci->state = CI_YIELD | CI_SAVEDPC;        return NULL;      }    }    /* warning!! several calls may realloc the stack and invalidate `ra' */    base = L->base;    ra = RA(i);    lua_assert(L->ci->state & CI_HASFRAME);    lua_assert(base == L->ci->base);    lua_assert(L->top <= L->stack + L->stacksize && L->top >= base);    lua_assert(L->top == L->ci->top ||         GET_OPCODE(i) == OP_CALL ||   GET_OPCODE(i) == OP_TAILCALL ||         GET_OPCODE(i) == OP_RETURN || GET_OPCODE(i) == OP_SETLISTO);    switch (GET_OPCODE(i)) {      case OP_MOVE: {        setobjs2s(ra, RB(i));        break;      }      case OP_LOADK: {        setobj2s(ra, KBx(i));        break;      }      case OP_LOADBOOL: {        setbvalue(ra, GETARG_B(i));        if (GETARG_C(i)) pc++;  /* skip next instruction (if C) */        break;      }      case OP_LOADNIL: {        TObject *rb = RB(i);        do {          setnilvalue(rb--);        } while (rb >= ra);        break;      }      case OP_GETUPVAL: {        int b = GETARG_B(i);        setobj2s(ra, cl->upvals[b]->v);        break;      }      case OP_GETGLOBAL: {        TObject *rb = KBx(i);        const TObject *v;        lua_assert(ttisstring(rb) && ttistable(&cl->g));        v = luaH_getstr(hvalue(&cl->g), tsvalue(rb));        if (!ttisnil(v)) { setobj2s(ra, v); }        else          setobj2s(XRA(i), luaV_index(L, &cl->g, rb, 0));        break;      }      case OP_GETTABLE: {        StkId rb = RB(i);        TObject *rc = RKC(i);        if (ttistable(rb)) {          const TObject *v = luaH_get(hvalue(rb), rc);          if (!ttisnil(v)) { setobj2s(ra, v); }          else            setobj2s(XRA(i), luaV_index(L, rb, rc, 0));        }        else          setobj2s(XRA(i), luaV_getnotable(L, rb, rc, 0));        break;      }      case OP_SETGLOBAL: {        lua_assert(ttisstring(KBx(i)) && ttistable(&cl->g));        luaV_settable(L, &cl->g, KBx(i), ra);        break;      }      case OP_SETUPVAL: {        int b = GETARG_B(i);        setobj(cl->upvals[b]->v, ra);  /* write barrier */        break;      }      case OP_SETTABLE: {        luaV_settable(L, ra, RKB(i), RKC(i));        break;      }//.........这里部分代码省略.........
开发者ID:Falcon-peregrinus,项目名称:angband-russian,代码行数:101,


示例12: BijouBlock_dump2

void BijouBlock_dump2(VM, BijouBlock* b, int level){    char * str;    size_t x;    INDENT;    printf("; block at: %p, %s (level %d)/n", (void *)b, b->funcname != NULL ?           b->funcname : "", level);    INDENT;    printf("; %zu registers/n", b->regc);    INDENT;    printf("; constants (%zu)/n", kv_size(b->k));    for (x = 0; x < kv_size(b->k); ++x) {        str = TValue_to_string(kv_A(b->k, x));        int s = ttisstring(&kv_A(b->k, x));        INDENT;        printf("/t%zu: (%s) %s%s%s/n", x, TValue_type_to_string(kv_A(b->k, x)), s ? "/"" : "",               str, s ? "/"" : "");        if (ttisnumber(&kv_A(b->k, x))) B_FREE(str);    }    INDENT;    printf("; locals (%zu)/n", kv_size(b->locals));    for (x = 0; x < kv_size(b->locals); ++x) {        str = TValue_to_string(kv_A(b->locals, x));        INDENT;        printf("/t%zu: (%s) %s/n", x, TValue_type_to_string(kv_A(b->locals, x)), str);        if (ttisnumber(&kv_A(b->locals, x))) B_FREE(str);    }    INDENT;    printf("; upvals (%zu)/n", kv_size(b->upvals));    for (x = 0; x < kv_size(b->upvals); ++x) {        str = TValue_to_string(kv_A(b->upvals, x));        INDENT;        printf("/t%zu: (%s) %s/n", x, TValue_type_to_string(kv_A(b->upvals, x)), str);        if (ttisnumber(&kv_A(b->upvals, x))) B_FREE(str);    }    INDENT;    printf("; code section (%zu instructions)/n", kv_size(b->code));    for (x = 0; x < kv_size(b->code); ++x) {        bInst i = kv_A(b->code, x);        INDENT;        print_op(i);        printf("/t");        switch (GET_OPCODE(i)) {        case OP_MOVE:            printf("; R[%d] = R[%d]", GETARG_A(i), GETARG_B(i));            break;        case OP_LOADK:            printf("; R[%d] = K[%d]", GETARG_A(i), GETARG_Bx(i));            break;        case OP_LOADBOOL:            printf("; R[%d] = %s", GETARG_A(i), GETARG_B(i) == 0 ? "false" : "true" );            break;        case OP_LOADNULL:            printf("; R[%d] = null", GETARG_A(i));            break;        case OP_GETGLOBAL:            printf("; R[%d] = globals[K[%d]]", GETARG_A(i), GETARG_Bx(i));            break;        case OP_SETGLOBAL:            printf("; globals[K[%d]] = R[%d]", GETARG_Bx(i), GETARG_A(i));            break;        case OP_GETLOCAL:            printf("; R[%d] = locals[K[%d]]", GETARG_A(i), GETARG_Bx(i));            break;        case OP_SETLOCAL:            printf("; locals[K[%d]] = R[%d]", GETARG_Bx(i), GETARG_A(i));            break;        case OP_ADD:            printf("; R[%d] = RK[%d] + RK[%d]", GETARG_A(i), GETARG_B(i),                   GETARG_C(i));            break;        case OP_SUB:            printf("; R[%d] = RK[%d] - RK[%d]", GETARG_A(i), GETARG_B(i),                   GETARG_C(i));            break;        case OP_MUL:            printf("; R[%d] = RK[%d] * RK[%d]", GETARG_A(i), GETARG_B(i),                   GETARG_C(i));            break;        case OP_DIV:            printf("; R[%d] = RK[%d] / RK[%d]", GETARG_A(i), GETARG_B(i),                   GETARG_C(i));            break;        case OP_POW:            printf("; R[%d] = RK[%d] ** RK[%d]", GETARG_A(i), GETARG_B(i),                   GETARG_C(i));            break;        case OP_REM:            printf("; R[%d] = RK[%d] %% RK[%d]", GETARG_A(i), GETARG_B(i),                   GETARG_C(i));            break;        case OP_UNM:            printf("; R[%d] = -RK[%d]", GETARG_A(i), GETARG_B(i));            break;//.........这里部分代码省略.........
开发者ID:erik,项目名称:bijou,代码行数:101,


示例13: kp_table_histogram

/* histogram: key should be number or string, value must be number */void kp_table_histogram(ktap_State *ks, Table *t){	struct table_hist_record *thr;	char dist_str[40];	int i, ratio, total = 0, count = 0;	thr = kp_malloc(ks, sizeof(*thr) * (t->sizearray + sizenode(t)));	for (i = 0; i < t->sizearray; i++) {		Tvalue *v = &t->array[i];		if (isnil(v))			continue;		if (!ttisnumber(v))			goto error;		setnvalue(&thr[count++].key, i + 1);		total += nvalue(v);	}	for (i = 0; i < sizenode(t); i++) {		Node *n = &t->node[i];		int num;		if (isnil(gkey(n)))			continue;		if (!ttisnumber(gval(n)))			goto error;		num = nvalue(gval(n));		setobj(ks, &thr[count].key, gkey(n));		setobj(ks, &thr[count].val, gval(n));		count++;		total += nvalue(gval(n));	}	sort(thr, count, sizeof(struct table_hist_record), hist_record_cmp, NULL);	kp_printf(ks, "%32s%s%s/n", "value ", DISTRIBUTION_STR, " count");	dist_str[sizeof(dist_str) - 1] = '/0';	for (i = 0; i < count; i++) {		Tvalue *key = &thr[i].key;		Tvalue *val = &thr[i].val;		memset(dist_str, ' ', sizeof(dist_str) - 1);		ratio = (nvalue(val) * (sizeof(dist_str) - 1)) / total;		memset(dist_str, '@', ratio);		if (ttisstring(key)) {			char buf[32 + 1] = {0};			char *keystr;			if (strlen(svalue(key)) > 32) {				strncpy(buf, svalue(key), 32-4);				memset(buf + 32-4, '.', 3);				keystr = buf;			} else				keystr = svalue(key);			kp_printf(ks, "%32s |%s%-10d/n", keystr, dist_str,					nvalue(val));		} else			kp_printf(ks, "%32d | %s%-10d/n", nvalue(key),					dist_str, nvalue(val));	}	goto out; error:	kp_printf(ks, "error: table histogram only handle "			" (key: string/number val: number)/n"); out:	kp_free(ks, thr);}
开发者ID:eric-zhu,项目名称:ktap,代码行数:77,


示例14: luaV_gettable

void luaV_gettable (lua_State *L, const TValue *t, TValue *key, StkId val) {  int loop;  for (loop = 0; loop < MAXTAGLOOP; loop++) {    const TValue *tm = 0; /* LUA-VEC -- compiler gives a warning of uninitialized value on this so we set it to 0 */    if (ttistable(t)) {  /* `t' is a table? */      Table *h = hvalue(t);      const TValue *res = luaH_get(h, key); /* do a primitive get */      if (!ttisnil(res) ||  /* result is no nil? */          (tm = fasttm(L, h->metatable, TM_INDEX)) == NULL) { /* or no TM? */        setobj2s(L, val, res);        return;      }      /* else will try the tag method */    }    else if (ttisvec(t)) { /* LUA-VEC -- vec[idx] operator */      /* issue: "index" may not be the correct arg for luaG_typeerror in here */      if (ttisnumber(key) &&   /* acessing vec by a number? */          (nvalue(key) >= 1 && nvalue(key) <= 4)) {  /* index is between 1-4? */        TValue res;        setnvalue(&res, vecvalue(t)[(int)nvalue(key)-1]);        setobj2s(L, val, &res);        return;      }      else if (ttisstring(key)) {  /* acessing vec by a string? */        if (tsvalue(key)->len == 1) {          /* accessing by a single component, such as vec.x */          TValue res;          switch (*getstr(tsvalue(key))) {            case 'x':  setnvalue(&res, vecvalue(t)[0]); break;            case 'y':  setnvalue(&res, vecvalue(t)[1]); break;            case 'z':  setnvalue(&res, vecvalue(t)[2]); break;            case 'w':  setnvalue(&res, vecvalue(t)[3]); break;            default:   luaG_typeerror(L, t, "index");          }          setobj2s(L, val, &res);          return;        }        else if (tsvalue(key)->len <= 4) {          /* accessing by swizzling, such as vec.xy, vec.xxyz etc. */          TValue res;          float v[4] = {0.0f,0.0f,0.0f,0.0f};          int i;          for (i = 0; i < (int)tsvalue(key)->len; ++i) {            switch (getstr(tsvalue(key))[i]) {              case 'x':  v[i] = vecvalue(t)[0]; break;              case 'y':  v[i] = vecvalue(t)[1]; break;              case 'z':  v[i] = vecvalue(t)[2]; break;              case 'w':  v[i] = vecvalue(t)[3]; break;              default:   luaG_typeerror(L, t, "index");            }          }          setvecvalue(&res, v[0], v[1], v[2], v[3]);          setobj2s(L, val, &res);          return;        }      }      luaG_typeerror(L, t, "index");    }    else if (ttisnil(tm = luaT_gettmbyobj(L, t, TM_INDEX)))      luaG_typeerror(L, t, "index");    if (ttisfunction(tm)) {      callTMres(L, val, tm, t, key);      return;    }    t = tm;  /* else repeat with `tm' */   }  luaG_runerror(L, "loop in gettable");}
开发者ID:MickW8s,项目名称:AppEasyCoreSDK,代码行数:68,


示例15: luaG_concaterror

l_noret luaG_concaterror (lua_State *L, const TValue *p1, const TValue *p2) {    if (ttisstring(p1) || ttisnumber(p1)) p1 = p2;    lua_assert(!ttisstring(p1) && !ttisnumber(p1));    luaG_typeerror(L, p1, "concatenate");}
开发者ID:NicoleRobin,项目名称:TDR,代码行数:5,



注:本文中的ttisstring函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ ttistable函数代码示例
C++ ttisnumber函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。