mirror of
https://github.com/python/cpython.git
synced 2025-11-11 22:55:08 +00:00
Added some support for Uicode arguments. Still leaves something to be desired, especially because of poor unicode support in PyArg_ParseTuple.
This commit is contained in:
parent
f1472384dc
commit
dcfc20282b
3 changed files with 23 additions and 1 deletions
|
|
@ -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")
|
||||||
# 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
|
||||||
# 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)
|
||||||
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:
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue