Changeset 59795 in vbox for trunk/src/libs/xpcom18a4/python
- Timestamp:
- Feb 24, 2016 9:13:27 AM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 105674
- Location:
- trunk/src/libs/xpcom18a4/python
- Files:
-
- 30 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/libs/xpcom18a4/python/Makefile.kmk
r59769 r59795 5 5 6 6 # 7 # Copyright (C) 2009-201 6Oracle Corporation7 # Copyright (C) 2009-2015 Oracle Corporation 8 8 # 9 9 # This file is part of VirtualBox Open Source Edition (OSE), as … … 27 27 # 28 28 # List of supported Python versions, defining a number of 29 # VBOX_PYTHON[26|27|31|32|33|34|35|DEF]_[INC|LIB] variables 30 # which get picked up below. 29 # VBOX_PYTHON[25|26|27|DEF]_[INC|LIB] variables which get picked up below. 31 30 # 32 31 ifeq ($(KBUILD_TARGET),darwin) # Relatively predictable, don't script. 32 ifeq ($(KBUILD_TARGET_ARCH),x86) 33 VBOX_PYTHON25_INC = $(VBOX_PATH_MACOSX_SDK)/usr/include/python2.5 34 VBOX_PYTHON25_LIB = $(VBOX_PATH_MACOSX_SDK)/usr/lib/libpython2.5.dylib 35 VBOX_PYTHON25_LIB_X86 = $(VBOX_PYTHON25_LIB) 36 endif 33 37 if !defined(VBOX_WITHOUT_VBOXPYTHON_FOR_OSX_10_6) \ 34 38 && ( !defined(VBOX_OSE) \ … … 45 49 VBOX_PYTHON27_LIB_X86 = $(VBOX_PYTHON27_LIB) 46 50 endif 47 # No Python 3.x yet as part of OSX versions including El Capitan, 10.11.48 51 49 52 else … … 112 115 113 116 117 ifdef VBOX_PYTHON23_INC 118 # 119 # Python 2.3 version 120 # 121 DLLS += VBoxPython2_3 122 VBoxPython2_3_EXTENDS = VBoxPythonBase 123 VBoxPython2_3_EXTENDS_BY = appending 124 VBoxPython2_3_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin",OSX104,) 125 VBoxPython2_3_INCS = $(VBOX_PYTHON23_INC) 126 VBoxPython2_3_LIBS = $(VBOX_PYTHON23_LIB) 127 128 ifdef VBOX_WITH_32_ON_64_MAIN_API 129 DLLS += VBoxPython2_3_x86 130 VBoxPython2_3_x86_EXTENDS = VBoxPythonBase_x86 131 VBoxPython2_3_x86_EXTENDS_BY = appending 132 VBoxPython2_3_x86_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin",OSX104,-x86) 133 VBoxPython2_3_x86_INCS = $(VBOX_PYTHON23_INC) 134 VBoxPython2_3_x86_LIBS = $(VBOX_PYTHON23_LIB_X86) 135 endif 136 endif 137 138 ifdef VBOX_PYTHON24_INC 139 # 140 # Python 2.4 version 141 # 142 DLLS += VBoxPython2_4 143 VBoxPython2_4_EXTENDS = VBoxPythonBase 144 VBoxPython2_4_EXTENDS_BY = appending 145 VBoxPython2_4_INCS = $(VBOX_PYTHON24_INC) 146 VBoxPython2_4_LIBS = $(VBOX_PYTHON24_LIB) 147 148 ifdef VBOX_WITH_32_ON_64_MAIN_API 149 DLLS += VBoxPython2_4_x86 150 VBoxPython2_4_x86_EXTENDS = VBoxPythonBase_x86 151 VBoxPython2_4_x86_EXTENDS_BY = appending 152 VBoxPython2_4_x86_INCS = $(VBOX_PYTHON24_INC) 153 VBoxPython2_4_x86_LIBS = $(VBOX_PYTHON24_LIB_X86) 154 endif 155 endif 156 157 ifdef VBOX_PYTHON25_INC 158 # 159 # Python 2.5 version 160 # 161 DLLS += VBoxPython2_5 162 VBoxPython2_5_EXTENDS = VBoxPythonBase 163 VBoxPython2_5_EXTENDS_BY = appending 164 VBoxPython2_5_INCS = $(VBOX_PYTHON25_INC) 165 VBoxPython2_5_LIBS = $(VBOX_PYTHON25_LIB) 166 167 ifdef VBOX_WITH_32_ON_64_MAIN_API 168 DLLS += VBoxPython2_5_x86 169 VBoxPython2_5_x86_EXTENDS = VBoxPythonBase_x86 170 VBoxPython2_5_x86_EXTENDS_BY = appending 171 VBoxPython2_5_x86_INCS = $(VBOX_PYTHON25_INC) 172 VBoxPython2_5_x86_LIBS = $(VBOX_PYTHON25_LIB_X86) 173 endif 174 endif 175 114 176 ifdef VBOX_PYTHON26_INC 115 177 # … … 151 213 VBoxPython2_7_x86_INCS = $(VBOX_PYTHON27_INC) 152 214 VBoxPython2_7_x86_LIBS = $(VBOX_PYTHON27_LIB_X86) 153 endif154 endif155 156 ifdef VBOX_PYTHON31_INC157 #158 # Python 3.1 version159 #160 DLLS += VBoxPython3_1161 VBoxPython3_1_EXTENDS = VBoxPythonBase162 VBoxPython3_1_EXTENDS_BY = appending163 VBoxPython3_1_TEMPLATE = XPCOM164 VBoxPython3_1_INCS = $(VBOX_PYTHON31_INC)165 VBoxPython3_1_LIBS = $(VBOX_PYTHON31_LIB)166 167 ifdef VBOX_WITH_32_ON_64_MAIN_API168 DLLS += VBoxPython3_1_x86169 VBoxPython3_1_x86_EXTENDS = VBoxPythonBase_x86170 VBoxPython3_1_x86_EXTENDS_BY = appending171 VBoxPython3_1_x86_TEMPLATE = XPCOM172 VBoxPython3_1_x86_INCS = $(VBOX_PYTHON31_INC)173 VBoxPython3_1_x86_LIBS = $(VBOX_PYTHON31_LIB_X86)174 endif175 endif176 177 ifdef VBOX_PYTHON32_INC178 #179 # Python 3.2 version180 #181 DLLS += VBoxPython3_2182 VBoxPython3_2_EXTENDS = VBoxPythonBase183 VBoxPython3_2_EXTENDS_BY = appending184 VBoxPython3_2_TEMPLATE = XPCOM185 VBoxPython3_2_INCS = $(VBOX_PYTHON32_INC)186 VBoxPython3_2_LIBS = $(VBOX_PYTHON32_LIB)187 188 ifdef VBOX_WITH_32_ON_64_MAIN_API189 DLLS += VBoxPython3_2_x86190 VBoxPython3_2_x86_EXTENDS = VBoxPythonBase_x86191 VBoxPython3_2_x86_EXTENDS_BY = appending192 VBoxPython3_2_x86_TEMPLATE = XPCOM193 VBoxPython3_2_x86_INCS = $(VBOX_PYTHON32_INC)194 VBoxPython3_2_x86_LIBS = $(VBOX_PYTHON32_LIB_X86)195 endif196 endif197 198 ifdef VBOX_PYTHON33_INC199 #200 # Python 3.3 version201 #202 DLLS += VBoxPython3_3203 VBoxPython3_3_EXTENDS = VBoxPythonBase204 VBoxPython3_3_EXTENDS_BY = appending205 VBoxPython3_3_TEMPLATE = XPCOM206 VBoxPython3_3_INCS = $(VBOX_PYTHON33_INC)207 VBoxPython3_3_LIBS = $(VBOX_PYTHON33_LIB)208 209 ifdef VBOX_WITH_32_ON_64_MAIN_API210 DLLS += VBoxPython3_3_x86211 VBoxPython3_3_x86_EXTENDS = VBoxPythonBase_x86212 VBoxPython3_3_x86_EXTENDS_BY = appending213 VBoxPython3_3_x86_TEMPLATE = XPCOM214 VBoxPython3_3_x86_INCS = $(VBOX_PYTHON33_INC)215 VBoxPython3_3_x86_LIBS = $(VBOX_PYTHON33_LIB_X86)216 endif217 endif218 219 ifdef VBOX_PYTHON34_INC220 #221 # Python 3.4 version222 #223 DLLS += VBoxPython3_4224 VBoxPython3_4_EXTENDS = VBoxPythonBase225 VBoxPython3_4_EXTENDS_BY = appending226 VBoxPython3_4_TEMPLATE = XPCOM227 VBoxPython3_4_INCS = $(VBOX_PYTHON34_INC)228 VBoxPython3_4_LIBS = $(VBOX_PYTHON34_LIB)229 230 ifdef VBOX_WITH_32_ON_64_MAIN_API231 DLLS += VBoxPython3_4_x86232 VBoxPython3_4_x86_EXTENDS = VBoxPythonBase_x86233 VBoxPython3_4_x86_EXTENDS_BY = appending234 VBoxPython3_4_x86_TEMPLATE = XPCOM235 VBoxPython3_4_x86_INCS = $(VBOX_PYTHON34_INC)236 VBoxPython3_4_x86_LIBS = $(VBOX_PYTHON34_LIB_X86)237 endif238 endif239 240 ifdef VBOX_PYTHON35_INC241 #242 # Python 3.5 version243 #244 DLLS += VBoxPython3_5245 VBoxPython3_5_EXTENDS = VBoxPythonBase246 VBoxPython3_5_EXTENDS_BY = appending247 VBoxPython3_5_TEMPLATE = XPCOM248 VBoxPython3_5_INCS = $(VBOX_PYTHON35_INC)249 VBoxPython3_5_LIBS = $(VBOX_PYTHON35_LIB)250 251 ifdef VBOX_WITH_32_ON_64_MAIN_API252 DLLS += VBoxPython3_5_x86253 VBoxPython3_5_x86_EXTENDS = VBoxPythonBase_x86254 VBoxPython3_5_x86_EXTENDS_BY = appending255 VBoxPython3_5_x86_TEMPLATE = XPCOM256 VBoxPython3_5_x86_INCS = $(VBOX_PYTHON35_INC)257 VBoxPython3_5_x86_LIBS = $(VBOX_PYTHON35_LIB_X86)258 215 endif 259 216 endif -
trunk/src/libs/xpcom18a4/python/__init__.py
r59769 r59795 38 38 39 39 # The XPCOM (Cross Platform COM) package. 40 from __future__ import print_function 41 import sys 42 if sys.version_info[0] <= 2: 43 import exceptions 44 XPCOMBaseException = exceptions.Exception 45 else: 46 XPCOMBaseException = Exception 40 import exceptions 47 41 48 42 # A global "verbose" flag - currently used by the … … 54 48 # The standard XPCOM exception object. 55 49 # Instances of this class are raised by the XPCOM extension module. 56 class Exception( XPCOMBaseException):50 class Exception(exceptions.Exception): 57 51 def __init__(self, errno, message = None): 58 52 assert int(errno) == errno, "The errno param must be an integer" 59 53 self.errno = errno 60 54 self.msg = message 61 XPCOMBaseException.__init__(self, errno)55 exceptions.Exception.__init__(self, errno) 62 56 def __str__(self): 63 57 if not hr_map: 64 from .import nsError65 for name, val in list(nsError.__dict__.items()):58 import nsError 59 for name, val in nsError.__dict__.items(): 66 60 if type(val)==type(0): 67 61 hr_map[val] = name … … 86 80 def __init__(self, errno=None, *args, **kw): 87 81 if errno is None: 88 from .import nsError82 import nsError 89 83 errno = nsError.NS_ERROR_FAILURE 90 84 Exception.__init__(self, errno, *args, **kw) … … 104 98 pass 105 99 def write(self, msg): 106 import xpcom._xpcom as_xpcom100 import _xpcom 107 101 _xpcom.LogConsoleMessage(msg) 108 102 def close(self): … … 110 104 111 105 def setupLogging(): 112 import os 113 if sys.version_info[0] <= 2: 114 import threading, thread 106 import sys, os, threading, thread 115 107 hdlr = logging.StreamHandler(ConsoleServiceStream()) 116 108 fmt = logging.Formatter(logging.BASIC_FORMAT) … … 121 113 # Later versions of logging use an RLock, so we detect an "old" style 122 114 # handler and update its lock 123 if sys.version_info[0] <= 2: 124 if type(hdlr.lock) == thread.LockType: 125 hdlr.lock = threading.RLock() 115 if type(hdlr.lock) == thread.LockType: 116 hdlr.lock = threading.RLock() 126 117 127 118 logger.addHandler(hdlr) … … 135 126 # open without buffering so never pending output 136 127 stream = open(filename, "wU", 0) 137 except IOError as why: 138 print("pyxpcom failed to open log file '%s': %s" % (filename, why), file=sys.stderr) 128 except IOError, why: 129 print >> sys.stderr, "pyxpcom failed to open log file '%s': %s" \ 130 % (filename, why) 139 131 # stream remains default 140 132 141 133 hdlr = logging.StreamHandler(stream) 142 134 # see above - fix a deadlock problem on this handler too. 143 if sys.version_info[0] <= 2: 144 if type(hdlr.lock) == thread.LockType: 145 hdlr.lock = threading.RLock() 135 if type(hdlr.lock) == thread.LockType: 136 hdlr.lock = threading.RLock() 146 137 147 138 fmt = logging.Formatter(logging.BASIC_FORMAT) -
trunk/src/libs/xpcom18a4/python/client/__init__.py
r59769 r59795 37 37 38 38 import os 39 from types import MethodType 39 import new 40 40 import logging 41 41 from xpcom import xpt, COMException, nsError, logger … … 126 126 # Exec the code object 127 127 tempNameSpace = {} 128 exec (codeObject, globals(), tempNameSpace)128 exec codeObject in globals(), tempNameSpace 129 129 ret = tempNameSpace[name] 130 if iid not in interface_method_cache:130 if not interface_method_cache.has_key(iid): 131 131 interface_method_cache[iid] = {} 132 132 interface_method_cache[iid][name] = ret … … 153 153 if flags & FLAGS_TO_IGNORE == 0: 154 154 if flags & XPT_MD_SETTER: 155 param_flags = list([(x.param_flags,) + xpt.MakeReprForInvoke(x) for x in m.params])155 param_flags = map(lambda x: (x.param_flags,) + xpt.MakeReprForInvoke(x), m.params) 156 156 setters[m.name] = m.method_index, param_flags 157 157 elif flags & XPT_MD_GETTER: 158 param_flags = list([(x.param_flags,) + xpt.MakeReprForInvoke(x) for x in m.params])158 param_flags = map(lambda x: (x.param_flags,) + xpt.MakeReprForInvoke(x), m.params) 159 159 getters[m.name] = m.method_index, param_flags 160 160 else: … … 220 220 except COMException: 221 221 pass 222 raise ValueError ("This object does not support automatic numeric conversion to this type")222 raise ValueError, "This object does not support automatic numeric conversion to this type" 223 223 224 224 def __int__(self): … … 281 281 for nominated_iid in interface_infos: 282 282 # Interface may appear twice in the class info list, so check this here. 283 if no minated_iid not in self.__dict__['_interface_infos_']:283 if not self.__dict__['_interface_infos_'].has_key(nominated_iid): 284 284 # Just invoke our QI on the object 285 285 self.queryInterface(nominated_iid) … … 290 290 contractid_info_cache[real_cid] = contractid_info 291 291 else: 292 for key, val in list(contractid_info.items()):292 for key, val in contractid_info.items(): 293 293 self.__dict__[key].update(val) 294 294 … … 300 300 # rebuild the world for each new object. 301 301 iis = self.__dict__['_interface_infos_'] 302 assert iid not in iis, "Already remembered this interface!"302 assert not iis.has_key(iid), "Already remembered this interface!" 303 303 try: 304 304 method_infos, getters, setters, constants = BuildInterfaceInfo(iid) 305 except COMException aswhy:305 except COMException, why: 306 306 # Failing to build an interface info generally isn't a real 307 307 # problem - its probably just that the interface is non-scriptable. … … 314 314 iis[iid] = method_infos, getters, setters, constants 315 315 names = self.__dict__['_name_to_interface_iid_'] 316 for name in list(method_infos.keys()): names[name] = iid317 for name in list(getters.keys()): names[name] = iid318 for name in list(setters.keys()): names[name] = iid319 for name in list(constants.keys()): names[name] = iid316 for name in method_infos.keys(): names[name] = iid 317 for name in getters.keys(): names[name] = iid 318 for name in setters.keys(): names[name] = iid 319 for name in constants.keys(): names[name] = iid 320 320 321 321 def QueryInterface(self, iid): 322 if iid in self._interfaces_:323 assert iid_name in self._interface_names_, "_interfaces_ has the key, but _interface_names_ does not!"322 if self._interfaces_.has_key(iid): 323 assert self._interface_names_.has_key(iid.name), "_interfaces_ has the key, but _interface_names_ does not!" 324 324 return self 325 325 # Haven't seen this before - do a real QI. 326 if iid not in self._interface_infos_:326 if not self._interface_infos_.has_key(iid): 327 327 self._remember_interface_info(iid) 328 328 iface_info = self._interface_infos_[iid] … … 350 350 def __getattr__(self, attr): 351 351 if attr in _special_getattr_names: 352 raise AttributeError (attr)352 raise AttributeError, attr 353 353 # First allow the interface name to return the "raw" interface 354 354 interface = self.__dict__['_interface_names_'].get(attr, None) … … 375 375 # Some interfaces may provide this name via "native" support. 376 376 # Loop over all interfaces, and if found, cache it for next time. 377 for interface in list(self.__dict__['_interfaces_'].values()):377 for interface in self.__dict__['_interfaces_'].values(): 378 378 try: 379 379 ret = getattr(interface, attr) … … 382 382 except AttributeError: 383 383 pass 384 raise AttributeError ("XPCOM component '%s' has no attribute '%s'" % (self._object_name_, attr))384 raise AttributeError, "XPCOM component '%s' has no attribute '%s'" % (self._object_name_, attr) 385 385 386 386 def __setattr__(self, attr, val): … … 397 397 setattr(interface, attr, val) 398 398 return 399 raise AttributeError ("XPCOM component '%s' has no attribute '%s'" % (self._object_name_, attr))399 raise AttributeError, "XPCOM component '%s' has no attribute '%s'" % (self._object_name_, attr) 400 400 401 401 def _get_classinfo_repr_(self): … … 410 410 self.__dict__['_tried_classinfo_'] = 0 411 411 412 iface_names = list(self.__dict__['_interface_names_'].keys())412 iface_names = self.__dict__['_interface_names_'].keys() 413 413 try: 414 414 iface_names.remove("nsISupports") … … 436 436 self.__dict__.update(constants) 437 437 # We remember the constant names to prevent the user trying to assign to them! 438 self.__dict__['_constant_names_'] = list(constants.keys())438 self.__dict__['_constant_names_'] = constants.keys() 439 439 440 440 def __getattr__(self, attr): 441 441 # Allow the underlying interface to provide a better implementation if desired. 442 442 if attr in _special_getattr_names: 443 raise AttributeError (attr)443 raise AttributeError, attr 444 444 445 445 ret = getattr(self.__dict__['_comobj_'], attr, None) … … 449 449 unbound_method = self.__dict__['_methods_'].get(attr, None) 450 450 if unbound_method is not None: 451 return MethodType(unbound_method, self)451 return new.instancemethod(unbound_method, self, self.__class__) 452 452 453 453 getters = self.__dict__['_property_getters_'] … … 456 456 method_index, param_infos = info 457 457 if len(param_infos)!=1: # Only expecting a retval 458 raise RuntimeError ("Can't get properties with this many args!")458 raise RuntimeError, "Can't get properties with this many args!" 459 459 args = ( param_infos, () ) 460 460 return XPTC_InvokeByIndex(self._comobj_, method_index, args) … … 467 467 # Cache it locally 468 468 self.__dict__['_methods_'][attr] = unbound_method 469 return MethodType(unbound_method, self)470 471 raise AttributeError ("XPCOM component '%s' has no attribute '%s'" % (self._object_name_, attr))469 return new.instancemethod(unbound_method, self, self.__class__) 470 471 raise AttributeError, "XPCOM component '%s' has no attribute '%s'" % (self._object_name_, attr) 472 472 473 473 def __setattr__(self, attr, val): 474 474 # If we already have a __dict__ item of that name, and its not one of 475 475 # our constants, we just directly set it, and leave. 476 if attr in self.__dict__and attr not in self.__dict__['_constant_names_']:476 if self.__dict__.has_key(attr) and attr not in self.__dict__['_constant_names_']: 477 477 self.__dict__[attr] = val 478 478 return … … 481 481 info = setters.get(attr) 482 482 if info is None: 483 raise AttributeError ("XPCOM component '%s' can not set attribute '%s'" % (self._object_name_, attr))483 raise AttributeError, "XPCOM component '%s' can not set attribute '%s'" % (self._object_name_, attr) 484 484 method_index, param_infos = info 485 485 if len(param_infos)!=1: # Only expecting a single input val 486 raise RuntimeError ("Can't set properties with this many args!")486 raise RuntimeError, "Can't set properties with this many args!" 487 487 real_param_infos = ( param_infos, (val,) ) 488 488 return XPTC_InvokeByIndex(self._comobj_, method_index, real_param_infos) … … 527 527 try: 528 528 return Component(self._comobj_.QueryReferent(iid)._comobj_, iid) 529 except COMException asdetails:529 except COMException, details: 530 530 if details.errno != nsError.NS_ERROR_NULL_POINTER: 531 531 raise -
trunk/src/libs/xpcom18a4/python/components.py
r59769 r59795 37 37 38 38 # This module provides the JavaScript "components" interface 39 from . import xpt 40 import xpcom 41 import xpcom._xpcom as _xpcom 39 import xpt 40 import xpcom, _xpcom 42 41 import xpcom.client 43 42 import xpcom.server 44 45 StringTypes = [bytes, str] 43 import types 44 45 StringTypes = [types.StringType, types.UnicodeType] 46 46 47 47 def _get_good_iid(iid): … … 79 79 if self._dict_data is None: 80 80 self._dict_data = self._build_dict() 81 return list(self._dict_data.keys())81 return self._dict_data.keys() 82 82 def items(self): 83 83 if self._dict_data is None: 84 84 self._dict_data = self._build_dict() 85 return list(self._dict_data.items())85 return self._dict_data.items() 86 86 def values(self): 87 87 if self._dict_data is None: 88 88 self._dict_data = self._build_dict() 89 return list(self._dict_data.values())90 #def has_key(self, key):91 #if self._dict_data is None:92 #self._dict_data = self._build_dict()93 #return self._dict_data.has_key(key)89 return self._dict_data.values() 90 def has_key(self, key): 91 if self._dict_data is None: 92 self._dict_data = self._build_dict() 93 return self._dict_data.has_key(key) 94 94 95 95 def __len__(self): … … 99 99 100 100 def __getattr__(self, attr): 101 if self._dict_data is not None and attr in self._dict_data:101 if self._dict_data is not None and self._dict_data.has_key(attr): 102 102 return self._dict_data[attr] 103 103 return self._get_one(attr) 104 104 def __getitem__(self, item): 105 if self._dict_data is not None and item in self._dict_data:105 if self._dict_data is not None and self._dict_data.has_key(item): 106 106 return self._dict_data[item] 107 107 return self._get_one(item) … … 120 120 other_iid = getattr(other, "_iidobj_", other) 121 121 return cmp(this_iid, other_iid) 122 def __eq__(self, other):123 this_iid = self._iidobj_124 other_iid = getattr(other, "_iidobj_", other)125 return this_iid == other_iid126 122 def __hash__(self): 127 123 return hash(self._iidobj_) … … 129 125 return str(self._iidobj_) 130 126 def __getitem__(self, item): 131 raise TypeError ("components.interface objects are not subscriptable")127 raise TypeError, "components.interface objects are not subscriptable" 132 128 def __setitem__(self, item, value): 133 raise TypeError ("components.interface objects are not subscriptable")129 raise TypeError, "components.interface objects are not subscriptable" 134 130 def __setattr__(self, attr, value): 135 raise AttributeError ("Can not set attributes on components.Interface objects")131 raise AttributeError, "Can not set attributes on components.Interface objects" 136 132 def __getattr__(self, attr): 137 133 # Support constants as attributes. … … 143 139 c[c_ob.name] = c_ob.value 144 140 _constants_by_iid_map[self._iidobj_] = c 145 if attr in c:141 if c.has_key(attr): 146 142 return c[attr] 147 raise AttributeError ("'%s' interfaces do not define a constant '%s'" % (self.name, attr))143 raise AttributeError, "'%s' interfaces do not define a constant '%s'" % (self.name, attr) 148 144 149 145 … … 152 148 try: 153 149 item = interfaceInfoManager.GetInfoForName(name) 154 except xpcom.COMException aswhy:150 except xpcom.COMException, why: 155 151 # Present a better exception message, and give a more useful error code. 156 from .import nsError152 import nsError 157 153 raise xpcom.COMException(nsError.NS_ERROR_NO_INTERFACE, "The interface '%s' does not exist" % (name,)) 158 154 return _Interface(item.GetName(), item.GetIID()) … … 184 180 self.clsid = rc 185 181 return rc 186 raise AttributeError ("%s class has no attribute '%s'" % (self.contractid, attr))182 raise AttributeError, "%s class has no attribute '%s'" % (self.contractid, attr) 187 183 def createInstance(self, iid = None): 188 184 import xpcom.client 189 185 try: 190 186 return xpcom.client.Component(self.contractid, _get_good_iid(iid)) 191 except xpcom.COMException asdetails:192 from .import nsError187 except xpcom.COMException, details: 188 import nsError 193 189 # Handle "no such component" in a cleaner way for the user. 194 190 if details.errno == nsError.NS_ERROR_FACTORY_NOT_REGISTERED: … … 223 219 224 220 # The ID function 225 ID = _xpcom.I D221 ID = _xpcom.IID 226 222 227 223 # A helper to cleanup our namespace as xpcom shuts down. -
trunk/src/libs/xpcom18a4/python/file.py
r59769 r59795 156 156 self.close() 157 157 if mode != "r": 158 raise ValueError ("only 'r' mode supported")158 raise ValueError, "only 'r' mode supported'" 159 159 io_service = components.classes["@mozilla.org/network/io-service;1"] \ 160 160 .getService(components.interfaces.nsIIOService) … … 165 165 # Mozilla asserts and starts saying "NULL POINTER" if this is wrong! 166 166 if not url_ob.scheme: 167 raise ValueError ("The URI '%s' is invalid (no scheme)"167 raise ValueError, ("The URI '%s' is invalid (no scheme)" 168 168 % (url_ob.spec,)) 169 169 self.channel = io_service.newChannelFromURI(url_ob) … … 202 202 self.inputStream.init(self.fileIO) 203 203 else: 204 raise ValueError ("Unknown mode")204 raise ValueError, "Unknown mode" 205 205 206 206 def close(self): … … 226 226 got = got + file.read() 227 227 if got != expected: 228 raise RuntimeError ("Reading '%s' failed - got %d bytes, but expected %d bytes" % (file, len(got), len(expected)))228 raise RuntimeError, "Reading '%s' failed - got %d bytes, but expected %d bytes" % (file, len(got), len(expected)) 229 229 230 230 def _DoTestBufferRead(file, expected): … … 240 240 got = got + str(buffer[:num]) 241 241 if got != expected: 242 raise RuntimeError ("Reading '%s' failed - got %d bytes, but expected %d bytes" % (file, len(got), len(expected)))242 raise RuntimeError, "Reading '%s' failed - got %d bytes, but expected %d bytes" % (file, len(got), len(expected)) 243 243 244 244 def _TestLocalFile(): … … 266 266 # Open the same file again for writing - this should delete the old one. 267 267 if not os.path.isfile(fname): 268 raise RuntimeError ("The file '%s' does not exist, but we are explicitly testing create semantics when it does" % (fname,))268 raise RuntimeError, "The file '%s' does not exist, but we are explicitly testing create semantics when it does" % (fname,) 269 269 test_file = LocalFile(fname, "w") 270 270 test_file.write(data) … … 305 305 def _TestURI(url): 306 306 test_file = URIFile(url) 307 print ("Opened file is", test_file)307 print "Opened file is", test_file 308 308 got = test_file.read() 309 print ("Read %d bytes of data from %r" % (len(got), url))309 print "Read %d bytes of data from %r" % (len(got), url) 310 310 test_file.close() 311 311 … … 313 313 import sys 314 314 if len(sys.argv) < 2: 315 print ("No URL specified on command line - performing self-test")315 print "No URL specified on command line - performing self-test" 316 316 _TestAll() 317 317 else: -
trunk/src/libs/xpcom18a4/python/gen_python_deps.py
r59772 r59795 2 2 3 3 """ 4 Copyright (C) 2009-201 6Oracle Corporation4 Copyright (C) 2009-2013 Oracle Corporation 5 5 6 6 This file is part of VirtualBox Open Source Edition (OSE), as … … 14 14 15 15 import os,sys 16 from distutils.version import StrictVersion17 16 18 versions = ["2. 6", "2.7", "3.1", "3.2", "3.3", "3.4", "3.5"]17 versions = ["2.3", "2.4", "2.5", "2.6", "2.7",] 19 18 prefixes = ["/usr", "/usr/local", "/opt", "/opt/local"] 20 19 known = {} … … 42 41 43 42 def print_vars(vers, known, sep, bitness_magic): 44 print ("VBOX_PYTHON%s_INC=%s%s" %(vers, known[0], sep))43 print "VBOX_PYTHON%s_INC=%s%s" %(vers, known[0], sep) 45 44 if bitness_magic > 0: 46 print ("VBOX_PYTHON%s_LIB=%s%s" %(vers, known[2], sep))47 print ("VBOX_PYTHON%s_LIB_X86=%s%s" %(vers, known[1], sep))45 print "VBOX_PYTHON%s_LIB=%s%s" %(vers, known[2], sep) 46 print "VBOX_PYTHON%s_LIB_X86=%s%s" %(vers, known[1], sep) 48 47 else: 49 print ("VBOX_PYTHON%s_LIB=%s%s" %(vers, known[1], sep))48 print "VBOX_PYTHON%s_LIB=%s%s" %(vers, known[1], sep) 50 49 51 50 … … 92 91 93 92 for v in versions: 94 if StrictVersion(v) < StrictVersion('2.6'):95 continue96 93 for p in prefixes: 97 94 c = checkPair(p, v, dllpre, dllsuff, bitness_magic) … … 99 96 known[v] = c 100 97 break 101 keys = list(known.keys())98 keys = known.keys() 102 99 # we want default to be the lowest versioned Python 103 100 keys.sort() -
trunk/src/libs/xpcom18a4/python/primitives.py
r59769 r59795 35 35 better = _primitives_map[prin.type] 36 36 except KeyError: 37 raise ValueError ("This primitive type (%d) is not supported" % (prin.type,))37 raise ValueError, "This primitive type (%d) is not supported" % (prin.type,) 38 38 prin = prin.QueryInterface(better) 39 39 return prin.data -
trunk/src/libs/xpcom18a4/python/server/__init__.py
r59777 r59795 38 38 # The xpcom.server package. 39 39 40 from xpcom.server.policy import DefaultPolicy40 from policy import DefaultPolicy 41 41 from xpcom import _xpcom 42 42 … … 80 80 # Python! 81 81 def NS_GetModule( serviceManager, nsIFile ): 82 from .import loader82 import loader 83 83 iid = _xpcom.IID_nsIModule 84 84 return WrapObject(loader.MakePythonComponentLoaderModule(serviceManager, nsIFile), iid, bWrapClient = 0) 85 85 86 86 def _shutdown(): 87 from server.policy import _shutdown87 from policy import _shutdown 88 88 _shutdown() -
trunk/src/libs/xpcom18a4/python/server/loader.py
r59769 r59795 38 38 import xpcom 39 39 from xpcom import components, logger 40 from . import module 41 import glob 42 import os 40 41 import module 42 43 import glob, os, types 44 43 45 from xpcom.client import Component 44 46 … … 55 57 # For now, just run over all classes looking for likely candidates. 56 58 comps = [] 57 for name, object in list(py_module.__dict__.items()):59 for name, object in py_module.__dict__.items(): 58 60 try: 59 if (type(object) == type or issubclass(object, object)) and \61 if (type(object) == types.ClassType or issubclass(object, object)) and \ 60 62 _has_good_attr(object, "_com_interfaces_") and \ 61 63 _has_good_attr(object, "_reg_clsid_") and \ … … 146 148 self.autoRegisterComponent(when, entry) 147 149 # Handle some common user errors 148 except xpcom.COMException asdetails:150 except xpcom.COMException, details: 149 151 from xpcom import nsError 150 152 # If the interface name does not exist, suppress the traceback … … 154 156 else: 155 157 logger.exception("Registration of '%s' failed!", entry.leafName) 156 except SyntaxError asdetails:158 except SyntaxError, details: 157 159 # Syntax error in source file - no useful traceback here either. 158 160 logger.error("Registration of '%s' failed\n %s", … … 224 226 225 227 def MakePythonComponentLoaderModule(serviceManager, nsIFile): 226 from .import module228 import module 227 229 return module.Module( [PythonComponentLoader] ) -
trunk/src/libs/xpcom18a4/python/server/module.py
r59769 r59795 39 39 from xpcom import nsError 40 40 41 from .import factory41 import factory 42 42 43 43 import types … … 66 66 # void function. 67 67 fname = os.path.basename(location.path) 68 for klass in list(self.components.values()):68 for klass in self.components.values(): 69 69 reg_contractid = klass._reg_contractid_ 70 print ("Registering '%s' (%s)" % (reg_contractid, fname))70 print "Registering '%s' (%s)" % (reg_contractid, fname) 71 71 reg_desc = getattr(klass, "_reg_desc_", reg_contractid) 72 72 compMgr = compMgr.queryInterface(components.interfaces.nsIComponentRegistrar) … … 85 85 def unregisterSelf(self, compMgr, location, loaderStr): 86 86 # void function. 87 for klass in list(self.components.values()):87 for klass in self.components.values(): 88 88 ok = 1 89 89 try: … … 99 99 ok = 0 100 100 if ok: 101 print ("Successfully unregistered", klass.__name__)101 print "Successfully unregistered", klass.__name__ 102 102 else: 103 print ("Unregistration of", klass.__name__, "failed. (probably just not already registered)")103 print "Unregistration of", klass.__name__, "failed. (probably just not already registered)" 104 104 105 105 def canUnload(self, compMgr): -
trunk/src/libs/xpcom18a4/python/server/policy.py
r59769 r59795 43 43 import types 44 44 import logging 45 import sys46 45 47 46 … … 62 61 _supports_primitives_map_ = {} # Filled on first use. 63 62 64 _interface_sequence_types_ = tuple, list 65 if sys.version_info[0] <= 2: 66 _string_types_ = str, unicode 67 else: 68 _string_types_ = bytes, str 63 _interface_sequence_types_ = types.TupleType, types.ListType 64 _string_types_ = types.StringType, types.UnicodeType 69 65 XPTI_GetInterfaceInfoManager = _xpcom.XPTI_GetInterfaceInfoManager 70 66 … … 146 142 self._iid_ = iid 147 143 if ni is None: 148 raise ValueError ("The object '%r' can not be used as a COM object" % (instance,))144 raise ValueError, "The object '%r' can not be used as a COM object" % (instance,) 149 145 # This is really only a check for the user 150 146 if __debug__: … … 290 286 if logger.isEnabledFor(logging.DEBUG): 291 287 try: 292 raise exc_info[0] (exc_info[1]).with_traceback(exc_info[2])288 raise exc_info[0], exc_info[1], exc_info[2] 293 289 except: 294 290 logger.debug("'%s' raised COM Exception %s", … … 298 294 # As above, trick the logging module to handle Python 2.3 299 295 try: 300 raise exc_info[0] (exc_info[1]).with_traceback(exc_info[2])296 raise exc_info[0], exc_info[1], exc_info[2] 301 297 except: 302 298 logger.exception("Unhandled exception calling '%s'", func_name) … … 335 331 _supports_primitives_data_ = [ 336 332 ("nsISupportsCString", "__str__", str), 337 ("nsISupportsString", "__unicode__", str),338 ("nsISupportsPRUint64", "__long__", int),339 ("nsISupportsPRInt64", "__long__", int),333 ("nsISupportsString", "__unicode__", unicode), 334 ("nsISupportsPRUint64", "__long__", long), 335 ("nsISupportsPRInt64", "__long__", long), 340 336 ("nsISupportsPRUint32", "__int__", int), 341 337 ("nsISupportsPRInt32", "__int__", int), -
trunk/src/libs/xpcom18a4/python/src/ErrorUtils.cpp
r59769 r59795 111 111 c += "('%s', "; 112 112 // Pull a trick to ensure a valid string - use Python repr! 113 #if PY_MAJOR_VERSION <= 2114 113 PyObject *obMessage = PyString_FromString(pszMessageText); 115 #else116 PyObject *obMessage = PyUnicode_FromString(pszMessageText);117 #endif118 114 if (obMessage) { 119 115 PyObject *repr = PyObject_Repr(obMessage); 120 116 if (repr) { 121 #if PY_MAJOR_VERSION <= 2122 117 c += PyString_AsString(repr); 123 #else124 c += PyUnicode_AsUTF8(repr);125 #endif126 118 Py_DECREF(repr); 127 119 } … … 201 193 PyObject *temp = PyObject_Str(exc_typ); 202 194 if (temp) { 203 #if PY_MAJOR_VERSION <= 2204 195 streamout += PyString_AsString(temp); 205 #else206 streamout += PyUnicode_AsUTF8(temp);207 #endif208 196 Py_DECREF(temp); 209 197 } else … … 213 201 temp = PyObject_Str(exc_val); 214 202 if (temp) { 215 #if PY_MAJOR_VERSION <= 2216 203 streamout += PyString_AsString(temp); 217 #else218 streamout += PyUnicode_AsUTF8(temp);219 #endif220 204 Py_DECREF(temp); 221 205 } else … … 371 355 PyObject *obResult = NULL; 372 356 373 #if PY_MAJOR_VERSION <= 2374 357 /* Import the modules we need - cStringIO and traceback */ 375 358 modStringIO = PyImport_ImportModule("cStringIO"); … … 387 370 if (obStringIO==NULL) 388 371 TRACEBACK_FETCH_ERROR("cStringIO.StringIO() failed\n"); 389 #else390 /* Import the modules we need - io and traceback */391 modStringIO = PyImport_ImportModule("io");392 if (modStringIO==NULL)393 TRACEBACK_FETCH_ERROR("cant import io\n");394 395 modTB = PyImport_ImportModule("traceback");396 if (modTB==NULL)397 TRACEBACK_FETCH_ERROR("cant import traceback\n");398 /* Construct a StringIO object */399 obFuncStringIO = PyObject_GetAttrString(modStringIO, "StringIO");400 if (obFuncStringIO==NULL)401 TRACEBACK_FETCH_ERROR("cant find io.StringIO\n");402 obStringIO = PyObject_CallObject(obFuncStringIO, NULL);403 if (obStringIO==NULL)404 TRACEBACK_FETCH_ERROR("io.StringIO() failed\n");405 #endif406 372 /* Get the traceback.print_exception function, and call it. */ 407 373 obFuncTB = PyObject_GetAttrString(modTB, "print_tb"); … … 430 396 431 397 /* And it should be a string all ready to go - duplicate it. */ 432 #if PY_MAJOR_VERSION <= 2433 398 if (!PyString_Check(obResult)) 434 #else435 if (!PyUnicode_Check(obResult))436 #endif437 399 TRACEBACK_FETCH_ERROR("getvalue() did not return a string\n"); 438 400 439 401 { // a temp scope so I can use temp locals. 440 #if PY_MAJOR_VERSION <= 2441 402 char *tempResult = PyString_AsString(obResult); 442 #else443 char *tempResult = PyUnicode_AsUTF8(obResult);444 #endif445 403 result = (char *)PyMem_Malloc(strlen(tempResult)+1); 446 404 if (result==NULL) -
trunk/src/libs/xpcom18a4/python/src/PyGBase.cpp
r59769 r59795 67 67 PRBool CheckDefaultGateway(PyObject *real_inst, REFNSIID iid, nsISupports **ret_gateway); 68 68 69 /*static*/ nsresult 69 /*static*/ nsresult 70 70 PyG_Base::CreateNew(PyObject *pPyInstance, const nsIID &iid, void **ppResult) 71 71 { … … 115 115 } 116 116 else 117 #if PY_MAJOR_VERSION <= 2118 117 szRepr = PyString_AsString(r); 119 #else120 szRepr = PyUnicode_AsUTF8(r);121 #endif122 118 if (szRepr==NULL) szRepr = ""; 123 119 int reprOffset = *szRepr=='<' ? 1 : 0; … … 189 185 if (iid.Equals(NS_GET_IID(nsISupportsWeakReference))) 190 186 return (nsISupportsWeakReference *)this; 191 if (iid.Equals(NS_GET_IID(nsIInternalPython))) 187 if (iid.Equals(NS_GET_IID(nsIInternalPython))) 192 188 return (nsISupports *)(nsIInternalPython *)this; 193 189 return NULL; … … 196 192 // Call back into Python, passing a Python instance, and get back 197 193 // an interface object that wraps the instance. 198 /*static*/ PRBool 194 /*static*/ PRBool 199 195 PyG_Base::AutoWrapPythonInstance(PyObject *ob, const nsIID &iid, nsISupports **ppret) 200 196 { … … 249 245 // the object to actually use as the gateway parameter for this interface. 250 246 // For example, it is expected that the policy will wrap the interface 251 // object in one of the xpcom.client.Interface objects, allowing 247 // object in one of the xpcom.client.Interface objects, allowing 252 248 // natural usage of the interface from Python clients. 253 249 // Note that piid will usually be NULL - this is because the runtime … … 260 256 // so at least the user can simply QI the object. 261 257 PyObject * 262 PyG_Base::MakeInterfaceParam(nsISupports *pis, 263 const nsIID *piid, 258 PyG_Base::MakeInterfaceParam(nsISupports *pis, 259 const nsIID *piid, 264 260 int methodIndex /* = -1 */, 265 const XPTParamDescriptor *d /* = NULL */, 261 const XPTParamDescriptor *d /* = NULL */, 266 262 int paramIndex /* = -1 */) 267 263 { … … 306 302 goto done; 307 303 308 result = PyObject_CallMethod(m_pPyObject, 304 result = PyObject_CallMethod(m_pPyObject, 309 305 (char*)"_MakeInterfaceParam_", 310 306 (char*)"OOiOi", … … 355 351 return NS_OK; 356 352 } 357 // If we have a "base object", then we need to delegate _every_ remaining 353 // If we have a "base object", then we need to delegate _every_ remaining 358 354 // QI to it. 359 355 if (m_pBaseObject != NULL) … … 378 374 379 375 PyObject *result = PyObject_CallMethod(m_pPyObject, (char*)"_QueryInterface_", 380 (char*)"OO", 376 (char*)"OO", 381 377 this_interface_ob, ob); 382 378 Py_DECREF(ob); … … 466 462 if (PyErr_Occurred()) { 467 463 // The error handling - fairly involved, but worth it as 468 // good error reporting is critical for users to know WTF 464 // good error reporting is critical for users to know WTF 469 465 // is going on - especially with TypeErrors etc in their 470 466 // return values (ie, after the Python code has successfully 471 467 // exited, but we encountered errors unpacking their 472 // result values for the COM caller - there is literally no 468 // result values for the COM caller - there is literally no 473 469 // way to catch these exceptions from Python code, as their 474 470 // is no Python function directly on the call-stack) … … 485 481 PyErr_Fetch(&exc_typ, &exc_val, &exc_tb); 486 482 487 PyObject *err_result = PyObject_CallMethod(m_pPyObject, 483 PyObject *err_result = PyObject_CallMethod(m_pPyObject, 488 484 (char*)"_GatewayException_", 489 485 (char*)"z(OOO)", … … 645 641 ob_ret = PyObject_GetAttrString(real_ob, (char *)szPropertyName); 646 642 if (ob_ret==NULL) { 647 PyErr_Format(PyExc_AttributeError, 648 "The object does not have a 'get_%s' function, or a '%s attribute.", 643 PyErr_Format(PyExc_AttributeError, 644 "The object does not have a 'get_%s' function, or a '%s attribute.", 649 645 szPropertyName, szPropertyName); 650 646 } else { … … 699 695 ret = NS_OK; 700 696 else { 701 PyErr_Format(PyExc_AttributeError, 702 "The object does not have a 'set_%s' function, or a '%s attribute.", 697 PyErr_Format(PyExc_AttributeError, 698 "The object does not have a 'set_%s' function, or a '%s attribute.", 703 699 szPropertyName, szPropertyName); 704 700 } … … 741 737 first thing we do is see if it has been auto-wrapped before. 742 738 743 If not, we create a new wrapper, then make a COM weak reference 739 If not, we create a new wrapper, then make a COM weak reference 744 740 to that wrapper, and store it directly back into the instance 745 741 we are auto-wrapping! The use of a weak-reference prevents … … 765 761 PRBool ok = PR_TRUE; 766 762 nsCOMPtr<nsIWeakReference> pWeakRef; 767 ok = NS_SUCCEEDED(Py_nsISupports::InterfaceFromPyObject(ob_existing_weak, 768 NS_GET_IID(nsIWeakReference), 763 ok = NS_SUCCEEDED(Py_nsISupports::InterfaceFromPyObject(ob_existing_weak, 764 NS_GET_IID(nsIWeakReference), 769 765 getter_AddRefs(pWeakRef), 770 766 PR_FALSE)); … … 795 791 PRBool ok = PR_TRUE; 796 792 nsCOMPtr<nsIWeakReference> pWeakRef; 797 ok = NS_SUCCEEDED(Py_nsISupports::InterfaceFromPyObject(ob_existing_weak, 798 NS_GET_IID(nsIWeakReference), 799 getter_AddRefs(pWeakRef), 793 ok = NS_SUCCEEDED(Py_nsISupports::InterfaceFromPyObject(ob_existing_weak, 794 NS_GET_IID(nsIWeakReference), 795 getter_AddRefs(pWeakRef), 800 796 PR_FALSE)); 801 797 Py_DECREF(ob_existing_weak); … … 831 827 swr->GetWeakReference( getter_AddRefs(pWeakReference) ); 832 828 if (pWeakReference) { 833 PyObject *ob_new_weak = Py_nsISupports::PyObjectFromInterface(pWeakReference, 829 PyObject *ob_new_weak = Py_nsISupports::PyObjectFromInterface(pWeakReference, 834 830 NS_GET_IID(nsIWeakReference), 835 831 PR_FALSE ); /* bMakeNicePyObject */ -
trunk/src/libs/xpcom18a4/python/src/PyIClassInfo.cpp
r59769 r59795 107 107 { 108 108 if (v) 109 #if PY_MAJOR_VERSION <= 2110 109 return PyString_FromString(v); 111 #else112 return PyUnicode_FromString(v);113 #endif114 110 Py_INCREF(Py_None); 115 111 return Py_None; … … 171 167 } 172 168 173 struct PyMethodDef 169 struct PyMethodDef 174 170 PyMethods_IClassInfo[] = 175 171 { -
trunk/src/libs/xpcom18a4/python/src/PyIComponentManagerObsolete.cpp
r59769 r59795 133 133 return PyXPCOM_BuildPyException(r); 134 134 135 #if PY_MAJOR_VERSION <= 2136 135 PyObject *ob_pid = PyString_FromString(ret_pid); 137 136 PyObject *ob_class = PyString_FromString(ret_class); 138 #else139 PyObject *ob_pid = PyUnicode_FromString(ret_pid);140 PyObject *ob_class = PyUnicode_FromString(ret_class);141 #endif142 137 PyObject *ret = Py_BuildValue("OO", ob_pid, ob_class); 143 138 nsMemory::Free(ret_pid); … … 188 183 } 189 184 190 struct PyMethodDef 185 struct PyMethodDef 191 186 PyMethods_IComponentManagerObsolete[] = 192 187 { -
trunk/src/libs/xpcom18a4/python/src/PyIID.cpp
r59769 r59795 60 60 PyObject *obBuf; 61 61 if ( PyArg_ParseTuple(args, "O", &obBuf)) { 62 #if PY_MAJOR_VERSION <= 263 62 if (PyBuffer_Check(obBuf)) { 64 63 PyBufferProcs *pb = NULL; … … 66 65 void *buf = NULL; 67 66 int size = (*pb->bf_getreadbuffer)(obBuf, 0, &buf); 68 #else69 if (PyObject_CheckBuffer(obBuf)) {70 void *buf = NULL;71 Py_buffer view;72 if (PyObject_GetBuffer(obBuf, &view, PyBUF_CONTIG_RO) != 0)73 {74 PyErr_Format(PyExc_ValueError, "Could not get contiguous buffer from object");75 return NULL;76 }77 Py_ssize_t size = view.len;78 buf = view.buf;79 #endif80 67 if (size != sizeof(nsIID) || buf==NULL) { 81 #if PY_MAJOR_VERSION >= 382 PyBuffer_Release(&view);83 #endif84 68 #ifdef VBOX 85 PyErr_Format(PyExc_ValueError, "A buffer object to be converted to an IID must be exactly %d bytes long", (int)sizeof(nsIID));69 PyErr_Format(PyExc_ValueError, "A buffer object to be converted to an IID must be exactly %d bytes long", (int)sizeof(nsIID)); 86 70 #else 87 71 PyErr_Format(PyExc_ValueError, "A buffer object to be converted to an IID must be exactly %d bytes long", sizeof(nsIID)); … … 101 85 ptr += sizeof(PRUint8); 102 86 } 103 #if PY_MAJOR_VERSION >= 3104 PyBuffer_Release(&view);105 #endif106 87 return new Py_nsIID(iid); 107 88 } … … 126 107 return PR_FALSE; 127 108 } 128 #if PY_MAJOR_VERSION <= 2129 109 if (PyString_Check(ob)) { 130 110 ok = iid.Parse(PyString_AsString(ob)); 131 #else132 if (PyUnicode_Check(ob)) {133 ok = iid.Parse(PyUnicode_AsUTF8(ob));134 #endif135 111 if (!ok) { 136 112 PyXPCOM_BuildPyException(NS_ERROR_ILLEGAL_VALUE); … … 168 144 PyTypeObject Py_nsIID::type = 169 145 { 170 PyVarObject_HEAD_INIT(&PyType_Type, 0) 146 PyObject_HEAD_INIT(&PyType_Type) 147 0, 171 148 "IID", 172 149 sizeof(Py_nsIID), … … 176 153 PyTypeMethod_getattr, /* tp_getattr */ 177 154 0, /* tp_setattr */ 178 #if PY_MAJOR_VERSION <= 2179 155 PyTypeMethod_compare, /* tp_compare */ 180 #else181 0, /* reserved */182 #endif183 156 PyTypeMethod_repr, /* tp_repr */ 184 157 0, /* tp_as_number */ … … 188 161 0, /* tp_call */ 189 162 PyTypeMethod_str, /* tp_str */ 190 0, /* tp_getattro */191 0, /* tp_setattro */192 0, /* tp_as_buffer */193 0, /* tp_flags */194 0, /* tp_doc */195 0, /* tp_traverse */196 0, /* tp_clear */197 PyTypeMethod_richcompare, /* tp_richcompare */198 0, /* tp_weaklistoffset */199 0, /* tp_iter */200 0, /* tp_iternext */201 0, /* tp_methods */202 0, /* tp_members */203 0, /* tp_getset */204 0, /* tp_base */205 163 }; 206 164 … … 226 184 PyObject *ret; 227 185 if (iid_repr != nsnull) { 228 #if PY_MAJOR_VERSION <= 2229 186 ret = PyString_FromString(iid_repr); 230 #else231 ret = PyUnicode_FromString(iid_repr);232 #endif233 187 nsMemory::Free(iid_repr); 234 188 } else 235 #if PY_MAJOR_VERSION <= 2236 189 ret = PyString_FromString("<cant get IID info!>"); 237 #else238 ret = PyUnicode_FromString("<cant get IID info!>");239 #endif240 190 return ret; 241 191 } … … 243 193 } 244 194 245 #if PY_MAJOR_VERSION <= 2246 195 /* static */ int 247 196 Py_nsIID::PyTypeMethod_compare(PyObject *self, PyObject *other) … … 252 201 return rc == 0 ? 0 : (rc < 0 ? -1 : 1); 253 202 } 254 #endif255 256 /* static */ PyObject *257 Py_nsIID::PyTypeMethod_richcompare(PyObject *self, PyObject *other, int op)258 {259 PyObject *result = NULL;260 Py_nsIID *s_iid = (Py_nsIID *)self;261 Py_nsIID *o_iid = (Py_nsIID *)other;262 int rc = memcmp(&s_iid->m_iid, &o_iid->m_iid, sizeof(s_iid->m_iid));263 switch (op)264 {265 case Py_LT:266 result = rc < 0 ? Py_True : Py_False;267 break;268 case Py_LE:269 result = rc <= 0 ? Py_True : Py_False;270 break;271 case Py_EQ:272 result = rc == 0 ? Py_True : Py_False;273 break;274 case Py_NE:275 result = rc != 0 ? Py_True : Py_False;276 break;277 case Py_GT:278 result = rc > 0 ? Py_True : Py_False;279 break;280 case Py_GE:281 result = rc >= 0 ? Py_True : Py_False;282 break;283 }284 Py_XINCREF(result);285 return result;286 }287 203 288 204 /* static */ PyObject * … … 293 209 char *sziid = s_iid->m_iid.ToString(); 294 210 #ifdef VBOX 295 snprintf(buf, sizeof(buf), "_xpcom.I D('%s')", sziid);211 snprintf(buf, sizeof(buf), "_xpcom.IID('%s')", sziid); 296 212 #else 297 213 sprintf(buf, "_xpcom.IID('%s')", sziid); 298 214 #endif 299 215 nsMemory::Free(sziid); 300 #if PY_MAJOR_VERSION <= 2301 216 return PyString_FromString(buf); 302 #else303 return PyUnicode_FromString(buf);304 #endif305 217 } 306 218 … … 310 222 Py_nsIID *s_iid = (Py_nsIID *)self; 311 223 char *sziid = s_iid->m_iid.ToString(); 312 #if PY_MAJOR_VERSION <= 2313 224 PyObject *ret = PyString_FromString(sziid); 314 #else315 PyObject *ret = PyUnicode_FromString(sziid);316 #endif317 225 nsMemory::Free(sziid); 318 226 return ret; -
trunk/src/libs/xpcom18a4/python/src/PyIInputStream.cpp
r59769 r59795 109 109 } 110 110 if (n==0) { // mozilla will assert if we alloc zero bytes. 111 #if PY_MAJOR_VERSION <= 2112 111 return PyBuffer_New(0); 113 #else114 return PyBytes_FromString("");115 #endif116 112 } 117 113 char *buf = (char *)nsMemory::Alloc(n); … … 127 123 PyObject *rc = NULL; 128 124 if ( NS_SUCCEEDED(r) ) { 129 #if PY_MAJOR_VERSION <= 2130 125 rc = PyBuffer_New(nread); 131 126 if (rc != NULL) { … … 151 146 memcpy(ob_buf, buf, nread); 152 147 } 153 #else154 rc = PyBytes_FromStringAndSize(buf, nread);155 #endif156 148 } else 157 149 PyXPCOM_BuildPyException(r); -
trunk/src/libs/xpcom18a4/python/src/PyIInterfaceInfo.cpp
r59769 r59795 75 75 if ( NS_FAILED(r) ) 76 76 return PyXPCOM_BuildPyException(r); 77 #if PY_MAJOR_VERSION <= 278 77 PyObject *ret = PyString_FromString(name); 79 #else80 PyObject *ret = PyUnicode_FromString(name);81 #endif82 78 nsMemory::Free(name); 83 79 return ret; … … 397 393 } 398 394 399 struct PyMethodDef 395 struct PyMethodDef 400 396 PyMethods_IInterfaceInfo[] = 401 397 { -
trunk/src/libs/xpcom18a4/python/src/PyIInterfaceInfoManager.cpp
r59769 r59795 135 135 return PyXPCOM_BuildPyException(r); 136 136 137 #if PY_MAJOR_VERSION <= 2138 137 PyObject *ret = PyString_FromString(ret_name); 139 #else140 PyObject *ret = PyUnicode_FromString(ret_name);141 #endif142 138 nsMemory::Free(ret_name); 143 139 return ret; … … 190 186 // void autoRegisterInterfaces(); 191 187 192 PyMethodDef 188 PyMethodDef 193 189 PyMethods_IInterfaceInfoManager[] = 194 190 { -
trunk/src/libs/xpcom18a4/python/src/PyISupports.cpp
r59769 r59795 218 218 } 219 219 PyXPCOM_TypeObject *this_type = (PyXPCOM_TypeObject *)ob_type; 220 #if PY_MAJOR_VERSION <= 2221 220 return Py_FindMethodInChain(&this_type->chain, this, (char *)name); 222 #else223 PyMethodChain *chain = &this_type->chain;224 if (name[0] == '_' && name[1] == '_')225 {226 if (!strcmp(name, "__doc__"))227 {228 const char *doc = ob_type->tp_doc;229 if (doc)230 #if PY_MAJOR_VERSION <= 2231 return PyString_FromString(doc);232 #else233 return PyUnicode_FromString(doc);234 #endif235 }236 }237 while (chain)238 {239 PyMethodDef *ml = chain->methods;240 for (; ml->ml_name; ml++)241 {242 if (!strcmp(name, ml->ml_name))243 return PyCFunction_New(ml, this);244 }245 chain = chain->link;246 }247 PyErr_SetString(PyExc_AttributeError, name);248 return NULL;249 #endif250 221 } 251 222 -
trunk/src/libs/xpcom18a4/python/src/PyIVariant.cpp
r59769 r59795 62 62 } 63 63 static PyObject *MyChar( char c) { 64 #if PY_MAJOR_VERSION <= 265 64 return PyString_FromStringAndSize(&c, 1); 66 #else67 return PyUnicode_FromStringAndSize(&c, 1);68 #endif69 65 } 70 66 static PyObject *MyUChar( PRUnichar c) { … … 127 123 GET_SIMPLE(nsIID, GetAsID, Py_nsIID::PyObjectFromIID) 128 124 129 #if PY_MAJOR_VERSION <= 2130 125 GET_ALLOCATED(char *, GetAsString, PyString_FromString, nsMemory::Free) 131 #else132 GET_ALLOCATED(char *, GetAsString, PyUnicode_FromString, nsMemory::Free)133 #endif134 126 GET_ALLOCATED(PRUnichar *, GetAsWString, MyUnicode, nsMemory::Free) 135 #if PY_MAJOR_VERSION <= 2136 127 GET_ALLOCATED_SIZE(char *, GetAsStringWithSize, PyString_FromStringAndSize, nsMemory::Free) 137 #else138 GET_ALLOCATED_SIZE(char *, GetAsStringWithSize, PyUnicode_FromStringAndSize, nsMemory::Free)139 #endif140 128 GET_ALLOCATED_SIZE(PRUnichar *, GetAsWStringWithSize, PyObject_FromNSString, nsMemory::Free) 141 129 … … 178 166 } 179 167 180 struct PyMethodDef 168 struct PyMethodDef 181 169 PyMethods_IVariant[] = 182 170 { -
trunk/src/libs/xpcom18a4/python/src/PyXPCOM.h
r59769 r59795 133 133 # endif 134 134 135 # if PY_MAJOR_VERSION >= 3136 # define PyInt_FromLong(l) PyLong_FromLong(l)137 # define PyInt_Check(o) PyLong_Check(o)138 # define PyInt_AsLong(o) PyLong_AsLong(o)139 # define PyNumber_Int(o) PyNumber_Long(o)140 # ifndef PyUnicode_AsUTF8141 # define PyUnicode_AsUTF8(o) _PyUnicode_AsString(o)142 # endif143 # ifndef PyUnicode_AsUTF8AndSize144 # define PyUnicode_AsUTF8AndSize(o,s) _PyUnicode_AsStringAndSize(o,s)145 # endif146 typedef struct PyMethodChain147 {148 PyMethodDef *methods;149 struct PyMethodChain *link;150 } PyMethodChain;151 # endif152 153 135 #endif /* VBOX_PYXPCOM */ 154 136 … … 286 268 static int Py_setattr(PyObject *op, char *name, PyObject *v); 287 269 static int Py_cmp(PyObject *ob1, PyObject *ob2); 288 static PyObject *Py_richcmp(PyObject *ob1, PyObject *ob2, int op);289 270 static long Py_hash(PyObject *self); 290 271 }; … … 438 419 /* Python support */ 439 420 static PyObject *PyTypeMethod_getattr(PyObject *self, char *name); 440 #if PY_MAJOR_VERSION <= 2441 421 static int PyTypeMethod_compare(PyObject *self, PyObject *ob); 442 #endif443 static PyObject *PyTypeMethod_richcompare(PyObject *self, PyObject *ob, int op);444 422 static PyObject *PyTypeMethod_repr(PyObject *self); 445 423 static long PyTypeMethod_hash(PyObject *self); -
trunk/src/libs/xpcom18a4/python/src/Pyxpt_info.cpp
r59769 r59795 55 55 } 56 56 // build an object using the same format as a TypeDescriptor. 57 return Py_BuildValue("bzzz", 57 return Py_BuildValue("bzzz", 58 58 d->flags, 59 59 NULL, NULL, NULL); … … 66 66 return Py_None; 67 67 } 68 return Py_BuildValue("bbbh", 68 return Py_BuildValue("bbbh", 69 69 d->prefix.flags, 70 70 d->argnum, … … 150 150 break; 151 151 case TD_CHAR: 152 #if PY_MAJOR_VERSION <= 2153 152 v = PyString_FromStringAndSize(&c->value.ch, 1); 154 #else155 v = PyUnicode_FromStringAndSize(&c->value.ch, 1);156 #endif157 153 break; 158 154 case TD_WCHAR: 159 155 v = PyObject_FromNSString((PRUnichar *)&c->value.wch, 1); 160 156 break; 161 // TD_VOID = 13, 157 // TD_VOID = 13, 162 158 case TD_PNSIID: 163 159 v = Py_nsIID::PyObjectFromIID(*c->value.iid); … … 165 161 // TD_DOMSTRING = 15, 166 162 case TD_PSTRING: 167 #if PY_MAJOR_VERSION <= 2168 163 v = PyString_FromString(c->value.str); 169 #else170 v = PyUnicode_FromString(c->value.str);171 #endif172 164 break; 173 165 case TD_PWSTRING: … … 183 175 // TD_ASTRING = 25 184 176 default: 185 #if PY_MAJOR_VERSION <= 2186 177 v = PyString_FromString("Unknown type code!!"); 187 #else188 v = PyUnicode_FromString("Unknown type code!!");189 #endif190 178 break; 191 179 -
trunk/src/libs/xpcom18a4/python/src/TypeObject.cpp
r59769 r59795 53 53 54 54 static PyTypeObject PyInterfaceType_Type = { 55 PyVarObject_HEAD_INIT(&PyType_Type, 0) 55 PyObject_HEAD_INIT(&PyType_Type) 56 0, /* Number of items for varobject */ 56 57 "interface-type", /* Name of this type */ 57 58 sizeof(PyTypeObject), /* Basic object size */ … … 79 80 PyXPCOM_TypeObject::IsType(PyTypeObject *t) 80 81 { 81 #if PY_MAJOR_VERSION <= 282 82 return t->ob_type == &PyInterfaceType_Type; 83 #else84 return Py_TYPE(t) == &PyInterfaceType_Type;85 #endif86 83 } 87 84 … … 125 122 } 126 123 127 /*static*/PyObject *128 PyXPCOM_TypeObject::Py_richcmp(PyObject *self, PyObject *other, int op)129 {130 PyObject *result = NULL;131 int rc = Py_cmp(self, other);132 switch (op)133 {134 case Py_LT:135 result = rc < 0 ? Py_True : Py_False;136 break;137 case Py_LE:138 result = rc <= 0 ? Py_True : Py_False;139 break;140 case Py_EQ:141 result = rc == 0 ? Py_True : Py_False;142 break;143 case Py_NE:144 result = rc != 0 ? Py_True : Py_False;145 break;146 case Py_GT:147 result = rc > 0 ? Py_True : Py_False;148 break;149 case Py_GE:150 result = rc >= 0 ? Py_True : Py_False;151 break;152 }153 Py_XINCREF(result);154 return result;155 }156 157 124 // @pymethod int|Py_nsISupports|__hash__|Implement a hash-code for the XPCOM object using XPCOM identity rules. 158 125 /*static*/long PyXPCOM_TypeObject::Py_hash(PyObject *self) … … 185 152 char buf[512]; 186 153 #ifdef VBOX 187 snprintf(buf, sizeof(buf), "<XPCOM object (%s) at %p/%p>",154 snprintf(buf, sizeof(buf), "<XPCOM object (%s) at 0x%p/0x%p>", 188 155 iid_repr, (void *)self, (void *)pis->m_obj.get()); 189 156 #else … … 192 159 #endif 193 160 nsMemory::Free(iid_repr); 194 #if PY_MAJOR_VERSION <= 2195 161 return PyString_FromString(buf); 196 #else197 return PyUnicode_FromString(buf);198 #endif199 162 } 200 163 … … 210 173 if (NS_SUCCEEDED(rv)) 211 174 rv = ss->ToString(&val); 212 } // end-scope 175 } // end-scope 213 176 Py_END_ALLOW_THREADS; 214 177 PyObject *ret; … … 216 179 ret = Py_repr(self); 217 180 else 218 #if PY_MAJOR_VERSION <= 2219 181 ret = PyString_FromString(val); 220 #else221 ret = PyUnicode_FromString(val);222 #endif223 182 if (val) nsMemory::Free(val); 224 183 return ret; … … 234 193 { 235 194 static const PyTypeObject type_template = { 236 PyVarObject_HEAD_INIT(&PyInterfaceType_Type, 0) 195 PyObject_HEAD_INIT(&PyInterfaceType_Type) 196 0, /*ob_size*/ 237 197 "XPCOMTypeTemplate", /*tp_name*/ 238 sizeof(Py_nsISupports), 198 sizeof(Py_nsISupports), /*tp_basicsize*/ 239 199 0, /*tp_itemsize*/ 240 200 Py_dealloc, /* tp_dealloc */ … … 242 202 Py_getattr, /* tp_getattr */ 243 203 Py_setattr, /* tp_setattr */ 244 #if PY_MAJOR_VERSION <= 2245 204 Py_cmp, /* tp_compare */ 246 #else247 0, /* reserved */248 #endif249 205 Py_repr, /* tp_repr */ 250 0, /* tp_as_number*/206 0, /* tp_as_number*/ 251 207 0, /* tp_as_sequence */ 252 208 0, /* tp_as_mapping */ … … 255 211 Py_str, /* tp_str */ 256 212 0, /* tp_getattro */ 257 0, /* 213 0, /*tp_setattro */ 258 214 0, /* tp_as_buffer */ 259 215 0, /* tp_flags */ … … 261 217 0, /* tp_traverse */ 262 218 0, /* tp_clear */ 263 Py_richcmp,/* tp_richcompare */219 0, /* tp_richcompare */ 264 220 0, /* tp_weaklistoffset */ 265 221 0, /* tp_iter */ -
trunk/src/libs/xpcom18a4/python/src/VariantUtils.cpp
r59769 r59795 84 84 PRUint32 size; 85 85 PyObject *s; 86 void *src;87 86 PRUnichar *dest; 88 87 … … 90 89 if (!s) 91 90 return -1; 92 // Drop the UTF-16 byte order mark at the beginning of93 // the string. (See the docs on PyUnicode_AsUTF16String.)94 // Some Mozilla libraries don't like the mark.95 #if PY_MAJOR_VERSION <= 296 91 size = (PyString_GET_SIZE(s) - 2) / sizeof(PRUnichar); 97 src = PyString_AS_STRING(s) + 2;98 #else99 if (!PyBytes_Check(obj))100 {101 PyErr_SetString(PyExc_TypeError, "internal error in PyXPCOM, parameter must be a bytes object");102 return -1;103 }104 size = (PyBytes_GET_SIZE(obj) - 2) / sizeof(PRUnichar);105 src = PyBytes_AS_STRING(obj) + 2;106 #endif107 92 dest = (PRUnichar *)nsMemory::Alloc(sizeof(PRUnichar) * (size + 1)); 108 93 if (!dest) { … … 111 96 return -1; 112 97 } 113 memcpy(dest, src, sizeof(PRUnichar) * size); 98 // Drop the UTF-16 byte order mark at the beginning of 99 // the string. (See the docs on PyUnicode_AsUTF16String.) 100 // Some Mozilla libraries don't like the mark. 101 memcpy(dest, PyString_AS_STRING(s) + 2, sizeof(PRUnichar) * size); 114 102 Py_DECREF(s); 115 103 dest[size] = 0; … … 128 116 } else { 129 117 if (bAssumeUTF8) { 130 131 118 const nsPromiseFlatCString& temp = PromiseFlatCString(s); 119 ret = PyUnicode_DecodeUTF8(temp.get(), temp.Length(), NULL); 132 120 } else { 133 #if PY_MAJOR_VERSION <= 2134 121 ret = PyString_FromStringAndSize(NULL, s.Length()); 135 #else136 ret = PyUnicode_FromStringAndSize(NULL, s.Length());137 #endif138 122 if (!ret) 139 123 return NULL; 140 124 // Need "CopyAsciiTo"!? 141 125 nsACString::const_iterator fromBegin, fromEnd; 142 #if PY_MAJOR_VERSION <= 2 143 char* dest = (char *)PyString_AS_STRING(ret); 144 #else 145 char* dest = (char *)PyUnicode_AsUTF8(ret); 146 #endif 126 char* dest = PyString_AS_STRING(ret); 147 127 copy_string(s.BeginReading(fromBegin), s.EndReading(fromEnd), dest); 148 128 } … … 179 159 PyObject *val_use = NULL; 180 160 PRBool ok = PR_TRUE; 181 #if PY_MAJOR_VERSION <= 2182 161 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 183 162 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); … … 186 165 if (ok && (val_use = PyUnicode_FromObject(val))==NULL) 187 166 ok = PR_FALSE; 188 #else189 if (!PyUnicode_Check(val)) {190 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");191 ok = PR_FALSE;192 }193 val_use = val;194 Py_INCREF(val_use);195 #endif196 167 if (ok) { 197 168 if (PyUnicode_GET_SIZE(val_use) == 0) { … … 382 353 // If it is NOT a string, we just fall through and allow the standard 383 354 // sequence unpack code process it (just slower!) 384 #if PY_MAJOR_VERSION <= 2385 355 if ( array_type == nsXPTType::T_U8 && 386 356 (PyString_Check(sequence_ob) || PyUnicode_Check(sequence_ob))) { 387 #else388 if ( array_type == nsXPTType::T_U8 && PyUnicode_Check(sequence_ob)) {389 #endif390 357 391 358 PRBool release_seq; 392 359 if (PyUnicode_Check(sequence_ob)) { 393 360 release_seq = PR_TRUE; 394 #if PY_MAJOR_VERSION <= 2395 361 sequence_ob = PyObject_Str(sequence_ob); 396 #else397 sequence_ob = PyUnicode_AsUTF8String(sequence_ob);398 #endif399 362 } else 400 363 release_seq = PR_FALSE; 401 364 if (!sequence_ob) // presumably a memory error, or Unicode encoding error. 402 365 return PR_FALSE; 403 #if PY_MAJOR_VERSION <= 2404 366 memcpy(pthis, PyString_AS_STRING(sequence_ob), sequence_size); 405 #else406 memcpy(pthis, PyUnicode_AsUTF8(sequence_ob), sequence_size);407 #endif408 367 if (release_seq) 409 368 { … … 464 423 break; 465 424 case nsXPTType::T_CHAR: 466 #if PY_MAJOR_VERSION <= 2467 425 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 468 426 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); … … 474 432 NS_ABORT_IF_FALSE(PyString_Check(val_use), "PyObject_Str didnt return a string object!"); 475 433 FILL_SIMPLE_POINTER( char, *PyString_AS_STRING(val_use) ); 476 #else477 if (!PyUnicode_Check(val)) {478 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");479 BREAK_FALSE;480 }481 FILL_SIMPLE_POINTER( char, *PyUnicode_AsUTF8(val) );482 #endif483 434 break; 484 435 485 436 case nsXPTType::T_WCHAR: 486 #if PY_MAJOR_VERSION <= 2487 437 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 488 438 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); 489 439 BREAK_FALSE; 490 440 } 491 #else492 if (!PyUnicode_Check(val)) {493 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");494 BREAK_FALSE;495 }496 #endif497 441 if ((val_use = PyUnicode_FromObject(val)) == NULL) 498 442 BREAK_FALSE; … … 530 474 if (val == Py_None) 531 475 break; // Remains NULL. 532 #if PY_MAJOR_VERSION <= 2533 476 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 534 477 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); … … 542 485 const char *sz = PyString_AS_STRING(val_use); 543 486 int nch = PyString_GET_SIZE(val_use); 544 #else545 if (!PyUnicode_Check(val)) {546 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");547 BREAK_FALSE;548 }549 if ((val_use = PyUnicode_AsUTF8String(val))==NULL)550 BREAK_FALSE;551 552 const char *sz = PyBytes_AS_STRING(val_use);553 int nch = PyBytes_GET_SIZE(val_use);554 #endif555 487 556 488 *pp = (char *)nsMemory::Alloc(nch+1); … … 570 502 if (val == Py_None) 571 503 break; // Remains NULL. 572 #if PY_MAJOR_VERSION <= 2573 504 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 574 505 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); … … 578 509 BREAK_FALSE; 579 510 NS_ABORT_IF_FALSE(PyUnicode_Check(val_use), "PyUnicode_FromObject didnt return a Unicode object!"); 580 #else581 if (!PyUnicode_Check(val)) {582 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");583 BREAK_FALSE;584 }585 val_use = val;586 Py_INCREF(val_use);587 #endif588 511 if (PyUnicode_AsPRUnichar(val_use, pp, NULL) < 0) 589 512 BREAK_FALSE; … … 626 549 } 627 550 if (array_type == nsXPTType::T_U8) 628 #if PY_MAJOR_VERSION <= 2629 551 return PyString_FromStringAndSize( (char *)array_ptr, sequence_size ); 630 #else631 return PyUnicode_FromStringAndSize( (char *)array_ptr, sequence_size );632 #endif633 552 634 553 PRUint32 array_element_size = GetArrayElementSize(array_type); … … 680 599 val = Py_None; 681 600 } else 682 #if PY_MAJOR_VERSION <= 2683 601 val = PyString_FromString(*pp); 684 #else685 val = PyUnicode_FromString(*pp);686 #endif687 602 break; 688 603 } … … 717 632 sprintf(buf, "Unknown XPCOM array type flags (0x%x)", array_type); 718 633 PyXPCOM_LogWarning("%s - returning a string object with this message!\n", buf); 719 #if PY_MAJOR_VERSION <= 2720 634 val = PyString_FromString(buf); 721 #else722 val = PyUnicode_FromString(buf);723 #endif724 635 break; 725 636 } … … 759 670 if (PyFloat_Check(ob)) 760 671 return nsIDataType::VTYPE_DOUBLE; 761 #if PY_MAJOR_VERSION <= 2762 672 if (PyString_Check(ob)) 763 673 return nsIDataType::VTYPE_STRING_SIZE_IS; 764 #endif765 674 if (PyUnicode_Check(ob)) 766 675 return nsIDataType::VTYPE_WSTRING_SIZE_IS; … … 817 726 break; 818 727 case nsIDataType::VTYPE_STRING_SIZE_IS: 819 #if PY_MAJOR_VERSION <= 2820 728 nr = v->SetAsStringWithSize(PyString_Size(ob), PyString_AsString(ob)); 821 #else822 Py_ssize_t cb;823 const char *psz;824 psz = PyUnicode_AsUTF8AndSize(ob, &cb);825 nr = v->SetAsStringWithSize(cb, psz);826 #endif827 729 break; 828 730 case nsIDataType::VTYPE_WSTRING_SIZE_IS: … … 1394 1296 break; 1395 1297 case nsXPTType::T_CHAR:{ 1396 #if PY_MAJOR_VERSION <= 21397 1298 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 1398 1299 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); … … 1409 1310 1410 1311 ns_v.val.c = *PyString_AS_STRING(val_use); 1411 #else1412 if (!PyUnicode_Check(val)) {1413 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");1414 BREAK_FALSE;1415 }1416 if (PyUnicode_GET_SIZE(val) != 1) {1417 PyErr_SetString(PyExc_ValueError, "Must specify a one character string for a character");1418 BREAK_FALSE;1419 }1420 1421 ns_v.val.c = *PyUnicode_AS_UNICODE(val_use);1422 #endif1423 1312 break; 1424 1313 } 1425 1314 1426 1315 case nsXPTType::T_WCHAR: { 1427 #if PY_MAJOR_VERSION <= 21428 1316 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 1429 1317 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); 1430 1318 BREAK_FALSE; 1431 1319 } 1432 #else1433 if (!PyUnicode_Check(val)) {1434 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");1435 BREAK_FALSE;1436 }1437 #endif1438 1320 if ((val_use = PyUnicode_FromObject(val))==NULL) 1439 1321 BREAK_FALSE; 1440 // Sanity check should Py Unicode_FromObject() ever loosen its semantics wrt Unicode!1322 // Sanity check should PyObject_Str() ever loosen its semantics wrt Unicode! 1441 1323 NS_ABORT_IF_FALSE(PyUnicode_Check(val_use), "PyUnicode_FromObject didnt return a unicode object!"); 1442 if (PyUnicode_G ET_SIZE(val_use) != 1) {1324 if (PyUnicode_GetSize(val_use) != 1) { 1443 1325 PyErr_SetString(PyExc_ValueError, "Must specify a one character string for a character"); 1444 1326 BREAK_FALSE; … … 1478 1360 ns_v.val.p = new nsCString(); 1479 1361 } else { 1480 #if PY_MAJOR_VERSION <= 2 1362 // strings are assumed to already be UTF8 encoded. 1481 1363 if (PyString_Check(val)) { 1482 // strings are assumed to already be UTF8 encoded.1483 1364 val_use = val; 1484 1365 Py_INCREF(val); 1485 } 1486 else 1487 #endif 1488 if (PyUnicode_Check(val)) { 1489 // Unicode objects are encoded by us. 1366 // Unicode objects are encoded by us. 1367 } else if (PyUnicode_Check(val)) { 1490 1368 if (bIsUTF8) 1491 1369 val_use = PyUnicode_AsUTF8String(val); 1492 1370 else 1493 #if PY_MAJOR_VERSION <= 21494 1371 val_use = PyObject_Str(val); 1495 #else1496 val_use = PyUnicode_AsUTF8String(val);1497 #endif1498 1372 } else { 1499 #if PY_MAJOR_VERSION <= 21500 1373 PyErr_SetString(PyExc_TypeError, "UTF8 parameters must be string or Unicode objects"); 1501 #else1502 PyErr_SetString(PyExc_TypeError, "UTF8 parameters must be unicode objects");1503 #endif1504 1374 BREAK_FALSE; 1505 1375 } 1506 1376 if (!val_use) 1507 1377 BREAK_FALSE; 1508 #if PY_MAJOR_VERSION <= 21509 1378 ns_v.val.p = new nsCString(PyString_AS_STRING(val_use), 1510 1379 PyString_GET_SIZE(val_use)); 1511 #else1512 ns_v.val.p = new nsCString(PyBytes_AS_STRING(val_use),1513 PyBytes_GET_SIZE(val_use));1514 #endif1515 1380 } 1516 1381 … … 1528 1393 break; 1529 1394 } 1530 #if PY_MAJOR_VERSION <= 21531 1395 // If an "in" char *, and we have a PyString, then pass the 1532 1396 // pointer (hoping everyone else plays by the rules too. 1533 1397 if (!XPT_PD_IS_OUT(td.param_flags) && PyString_Check(val)) { 1534 ns_v.val.p = (void *)PyString_AS_STRING(val);1398 ns_v.val.p = PyString_AS_STRING(val); 1535 1399 break; 1536 1400 } … … 1548 1412 MAKE_VALUE_BUFFER(cb_this_buffer_pointer); 1549 1413 memcpy(this_buffer_pointer, PyString_AS_STRING(val_use), cb_this_buffer_pointer); 1550 #else1551 1552 if (!PyUnicode_Check(val)) {1553 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");1554 BREAK_FALSE;1555 }1556 if ((val_use = PyUnicode_AsUTF8String(val))==NULL)1557 BREAK_FALSE;1558 1559 cb_this_buffer_pointer = PyBytes_GET_SIZE(val_use)+1;1560 MAKE_VALUE_BUFFER(cb_this_buffer_pointer);1561 memcpy(this_buffer_pointer, PyBytes_AS_STRING(val_use), cb_this_buffer_pointer);1562 #endif1563 1414 ns_v.val.p = this_buffer_pointer; 1564 1415 break; … … 1570 1421 break; 1571 1422 } 1572 #if PY_MAJOR_VERSION <= 21573 1423 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 1574 1424 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); … … 1578 1428 BREAK_FALSE; 1579 1429 NS_ABORT_IF_FALSE(PyUnicode_Check(val_use), "PyUnicode_FromObject didnt return a Unicode object!"); 1580 #else1581 if (!PyUnicode_Check(val)) {1582 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");1583 BREAK_FALSE;1584 }1585 val_use = val;1586 Py_INCREF(val_use);1587 #endif1588 1430 PRUnichar *sv; 1589 1431 PRUint32 nch; … … 1642 1484 break; 1643 1485 } 1644 #if PY_MAJOR_VERSION <= 21645 1486 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 1646 1487 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); … … 1655 1496 MAKE_VALUE_BUFFER(cb_this_buffer_pointer); 1656 1497 memcpy(this_buffer_pointer, PyString_AS_STRING(val_use), cb_this_buffer_pointer); 1657 #else1658 if (!PyUnicode_Check(val)) {1659 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");1660 BREAK_FALSE;1661 }1662 if ((val_use = PyUnicode_AsUTF8String(val))==NULL)1663 BREAK_FALSE;1664 1665 cb_this_buffer_pointer = PyBytes_GET_SIZE(val_use);1666 MAKE_VALUE_BUFFER(cb_this_buffer_pointer);1667 memcpy(this_buffer_pointer, PyBytes_AS_STRING(val_use), cb_this_buffer_pointer);1668 #endif1669 1498 ns_v.val.p = this_buffer_pointer; 1670 1499 rc = SetSizeIs(value_index, PR_TRUE, cb_this_buffer_pointer); … … 1677 1506 break; 1678 1507 } 1679 #if PY_MAJOR_VERSION <= 21680 1508 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 1681 1509 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); … … 1686 1514 // Sanity check should PyObject_Str() ever loosen its semantics wrt Unicode! 1687 1515 NS_ABORT_IF_FALSE(PyUnicode_Check(val_use), "PyObject_Unicode didnt return a unicode object!"); 1688 #else1689 if (!PyUnicode_Check(val)) {1690 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");1691 BREAK_FALSE;1692 }1693 val_use = val;1694 Py_INCREF(val_use);1695 #endif1696 1516 PRUnichar *sv; 1697 1517 PRUint32 nch; … … 1899 1719 break; 1900 1720 case nsXPTType::T_CHAR: 1901 #if PY_MAJOR_VERSION <= 21902 1721 ret = PyString_FromStringAndSize( ((char *)ns_v.ptr), 1 ); 1903 #else1904 ret = PyUnicode_FromStringAndSize( ((char *)ns_v.ptr), 1 );1905 #endif1906 1722 break; 1907 1723 … … 1931 1747 Py_INCREF(Py_None); 1932 1748 } else 1933 #if PY_MAJOR_VERSION <= 21934 1749 ret = PyString_FromString( *((char **)ns_v.ptr) ); 1935 #else1936 ret = PyUnicode_FromString( *((char **)ns_v.ptr) );1937 #endif1938 1750 break; 1939 1751 … … 2016 1828 } else { 2017 1829 PRUint32 string_size = GetSizeIs(index, PR_TRUE); 2018 #if PY_MAJOR_VERSION <= 22019 1830 ret = PyString_FromStringAndSize( *((char **)ns_v.ptr), string_size ); 2020 #else2021 ret = PyUnicode_FromStringAndSize( *((char **)ns_v.ptr), string_size );2022 #endif2023 1831 } 2024 1832 break; … … 2275 2083 case nsXPTType::T_CHAR: { 2276 2084 char temp = DEREF_IN_OR_OUT(ns_v.val.c, char); 2277 #if PY_MAJOR_VERSION <= 22278 2085 ret = PyString_FromStringAndSize(&temp, 1); 2279 #else2280 ret = PyUnicode_FromStringAndSize(&temp, 1);2281 #endif2282 2086 break; 2283 2087 } … … 2312 2116 Py_INCREF(Py_None); 2313 2117 } else 2314 #if PY_MAJOR_VERSION <= 22315 2118 ret = PyString_FromString(t); 2316 #else2317 ret = PyUnicode_FromString(t);2318 #endif2319 2119 break; 2320 2120 } … … 2378 2178 Py_INCREF(Py_None); 2379 2179 } else 2380 #if PY_MAJOR_VERSION <= 22381 2180 ret = PyString_FromStringAndSize(t, string_size); 2382 #else2383 ret = PyUnicode_FromStringAndSize(t, string_size);2384 #endif2385 2181 break; 2386 2182 } … … 2403 2199 sprintf(buf, "Unknown XPCOM type flags (0x%x)", td.type_flags); 2404 2200 PyXPCOM_LogWarning("%s - returning a string object with this message!\n", buf); 2405 #if PY_MAJOR_VERSION <= 22406 2201 ret = PyString_FromString(buf); 2407 #else2408 ret = PyUnicode_FromString(buf);2409 #endif2410 2202 break; 2411 2203 } … … 2548 2340 break; 2549 2341 case nsXPTType::T_CHAR: 2550 #if PY_MAJOR_VERSION <= 22551 2342 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 2552 2343 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); … … 2558 2349 NS_ABORT_IF_FALSE(PyString_Check(val_use), "PyObject_Str didnt return a string object!"); 2559 2350 FILL_SIMPLE_POINTER( char, *PyString_AS_STRING(val_use) ); 2560 #else2561 if (!PyUnicode_Check(val)) {2562 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");2563 BREAK_FALSE;2564 }2565 FILL_SIMPLE_POINTER( char, *PyUnicode_AS_UNICODE(val) );2566 #endif2567 2351 break; 2568 2352 2569 2353 case nsXPTType::T_WCHAR: 2570 #if PY_MAJOR_VERSION <= 22571 2354 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 2572 2355 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); 2573 2356 BREAK_FALSE; 2574 2357 } 2575 #else2576 if (!PyUnicode_Check(val)) {2577 PyErr_SetString(PyExc_TypeError, "This parameter must be a Unicode object");2578 BREAK_FALSE;2579 }2580 #endif2581 2358 if ((val_use = PyUnicode_FromObject(val))==NULL) 2582 2359 BREAK_FALSE; … … 2618 2395 NS_ABORT_IF_FALSE(0, "dont handle None here yet"); 2619 2396 } else { 2620 #if PY_MAJOR_VERSION <= 22621 2397 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 2622 2398 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); … … 2626 2402 NS_ABORT_IF_FALSE(PyString_Check(val_use), "PyObject_Str didnt return a string object!"); 2627 2403 const char *sz = PyString_AS_STRING(val_use); 2628 ws->Assign(sz, PyString_GET_SIZE(val_use)); 2629 #else 2630 if (!PyUnicode_Check(val)) { 2631 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object"); 2632 BREAK_FALSE; 2633 } 2634 val_use = PyUnicode_AsUTF8String(val); 2635 const char *sz = PyBytes_AS_STRING(val_use); 2636 ws->Assign(sz, PyBytes_GET_SIZE(val_use)); 2637 #endif 2404 ws->Assign(sz, PyString_Size(val_use)); 2638 2405 } 2639 2406 break; … … 2645 2412 NS_ABORT_IF_FALSE(0, "dont handle None here yet"); 2646 2413 } else { 2647 #if PY_MAJOR_VERSION <= 22648 2414 if (PyString_Check(val)) { 2649 2415 val_use = val; 2650 2416 Py_INCREF(val); 2651 } 2652 else 2653 #endif 2654 if (PyUnicode_Check(val)) { 2417 } else if (PyUnicode_Check(val)) { 2655 2418 val_use = PyUnicode_AsUTF8String(val); 2656 2419 } else { 2657 #if PY_MAJOR_VERSION <= 22658 2420 PyErr_SetString(PyExc_TypeError, "UTF8 parameters must be string or Unicode objects"); 2659 #else 2660 PyErr_SetString(PyExc_TypeError, "UTF8 parameters must be unicode objects"); 2661 #endif 2662 BREAK_FALSE; 2663 } 2664 #if PY_MAJOR_VERSION <= 2 2421 BREAK_FALSE; 2422 } 2665 2423 NS_ABORT_IF_FALSE(PyString_Check(val_use), "must have a string object!"); 2666 2424 const char *sz = PyString_AS_STRING(val_use); 2667 ws->Assign(sz, PyString_GET_SIZE(val_use)); 2668 #else 2669 NS_ABORT_IF_FALSE(PyBytes_Check(val_use), "must have a bytes object!"); 2670 const char *sz = PyBytes_AS_STRING(val_use); 2671 ws->Assign(sz, PyBytes_GET_SIZE(val_use)); 2672 #endif 2425 ws->Assign(sz, PyString_Size(val_use)); 2673 2426 } 2674 2427 break; … … 2684 2437 if (val == Py_None) 2685 2438 break; // Remains NULL. 2686 #if PY_MAJOR_VERSION <= 22687 2439 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 2688 2440 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); … … 2696 2448 const char *sz = PyString_AS_STRING(val_use); 2697 2449 int nch = PyString_GET_SIZE(val_use); 2698 #else2699 if (!PyUnicode_Check(val)) {2700 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");2701 BREAK_FALSE;2702 }2703 if ((val_use = PyUnicode_AsUTF8String(val))==NULL)2704 BREAK_FALSE;2705 2706 const char *sz = PyBytes_AS_STRING(val_use);2707 int nch = PyBytes_GET_SIZE(val_use);2708 #endif2709 2450 2710 2451 *pp = (char *)nsMemory::Alloc(nch+1); … … 2724 2465 if (val == Py_None) 2725 2466 break; // Remains NULL. 2726 #if PY_MAJOR_VERSION <= 22727 2467 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 2728 2468 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); … … 2731 2471 val_use = PyUnicode_FromObject(val); 2732 2472 NS_ABORT_IF_FALSE(PyUnicode_Check(val_use), "PyUnicode_FromObject didnt return a Unicode object!"); 2733 #else2734 if (!PyUnicode_Check(val)) {2735 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");2736 BREAK_FALSE;2737 }2738 val_use = val;2739 Py_INCREF(val_use);2740 #endif2741 2473 if (PyUnicode_AsPRUnichar(val_use, pp, NULL) < 0) 2742 2474 BREAK_FALSE; … … 2793 2525 PRUint32 nch = 0; 2794 2526 if (val != Py_None) { 2795 #if PY_MAJOR_VERSION <= 22796 2527 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 2797 2528 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); … … 2805 2536 sz = PyString_AS_STRING(val_use); 2806 2537 nch = PyString_GET_SIZE(val_use); 2807 #else2808 if (!PyUnicode_Check(val)) {2809 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");2810 BREAK_FALSE;2811 }2812 if ((val_use = PyUnicode_AsUTF8String(val))==NULL)2813 BREAK_FALSE;2814 2815 sz = PyBytes_AS_STRING(val_use);2816 nch = PyBytes_GET_SIZE(val_use);2817 #endif2818 2538 } 2819 2539 PRBool bBackFill = PR_FALSE; … … 2862 2582 2863 2583 if (val != Py_None) { 2864 #if PY_MAJOR_VERSION <= 22865 2584 if (!PyString_Check(val) && !PyUnicode_Check(val)) { 2866 2585 PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object"); … … 2869 2588 val_use = PyUnicode_FromObject(val); 2870 2589 NS_ABORT_IF_FALSE(PyUnicode_Check(val_use), "PyUnicode_FromObject didnt return a Unicode object!"); 2871 #else2872 if (!PyUnicode_Check(val)) {2873 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");2874 BREAK_FALSE;2875 }2876 val_use = val;2877 Py_INCREF(val_use);2878 #endif2879 2590 if (PyUnicode_AsPRUnichar(val_use, &sz, &nch) < 0) 2880 2591 BREAK_FALSE; … … 3039 2750 // But the retval is often the last param described in the info. 3040 2751 if (!PySequence_Check(user_result) || 3041 #if PY_MAJOR_VERSION <= 23042 2752 PyString_Check(user_result) || 3043 #else3044 PyBytes_Check(user_result) ||3045 #endif3046 2753 PyUnicode_Check(user_result)) { 3047 2754 PyErr_SetString(PyExc_TypeError, "This function has multiple results, but a sequence was not given to fill them"); -
trunk/src/libs/xpcom18a4/python/src/dllmain.cpp
r59769 r59795 196 196 CEnterLeaveXPCOMFramework _celf; 197 197 PRInt32 cnt = PR_AtomicIncrement(&g_cLockCount); 198 if (cnt==1) { // First call 198 if (cnt==1) { // First call 199 199 if (!Py_IsInitialized()) { 200 200 Py_Initialize(); … … 204 204 if (PySys_GetObject((char*)"argv")==NULL) { 205 205 PyObject *path = PyList_New(0); 206 #if PY_MAJOR_VERSION <= 2207 206 PyObject *str = PyString_FromString(""); 208 #else209 PyObject *str = PyUnicode_FromString("");210 #endif211 207 PyList_Append(path, str); 212 208 PySys_SetObject((char*)"argv", path); … … 250 246 PR_DestroyLock(g_lockMain); 251 247 #ifndef PYXPCOM_USE_PYGILSTATE 252 // I can't locate a way to kill this - 248 // I can't locate a way to kill this - 253 249 // should I pass a dtor to PR_NewThreadPrivateIndex?? 254 250 // TlsFree(tlsIndex); … … 334 330 bHaveInitXPCOM = PR_TRUE; 335 331 // Register our custom interfaces. 336 332 337 333 Py_nsISupports::InitType(); 338 334 Py_nsIComponentManager::InitType(); … … 346 342 // for backward compatibility: 347 343 Py_nsIComponentManagerObsolete::InitType(); 348 344 349 345 } 350 346 return rc; -
trunk/src/libs/xpcom18a4/python/src/module/_xpcom.cpp
r59769 r59795 84 84 # endif 85 85 # ifdef VBOX_PYXPCOM_VERSIONED 86 # if PY_VERSION_HEX >= 0x03080000 && PY_VERSION_HEX < 0x03090000 87 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython3_8") 88 # define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_8) 89 90 # elif PY_VERSION_HEX >= 0x03070000 && PY_VERSION_HEX < 0x03080000 91 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython3_7") 92 # define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_7) 93 94 # elif PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x03070000 95 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython3_6") 96 # define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_6) 97 98 # elif PY_VERSION_HEX >= 0x03050000 && PY_VERSION_HEX < 0x03060000 99 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython3_5") 100 # define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_5) 101 102 # elif PY_VERSION_HEX >= 0x03040000 && PY_VERSION_HEX < 0x03050000 103 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython3_4") 104 # define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_4) 105 106 # elif PY_VERSION_HEX >= 0x03030000 && PY_VERSION_HEX < 0x03040000 107 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython3_3") 108 # define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_3) 109 110 # elif PY_VERSION_HEX >= 0x03020000 && PY_VERSION_HEX < 0x03030000 111 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython3_2") 112 # define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_2) 113 114 # elif PY_VERSION_HEX >= 0x03010000 && PY_VERSION_HEX < 0x03020000 115 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython3_1") 116 # define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_1) 117 118 # elif PY_VERSION_HEX >= 0x02080000 && PY_VERSION_HEX < 0x02090000 86 # if PY_VERSION_HEX >= 0x02080000 119 87 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython2_8") 120 88 # define initVBoxPython MANGLE_MODULE_INIT(initVBoxPython2_8) 121 89 122 # elif PY_VERSION_HEX >= 0x02070000 && PY_VERSION_HEX < 0x0208000090 # elif PY_VERSION_HEX >= 0x02070000 123 91 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython2_7") 124 92 # define initVBoxPython MANGLE_MODULE_INIT(initVBoxPython2_7) 125 93 126 # elif PY_VERSION_HEX >= 0x02060000 && PY_VERSION_HEX < 0x0207000094 # elif PY_VERSION_HEX >= 0x02060000 127 95 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython2_6") 128 96 # define initVBoxPython MANGLE_MODULE_INIT(initVBoxPython2_6) 97 98 # elif PY_VERSION_HEX >= 0x02050000 99 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython2_5") 100 # define initVBoxPython MANGLE_MODULE_INIT(initVBoxPython2_5) 101 102 # elif PY_VERSION_HEX >= 0x02040000 103 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython2_4") 104 # define initVBoxPython MANGLE_MODULE_INIT(initVBoxPython2_4) 105 106 # elif PY_VERSION_HEX >= 0x02030000 107 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython2_3") 108 # define initVBoxPython MANGLE_MODULE_INIT(initVBoxPython2_3) 129 109 # else 130 # error "Fix module versioning. This Python version is not recognized."110 # error "Fix module versioning." 131 111 # endif 132 112 # else 133 113 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython") 134 # if PY_MAJOR_VERSION <= 2 135 # define initVBoxPython MANGLE_MODULE_INIT(initVBoxPython) 136 # else 137 # define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython) 138 # endif 114 # define initVBoxPython MANGLE_MODULE_INIT(initVBoxPython) 139 115 # endif 140 116 #else … … 145 121 // interface support! 146 122 147 #ifndef VBOX148 123 /* deprecated, included for backward compatibility */ 149 124 static PyObject * … … 168 143 return Py_nsISupports::PyObjectFromInterface(ocm, NS_GET_IID(nsIComponentManagerObsolete), PR_FALSE); 169 144 } 170 #endif171 145 172 146 static PyObject * … … 221 195 } 222 196 223 #ifndef VBOX224 197 /* deprecated, included for backward compatibility */ 225 198 static PyObject * … … 231 204 return PyXPCOMMethod_GetComponentManager(self, args); 232 205 } 233 #endif234 206 235 207 static PyObject * … … 528 500 if (!PyArg_ParseTuple(args, "i", &bufSize)) 529 501 return NULL; 530 #if PY_MAJOR_VERSION <= 2531 502 return PyBuffer_New(bufSize); 532 #else533 return PyBytes_FromStringAndSize(NULL, bufSize);534 #endif535 503 } 536 504 … … 703 671 {"GetComponentManager", PyXPCOMMethod_GetComponentManager, 1}, 704 672 {"GetComponentRegistrar", PyXPCOMMethod_GetComponentRegistrar, 1}, 705 #ifndef VBOX706 673 {"NS_GetGlobalComponentManager", PyXPCOMMethod_NS_GetGlobalComponentManager, 1}, // deprecated 707 #endif708 674 {"XPTI_GetInterfaceInfoManager", PyXPCOMMethod_XPTI_GetInterfaceInfoManager, 1}, 709 675 {"XPTC_InvokeByIndex", PyXPCOMMethod_XPTC_InvokeByIndex, 1}, 710 676 {"GetServiceManager", PyXPCOMMethod_GetServiceManager, 1}, 711 #ifndef VBOX712 677 {"GetGlobalServiceManager", PyXPCOMMethod_GetGlobalServiceManager, 1}, // deprecated 713 678 {"IID", PyXPCOMMethod_IID, 1}, // IID is wrong - deprecated - not just IID, but CID, etc. 714 #endif715 679 {"ID", PyXPCOMMethod_IID, 1}, // This is the official name. 716 680 {"NS_ShutdownXPCOM", PyXPCOMMethod_NS_ShutdownXPCOM, 1}, … … 727 691 {"GetVariantValue", PyXPCOMMethod_GetVariantValue, 1}, 728 692 #ifdef VBOX 729 {"WaitForEvents", PyXPCOMMethod_WaitForEvents, 1},730 {"InterruptWait", PyXPCOMMethod_InterruptWait, 1},731 {"DeinitCOM", PyXPCOMMethod_DeinitCOM, 1},732 {"AttachThread", PyXPCOMMethod_AttachThread, 1},733 {"DetachThread", PyXPCOMMethod_DetachThread, 1},693 {"WaitForEvents", PyXPCOMMethod_WaitForEvents, 1}, 694 {"InterruptWait", PyXPCOMMethod_InterruptWait, 1}, 695 {"DeinitCOM", PyXPCOMMethod_DeinitCOM, 1}, 696 {"AttachThread", PyXPCOMMethod_AttachThread, 1}, 697 {"DetachThread", PyXPCOMMethod_DetachThread, 1}, 734 698 #endif 735 699 #ifdef VBOX_DEBUG_LIFETIMES … … 741 705 }; 742 706 743 #if PY_MAJOR_VERSION >= 3744 static struct PyModuleDef xpcom_module =745 {746 PyModuleDef_HEAD_INIT,747 MODULE_NAME, /* name of module */748 NULL, /* module documentation */749 -1, /* size of per-interpreter state or -1 if using globals */750 xpcom_methods751 };752 #endif753 754 755 707 #define REGISTER_IID(t) { \ 756 708 PyObject *iid_ob = Py_nsIID::PyObjectFromIID(NS_GET_IID(t)); \ … … 769 721 // The module init code. 770 722 // 771 #if PY_MAJOR_VERSION <= 2772 723 extern "C" NS_EXPORT 773 724 void 774 #else775 PyObject *776 #endif777 725 init_xpcom() { 778 726 PyObject *oModule; … … 780 728 // ensure the framework has valid state to work with. 781 729 if (!PyXPCOM_Globals_Ensure()) 782 #if PY_MAJOR_VERSION <= 2783 730 return; 784 #else785 return NULL;786 #endif787 731 788 732 // Must force Python to start using thread locks … … 790 734 791 735 // Create the module and add the functions 792 #if PY_MAJOR_VERSION <= 2793 736 oModule = Py_InitModule(MODULE_NAME, xpcom_methods); 794 #else795 oModule = PyModule_Create(&xpcom_module);796 #endif797 737 798 738 PyObject *dict = PyModule_GetDict(oModule); … … 801 741 { 802 742 PyErr_SetString(PyExc_MemoryError, "can't define error"); 803 #if PY_MAJOR_VERSION <= 2804 743 return; 805 #else806 return NULL;807 #endif808 744 } 809 745 PyDict_SetItemString(dict, "IIDType", (PyObject *)&Py_nsIID::type); … … 848 784 PyDict_SetItemString(dict, "NS_DEBUG", ob); 849 785 Py_DECREF(ob); 850 #if PY_MAJOR_VERSION >= 3851 return oModule;852 #endif853 786 } 854 787 … … 862 795 #include <iprt/stream.h> 863 796 864 #if PY_MAJOR_VERSION <= 2865 797 extern "C" NS_EXPORT 866 798 void 867 #else868 /** @todo r=klaus this is hacky, but as Python3 doesn't deal with ELF869 * visibility, assuming that all globals are visible (which is ugly and not870 * true in our case). */871 #undef PyMODINIT_FUNC872 #define PyMODINIT_FUNC extern "C" NS_EXPORT PyObject*873 PyMODINIT_FUNC874 #endif875 799 initVBoxPython() { /* NOTE! This name is redefined at the top of the file! */ 876 800 static bool s_vboxInited = false; … … 895 819 rc = com::Initialize(); 896 820 897 #if PY_MAJOR_VERSION <= 2898 821 init_xpcom(); 899 #else900 return init_xpcom();901 #endif902 822 } 903 #if PY_MAJOR_VERSION >= 3904 return NULL;905 #endif906 823 } 907 824 -
trunk/src/libs/xpcom18a4/python/test/test_test_component.py
r59769 r59795 253 253 test_attribute(c, "iid_value", component_iid, new_iid) 254 254 test_attribute(c, "iid_value", component_iid, str(new_iid), new_iid) 255 test_attribute(c, "iid_value", component_iid, xpcom._xpcom.I D(new_iid))255 test_attribute(c, "iid_value", component_iid, xpcom._xpcom.IID(new_iid)) 256 256 257 257 test_attribute_failure(c, "no_attribute", "boo", AttributeError) -
trunk/src/libs/xpcom18a4/python/vboxxpcom.py
r59769 r59795 1 1 """ 2 Copyright (C) 2008-201 6Oracle Corporation2 Copyright (C) 2008-2012 Oracle Corporation 3 3 4 4 This file is part of VirtualBox Open Source Edition (OSE), as … … 47 47 _oVBoxPythonMod = __import__(m) 48 48 break 49 except Exception asx:50 print ('m=%s x=%s' % (m, x))49 except Exception, x: 50 print 'm=%s x=%s' % (m, x); 51 51 #except: 52 52 # pass -
trunk/src/libs/xpcom18a4/python/xpt.py
r59769 r59795 72 72 import xpcom._xpcom 73 73 74 from .xpcom_consts import *74 from xpcom_consts import * 75 75 76 76 class Interface: … … 100 100 if xpcom.verbose: 101 101 # The user may be confused as to why this is happening! 102 print ("The parent interface of IID '%s' can not be located - assuming nsISupports")102 print "The parent interface of IID '%s' can not be located - assuming nsISupports" 103 103 return Interface(xpcom._xpcom.IID_nsISupports) 104 104 105 105 def Describe_Python(self): 106 106 method_reprs = [] 107 methods = [m for m in self.methods if not m.IsNotXPCOM()]107 methods = filter(lambda m: not m.IsNotXPCOM(), self.methods) 108 108 for m in methods: 109 109 method_reprs.append(m.Describe_Python()) … … 130 130 s = s + ' Scriptable: ' + word + '\n' 131 131 s = s + ' Methods:\n' 132 methods = [m for m in self.methods if not m.IsNotXPCOM()]132 methods = filter(lambda m: not m.IsNotXPCOM(), self.methods) 133 133 if len(methods): 134 134 for m in methods: … … 153 153 except xpcom.Exception: 154 154 if xpcom.verbose: 155 print ("** GetMethodCount failed?? - assuming no methods")155 print "** GetMethodCount failed?? - assuming no methods" 156 156 self.items = [] 157 157 def __len__(self): … … 252 252 253 253 def desc(a): return a.Describe() 254 method_desc = string.join( list(map(desc, self.params)), ', ')254 method_desc = string.join(map(desc, self.params), ', ') 255 255 result_type = TypeDescriber(self.result_desc[0], None) 256 256 return_desc = result_type.Describe() … … 329 329 except xpcom.Exception: 330 330 if xpcom.verbose: 331 print ("** GetConstantCount failed?? - assuming no constants")331 print "** GetConstantCount failed?? - assuming no constants" 332 332 self.items = [] 333 333 def __len__(self): … … 452 452 describer_name = describer_name + "_" + mode.capitalize() 453 453 describer = getattr(interface, describer_name) 454 print (describer())454 print describer() 455 455 456 456 if __name__=='__main__': 457 457 if len(sys.argv) == 1: 458 print ("Usage: xpt.py [-xptinfo] interface_name, ...")459 print (" -info: Dump in a style similar to the xptdump tool")460 print ("Dumping nsISupports and nsIInterfaceInfo")458 print "Usage: xpt.py [-xptinfo] interface_name, ..." 459 print " -info: Dump in a style similar to the xptdump tool" 460 print "Dumping nsISupports and nsIInterfaceInfo" 461 461 sys.argv.append('nsIInterfaceInfo') 462 462 sys.argv.append('-xptinfo')
Note:
See TracChangeset
for help on using the changeset viewer.