mirror of https://github.com/python/cpython
Whoops, checkin consistent versions of *all* files to stop polluting
a bunch of names
This commit is contained in:
parent
497b19a8a2
commit
7b5a604d24
|
@ -34,6 +34,7 @@ typedef struct _keyword *keyword_ty;
|
||||||
|
|
||||||
typedef struct _alias *alias_ty;
|
typedef struct _alias *alias_ty;
|
||||||
|
|
||||||
|
|
||||||
struct _mod {
|
struct _mod {
|
||||||
enum { Module_kind=1, Interactive_kind=2, Expression_kind=3,
|
enum { Module_kind=1, Interactive_kind=2, Expression_kind=3,
|
||||||
Suite_kind=4 } kind;
|
Suite_kind=4 } kind;
|
||||||
|
@ -326,6 +327,7 @@ struct _alias {
|
||||||
identifier asname;
|
identifier asname;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
mod_ty Module(asdl_seq * body);
|
mod_ty Module(asdl_seq * body);
|
||||||
mod_ty Interactive(asdl_seq * body);
|
mod_ty Interactive(asdl_seq * body);
|
||||||
mod_ty Expression(expr_ty body);
|
mod_ty Expression(expr_ty body);
|
||||||
|
@ -388,6 +390,7 @@ arguments_ty arguments(asdl_seq * args, identifier vararg, identifier kwarg,
|
||||||
asdl_seq * defaults);
|
asdl_seq * defaults);
|
||||||
keyword_ty keyword(identifier arg, expr_ty value);
|
keyword_ty keyword(identifier arg, expr_ty value);
|
||||||
alias_ty alias(identifier name, identifier asname);
|
alias_ty alias(identifier name, identifier asname);
|
||||||
|
|
||||||
void free_mod(mod_ty);
|
void free_mod(mod_ty);
|
||||||
void free_stmt(stmt_ty);
|
void free_stmt(stmt_ty);
|
||||||
void free_expr(expr_ty);
|
void free_expr(expr_ty);
|
||||||
|
@ -402,3 +405,4 @@ void free_excepthandler(excepthandler_ty);
|
||||||
void free_arguments(arguments_ty);
|
void free_arguments(arguments_ty);
|
||||||
void free_keyword(keyword_ty);
|
void free_keyword(keyword_ty);
|
||||||
void free_alias(alias_ty);
|
void free_alias(alias_ty);
|
||||||
|
|
||||||
|
|
|
@ -44,11 +44,4 @@ void asdl_seq_free(asdl_seq *);
|
||||||
#endif
|
#endif
|
||||||
#define asdl_seq_LEN(S) ((S) == NULL ? 0 : (S)->size)
|
#define asdl_seq_LEN(S) ((S) == NULL ? 0 : (S)->size)
|
||||||
|
|
||||||
/* Routines to marshal the basic types. */
|
|
||||||
int marshal_write_int(PyObject **, int *, int);
|
|
||||||
int marshal_write_bool(PyObject **, int *, bool);
|
|
||||||
int marshal_write_identifier(PyObject **, int *, identifier);
|
|
||||||
int marshal_write_string(PyObject **, int *, string);
|
|
||||||
int marshal_write_object(PyObject **, int *, object);
|
|
||||||
|
|
||||||
#endif /* !Py_ASDL_H */
|
#endif /* !Py_ASDL_H */
|
||||||
|
|
|
@ -367,7 +367,12 @@ def has_sequence(types, doing_specialization):
|
||||||
|
|
||||||
|
|
||||||
class StaticVisitor(PickleVisitor):
|
class StaticVisitor(PickleVisitor):
|
||||||
'''Very simple, always emit this static code'''
|
CODE = '''Very simple, always emit this static code. Overide CODE'''
|
||||||
|
|
||||||
|
def visit(self, object):
|
||||||
|
self.emit(self.CODE, 0, reflow=False)
|
||||||
|
|
||||||
|
class FreeUtilVisitor(StaticVisitor):
|
||||||
|
|
||||||
CODE = '''static void
|
CODE = '''static void
|
||||||
free_seq_exprs(asdl_seq *seq)
|
free_seq_exprs(asdl_seq *seq)
|
||||||
|
@ -390,10 +395,6 @@ free_seq_stmts(asdl_seq *seq)
|
||||||
}
|
}
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def visit(self, object):
|
|
||||||
self.emit(self.CODE, 0, reflow=False)
|
|
||||||
|
|
||||||
|
|
||||||
class FreeVisitor(PickleVisitor):
|
class FreeVisitor(PickleVisitor):
|
||||||
|
|
||||||
def func_begin(self, name, has_seq):
|
def func_begin(self, name, has_seq):
|
||||||
|
@ -483,6 +484,77 @@ class FreeVisitor(PickleVisitor):
|
||||||
self.emit("free_%s((%s)%s);" % (field.type, ctype, value), depth)
|
self.emit("free_%s((%s)%s);" % (field.type, ctype, value), depth)
|
||||||
|
|
||||||
|
|
||||||
|
class MarshalUtilVisitor(StaticVisitor):
|
||||||
|
|
||||||
|
CODE = '''
|
||||||
|
#define CHECKSIZE(BUF, OFF, MIN) { \\
|
||||||
|
int need = *(OFF) + MIN; \\
|
||||||
|
if (need >= PyString_GET_SIZE(*(BUF))) { \\
|
||||||
|
int newsize = PyString_GET_SIZE(*(BUF)) * 2; \\
|
||||||
|
if (newsize < need) \\
|
||||||
|
newsize = need; \\
|
||||||
|
if (_PyString_Resize((BUF), newsize) < 0) \\
|
||||||
|
return 0; \\
|
||||||
|
} \\
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
marshal_write_int(PyObject **buf, int *offset, int x)
|
||||||
|
{
|
||||||
|
char *s;
|
||||||
|
|
||||||
|
CHECKSIZE(buf, offset, 4)
|
||||||
|
s = PyString_AS_STRING(*buf) + (*offset);
|
||||||
|
s[0] = (x & 0xff);
|
||||||
|
s[1] = (x >> 8) & 0xff;
|
||||||
|
s[2] = (x >> 16) & 0xff;
|
||||||
|
s[3] = (x >> 24) & 0xff;
|
||||||
|
*offset += 4;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
marshal_write_bool(PyObject **buf, int *offset, bool b)
|
||||||
|
{
|
||||||
|
if (b)
|
||||||
|
marshal_write_int(buf, offset, 1);
|
||||||
|
else
|
||||||
|
marshal_write_int(buf, offset, 0);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
marshal_write_identifier(PyObject **buf, int *offset, identifier id)
|
||||||
|
{
|
||||||
|
int l = PyString_GET_SIZE(id);
|
||||||
|
marshal_write_int(buf, offset, l);
|
||||||
|
CHECKSIZE(buf, offset, l);
|
||||||
|
memcpy(PyString_AS_STRING(*buf) + *offset,
|
||||||
|
PyString_AS_STRING(id), l);
|
||||||
|
*offset += l;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
marshal_write_string(PyObject **buf, int *offset, string s)
|
||||||
|
{
|
||||||
|
int len = PyString_GET_SIZE(s);
|
||||||
|
marshal_write_int(buf, offset, len);
|
||||||
|
CHECKSIZE(buf, offset, len);
|
||||||
|
memcpy(PyString_AS_STRING(*buf) + *offset,
|
||||||
|
PyString_AS_STRING(s), len);
|
||||||
|
*offset += len;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
marshal_write_object(PyObject **buf, int *offset, object s)
|
||||||
|
{
|
||||||
|
/* XXX */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
|
||||||
class MarshalFunctionVisitor(PickleVisitor):
|
class MarshalFunctionVisitor(PickleVisitor):
|
||||||
|
|
||||||
def func_begin(self, name, has_seq):
|
def func_begin(self, name, has_seq):
|
||||||
|
@ -563,6 +635,7 @@ class ChainOfVisitors:
|
||||||
def visit(self, object):
|
def visit(self, object):
|
||||||
for v in self.visitors:
|
for v in self.visitors:
|
||||||
v.visit(object)
|
v.visit(object)
|
||||||
|
v.emit("", 0)
|
||||||
|
|
||||||
def main(srcfile):
|
def main(srcfile):
|
||||||
auto_gen_msg = '/* File automatically generated by %s */\n' % sys.argv[0]
|
auto_gen_msg = '/* File automatically generated by %s */\n' % sys.argv[0]
|
||||||
|
@ -595,8 +668,9 @@ def main(srcfile):
|
||||||
print >> f
|
print >> f
|
||||||
v = ChainOfVisitors(MarshalPrototypeVisitor(f),
|
v = ChainOfVisitors(MarshalPrototypeVisitor(f),
|
||||||
FunctionVisitor(f),
|
FunctionVisitor(f),
|
||||||
StaticVisitor(f),
|
FreeUtilVisitor(f),
|
||||||
FreeVisitor(f),
|
FreeVisitor(f),
|
||||||
|
MarshalUtilVisitor(f),
|
||||||
MarshalFunctionVisitor(f),
|
MarshalFunctionVisitor(f),
|
||||||
)
|
)
|
||||||
v.visit(mod)
|
v.visit(mod)
|
||||||
|
|
|
@ -17,6 +17,7 @@ static int marshal_write_excepthandler(PyObject **, int *, excepthandler_ty);
|
||||||
static int marshal_write_arguments(PyObject **, int *, arguments_ty);
|
static int marshal_write_arguments(PyObject **, int *, arguments_ty);
|
||||||
static int marshal_write_keyword(PyObject **, int *, keyword_ty);
|
static int marshal_write_keyword(PyObject **, int *, keyword_ty);
|
||||||
static int marshal_write_alias(PyObject **, int *, alias_ty);
|
static int marshal_write_alias(PyObject **, int *, alias_ty);
|
||||||
|
|
||||||
mod_ty
|
mod_ty
|
||||||
Module(asdl_seq * body)
|
Module(asdl_seq * body)
|
||||||
{
|
{
|
||||||
|
@ -1087,6 +1088,7 @@ alias(identifier name, identifier asname)
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
free_seq_exprs(asdl_seq *seq)
|
free_seq_exprs(asdl_seq *seq)
|
||||||
{
|
{
|
||||||
|
@ -1107,6 +1109,7 @@ free_seq_stmts(asdl_seq *seq)
|
||||||
asdl_seq_free(seq);
|
asdl_seq_free(seq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
free_mod(mod_ty o)
|
free_mod(mod_ty o)
|
||||||
{
|
{
|
||||||
|
@ -1533,6 +1536,76 @@ free_alias(alias_ty o)
|
||||||
free(o);
|
free(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define CHECKSIZE(BUF, OFF, MIN) { \
|
||||||
|
int need = *(OFF) + MIN; \
|
||||||
|
if (need >= PyString_GET_SIZE(*(BUF))) { \
|
||||||
|
int newsize = PyString_GET_SIZE(*(BUF)) * 2; \
|
||||||
|
if (newsize < need) \
|
||||||
|
newsize = need; \
|
||||||
|
if (_PyString_Resize((BUF), newsize) < 0) \
|
||||||
|
return 0; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
marshal_write_int(PyObject **buf, int *offset, int x)
|
||||||
|
{
|
||||||
|
char *s;
|
||||||
|
|
||||||
|
CHECKSIZE(buf, offset, 4)
|
||||||
|
s = PyString_AS_STRING(*buf) + (*offset);
|
||||||
|
s[0] = (x & 0xff);
|
||||||
|
s[1] = (x >> 8) & 0xff;
|
||||||
|
s[2] = (x >> 16) & 0xff;
|
||||||
|
s[3] = (x >> 24) & 0xff;
|
||||||
|
*offset += 4;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
marshal_write_bool(PyObject **buf, int *offset, bool b)
|
||||||
|
{
|
||||||
|
if (b)
|
||||||
|
marshal_write_int(buf, offset, 1);
|
||||||
|
else
|
||||||
|
marshal_write_int(buf, offset, 0);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
marshal_write_identifier(PyObject **buf, int *offset, identifier id)
|
||||||
|
{
|
||||||
|
int l = PyString_GET_SIZE(id);
|
||||||
|
marshal_write_int(buf, offset, l);
|
||||||
|
CHECKSIZE(buf, offset, l);
|
||||||
|
memcpy(PyString_AS_STRING(*buf) + *offset,
|
||||||
|
PyString_AS_STRING(id), l);
|
||||||
|
*offset += l;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
marshal_write_string(PyObject **buf, int *offset, string s)
|
||||||
|
{
|
||||||
|
int len = PyString_GET_SIZE(s);
|
||||||
|
marshal_write_int(buf, offset, len);
|
||||||
|
CHECKSIZE(buf, offset, len);
|
||||||
|
memcpy(PyString_AS_STRING(*buf) + *offset,
|
||||||
|
PyString_AS_STRING(s), len);
|
||||||
|
*offset += len;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
marshal_write_object(PyObject **buf, int *offset, object s)
|
||||||
|
{
|
||||||
|
/* XXX */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
marshal_write_mod(PyObject **buf, int *off, mod_ty o)
|
marshal_write_mod(PyObject **buf, int *off, mod_ty o)
|
||||||
{
|
{
|
||||||
|
@ -2286,3 +2359,4 @@ marshal_write_alias(PyObject **buf, int *off, alias_ty o)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -24,69 +24,3 @@ asdl_seq_free(asdl_seq *seq)
|
||||||
PyObject_Free(seq);
|
PyObject_Free(seq);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define CHECKSIZE(BUF, OFF, MIN) { \
|
|
||||||
int need = *(OFF) + MIN; \
|
|
||||||
if (need >= PyString_GET_SIZE(*(BUF))) { \
|
|
||||||
int newsize = PyString_GET_SIZE(*(BUF)) * 2; \
|
|
||||||
if (newsize < need) \
|
|
||||||
newsize = need; \
|
|
||||||
if (_PyString_Resize((BUF), newsize) < 0) \
|
|
||||||
return 0; \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
marshal_write_int(PyObject **buf, int *offset, int x)
|
|
||||||
{
|
|
||||||
char *s;
|
|
||||||
|
|
||||||
CHECKSIZE(buf, offset, 4)
|
|
||||||
s = PyString_AS_STRING(*buf) + (*offset);
|
|
||||||
s[0] = (x & 0xff);
|
|
||||||
s[1] = (x >> 8) & 0xff;
|
|
||||||
s[2] = (x >> 16) & 0xff;
|
|
||||||
s[3] = (x >> 24) & 0xff;
|
|
||||||
*offset += 4;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
marshal_write_bool(PyObject **buf, int *offset, bool b)
|
|
||||||
{
|
|
||||||
if (b)
|
|
||||||
marshal_write_int(buf, offset, 1);
|
|
||||||
else
|
|
||||||
marshal_write_int(buf, offset, 0);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
marshal_write_identifier(PyObject **buf, int *offset, identifier id)
|
|
||||||
{
|
|
||||||
int l = PyString_GET_SIZE(id);
|
|
||||||
marshal_write_int(buf, offset, l);
|
|
||||||
CHECKSIZE(buf, offset, l);
|
|
||||||
memcpy(PyString_AS_STRING(*buf) + *offset,
|
|
||||||
PyString_AS_STRING(id), l);
|
|
||||||
*offset += l;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
marshal_write_string(PyObject **buf, int *offset, string s)
|
|
||||||
{
|
|
||||||
int len = PyString_GET_SIZE(s);
|
|
||||||
marshal_write_int(buf, offset, len);
|
|
||||||
CHECKSIZE(buf, offset, len);
|
|
||||||
memcpy(PyString_AS_STRING(*buf) + *offset,
|
|
||||||
PyString_AS_STRING(s), len);
|
|
||||||
*offset += len;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
marshal_write_object(PyObject **buf, int *offset, object s)
|
|
||||||
{
|
|
||||||
/* XXX */
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue