From 175a469e49876dcd3bb5fcd920643cadaffc0bd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Tue, 21 Jan 2014 18:10:24 +0100 Subject: [PATCH] python: ucs2 and ucs4 --- extra/python/python.factor | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/extra/python/python.factor b/extra/python/python.factor index a98d4644aa..aa7559cbfb 100644 --- a/extra/python/python.factor +++ b/extra/python/python.factor @@ -8,6 +8,7 @@ USING: grouping hashtables kernel + memoize namespaces python.ffi sequences @@ -50,7 +51,7 @@ ERROR: python-error type message ; : with-py ( quot -- ) '[ Py_Initialize _ call Py_Finalize ] with-destructors ; inline -! Types and their methods +! Types : ( length -- tuple ) PyTuple_New check-return ; @@ -63,6 +64,7 @@ ERROR: python-error type message ; : py-tuple-size ( obj -- len ) PyTuple_Size ; +! Dicts : ( -- dict ) PyDict_New check-return ; @@ -78,12 +80,21 @@ ERROR: python-error type message ; : py-dict-size ( obj -- len ) PyDict_Size ; +! Lists : py-list-size ( list -- len ) PyList_Size ; : py-list-get-item ( obj pos -- val ) PyList_GetItem check-return ; +! Unicodes +: py-unicode>utf8 ( uni -- str ) + PyUnicodeUCS2_AsUTF8String (check-return) + PyString_AsString (check-return) + +MEMO: py-ucs-size ( -- n ) + "maxunicode" PySys_GetObject check-return PyInt_AsLong 0xffff = 2 4 ? ; + ! Data marshalling to Python GENERIC: (>py) ( obj -- obj' ) M: string (>py) PyUnicodeUCS2_FromString ;