diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 2002-01-01 22:40:08 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 2002-01-01 22:40:08 (GMT) |
commit | dcfc20282b8579577fb0aa3f8e5498b174150d81 (patch) | |
tree | 6712b6bd6af12f08790c99f756a074cd0e04808a | |
parent | f1472384dcf23f771e171dbf99b65bded0bf0631 (diff) | |
download | cpython-dcfc20282b8579577fb0aa3f8e5498b174150d81.zip cpython-dcfc20282b8579577fb0aa3f8e5498b174150d81.tar.gz cpython-dcfc20282b8579577fb0aa3f8e5498b174150d81.tar.bz2 |
Added some support for Uicode arguments. Still leaves something to be desired, especially because of poor unicode support in PyArg_ParseTuple.
-rw-r--r-- | Tools/bgen/bgen/bgenBuffer.py | 8 | ||||
-rw-r--r-- | Tools/bgen/bgen/bgenType.py | 1 | ||||
-rw-r--r-- | Tools/bgen/bgen/macsupport.py | 15 |
3 files changed, 23 insertions, 1 deletions
diff --git a/Tools/bgen/bgen/bgenBuffer.py b/Tools/bgen/bgen/bgenBuffer.py index e948a14..ee4a128 100644 --- a/Tools/bgen/bgen/bgenBuffer.py +++ b/Tools/bgen/bgen/bgenBuffer.py @@ -159,7 +159,13 @@ class VarInputBufferType(FixedInputBufferType): def passInput(self, name): return "%s__in__, %s__len__" % (name, name) - + +class ReverseInputBufferMixin: + """ Mixin for input buffers that are passed as (size, buffer) """ + + def passInput(self, name): + return "%s__len__, %s__in__" % (name, name) + class OptionalVarInputBufferType(OptionalInputBufferMixIn, VarInputBufferType): pass diff --git a/Tools/bgen/bgen/bgenType.py b/Tools/bgen/bgen/bgenType.py index ac3e74d..fa316a7 100644 --- a/Tools/bgen/bgen/bgenType.py +++ b/Tools/bgen/bgen/bgenType.py @@ -149,6 +149,7 @@ double = Type("double", "d") # For input, this is easy. For output, and for other uses of char *, # see the module bgenBuffer. stringptr = InputOnlyType("char*", "s") +unicodestringptr = InputOnlyType("wchar_t *", "u") # Some Python related types. diff --git a/Tools/bgen/bgen/macsupport.py b/Tools/bgen/bgen/macsupport.py index b02e00b..2caac97 100644 --- a/Tools/bgen/bgen/macsupport.py +++ b/Tools/bgen/bgen/macsupport.py @@ -47,6 +47,8 @@ ConstStringPtr = StringPtr # File System Specifications FSSpec_ptr = OpaqueType("FSSpec", "PyMac_BuildFSSpec", "PyMac_GetFSSpec") FSSpec = OpaqueByValueType("FSSpec", "PyMac_BuildFSSpec", "PyMac_GetFSSpec") +FSRef_ptr = OpaqueType("FSRef", "PyMac_BuildFSRef", "PyMac_GetFSRef") +FSRef = OpaqueByValueType("FSRef", "PyMac_BuildFSRef", "PyMac_GetFSRef") # OSType and ResType: 4-byte character strings def OSTypeType(typename): @@ -111,6 +113,19 @@ OutBuffer = HeapOutputBufferType('char', 'long', 'l') # (buf, len) VarOutBuffer = VarHeapOutputBufferType('char', 'long', 'l') # (buf, &len) VarVarOutBuffer = VarVarHeapOutputBufferType('char', 'long', 'l') # (buf, len, &len) +# Unicode arguments sometimes have reversed len, buffer (don't understand why Apple did this...) +class VarUnicodeInputBufferType(VarInputBufferType): + + def getargsFormat(self): + return "u#" + +class VarUnicodeReverseInputBufferType(ReverseInputBufferMixin, VarUnicodeInputBufferType): + pass + +UnicodeInBuffer = VarUnicodeInputBufferType('UniChar', 'UniCharCount', 'l') +UnicodeReverseInBuffer = VarUnicodeReverseInputBufferType('UniChar', 'UniCharCount', 'l') +UniChar_ptr = InputOnlyType("UniCharPtr", "u") + # Predefine various pieces of program text to be passed to Module() later: |