コード例 #1
0
ファイル: queue.c プロジェクト: liyonglion/threads
static int queue_arg(lua_State *L)
{
  THQueue *queue = luaTHRD_checkudata(L, 1, "threads.Queue");
  int idx = luaL_checkint(L, 2);
  luaL_argcheck(L, idx >= 0 && idx < queue->size, 2, "out of range");
  if(lua_gettop(L) == 2) {
    THCharStorage *storage = NULL;
    if((storage = queue->args[idx])) {
      THCharStorage_retain(storage);
      luaT_pushudata(L, storage, "torch.CharStorage");
      return 1;
    }
    else
      return 0;
  }
  else if(lua_gettop(L) == 3) {
    THCharStorage *storage = luaT_checkudata(L, 3, "torch.CharStorage"); /* DEBUG: might be luaT for torch objects */
    if(queue->args[idx])
      THCharStorage_free(queue->args[idx]);
    queue->args[idx] = storage;
    THCharStorage_retain(storage);
    return 0;
  }
  else
    luaL_error(L, "invalid arguments");
  return 0;
}
コード例 #2
0
ファイル: MemoryFile.c プロジェクト: AtousaTorabi/torch7
static int torch_MemoryFile_storage(lua_State *L)
{
  THFile *self = luaT_checkudata(L, 1, "torch.MemoryFile");
  THCharStorage_retain(THMemoryFile_storage(self));
  luaT_pushudata(L, THMemoryFile_storage(self), "torch.CharStorage");
  return 1;
}