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

Reply via email to