CHDK_DE Vorschauversion  Trunk Rev. 5216
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
lobject.h-Dateireferenz
#include <stdarg.h>
#include "llimits.h"
#include "lua.h"
+ Include-Abhängigkeitsdiagramm für lobject.h:
+ Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:

gehe zum Quellcode dieser Datei

Datenstrukturen

struct  GCheader
 
union  Value
 
struct  lua_TValue
 
union  TString
 
union  Udata
 
struct  Proto
 
struct  LocVar
 
struct  UpVal
 
struct  CClosure
 
struct  LClosure
 
union  Closure
 
union  TKey
 
struct  Node
 
struct  Table
 

Makrodefinitionen

#define LAST_TAG   LUA_TTHREAD
 
#define NUM_TAGS   (LAST_TAG+1)
 
#define LUA_TPROTO   (LAST_TAG+1)
 
#define LUA_TUPVAL   (LAST_TAG+2)
 
#define LUA_TDEADKEY   (LAST_TAG+3)
 
#define CommonHeader   GCObject *next; lu_byte tt; lu_byte marked
 
#define TValuefields   Value value; int tt
 
#define ttisnil(o)   (ttype(o) == LUA_TNIL)
 
#define ttisnumber(o)   (ttype(o) == LUA_TNUMBER)
 
#define ttisstring(o)   (ttype(o) == LUA_TSTRING)
 
#define ttistable(o)   (ttype(o) == LUA_TTABLE)
 
#define ttisfunction(o)   (ttype(o) == LUA_TFUNCTION)
 
#define ttisboolean(o)   (ttype(o) == LUA_TBOOLEAN)
 
#define ttisuserdata(o)   (ttype(o) == LUA_TUSERDATA)
 
#define ttisthread(o)   (ttype(o) == LUA_TTHREAD)
 
#define ttislightuserdata(o)   (ttype(o) == LUA_TLIGHTUSERDATA)
 
#define ttype(o)   ((o)->tt)
 
#define gcvalue(o)   check_exp(iscollectable(o), (o)->value.gc)
 
#define pvalue(o)   check_exp(ttislightuserdata(o), (o)->value.p)
 
#define nvalue(o)   check_exp(ttisnumber(o), (o)->value.n)
 
#define rawtsvalue(o)   check_exp(ttisstring(o), &(o)->value.gc->ts)
 
#define tsvalue(o)   (&rawtsvalue(o)->tsv)
 
#define rawuvalue(o)   check_exp(ttisuserdata(o), &(o)->value.gc->u)
 
#define uvalue(o)   (&rawuvalue(o)->uv)
 
#define clvalue(o)   check_exp(ttisfunction(o), &(o)->value.gc->cl)
 
#define hvalue(o)   check_exp(ttistable(o), &(o)->value.gc->h)
 
#define bvalue(o)   check_exp(ttisboolean(o), (o)->value.b)
 
#define thvalue(o)   check_exp(ttisthread(o), &(o)->value.gc->th)
 
#define l_isfalse(o)   (ttisnil(o) || (ttisboolean(o) && bvalue(o) == 0))
 
#define checkconsistency(obj)   lua_assert(!iscollectable(obj) || (ttype(obj) == (obj)->value.gc->gch.tt))
 
#define checkliveness(g, obj)
 
#define setnilvalue(obj)   ((obj)->tt=LUA_TNIL)
 
#define setnvalue(obj, x)   { TValue *i_o=(obj); i_o->value.n=(x); i_o->tt=LUA_TNUMBER; }
 
#define setpvalue(obj, x)   { TValue *i_o=(obj); i_o->value.p=(x); i_o->tt=LUA_TLIGHTUSERDATA; }
 
#define setbvalue(obj, x)   { TValue *i_o=(obj); i_o->value.b=(x); i_o->tt=LUA_TBOOLEAN; }
 
#define setsvalue(L, obj, x)
 
#define setuvalue(L, obj, x)
 
#define setthvalue(L, obj, x)
 
