Commit dcfc2028 authored by Jack Jansen's avatar Jack Jansen

Added some support for Uicode arguments. Still leaves something to be desired,...

Added some support for Uicode arguments. Still leaves something to be desired, especially because of poor unicode support in PyArg_ParseTuple.
parent f1472384
...@@ -159,7 +159,13 @@ class VarInputBufferType(FixedInputBufferType): ...@@ -159,7 +159,13 @@ class VarInputBufferType(FixedInputBufferType):
def passInput(self, name): def passInput(self, name):
return "%s__in__, %s__len__" % (name, 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): class OptionalVarInputBufferType(OptionalInputBufferMixIn, VarInputBufferType):
pass pass
......
...@@ -149,6 +149,7 @@ double = Type("double", "d") ...@@ -149,6 +149,7 @@ double = Type("double", "d")
# For input, this is easy. For output, and for other uses of char *, # For input, this is easy. For output, and for other uses of char *,
# see the module bgenBuffer. # see the module bgenBuffer.
stringptr = InputOnlyType("char*", "s") stringptr = InputOnlyType("char*", "s")
unicodestringptr = InputOnlyType("wchar_t *", "u")
# Some Python related types. # Some Python related types.
......
...@@ -47,6 +47,8 @@ ConstStringPtr = StringPtr ...@@ -47,6 +47,8 @@ ConstStringPtr = StringPtr
# File System Specifications # File System Specifications
FSSpec_ptr = OpaqueType("FSSpec", "PyMac_BuildFSSpec", "PyMac_GetFSSpec") FSSpec_ptr = OpaqueType("FSSpec", "PyMac_BuildFSSpec", "PyMac_GetFSSpec")
FSSpec = OpaqueByValueType("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 # OSType and ResType: 4-byte character strings
def OSTypeType(typename): def OSTypeType(typename):
...@@ -111,6 +113,19 @@ OutBuffer = HeapOutputBufferType('char', 'long', 'l') # (buf, len) ...@@ -111,6 +113,19 @@ OutBuffer = HeapOutputBufferType('char', 'long', 'l') # (buf, len)
VarOutBuffer = VarHeapOutputBufferType('char', 'long', 'l') # (buf, &len) VarOutBuffer = VarHeapOutputBufferType('char', 'long', 'l') # (buf, &len)
VarVarOutBuffer = VarVarHeapOutputBufferType('char', 'long', 'l') # (buf, len, &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: # Predefine various pieces of program text to be passed to Module() later:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment