Revision: 80
Author: roman_yakovenko
Date: 2006-05-14 00:34:21 -0700 (Sun, 14 May 2006)
ViewCVS: http://svn.sourceforge.net/pygccxml/?rev=80&view=rev
Log Message:
-----------
adding exception specification to function-wrappers
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/calldef.py
Modified: pyplusplus_dev/pyplusplus/code_creators/calldef.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/calldef.py 2006-05-14 07:32:42 UTC (rev 79)
+++ pyplusplus_dev/pyplusplus/code_creators/calldef.py 2006-05-14 07:34:21 UTC (rev 80)
@@ -113,6 +113,13 @@
msg = msg + 'Reason: function returns reference to local variable!'
return 'throw std::logic_error("%s");' % msg
+ def throw_specifier_code( self ):
+ if not self.declaration.exceptions:
+ return ''
+ exceptions = map( lambda exception:
+ algorithm.create_identifier( self, declarations.full_name( exception ) )
+ , self.declaration.exceptions )
+ return ' throw( ' + self.PARAM_SEPARATOR.join( exceptions ) + ' )'
class free_function_t( calldef_t ):
def __init__( self, function, parent=None ):
@@ -210,7 +217,7 @@
calldef_wrapper_t.__init__( self, function=function, parent=parent )
def create_declaration(self):
- template = 'virtual %(return_type)s %(name)s( %(args)s )%(constness)s'
+ template = 'virtual %(return_type)s %(name)s( %(args)s )%(constness)s%(throw)s'
constness = ''
if self.declaration.has_const:
@@ -221,6 +228,7 @@
, 'name' : self.declaration.name
, 'args' : self.args_declaration()
, 'constness' : constness
+ , 'throw' : self.throw_specifier_code()
}
def create_body( self ):
@@ -299,7 +307,7 @@
, has_const=self.declaration.has_const )
def create_declaration(self, name):
- template = 'virtual %(return_type)s %(name)s( %(args)s )%(constness)s'
+ template = 'virtual %(return_type)s %(name)s( %(args)s )%(constness)s %(throw)s'
constness = ''
if self.declaration.has_const:
@@ -310,6 +318,7 @@
, 'name' : name
, 'args' : self.args_declaration()
, 'constness' : constness
+ , 'throw' : self.throw_specifier_code()
}
def create_virtual_body(self):
@@ -404,7 +413,7 @@
, has_const=self.declaration.has_const )
def create_declaration(self, name):
- template = '%(return_type)s %(name)s( %(args)s )%(constness)s'
+ template = '%(return_type)s %(name)s( %(args)s )%(constness)s%(throw)s'
constness = ''
if self.declaration.has_const:
@@ -415,6 +424,7 @@
, 'name' : name
, 'args' : self.args_declaration()
, 'constness' : constness
+ , 'throw' : self.throw_specifier_code()
}
def create_body(self):
@@ -484,12 +494,13 @@
, arguments_types=map( lambda arg: arg.type, self.declaration.arguments ) )
def create_declaration(self, name):
- template = 'static %(return_type)s %(name)s( %(args)s )'
+ template = 'static %(return_type)s %(name)s( %(args)s )%(throw)s'
return template % {
'return_type' : self.declaration.return_type.decl_string
, 'name' : name
, 'args' : self.args_declaration()
+ , 'throw' : self.throw_specifier_code()
}
def create_body(self):
@@ -559,7 +570,7 @@
, has_const=self.declaration.has_const )
def create_declaration(self, name):
- template = 'virtual %(return_type)s %(name)s( %(args)s )%(constness)s'
+ template = 'virtual %(return_type)s %(name)s( %(args)s )%(constness)s%(throw)s'
constness = ''
if self.declaration.has_const:
@@ -570,6 +581,7 @@
, 'name' : name
, 'args' : self.args_declaration()
, 'constness' : constness
+ , 'throw' : self.throw_specifier_code()
}
def create_virtual_body(self):
@@ -646,7 +658,7 @@
, has_const=self.declaration.has_const )
def create_declaration(self):
- template = 'virtual %(return_type)s %(name)s( %(args)s )%(constness)s'
+ template = 'virtual %(return_type)s %(name)s( %(args)s )%(constness)s%(throw)s'
constness = ''
if self.declaration.has_const:
@@ -657,6 +669,7 @@
, 'name' : self.declaration.name
, 'args' : self.args_declaration()
, 'constness' : constness
+ , 'throw' : self.throw_specifier_code()
}
def create_body( self ):
@@ -700,7 +713,7 @@
, has_const=self.declaration.has_const )
def create_declaration(self):
- template = 'virtual %(return_type)s %(name)s( %(args)s )%(constness)s'
+ template = 'virtual %(return_type)s %(name)s( %(args)s )%(constness)s%(throw)s'
constness = ''
if self.declaration.has_const:
@@ -711,6 +724,7 @@
, 'name' : self.declaration.name
, 'args' : self.args_declaration()
, 'constness' : constness
+ , 'throw' : self.throw_specifier_code()
}
def create_body( self ):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|