Merge extensions/python/xpcom changes from DOM_AGNOSTIC2_BRANCH into the
trunk. git-svn-id: svn://10.0.0.236/trunk@187878 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
39
mozilla/extensions/python/xpcom/primitives.py
Normal file
39
mozilla/extensions/python/xpcom/primitives.py
Normal file
@@ -0,0 +1,39 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user