Example #1
0
"""
Specific support for NSData.

NSData needs to be handles specially for correctness reasons,
and is therefore in the core instead of the Foundation
framework wrappers.
"""
import sys

from objc._convenience import addConvenienceForClass
from objc._objc import registerMetaDataForSelector

registerMetaDataForSelector(
    b'NSData', b'dataWithBytes:length:',
    {
        'arguments': {
            2: { 'type': b'^v', 'type_modifier': b'n', 'c_array_length_in_arg': 3 }
        }
    })


def nsdata__new__(cls, value=None):
    if value is None:
        return cls.data()

    else:
        return cls.dataWithBytes_length_(value, len(value))

if sys.version_info[0] == 2:  # pragma: no 3.x cover
    def nsdata__str__(self):
        if len(self) == 0:
Example #2
0
NSData needs to be handles specially for correctness reasons,
and is therefore in the core instead of the Foundation
framework wrappers.
"""
from objc._objc import registerMetaDataForSelector
from objc._convenience import addConvenienceForClass
import sys

registerMetaDataForSelector(
    b"NSData",
    b"dataWithBytes:length:",
    {
        "arguments": {
            2: {
                "type": b"^v",
                "type_modifier": b"n",
                "c_array_length_in_arg": 3
            }
        }
    },
)


def nsdata__new__(cls, value=None):
    if value is None:
        return cls.data()

    else:
        return cls.dataWithBytes_length_(value, len(value))
registerMetaDataForSelector(
    b"NSObject",
    b"sortUsingFunction:context:",
    dict(
        arguments={
            2: {
                "callable": {
                    "retval": {
                        "type": _C_NSInteger
                    },
                    "arguments": {
                        0: {
                            "type": _C_ID
                        },
                        1: {
                            "type": _C_ID
                        },
                        2: {
                            "type": _C_ID
                        },
                    },
                },
                "callable_retained": False,
            },
            3: {
                "type": _C_ID
            },
        }),
)
else:  # pragma: no 2.x cover
    INT_TYPES = int
    STR_TYPES = str


registerMetaDataForSelector(
    b"NSObject", b"sortUsingFunction:context:",
    dict(
        arguments={
            2:  {
                    'callable': {
                        'retval': { 'type': _C_NSInteger },
                        'arguments': {
                            0: { 'type': _C_ID },
                            1: { 'type': _C_ID },
                            2: { 'type': _C_ID },
                        }
                    },
                    'callable_retained': False,
            },
            3:  { 'type': _C_ID },
        },
    )
)


def _ensure_array(anArray):
    """ Return *anArray* as a list, tuple or NSArray """
    if not isinstance(anArray, (NSArray, list, tuple)):
        anArray = list(anArray)
Example #5
0
        else:

            def doCmp(a, b, cmpfunc):
                return cmpfunc(key(a), key(b))

    self.sortUsingFunction_context_(doCmp, cmpfunc)


registerMetaDataForSelector(
    b"NSObject",
    b"sortUsingFunction:context:",
    dict(
        arguments={
            2: {
                "callable": {"reval": "i", "arguments": {0: {"type": "@"}, 1: {"type": "@"}, 2: {"type": "@"}}},
                "callable_retained": False,
            },
            3: {"type": "@"},
        }
    ),
)


CONVENIENCE_METHODS[b"sortUsingFunction:context:"] = (("sort", sort),)

CONVENIENCE_METHODS[b"hasPrefix:"] = (("startswith", lambda self, pfx: self.hasPrefix_(pfx)),)

CONVENIENCE_METHODS[b"hasSuffix:"] = (("endswith", lambda self, pfx: self.hasSuffix_(pfx)),)

    INT_TYPES = int
    STR_TYPES = str

registerMetaDataForSelector(
    b"NSObject", b"sortUsingFunction:context:",
    dict(arguments={
        2: {
            'callable': {
                'retval': {
                    'type': _C_NSInteger
                },
                'arguments': {
                    0: {
                        'type': _C_ID
                    },
                    1: {
                        'type': _C_ID
                    },
                    2: {
                        'type': _C_ID
                    },
                }
            },
            'callable_retained': False,
        },
        3: {
            'type': _C_ID
        },
    }, ))


def _ensure_array(anArray):
"""
Specific support for NSData.

NSData needs to be handles specially for correctness reasons,
and is therefore in the core instead of the Foundation
framework wrappers.
"""
from objc._objc import registerMetaDataForSelector
from objc._convenience import addConvenienceForClass
import sys

registerMetaDataForSelector(
    b'NSData', b'dataWithBytes:length:',
    {
        'arguments': {
            2: { 'type': b'^v', 'type_modifier': b'n', 'c_array_length_in_arg': 3 }
        }
    })


def nsdata__new__(cls, value=None):
    if value is None:
        return cls.data()

    else:
        return cls.dataWithBytes_length_(value, len(value))

if sys.version_info[0] == 2:  # pragma: no 3.x cover
    def nsdata__str__(self):
        if len(self) == 0:
            return str(b"")