CHDK_DE Vorschauversion  Trunk Rev. 6014
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
ldump.c-Dateireferenz
#include <stddef.h>
#include "lua.h"
#include "lobject.h"
#include "lstate.h"
#include "lundump.h"
+ Include-Abhängigkeitsdiagramm für ldump.c:

gehe zum Quellcode dieser Datei

Datenstrukturen

struct  DumpState
 

Makrodefinitionen

#define ldump_c
 
#define LUA_CORE
 
#define DumpMem(b, n, size, D)   DumpBlock(b,(n)*(size),D)
 
#define DumpVar(x, D)   DumpMem(&x,1,sizeof(x),D)
 
#define DumpCode(f, D)   DumpVector(f->code,f->sizecode,sizeof(Instruction),D)
 

Funktionen

static void DumpBlock (const void *b, size_t size, DumpState *D)
 
static void DumpChar (int y, DumpState *D)
 
static void DumpInt (int x, DumpState *D)
 
static void DumpNumber (lua_Number x, DumpState *D)
 
static void DumpVector (const void *b, int n, size_t size, DumpState *D)
 
static void DumpString (const TString *s, DumpState *D)
 
static void DumpFunction (const Proto *f, const TString *p, DumpState *D)
 
static void DumpConstants (const Proto *f, DumpState *D)
 
static void DumpDebug (const Proto *f, DumpState *D)
 
static void DumpHeader (DumpState *D)
 
LUAI_FUNC int luaU_dump (lua_State *L, const Proto *f, lua_Writer w, void *data, int strip)
 

Makro-Dokumentation

#define DumpCode (   f,
 
)    DumpVector(f->code,f->sizecode,sizeof(Instruction),D)

Definiert in Zeile 76 der Datei ldump.c.

#define DumpMem (   b,
  n,
  size,
 
)    DumpBlock(b,(n)*(size),D)

Definiert in Zeile 26 der Datei ldump.c.

#define DumpVar (   x,
 
)    DumpMem(&x,1,sizeof(x),D)

Definiert in Zeile 27 der Datei ldump.c.

#define ldump_c

Definiert in Zeile 9 der Datei ldump.c.

#define LUA_CORE

Definiert in Zeile 10 der Datei ldump.c.

Dokumentation der Funktionen

static void DumpBlock ( const void *  b,
size_t  size,
DumpState D 
)
static

Definiert in Zeile 29 der Datei ldump.c.

30 {
31  if (D->status==0)
32  {
33  lua_unlock(D->L);
34  D->status=(*D->writer)(D->L,b,size,D->data);
35  lua_lock(D->L);
36  }
37 }
static void DumpChar ( int  y,
DumpState D 
)
static

Definiert in Zeile 39 der Datei ldump.c.

40 {
41  char x=(char)y;
42  DumpVar(x,D);
43 }
static void DumpConstants ( const Proto f,
DumpState D 
)
static

Definiert in Zeile 80 der Datei ldump.c.

81 {
82  int i,n=f->sizek;
83  DumpInt(n,D);
84  for (i=0; i<n; i++)
85  {
86  const TValue* o=&f->k[i];
87  DumpChar(ttype(o),D);
88  switch (ttype(o))
89  {
90  case LUA_TNIL:
91  break;
92  case LUA_TBOOLEAN:
93  DumpChar(bvalue(o),D);
94  break;
95  case LUA_TNUMBER:
96  DumpNumber(nvalue(o),D);
97  break;
98  case LUA_TSTRING:
99  DumpString(rawtsvalue(o),D);
100  break;
101  default:
102  lua_assert(0); /* cannot happen */
103  break;
104  }
105  }
106  n=f->sizep;
107  DumpInt(n,D);
108  for (i=0; i<n; i++) DumpFunction(f->p[i],f->source,D);
109 }
static void DumpDebug ( const Proto f,
DumpState D 
)
static

Definiert in Zeile 111 der Datei ldump.c.

112 {
113  int i,n;
114  n= (D->strip) ? 0 : f->sizelineinfo;
115  DumpVector(f->lineinfo,n,sizeof(int),D);
116  n= (D->strip) ? 0 : f->sizelocvars;
117  DumpInt(n,D);
118  for (i=0; i<n; i++)
119  {
120  DumpString(f->locvars[i].varname,D);
121  DumpInt(f->locvars[i].startpc,D);
122  DumpInt(f->locvars[i].endpc,D);
123  }
124  n= (D->strip) ? 0 : f->sizeupvalues;
125  DumpInt(n,D);
126  for (i=0; i<n; i++) DumpString(f->upvalues[i],D);
127 }
static void DumpFunction ( const Proto f,
const TString p,
DumpState D 
)
static

Definiert in Zeile 129 der Datei ldump.c.

130 {
131  DumpString((f->source==p || D->strip) ? NULL : f->source,D);
132  DumpInt(f->linedefined,D);
133  DumpInt(f->lastlinedefined,D);
134  DumpChar(f->nups,D);
135  DumpChar(f->numparams,D);
136  DumpChar(f->is_vararg,D);
137  DumpChar(f->maxstacksize,D);
138  DumpCode(f,D);
139  DumpConstants(f,D);
140  DumpDebug(f,D);
141 }
static void DumpHeader ( DumpState D)
static

Definiert in Zeile 143 der Datei ldump.c.

144 {
145  char h[LUAC_HEADERSIZE];
146  luaU_header(h);
148 }
static void DumpInt ( int  x,
DumpState D 
)
static

Definiert in Zeile 45 der Datei ldump.c.

46 {
47  DumpVar(x,D);
48 }
static void DumpNumber ( lua_Number  x,
DumpState D 
)
static

Definiert in Zeile 50 der Datei ldump.c.

51 {
52  DumpVar(x,D);
53 }
static void DumpString ( const TString s,
DumpState D 
)
static

Definiert in Zeile 61 der Datei ldump.c.

62 {
63  if (s==NULL || getstr(s)==NULL)
64  {
65  size_t size=0;
66  DumpVar(size,D);
67  }
68  else
69  {
70  size_t size=s->tsv.len+1; /* include trailing '\0' */
71  DumpVar(size,D);
72  DumpBlock(getstr(s),size,D);
73  }
74 }
static void DumpVector ( const void *  b,
int  n,
size_t  size,
DumpState D 
)
static

Definiert in Zeile 55 der Datei ldump.c.

56 {
57  DumpInt(n,D);
58  DumpMem(b,n,size,D);
59 }
LUAI_FUNC int luaU_dump ( lua_State L,
const Proto f,
lua_Writer  w,
void *  data,
int  strip 
)

Definiert in Zeile 153 der Datei ldump.c.

154 {
155  DumpState D;
156  D.L=L;
157  D.writer=w;
158  D.data=data;
159  D.strip=strip;
160  D.status=0;
161  DumpHeader(&D);
162  DumpFunction(f,NULL,&D);
163  return D.status;
164 }