當前位置: 首頁>>代碼示例>>Python>>正文


Python c_char_p.from_param方法代碼示例

本文整理匯總了Python中ctypes.c_char_p.from_param方法的典型用法代碼示例。如果您正苦於以下問題:Python c_char_p.from_param方法的具體用法?Python c_char_p.from_param怎麽用?Python c_char_p.from_param使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在ctypes.c_char_p的用法示例。


在下文中一共展示了c_char_p.from_param方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: test_cstrings

# 需要導入模塊: from ctypes import c_char_p [as 別名]
# 或者: from ctypes.c_char_p import from_param [as 別名]
def test_cstrings(self):
        from ctypes import c_char_p, byref

        # c_char_p.from_param on a Python String packs the string
        # into a cparam object
        s = "123"
        self.assertIs(c_char_p.from_param(s)._obj, s)

        # new in 0.9.1: convert (encode) unicode to ascii
        self.assertEqual(c_char_p.from_param(u"123")._obj, "123")
        self.assertRaises(UnicodeEncodeError, c_char_p.from_param, u"123\377")

        self.assertRaises(TypeError, c_char_p.from_param, 42)

        # calling c_char_p.from_param with a c_char_p instance
        # returns the argument itself:
        a = c_char_p("123")
        self.assertIs(c_char_p.from_param(a), a) 
開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:20,代碼來源:test_parameters.py

示例2: test_int_pointers

# 需要導入模塊: from ctypes import c_char_p [as 別名]
# 或者: from ctypes.c_char_p import from_param [as 別名]
def test_int_pointers(self):
        from ctypes import c_short, c_uint, c_int, c_long, POINTER, pointer
        LPINT = POINTER(c_int)

##        p = pointer(c_int(42))
##        x = LPINT.from_param(p)
        x = LPINT.from_param(pointer(c_int(42)))
        self.assertEqual(x.contents.value, 42)
        self.assertEqual(LPINT(c_int(42)).contents.value, 42)

        self.assertEqual(LPINT.from_param(None), None)

        if c_int != c_long:
            self.assertRaises(TypeError, LPINT.from_param, pointer(c_long(42)))
        self.assertRaises(TypeError, LPINT.from_param, pointer(c_uint(42)))
        self.assertRaises(TypeError, LPINT.from_param, pointer(c_short(42))) 
開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:18,代碼來源:test_parameters.py

示例3: test_cstrings

# 需要導入模塊: from ctypes import c_char_p [as 別名]
# 或者: from ctypes.c_char_p import from_param [as 別名]
def test_cstrings(self):
        from ctypes import c_char_p, byref

        # c_char_p.from_param on a Python String packs the string
        # into a cparam object
        s = "123"
        self.assertTrue(c_char_p.from_param(s)._obj is s)

        # new in 0.9.1: convert (encode) unicode to ascii
        self.assertEqual(c_char_p.from_param(u"123")._obj, "123")
        self.assertRaises(UnicodeEncodeError, c_char_p.from_param, u"123\377")

        self.assertRaises(TypeError, c_char_p.from_param, 42)

        # calling c_char_p.from_param with a c_char_p instance
        # returns the argument itself:
        a = c_char_p("123")
        self.assertTrue(c_char_p.from_param(a) is a) 
開發者ID:dxwu,項目名稱:BinderFilter,代碼行數:20,代碼來源:test_parameters.py

示例4: test_cw_strings

# 需要導入模塊: from ctypes import c_char_p [as 別名]
# 或者: from ctypes.c_char_p import from_param [as 別名]
def test_cw_strings(self):
        from ctypes import byref
        try:
            from ctypes import c_wchar_p
        except ImportError:
##            print "(No c_wchar_p)"
            return
        s = u"123"
        if sys.platform == "win32":
            self.assertTrue(c_wchar_p.from_param(s)._obj is s)
            self.assertRaises(TypeError, c_wchar_p.from_param, 42)

            # new in 0.9.1: convert (decode) ascii to unicode
            self.assertEqual(c_wchar_p.from_param("123")._obj, u"123")
        self.assertRaises(UnicodeDecodeError, c_wchar_p.from_param, "123\377")

        pa = c_wchar_p.from_param(c_wchar_p(u"123"))
        self.assertEqual(type(pa), c_wchar_p) 
開發者ID:dxwu,項目名稱:BinderFilter,代碼行數:20,代碼來源:test_parameters.py

示例5: test_array_pointers

# 需要導入模塊: from ctypes import c_char_p [as 別名]
# 或者: from ctypes.c_char_p import from_param [as 別名]
def test_array_pointers(self):
        from ctypes import c_short, c_uint, c_int, c_long, POINTER
        INTARRAY = c_int * 3
        ia = INTARRAY()
        self.assertEqual(len(ia), 3)
        self.assertEqual([ia[i] for i in range(3)], [0, 0, 0])

        # Pointers are only compatible with arrays containing items of
        # the same type!
        LPINT = POINTER(c_int)
        LPINT.from_param((c_int*3)())
        self.assertRaises(TypeError, LPINT.from_param, c_short*3)
        self.assertRaises(TypeError, LPINT.from_param, c_long*3)
        self.assertRaises(TypeError, LPINT.from_param, c_uint*3)

##    def test_performance(self):
##        check_perf() 
開發者ID:dxwu,項目名稱:BinderFilter,代碼行數:19,代碼來源:test_parameters.py

示例6: test_cstrings

# 需要導入模塊: from ctypes import c_char_p [as 別名]
# 或者: from ctypes.c_char_p import from_param [as 別名]
def test_cstrings(self):
        from ctypes import c_char_p, byref

        # c_char_p.from_param on a Python String packs the string
        # into a cparam object
        s = b"123"
        self.assertIs(c_char_p.from_param(s)._obj, s)

        # new in 0.9.1: convert (encode) unicode to ascii
        self.assertEqual(c_char_p.from_param(b"123")._obj, b"123")
        self.assertRaises(TypeError, c_char_p.from_param, "123\377")
        self.assertRaises(TypeError, c_char_p.from_param, 42)

        # calling c_char_p.from_param with a c_char_p instance
        # returns the argument itself:
        a = c_char_p(b"123")
        self.assertIs(c_char_p.from_param(a), a) 
開發者ID:Microvellum,項目名稱:Fluid-Designer,代碼行數:19,代碼來源:test_parameters.py

示例7: test_cstrings

# 需要導入模塊: from ctypes import c_char_p [as 別名]
# 或者: from ctypes.c_char_p import from_param [as 別名]
def test_cstrings(self):
        from ctypes import c_char_p

        # c_char_p.from_param on a Python String packs the string
        # into a cparam object
        s = b"123"
        self.assertIs(c_char_p.from_param(s)._obj, s)

        # new in 0.9.1: convert (encode) unicode to ascii
        self.assertEqual(c_char_p.from_param(b"123")._obj, b"123")
        self.assertRaises(TypeError, c_char_p.from_param, "123\377")
        self.assertRaises(TypeError, c_char_p.from_param, 42)

        # calling c_char_p.from_param with a c_char_p instance
        # returns the argument itself:
        a = c_char_p(b"123")
        self.assertIs(c_char_p.from_param(a), a) 
開發者ID:CedricGuillemet,項目名稱:Imogen,代碼行數:19,代碼來源:test_parameters.py

示例8: test_subclasses

# 需要導入模塊: from ctypes import c_char_p [as 別名]
# 或者: from ctypes.c_char_p import from_param [as 別名]
def test_subclasses(self):
        from ctypes import c_void_p, c_char_p
        # ctypes 0.9.5 and before did overwrite from_param in SimpleType_new
        class CVOIDP(c_void_p):
            def from_param(cls, value):
                return value * 2
            from_param = classmethod(from_param)

        class CCHARP(c_char_p):
            def from_param(cls, value):
                return value * 4
            from_param = classmethod(from_param)

        self.assertEqual(CVOIDP.from_param("abc"), "abcabc")
        self.assertEqual(CCHARP.from_param("abc"), "abcabcabcabc") 
開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:17,代碼來源:test_parameters.py

示例9: test_subclasses_c_wchar_p

# 需要導入模塊: from ctypes import c_char_p [as 別名]
# 或者: from ctypes.c_char_p import from_param [as 別名]
def test_subclasses_c_wchar_p(self):
        from ctypes import c_wchar_p

        class CWCHARP(c_wchar_p):
            def from_param(cls, value):
                return value * 3
            from_param = classmethod(from_param)

        self.assertEqual(CWCHARP.from_param("abc"), "abcabcabc")

    # XXX Replace by c_char_p tests 
開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:13,代碼來源:test_parameters.py

示例10: test_cw_strings

# 需要導入模塊: from ctypes import c_char_p [as 別名]
# 或者: from ctypes.c_char_p import from_param [as 別名]
def test_cw_strings(self):
        from ctypes import byref, c_wchar_p
        s = u"123"
        if sys.platform == "win32":
            self.assertTrue(c_wchar_p.from_param(s)._obj is s)
            self.assertRaises(TypeError, c_wchar_p.from_param, 42)

            # new in 0.9.1: convert (decode) ascii to unicode
            self.assertEqual(c_wchar_p.from_param("123")._obj, u"123")
        self.assertRaises(UnicodeDecodeError, c_wchar_p.from_param, "123\377")

        pa = c_wchar_p.from_param(c_wchar_p(u"123"))
        self.assertEqual(type(pa), c_wchar_p) 
開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:15,代碼來源:test_parameters.py

示例11: test_byref_pointerpointer

