Mercurial > pyxpcom
view xpcom/primitives.py @ 8:9491ac848af1 default tip
The pyxpcom library now uses @executable_path. Refined the Makefile more.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Thu, 08 May 2008 11:01:04 -0700 |
parents | 3393caed6b2d |
children |
line wrap: on
line source
# Various utilities for working with nsISupportsPrimitive from xpcom import components _primitives_map = {} def _build_map(): ifaces = components.interfaces iface = ifaces.nsISupportsPrimitive m = _primitives_map m[iface.TYPE_ID] = ifaces.nsISupportsID m[iface.TYPE_CSTRING] = ifaces.nsISupportsCString m[iface.TYPE_STRING] = ifaces.nsISupportsString m[iface.TYPE_PRBOOL] = ifaces.nsISupportsPRBool m[iface.TYPE_PRUINT8] = ifaces.nsISupportsPRUint8 m[iface.TYPE_PRUINT16] = ifaces.nsISupportsPRUint16 m[iface.TYPE_PRUINT32] = ifaces.nsISupportsPRUint32 m[iface.TYPE_PRUINT64] = ifaces.nsISupportsPRUint64 m[iface.TYPE_PRINT16] = ifaces.nsISupportsPRInt16 m[iface.TYPE_PRINT32] = ifaces.nsISupportsPRInt32 m[iface.TYPE_PRINT64] = ifaces.nsISupportsPRInt64 m[iface.TYPE_PRTIME] = ifaces.nsISupportsPRTime m[iface.TYPE_CHAR] = ifaces.nsISupportsChar m[iface.TYPE_FLOAT] = ifaces.nsISupportsFloat m[iface.TYPE_DOUBLE] = ifaces.nsISupportsDouble # Do interface pointer specially - it provides the IID. #m[iface.TYPE_INTERFACE_POINTER] = ifaces.nsISupportsDouble def GetPrimitive(ob): if len(_primitives_map)==0: _build_map() prin = ob.QueryInterface(components.interfaces.nsISupportsPrimitive) try: better = _primitives_map[prin.type] except KeyError: raise ValueError, "This primitive type (%d) is not supported" % (prin.type,) prin = prin.QueryInterface(better) return prin.data