#define setclvalue(L, obj, x)
 
#define sethvalue(L, obj, x)
 
#define setptvalue(L, obj, x)
 
#define setobj(L, obj1, obj2)
 
#define setobjs2s   setobj
 
#define setobj2s   setobj
 
#define setsvalue2s   setsvalue
 
#define sethvalue2s   sethvalue
 
#define setptvalue2s   setptvalue
 
#define setobjt2t   setobj
 
#define setobj2t   setobj
 
#define setobj2n   setobj
 
#define setsvalue2n   setsvalue
 
#define setttype(obj, tt)   (ttype(obj) = (tt))
 
#define iscollectable(o)   (ttype(o) >= LUA_TSTRING)
 
#define getstr(ts)   cast(const char *, (ts) + 1)
 
#define svalue(o)   getstr(rawtsvalue(o))
 
#define VARARG_HASARG   1
 
#define VARARG_ISVARARG   2
 
#define VARARG_NEEDSARG   4
 
#define ClosureHeader
 
#define iscfunction(o)   (ttype(o) == LUA_TFUNCTION && clvalue(o)->c.isC)
 
#define isLfunction(o)   (ttype(o) == LUA_TFUNCTION && !clvalue(o)->c.isC)
 
#define lmod(s, size)   (check_exp((size&(size-1))==0, (cast(int, (s) & ((size)-1)))))
 
#define twoto(x)   (1<<(x))
 
#define sizenode(t)   (twoto((t)->lsizenode))
 
#define luaO_nilobject   (&luaO_nilobject_)
 
#define ceillog2(x)   (luaO_log2((x)-1) + 1)
 

Typdefinitionen

typedef union GCObject GCObject
 
typedef struct GCheader GCheader
 
typedef struct lua_TValue TValue
 
typedef TValueStkId
 
typedef union TString TString
 
typedef union Udata Udata
 
typedef struct Proto Proto
 
typedef struct LocVar LocVar
 
typedef struct UpVal UpVal
 
typedef struct CClosure CClosure
 
typedef struct LClosure LClosure
 
typedef union Closure Closure
 
typedef union TKey TKey
 
typedef struct Node Node
 
typedef struct Table Table
 

Funktionen

LUAI_FUNC int luaO_log2 (unsigned int x)
 
LUAI_FUNC int luaO_int2fb (unsigned int x)
 
LUAI_FUNC int luaO_fb2int (int x)
 
LUAI_FUNC int luaO_rawequalObj (const TValue *t1, const TValue *t2)
 
LUAI_FUNC int luaO_str2d (const char *s, lua_Number *result)
 
LUAI_FUNC const char * luaO_pushvfstring (lua_State *L, const char *fmt, va_list argp)
 
LUAI_FUNC const char * luaO_pushfstring (lua_State *L, const char *fmt,...)
 
LUAI_FUNC void luaO_chunkid (char *out, const char *source, size_t len)
 

Variablen

LUAI_DATA const TValue luaO_nilobject_
 

Makro-Dokumentation

#define bvalue (   o)    check_exp(ttisboolean(o), (o)->value.b)

Definiert in Zeile 100 der Datei lobject.h.

#define ceillog2 (   x)    (luaO_log2((x)-1) + 1)

Definiert in Zeile 367 der Datei lobject.h.

#define checkconsistency (   obj)    lua_assert(!iscollectable(obj) || (ttype(obj) == (obj)->value.gc->gch.tt))

Definiert in Zeile 108 der Datei lobject.h.

#define checkliveness (   g,
  obj 
)
Wert:
((ttype(obj) == (obj)->value.gc->gch.tt) && !isdead(g, (obj)->value.gc)))

Definiert in Zeile 111 der Datei lobject.h.

#define ClosureHeader
Wert:
CommonHeader; lu_byte isC; lu_byte nupvalues; GCObject *gclist; \
struct Table *env

Definiert in Zeile 291 der Datei lobject.h.

#define clvalue (   o)    check_exp(ttisfunction(o), &(o)->value.gc->cl)

Definiert in Zeile 98 der Datei lobject.h.

#define CommonHeader   GCObject *next; lu_byte tt; lu_byte marked

Definiert in Zeile 43 der Datei lobject.h.

#define gcvalue (   o)    check_exp(iscollectable(o), (o)->value.gc)

Definiert in Zeile 91 der Datei lobject.h.

#define getstr (   ts)    cast(const char *, (ts) + 1)

Definiert in Zeile 210 der Datei lobject.h.

#define hvalue (   o)    check_exp(ttistable(o), &(o)->value.gc->h)

Definiert in Zeile 99 der Datei lobject.h.

#define iscfunction (   o)    (ttype(o) == LUA_TFUNCTION && clvalue(o)->c.isC)

Definiert in Zeile 315 der Datei lobject.h.

#define iscollectable (   o)    (ttype(o) >= LUA_TSTRING)

Definiert in Zeile 189 der Datei lobject.h.

#define isLfunction (   o)    (ttype(o) == LUA_TFUNCTION && !clvalue(o)->c.isC)

Definiert in Zeile 316 der Datei lobject.h.

#define l_isfalse (   o)    (ttisnil(o) || (ttisboolean(o) && bvalue(o) == 0))

Definiert in Zeile 103 der Datei lobject.h.

#define LAST_TAG   LUA_TTHREAD

Definiert in Zeile 20 der Datei lobject.h.

#define lmod (   s,
  size 
)    (check_exp((size&(size-1))==0, (cast(int, (s) & ((size)-1)))))

Definiert in Zeile 355 der Datei lobject.h.

#define LUA_TDEADKEY   (LAST_TAG+3)

Definiert in Zeile 30 der Datei lobject.h.

#define LUA_TPROTO   (LAST_TAG+1)

Definiert in Zeile 28 der Datei lobject.h.

#define LUA_TUPVAL   (LAST_TAG+2)

Definiert in Zeile 29 der Datei lobject.h.

#define luaO_nilobject   (&luaO_nilobject_)

Definiert in Zeile 363 der Datei lobject.h.

#define NUM_TAGS   (LAST_TAG+1)

Definiert in Zeile 22 der Datei lobject.h.

#define nvalue (   o)    check_exp(ttisnumber(o), (o)->value.n)

Definiert in Zeile 93 der Datei lobject.h.

#define pvalue (   o)    check_exp(ttislightuserdata(o), (o)->value.p)

Definiert in Zeile 92 der Datei lobject.h.

#define rawtsvalue (   o)    check_exp(ttisstring(o), &(o)->value.gc->ts)

Definiert in Zeile 94 der Datei lobject.h.

#define rawuvalue (   o)    check_exp(ttisuserdata(o), &(o)->value.gc->u)

Definiert in Zeile 96 der Datei lobject.h.

#define setbvalue (   obj,
  x 
)    { TValue *i_o=(obj); i_o->value.b=(x); i_o->tt=LUA_TBOOLEAN; }

Definiert in Zeile 125 der Datei lobject.h.

#define setclvalue (   L,
  obj,
  x 
)
Wert:
{ TValue *i_o=(obj); \
i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TFUNCTION; \
checkliveness(G(L),i_o); }

Definiert in Zeile 143 der Datei lobject.h.

#define sethvalue (   L,
  obj,
  x 
)
Wert:
{ TValue *i_o=(obj); \
i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TTABLE; \
checkliveness(G(L),i_o); }

Definiert in Zeile 148 der Datei lobject.h.

#define sethvalue2s   sethvalue

Definiert in Zeile 176 der Datei lobject.h.

#define setnilvalue (   obj)    ((obj)->tt=LUA_TNIL)

Definiert in Zeile 117 der Datei lobject.h.

#define setnvalue (   obj,
  x 
)    { TValue *i_o=(obj); i_o->value.n=(x); i_o->tt=LUA_TNUMBER; }

Definiert in Zeile 119 der Datei lobject.h.

#define setobj (   L,
  obj1,
  obj2 
)
Wert:
{ const TValue *o2=(obj2); TValue *o1=(obj1); \
o1->value = o2->value; o1->tt=o2->tt; \
checkliveness(G(L),o1); }

Definiert in Zeile 161 der Datei lobject.h.

#define setobj2n   setobj

Definiert in Zeile 183 der Datei lobject.h.

#define setobj2s   setobj

Definiert in Zeile 174 der Datei lobject.h.

#define setobj2t   setobj

Definiert in Zeile 181 der Datei lobject.h.

#define setobjs2s   setobj

Definiert in Zeile 172 der Datei lobject.h.

#define setobjt2t   setobj

Definiert in Zeile 179 der Datei lobject.h.

#define setptvalue (   L,
  obj,
  x 
)
Wert:
{ TValue *i_o=(obj); \
i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TPROTO; \
checkliveness(G(L),i_o); }

Definiert in Zeile 153 der Datei lobject.h.

#define setptvalue2s   setptvalue

Definiert in Zeile 177 der Datei lobject.h.

#define setpvalue (   obj,
  x 
)    { TValue *i_o=(obj); i_o->value.p=(x); i_o->tt=LUA_TLIGHTUSERDATA; }

Definiert in Zeile 122 der Datei lobject.h.

#define setsvalue (   L,
  obj,
  x 
)
Wert:
{ TValue *i_o=(obj); \
i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TSTRING; \
checkliveness(G(L),i_o); }

Definiert in Zeile 128 der Datei lobject.h.

#define setsvalue2n   setsvalue

Definiert in Zeile 184 der Datei lobject.h.

#define setsvalue2s   setsvalue

Definiert in Zeile 175 der Datei lobject.h.

#define setthvalue (   L,
  obj,
  x 
)
Wert:
{ TValue *i_o=(obj); \
i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TTHREAD; \
checkliveness(G(L),i_o); }

Definiert in Zeile 138 der Datei lobject.h.

#define setttype (   obj,
  tt 
)    (ttype(obj) = (tt))

Definiert in Zeile 186 der Datei lobject.h.

#define setuvalue (   L,
  obj,
  x 
)
Wert:
{ TValue *i_o=(obj); \
i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TUSERDATA; \
checkliveness(G(L),i_o); }

Definiert in Zeile 133 der Datei lobject.h.

#define sizenode (   t)    (twoto((t)->lsizenode))

Definiert in Zeile 360 der Datei lobject.h.

#define svalue (   o)    getstr(rawtsvalue(o))

Definiert in Zeile 211 der Datei lobject.h.

#define thvalue (   o)    check_exp(ttisthread(o), &(o)->value.gc->th)

Definiert in Zeile 101 der Datei lobject.h.

#define tsvalue (   o)    (&rawtsvalue(o)->tsv)

Definiert in Zeile 95 der Datei lobject.h.

#define ttisboolean (   o)    (ttype(o) == LUA_TBOOLEAN)

Definiert in Zeile 84 der Datei lobject.h.

#define ttisfunction (   o)    (ttype(o) == LUA_TFUNCTION)

Definiert in Zeile 83 der Datei lobject.h.

#define ttislightuserdata (   o)    (ttype(o) == LUA_TLIGHTUSERDATA)

Definiert in Zeile 87 der Datei lobject.h.

#define ttisnil (   o)    (ttype(o) == LUA_TNIL)

Definiert in Zeile 79 der Datei lobject.h.

#define ttisnumber (   o)    (ttype(o) == LUA_TNUMBER)

Definiert in Zeile 80 der Datei lobject.h.

#define ttisstring (   o)    (ttype(o) == LUA_TSTRING)

Definiert in Zeile 81 der Datei lobject.h.

#define ttistable (   o)    (ttype(o) == LUA_TTABLE)

Definiert in Zeile 82 der Datei lobject.h.

#define ttisthread (   o)    (ttype(o) == LUA_TTHREAD)

