Author: Amaury Forgeot d'Arc <[email protected]>
Branch: remove-PYPY_NOT_MAIN_FILE
Changeset: r57731:3eea4e004571
Date: 2012-10-02 15:42 +0200
http://bitbucket.org/pypy/pypy/changeset/3eea4e004571/
Log: Split rtyper.h: header and implementation.
diff --git a/pypy/translator/c/genc.py b/pypy/translator/c/genc.py
--- a/pypy/translator/c/genc.py
+++ b/pypy/translator/c/genc.py
@@ -910,6 +910,7 @@
srcdir / 'allocator.c',
srcdir / 'mem.c',
srcdir / 'exception.c',
+ srcdir / 'rtyper.c',
srcdir / 'support.c',
srcdir / 'profiling.c',
srcdir / 'debug_print.c',
diff --git a/pypy/translator/c/src/mem.h b/pypy/translator/c/src/mem.h
--- a/pypy/translator/c/src/mem.h
+++ b/pypy/translator/c/src/mem.h
@@ -2,6 +2,8 @@
/************************************************************/
/*** C header subsection: operations on LowLevelTypes ***/
+#include <string.h>
+
/* used by pypy.rlib.rstack, but also by asmgcc */
#define OP_STACK_CURRENT(r) r = (Signed)&r
diff --git a/pypy/translator/c/src/rtyper.c b/pypy/translator/c/src/rtyper.c
new file mode 100644
--- /dev/null
+++ b/pypy/translator/c/src/rtyper.c
@@ -0,0 +1,46 @@
+/************************************************************/
+/*** C header subsection: tools for RTyper-aware code ***/
+#include "common_header.h"
+#include "structdef.h"
+#include "forwarddecl.h"
+#include "preimpl.h"
+#include <src/rtyper.h>
+
+#include <stdlib.h>
+#include <string.h>
+
+struct _RPyString_dump_t {
+ struct _RPyString_dump_t *next;
+ char data[1];
+} *_RPyString_dump = NULL;
+
+char *RPyString_AsCharP(RPyString *rps)
+{
+ Signed len = RPyString_Size(rps);
+ struct _RPyString_dump_t *dump = \
+ malloc(sizeof(struct _RPyString_dump_t) + len);
+ if (!dump)
+ return "(out of memory!)";
+ dump->next = _RPyString_dump;
+ _RPyString_dump = dump;
+ memcpy(dump->data, rps->rs_chars.items, len);
+ dump->data[len] = 0;
+ return dump->data;
+}
+
+void RPyString_FreeCache(void)
+{
+ while (_RPyString_dump) {
+ struct _RPyString_dump_t *dump = _RPyString_dump;
+ _RPyString_dump = dump->next;
+ free(dump);
+ }
+}
+
+RPyString *RPyString_FromString(char *buf)
+{
+ int length = strlen(buf);
+ RPyString *rps = RPyString_New(length);
+ memcpy(rps->rs_chars.items, buf, length);
+ return rps;
+}
diff --git a/pypy/translator/c/src/rtyper.h b/pypy/translator/c/src/rtyper.h
--- a/pypy/translator/c/src/rtyper.h
+++ b/pypy/translator/c/src/rtyper.h
@@ -1,8 +1,5 @@
/************************************************************/
- /*** C header subsection: tools for RTyper-aware code ***/
-
-#include <string.h>
-
+/*** C header subsection: tools for RTyper-aware code ***/
/* Note that RPython strings are not 0-terminated! For debugging,
use PyString_FromRPyString or RPyString_AsCharP */
@@ -12,51 +9,6 @@
#define RPyUnicode_Size(rpu) ((rpu)->ru_chars.length)
#define _RPyUnicode_AsUnicode(rpu) ((rpu)->ru_chars.items)
-/* prototypes */
-
char *RPyString_AsCharP(RPyString *rps);
void RPyString_FreeCache(void);
RPyString *RPyString_FromString(char *buf);
-
-
-/* implementations */
-
-#ifdef PYPY_MAIN_IMPLEMENTATION_FILE
-
-struct _RPyString_dump_t {
- struct _RPyString_dump_t *next;
- char data[1];
-} *_RPyString_dump = NULL;
-
-char *RPyString_AsCharP(RPyString *rps)
-{
- Signed len = RPyString_Size(rps);
- struct _RPyString_dump_t *dump = \
- malloc(sizeof(struct _RPyString_dump_t) + len);
- if (!dump)
- return "(out of memory!)";
- dump->next = _RPyString_dump;
- _RPyString_dump = dump;
- memcpy(dump->data, rps->rs_chars.items, len);
- dump->data[len] = 0;
- return dump->data;
-}
-
-void RPyString_FreeCache(void)
-{
- while (_RPyString_dump) {
- struct _RPyString_dump_t *dump = _RPyString_dump;
- _RPyString_dump = dump->next;
- free(dump);
- }
-}
-
-RPyString *RPyString_FromString(char *buf)
-{
- int length = strlen(buf);
- RPyString *rps = RPyString_New(length);
- memcpy(rps->rs_chars.items, buf, length);
- return rps;
-}
-
-#endif /* PYPY_MAIN_IMPLEMENTATION_FILE */
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit