[pypy-commit] creflect default: Move 'test' into 'creflect' and start the 'zeffir' package. ('zeffir'
arigo
noreply at buildbot.pypy.org
Sat Nov 29 22:32:47 CET 2014
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r124:1e96fd0d81ff
Date: 2014-11-29 19:20 +0100
http://bitbucket.org/cffi/creflect/changeset/1e96fd0d81ff/
Log: Move 'test' into 'creflect' and start the 'zeffir' package.
('zeffir' is the name for what I called cffi 1.0, maybe
temporarily.)
diff --git a/creflect/creflect_cdecl.c b/creflect/creflect_cdecl.c
--- a/creflect/creflect_cdecl.c
+++ b/creflect/creflect_cdecl.c
@@ -56,7 +56,7 @@
static int is_ident_first(char x)
{
- return ('A' <= x && x <= 'Z' || 'a' <= x && x <= 'z' || x == '_');
+ return (('A' <= x && x <= 'Z') || ('a' <= x && x <= 'z') || x == '_');
}
static int is_digit(char x)
diff --git a/creflect/creflect_libcheck.c b/creflect/creflect_libcheck.c
--- a/creflect/creflect_libcheck.c
+++ b/creflect/creflect_libcheck.c
@@ -6,7 +6,7 @@
#include <unistd.h>
#include "creflect.h"
-#include "creflect_print.h"
+#include "creflect_debug_print.h"
void creflect_dump_information(const char *filename, const char *creflect_main)
@@ -23,12 +23,26 @@
if (lib == NULL)
goto err;
- void (*crxmain)(crx_builder_t *);
- crxmain = (void(*)(crx_builder_t *))dlsym(lib, creflect_main);
+ int (*crxmain)(_crx_builder_t *);
+ crxmain = (int(*)(_crx_builder_t *))dlsym(lib, creflect_main);
if (crxmain == NULL)
goto err;
- crxmain(&maincb);
+ int result = crxmain(NULL);
+ if ((result & ~0xFF) != 0x54822e00) {
+ fprintf(stderr, "error: %s.%s() is not a creflect entry point\n",
+ filename, creflect_main);
+ dlclose(lib);
+ return;
+ }
+ if ((result & 0xFF) != 0x01) {
+ fprintf(stderr, "error: %s is creflect version %d, expected %d\n",
+ filename, result & 0xFF, 0x01);
+ dlclose(lib);
+ return;
+ }
+
+ crxmain(&creflect_debug_builder);
if (dlclose(lib) != 0) {
lib = NULL;
diff --git a/creflect/driver.py b/creflect/driver.py
--- a/creflect/driver.py
+++ b/creflect/driver.py
@@ -84,12 +84,15 @@
CALL_TEMPLATE1 = '''
/***** CREFLECT main entry point *****/
-void %s(_crx_builder_t *cb) {
+int %s(_crx_builder_t *cb) {
+ if (cb) {
%s}
+ return 0x54822e01;
+}
'''
CALL_TEMPLATE2 = '''\
#ifdef _CRX_BLOCK%(blocknum)d
- %(funcname)s(cb);
+ %(funcname)s(cb);
#endif
'''
diff --git a/test/__init__.py b/creflect/test/__init__.py
rename from test/__init__.py
rename to creflect/test/__init__.py
diff --git a/test/codegen/001.c b/creflect/test/codegen/001.c
rename from test/codegen/001.c
rename to creflect/test/codegen/001.c
diff --git a/test/codegen/002.c b/creflect/test/codegen/002.c
rename from test/codegen/002.c
rename to creflect/test/codegen/002.c
diff --git a/test/codegen/002b.c b/creflect/test/codegen/002b.c
rename from test/codegen/002b.c
rename to creflect/test/codegen/002b.c
diff --git a/test/codegen/002c.c b/creflect/test/codegen/002c.c
rename from test/codegen/002c.c
rename to creflect/test/codegen/002c.c
diff --git a/test/codegen/003.c b/creflect/test/codegen/003.c
rename from test/codegen/003.c
rename to creflect/test/codegen/003.c
diff --git a/test/codegen/003b.c b/creflect/test/codegen/003b.c
rename from test/codegen/003b.c
rename to creflect/test/codegen/003b.c
diff --git a/test/codegen/003c.c b/creflect/test/codegen/003c.c
rename from test/codegen/003c.c
rename to creflect/test/codegen/003c.c
diff --git a/test/codegen/003d.c b/creflect/test/codegen/003d.c
rename from test/codegen/003d.c
rename to creflect/test/codegen/003d.c
diff --git a/test/codegen/003e.c b/creflect/test/codegen/003e.c
rename from test/codegen/003e.c
rename to creflect/test/codegen/003e.c
diff --git a/test/codegen/003f.c b/creflect/test/codegen/003f.c
rename from test/codegen/003f.c
rename to creflect/test/codegen/003f.c
diff --git a/test/codegen/003g.c b/creflect/test/codegen/003g.c
rename from test/codegen/003g.c
rename to creflect/test/codegen/003g.c
diff --git a/test/codegen/003h.c b/creflect/test/codegen/003h.c
rename from test/codegen/003h.c
rename to creflect/test/codegen/003h.c
diff --git a/test/codegen/003i.c b/creflect/test/codegen/003i.c
rename from test/codegen/003i.c
rename to creflect/test/codegen/003i.c
diff --git a/test/codegen/004.c b/creflect/test/codegen/004.c
rename from test/codegen/004.c
rename to creflect/test/codegen/004.c
diff --git a/test/codegen/004b.c b/creflect/test/codegen/004b.c
rename from test/codegen/004b.c
rename to creflect/test/codegen/004b.c
diff --git a/test/codegen/005.c b/creflect/test/codegen/005.c
rename from test/codegen/005.c
rename to creflect/test/codegen/005.c
diff --git a/test/codegen/005b.c b/creflect/test/codegen/005b.c
rename from test/codegen/005b.c
rename to creflect/test/codegen/005b.c
diff --git a/test/codegen/005c.c b/creflect/test/codegen/005c.c
rename from test/codegen/005c.c
rename to creflect/test/codegen/005c.c
diff --git a/test/codegen/005d.c b/creflect/test/codegen/005d.c
rename from test/codegen/005d.c
rename to creflect/test/codegen/005d.c
diff --git a/test/codegen/006.c b/creflect/test/codegen/006.c
rename from test/codegen/006.c
rename to creflect/test/codegen/006.c
diff --git a/test/codegen/006b.c b/creflect/test/codegen/006b.c
rename from test/codegen/006b.c
rename to creflect/test/codegen/006b.c
diff --git a/test/codegen/006c.c b/creflect/test/codegen/006c.c
rename from test/codegen/006c.c
rename to creflect/test/codegen/006c.c
diff --git a/test/codegen/007.c b/creflect/test/codegen/007.c
rename from test/codegen/007.c
rename to creflect/test/codegen/007.c
diff --git a/test/codegen/func-001.c b/creflect/test/codegen/func-001.c
rename from test/codegen/func-001.c
rename to creflect/test/codegen/func-001.c
diff --git a/test/codegen/func-001b.c b/creflect/test/codegen/func-001b.c
rename from test/codegen/func-001b.c
rename to creflect/test/codegen/func-001b.c
diff --git a/test/codegen/func-001c.c b/creflect/test/codegen/func-001c.c
rename from test/codegen/func-001c.c
rename to creflect/test/codegen/func-001c.c
diff --git a/test/codegen/func-002.c b/creflect/test/codegen/func-002.c
rename from test/codegen/func-002.c
rename to creflect/test/codegen/func-002.c
diff --git a/test/codegen/func-003.c b/creflect/test/codegen/func-003.c
rename from test/codegen/func-003.c
rename to creflect/test/codegen/func-003.c
diff --git a/test/codegen/func-003b.c b/creflect/test/codegen/func-003b.c
rename from test/codegen/func-003b.c
rename to creflect/test/codegen/func-003b.c
diff --git a/test/codegen/func-004.c b/creflect/test/codegen/func-004.c
rename from test/codegen/func-004.c
rename to creflect/test/codegen/func-004.c
diff --git a/test/codegen/func-005.c b/creflect/test/codegen/func-005.c
rename from test/codegen/func-005.c
rename to creflect/test/codegen/func-005.c
diff --git a/test/codegen/glob-001.c b/creflect/test/codegen/glob-001.c
rename from test/codegen/glob-001.c
rename to creflect/test/codegen/glob-001.c
diff --git a/test/codegen/glob-002.c b/creflect/test/codegen/glob-002.c
rename from test/codegen/glob-002.c
rename to creflect/test/codegen/glob-002.c
diff --git a/test/codegen/glob-002b.c b/creflect/test/codegen/glob-002b.c
rename from test/codegen/glob-002b.c
rename to creflect/test/codegen/glob-002b.c
diff --git a/test/codegen/glob-002c.c b/creflect/test/codegen/glob-002c.c
rename from test/codegen/glob-002c.c
rename to creflect/test/codegen/glob-002c.c
diff --git a/test/codegen/glob-002d.c b/creflect/test/codegen/glob-002d.c
rename from test/codegen/glob-002d.c
rename to creflect/test/codegen/glob-002d.c
diff --git a/test/codegen/glob-003.c b/creflect/test/codegen/glob-003.c
rename from test/codegen/glob-003.c
rename to creflect/test/codegen/glob-003.c
diff --git a/test/codegen/glob-003b.c b/creflect/test/codegen/glob-003b.c
rename from test/codegen/glob-003b.c
rename to creflect/test/codegen/glob-003b.c
diff --git a/test/codegen/glob-003c.c b/creflect/test/codegen/glob-003c.c
rename from test/codegen/glob-003c.c
rename to creflect/test/codegen/glob-003c.c
diff --git a/test/codegen/glob-003d.c b/creflect/test/codegen/glob-003d.c
rename from test/codegen/glob-003d.c
rename to creflect/test/codegen/glob-003d.c
diff --git a/test/codegen/glob-003e.c b/creflect/test/codegen/glob-003e.c
rename from test/codegen/glob-003e.c
rename to creflect/test/codegen/glob-003e.c
diff --git a/test/codegen/glob-003f.c b/creflect/test/codegen/glob-003f.c
rename from test/codegen/glob-003f.c
rename to creflect/test/codegen/glob-003f.c
diff --git a/test/codegen/glob-003g.c b/creflect/test/codegen/glob-003g.c
rename from test/codegen/glob-003g.c
rename to creflect/test/codegen/glob-003g.c
diff --git a/test/codegen/glob-003h.c b/creflect/test/codegen/glob-003h.c
rename from test/codegen/glob-003h.c
rename to creflect/test/codegen/glob-003h.c
diff --git a/test/codegen/glob-003i.c b/creflect/test/codegen/glob-003i.c
rename from test/codegen/glob-003i.c
rename to creflect/test/codegen/glob-003i.c
diff --git a/test/codegen/glob-003j.c b/creflect/test/codegen/glob-003j.c
rename from test/codegen/glob-003j.c
rename to creflect/test/codegen/glob-003j.c
diff --git a/test/codegen/glob-004.c b/creflect/test/codegen/glob-004.c
rename from test/codegen/glob-004.c
rename to creflect/test/codegen/glob-004.c
diff --git a/test/codegen/glob-005.c b/creflect/test/codegen/glob-005.c
rename from test/codegen/glob-005.c
rename to creflect/test/codegen/glob-005.c
diff --git a/test/codegen/macro-001.c b/creflect/test/codegen/macro-001.c
rename from test/codegen/macro-001.c
rename to creflect/test/codegen/macro-001.c
diff --git a/test/codegen/struct-001.c b/creflect/test/codegen/struct-001.c
rename from test/codegen/struct-001.c
rename to creflect/test/codegen/struct-001.c
diff --git a/test/codegen/struct-001b.c b/creflect/test/codegen/struct-001b.c
rename from test/codegen/struct-001b.c
rename to creflect/test/codegen/struct-001b.c
diff --git a/test/codegen/struct-002.c b/creflect/test/codegen/struct-002.c
rename from test/codegen/struct-002.c
rename to creflect/test/codegen/struct-002.c
diff --git a/test/codegen/struct-003.c b/creflect/test/codegen/struct-003.c
rename from test/codegen/struct-003.c
rename to creflect/test/codegen/struct-003.c
diff --git a/test/codegen/struct-004.c b/creflect/test/codegen/struct-004.c
rename from test/codegen/struct-004.c
rename to creflect/test/codegen/struct-004.c
diff --git a/test/codegen/struct-005.c b/creflect/test/codegen/struct-005.c
rename from test/codegen/struct-005.c
rename to creflect/test/codegen/struct-005.c
diff --git a/test/codegen/struct-005b.c b/creflect/test/codegen/struct-005b.c
rename from test/codegen/struct-005b.c
rename to creflect/test/codegen/struct-005b.c
diff --git a/test/codegen/struct-006.c b/creflect/test/codegen/struct-006.c
rename from test/codegen/struct-006.c
rename to creflect/test/codegen/struct-006.c
diff --git a/test/test_c_decl_parser.py b/creflect/test/test_c_decl_parser.py
rename from test/test_c_decl_parser.py
rename to creflect/test/test_c_decl_parser.py
--- a/test/test_c_decl_parser.py
+++ b/creflect/test/test_c_decl_parser.py
@@ -3,7 +3,7 @@
def setup_module(mod):
- creflect_dir = os.path.join(os.path.dirname(__file__), '..', 'creflect')
+ creflect_dir = os.path.join(os.path.dirname(__file__), '..')
executable = str(udir.join('c_decl_parser_test'))
err = os.system("gcc -g -Werror -o '%s'"
" '%s/creflect_cdecl.c'"
diff --git a/test/test_cgcompile.py b/creflect/test/test_cgcompile.py
rename from test/test_cgcompile.py
rename to creflect/test/test_cgcompile.py
--- a/test/test_cgcompile.py
+++ b/creflect/test/test_cgcompile.py
@@ -19,7 +19,7 @@
infile = str(udir.join('cg-' + filename))
outfile = str(udir.join('cg-' + basename))
assert infile != outfile
- creflect_dir = os.path.join(path, '..', '..', 'creflect')
+ creflect_dir = os.path.join(path, '..', '..')
f = open(infile, 'w')
f.write('''
#include "creflect.h"
diff --git a/test/test_codegen.py b/creflect/test/test_codegen.py
rename from test/test_codegen.py
rename to creflect/test/test_codegen.py
diff --git a/test/test_cparser.py b/creflect/test/test_cparser.py
rename from test/test_cparser.py
rename to creflect/test/test_cparser.py
diff --git a/test/test_driver.py b/creflect/test/test_driver.py
rename from test/test_driver.py
rename to creflect/test/test_driver.py
diff --git a/test/udir.py b/creflect/test/udir.py
rename from test/udir.py
rename to creflect/test/udir.py
diff --git a/zeffir/zeffir.c b/zeffir/zeffir.c
new file mode 100644
--- /dev/null
+++ b/zeffir/zeffir.c
@@ -0,0 +1,44 @@
+#include <Python.h>
+#include "../creflect/creflect.h"
+#include "../creflect/creflect_cdecl.h"
+
+
+/************************************************************/
+
+typedef struct {
+ Py_OBJECT_HEAD
+ PyObject *libname;
+} PyFFIObject;
+
+/************************************************************/
+
+static PyObject *b_open(PyObject *self, PyObject *args, PyObject *kwds)
+{
+ char *keywords[] = {"libname", "relative_to", NULL};
+ char *libname, *relative_to;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss", keywords,
+ &libname, &relative_to))
+ return NULL;
+
+ PyFFIObject *ffi = PyObject_New(PyFFIObject, &FFI_Type);
+ if (ffi == NULL)
+ return NULL;
+
+ return Py_BuildValue("OO", ffi, Py_None);
+}
+
+
+static PyMethodDef ZeffirMethods[] = {
+ {"open", (PyCFunction)b_open, METH_KEYWORDS},
+ {NULL, NULL} /* Sentinel */
+};
+
+PyMODINIT_FUNC
+initzeffir(void)
+{
+ PyObject *m;
+
+ m = Py_InitModule("zeffir", ZeffirMethods);
+ (void)m;
+}
More information about the pypy-commit
mailing list