[vlc-commits] commit: python-vlc: introduce helper definitions/functions (Jean Brouwers )

git at videolan.org git at videolan.org
Tue Dec 7 21:41:51 CET 2010


vlc/python | branch: master | Jean Brouwers <MrJean1 at EarthLink.net> | Tue Dec  7 18:16:26 2010 +0100| [0281882f3af3968a433ac5e4b1d8c03dfb669949] | committer: Olivier Aubert 

python-vlc: introduce helper definitions/functions

Some of these are there to ensure python3 compatibility

Signed-off-by: Olivier Aubert <olivier.aubert at liris.cnrs.fr>

> http://git.videolan.org/gitweb.cgi/vlc/python.git/?a=commit;h=0281882f3af3968a433ac5e4b1d8c03dfb669949
---

 header.py |   66 ++++++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 52 insertions(+), 14 deletions(-)

diff --git a/header.py b/header.py
index 327a519..97a1613 100755
--- a/header.py
+++ b/header.py
@@ -113,30 +113,68 @@ elif sys.platform.startswith('darwin'):
 else:
     raise NotImplementedError('%s: %s not supported' % (sys.argv[0], sys.platform))
 
-#
-# Generated enum types.
-#
+class VLCException(Exception):
+    """Exception raised by libvlc methods.
+    """
+    pass
 
-# GENERATED_ENUMS
+try:
+    _Ints = (int, long)
+except NameError:  # no long in Python 3+
+    _Ints =  int
 
-#
-# End of generated enum types.
-#
+_Seqs = (list, tuple)
+
+_Cfunctions = {}  # from LibVLC __version__
 
+def _Cfunction(name, flags, *types):
+    """(INTERNAL) New ctypes function binding.
+    """
+    if hasattr(dll, name):
+        p = ctypes.CFUNCTYPE(*types)
+        f = p((name, dll), flags)
+        _Cfunctions[name] = f
+        return f
+    raise NameError('no function %r' % (name,))
+
+def _Cobject(cls, ctype):
+    """(INTERNAL) New instance from ctypes.
+    """
+    o = object.__new__(cls)
+    o._as_parameter_ = ctype
+    return o
+
+def _Constructor(cls, ptr):
+    """(INTERNAL) New wrapper from ctypes.
+    """
+    if ptr is None:
+        raise VLCException('(INTERNAL) ctypes class.')
+    if ptr == 0:
+        return None
+    return _Cobject(cls, ctypes.c_void_p(ptr))
+
+class _Ctype(object):
+    """(INTERNAL) Base class for ctypes.
+    """
+    @staticmethod
+    def from_param(this):  # not self
+        """(INTERNAL) ctypes parameter conversion method.
+        """
+        return this._as_parameter_
+    
 class ListPOINTER(object):
-    '''Just like a POINTER but accept a list of ctype as an argument.
-    '''
+    """Just like a POINTER but accept a list of ctype as an argument.
+    """
     def __init__(self, etype):
         self.etype = etype
 
     def from_param(self, param):
-        if isinstance(param, (list, tuple)):
+        if isinstance(param, _Seqs):
             return (self.etype * len(param))(*param)
 
-class LibVLCException(Exception):
-    """Python exception raised by libvlc methods.
-    """
-    pass
+ # Generated enum types #
+# GENERATED_ENUMS go here  # see generate.py
+ # End of generated enum types #
 
 # From libvlc_structures.h
 



More information about the vlc-commits mailing list