Definiert in Zeile 86 der Datei lobject.h.

#define ttisuserdata (   o)    (ttype(o) == LUA_TUSERDATA)

Definiert in Zeile 85 der Datei lobject.h.

#define ttype (   o)    ((o)->tt)

Definiert in Zeile 90 der Datei lobject.h.

#define TValuefields   Value value; int tt

Definiert in Zeile 71 der Datei lobject.h.

#define twoto (   x)    (1<<(x))

Definiert in Zeile 359 der Datei lobject.h.

#define uvalue (   o)    (&rawuvalue(o)->uv)

Definiert in Zeile 97 der Datei lobject.h.

#define VARARG_HASARG   1

Definiert in Zeile 257 der Datei lobject.h.

#define VARARG_ISVARARG   2

Definiert in Zeile 258 der Datei lobject.h.

#define VARARG_NEEDSARG   4

Definiert in Zeile 259 der Datei lobject.h.

Dokumentation der benutzerdefinierten Typen

typedef struct CClosure CClosure
typedef union Closure Closure
typedef struct GCheader GCheader
typedef union GCObject GCObject

Definiert in Zeile 36 der Datei lobject.h.

typedef struct LClosure LClosure
typedef struct LocVar LocVar
typedef struct Node Node
typedef struct Proto Proto
typedef TValue* StkId

Definiert in Zeile 193 der Datei lobject.h.

typedef struct Table Table
typedef union TKey TKey
typedef union TString TString
typedef struct lua_TValue TValue
typedef union Udata Udata
typedef struct UpVal UpVal

Dokumentation der Funktionen

LUAI_FUNC void luaO_chunkid ( char *  out,
const char *  source,
size_t  len 
)

Definiert in Zeile 182 der Datei lobject.c.

182  {
183  if (*source == '=') {
184  strncpy(out, source+1, bufflen); /* remove first char */
185  out[bufflen-1] = '\0'; /* ensures null termination */
186  }
187  else { /* out = "source", or "...source" */
188  if (*source == '@') {
189  size_t l;
190  source++; /* skip the `@' */
191  bufflen -= sizeof(" '...' ");
192  l = strlen(source);
193  strcpy(out, "");
194  if (l > bufflen) {
195  source += (l-bufflen); /* get last part of file name */
196  strcat(out, "...");
197  }
198  strcat(out, source);
199  }
200  else { /* out = [string "string"] */
201  strcpy(out,"");
202 #if 0
203  size_t len = strcspn(source, "\n\r"); /* stop at first newline */
204  bufflen -= sizeof(" [string \"...\"] ");
205  if (len > bufflen) len = bufflen;
206  strcpy(out, "[string \"");
207  if (source[len] != '\0') { /* must truncate? */
208  strncat(out, source, len);
209  strcat(out, "...");
210  }
211  else
212  strcat(out, source);
213  strcat(out, "\"]");
214 #endif
215  }
216  }
217 }
LUAI_FUNC int luaO_fb2int ( int  x)

Definiert in Zeile 47 der Datei lobject.c.

47  {
48  int e = (x >> 3) & 31;
49  if (e == 0) return x;
50  else return ((x & 7)+8) << (e - 1);
51 }
LUAI_FUNC int luaO_int2fb ( unsigned int  x)

Definiert in Zeile 35 der Datei lobject.c.

35  {
36  int e = 0; /* expoent */
37  while (x >= 16) {
38  x = (x+1) >> 1;
39  e++;
40  }
41  if (x < 8) return x;
42  else return ((e+1) << 3) | (cast_int(x) - 8);
43 }
LUAI_FUNC int luaO_log2 ( unsigned int  x)

Definiert in Zeile 54 der Datei lobject.c.

54  {
55  static const lu_byte log_2[256] = {
56  0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
57  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
58  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
59  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
60  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
61  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
62  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
63  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
64  };
65  int l = -1;
66  while (x >= 256) { l += 8; x >>= 8; }
67  return l + log_2[x];
68 
69 }
LUAI_FUNC const char* luaO_pushfstring ( lua_State L,
const char *  fmt,
  ... 
)

Definiert in Zeile 172 der Datei lobject.c.

172  {
173  const char *msg;
174  va_list argp;
175  va_start(argp, fmt);
176  msg = luaO_pushvfstring(L, fmt, argp);
177  va_end(argp);
178  return msg;
179 }
LUAI_FUNC const char* luaO_pushvfstring ( lua_State L,
const char *  fmt,
va_list  argp 
)

Definiert in Zeile 111 der Datei lobject.c.

111  {
112  int n = 1;
113  pushstr(L, "");
114  for (;;) {
115  const char *e = strchr(fmt, '%');
116  if (e == NULL) break;
117  setsvalue2s(L, L->top, luaS_newlstr(L, fmt, e-fmt));
118  incr_top(L);
119  switch (*(e+1)) {
120  case 's': {
121  const char *s = va_arg(argp, char *);
122  if (s == NULL) s = "(null)";
123  pushstr(L, s);
124  break;
125  }
126  case 'c': {
127  char buff[2];
128  buff[0] = cast(char, va_arg(argp, int));
129  buff[1] = '\0';
130  pushstr(L, buff);
131  break;
132  }
133  case 'd': {
134  setnvalue(L->top, cast_num(va_arg(argp, int)));
135  incr_top(L);
136  break;
137  }
138  case 'f': {
139  setnvalue(L->top, cast_num(va_arg(argp, l_uacNumber)));
140  incr_top(L);
141  break;
142  }
143  case 'p': {
144  char buff[4*sizeof(void *) + 8]; /* should be enough space for a `%p' */
145  sprintf(buff, "%p", va_arg(argp, void *));
146  pushstr(L, buff);
147  break;
148  }
149  case '%': {
150  pushstr(L, "%");
151  break;
152  }
153  default: {
154  char buff[3];
155  buff[0] = '%';
156  buff[1] = *(e+1);
157  buff[2] = '\0';
158  pushstr(L, buff);
159  break;
160  }
161  }
162  n += 2;
163  fmt = e+2;
164  }
165  pushstr(L, fmt);
166  luaV_concat(L, n+1, cast_int(L->top - L->base) - 1);
167  L->top -= n;
168  return svalue(L->top - 1);
169 }
LUAI_FUNC int luaO_rawequalObj ( const TValue t1,
const TValue t2 
)

Definiert in Zeile 72 der Datei lobject.c.

72  {
73  if (ttype(t1) != ttype(t2)) return 0;
74  else switch (ttype(t1)) {
75  case LUA_TNIL:
76  return 1;
77  case LUA_TNUMBER:
78  return luai_numeq(nvalue(t1), nvalue(t2));
79  case LUA_TBOOLEAN:
80  return bvalue(t1) == bvalue(t2); /* boolean true must be 1 !! */
81  case LUA_TLIGHTUSERDATA:
82  return pvalue(t1) == pvalue(t2);
83  default:
85  return gcvalue(t1) == gcvalue(t2);
86  }
87 }
LUAI_FUNC int luaO_str2d ( const char *  s,
lua_Number result 
)

Definiert in Zeile 90 der Datei lobject.c.

90  {
91  char *endptr;
92  *result = lua_str2number(s, &endptr);
93  if (endptr == s) return 0; /* conversion failed */
94  if (*endptr == 'x' || *endptr == 'X') /* maybe an hexadecimal constant? */
95  *result = cast_num(strtoul(s, &endptr, 16));
96  if (*endptr == '\0') return 1; /* most common case */
97  while (isspace(cast(unsigned char, *endptr))) endptr++;
98  if (*endptr != '\0') return 0; /* invalid trailing characters? */
99  return 1;
100 }

Variablen-Dokumentation

LUAI_DATA const TValue luaO_nilobject_

Definiert in Zeile 365 der Datei lobject.h.