# 需要導入模塊: from ctypes import c_char_p [as 別名]
# 或者: from ctypes.c_char_p import from_param [as 別名]
def test_byref_pointerpointer(self):
        # See above
        from ctypes import c_short, c_uint, c_int, c_long, pointer, POINTER, byref

        LPLPINT = POINTER(POINTER(c_int))
        LPLPINT.from_param(byref(pointer(c_int(42))))

        self.assertRaises(TypeError, LPLPINT.from_param, byref(pointer(c_short(22))))
        if c_int != c_long:
            self.assertRaises(TypeError, LPLPINT.from_param, byref(pointer(c_long(22))))
        self.assertRaises(TypeError, LPLPINT.from_param, byref(pointer(c_uint(22)))) 
開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:13,代碼來源:test_parameters.py

示例12: test_array_pointers

# 需要導入模塊: from ctypes import c_char_p [as 別名]
# 或者: from ctypes.c_char_p import from_param [as 別名]
def test_array_pointers(self):
        from ctypes import c_short, c_uint, c_int, c_long, POINTER
        INTARRAY = c_int * 3
        ia = INTARRAY()
        self.assertEqual(len(ia), 3)
        self.assertEqual([ia[i] for i in range(3)], [0, 0, 0])

        # Pointers are only compatible with arrays containing items of
        # the same type!
        LPINT = POINTER(c_int)
        LPINT.from_param((c_int*3)())
        self.assertRaises(TypeError, LPINT.from_param, c_short*3)
        self.assertRaises(TypeError, LPINT.from_param, c_long*3)
        self.assertRaises(TypeError, LPINT.from_param, c_uint*3) 
開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:16,代碼來源:test_parameters.py

示例13: test_noctypes_argtype

# 需要導入模塊: from ctypes import c_char_p [as 別名]
# 或者: from ctypes.c_char_p import from_param [as 別名]
def test_noctypes_argtype(self):
        import _ctypes_test
        from ctypes import CDLL, c_void_p, ArgumentError

        func = CDLL(_ctypes_test.__file__)._testfunc_p_p
        func.restype = c_void_p
        # TypeError: has no from_param method
        self.assertRaises(TypeError, setattr, func, "argtypes", (object,))

        class Adapter(object):
            def from_param(cls, obj):
                return None

        func.argtypes = (Adapter(),)
        self.assertEqual(func(None), None)
        self.assertEqual(func(object()), None)

        class Adapter(object):
            def from_param(cls, obj):
                return obj

        func.argtypes = (Adapter(),)
        # don't know how to convert parameter 1
        self.assertRaises(ArgumentError, func, object())
        self.assertEqual(func(c_void_p(42)), 42)

        class Adapter(object):
            def from_param(cls, obj):
                raise ValueError(obj)

        func.argtypes = (Adapter(),)
        # ArgumentError: argument 1: ValueError: 99
        self.assertRaises(ArgumentError, func, 99) 
開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:35,代碼來源:test_parameters.py

示例14: test_abstract

# 需要導入模塊: from ctypes import c_char_p [as 別名]
# 或者: from ctypes.c_char_p import from_param [as 別名]
def test_abstract(self):
        from ctypes import (Array, Structure, Union, _Pointer,
                            _SimpleCData, _CFuncPtr)

        self.assertRaises(TypeError, Array.from_param, 42)
        self.assertRaises(TypeError, Structure.from_param, 42)
        self.assertRaises(TypeError, Union.from_param, 42)
        self.assertRaises(TypeError, _CFuncPtr.from_param, 42)
        self.assertRaises(TypeError, _Pointer.from_param, 42)
        self.assertRaises(TypeError, _SimpleCData.from_param, 42) 
開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:12,代碼來源:test_parameters.py

示例15: test_subclasses

# 需要導入模塊: from ctypes import c_char_p [as 別名]
# 或者: from ctypes.c_char_p import from_param [as 別名]
def test_subclasses(self):
        from ctypes import c_void_p, c_char_p
        # ctypes 0.9.5 and before did overwrite from_param in SimpleType_new
        class CVOIDP(c_void_p):
            def from_param(cls, value):
                return value * 2
            from_param = classmethod(from_param)

        class CCHARP(c_char_p):
            def from_param(cls, value):
                return value * 4
            from_param = classmethod(from_param)

        self.assertEqual(CVOIDP.from_param("abc"), "abcabc")
        self.assertEqual(CCHARP.from_param("abc"), "abcabcabcabc")

        try:
            from ctypes import c_wchar_p
        except ImportError:
            return

        class CWCHARP(c_wchar_p):
            def from_param(cls, value):
                return value * 3
            from_param = classmethod(from_param)

        self.assertEqual(CWCHARP.from_param("abc"), "abcabcabc")

    # XXX Replace by c_char_p tests 
開發者ID:dxwu,項目名稱:BinderFilter,代碼行數:31,代碼來源:test_parameters.py


注:本文中的ctypes.c_char_p.from_param方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。