You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(37) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(15) |
Feb
(26) |
Mar
(97) |
Apr
(224) |
May
(226) |
Jun
|
Jul
(3) |
Aug
(22) |
Sep
(48) |
Oct
|
Nov
|
Dec
(38) |
| 2004 |
Jan
(28) |
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(37) |
Jul
|
Aug
(73) |
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <bl...@us...> - 2003-05-30 07:31:28
|
Update of /cvsroot/cpptool/rfta/src/pyrfta/test/rfta
In directory sc8-pr-cvs1:/tmp/cvs-serv3286/src/pyrfta/test/rfta
Modified Files:
codeanalysis.py codeanalysistest.py
Log Message:
* added test & fixed bu in scope handling
Index: codeanalysis.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/codeanalysis.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** codeanalysis.py 29 May 2003 21:15:18 -0000 1.3
--- codeanalysis.py 30 May 2003 07:31:24 -0000 1.4
***************
*** 61,67 ****
class Scope:
- children = []
-
def __init__( self, parent_scope ):
self.parent_scope = parent_scope
if self.parent_scope:
--- 61,66 ----
class Scope:
def __init__( self, parent_scope ):
+ self.children = []
self.parent_scope = parent_scope
if self.parent_scope:
***************
*** 73,77 ****
def parentResolve( self, identifier ):
if self.parent_scope:
! return self.parent_scope.resolve( self, identifier )
return None
--- 72,76 ----
def parentResolve( self, identifier ):
if self.parent_scope:
! return self.parent_scope.resolve( identifier )
return None
***************
*** 82,89 ****
class LocalVariableScope(Scope):
- declared = {}
-
def __init__( self, parent_scope ):
Scope.__init__( self, parent_scope )
def declare( self, variableName, declExpr ):
--- 81,87 ----
class LocalVariableScope(Scope):
def __init__( self, parent_scope ):
Scope.__init__( self, parent_scope )
+ self.declared = {}
def declare( self, variableName, declExpr ):
***************
*** 99,106 ****
class UsingDeclScope(Scope):
- imported = {}
-
def __init__( self, parent_scope ):
Scope.__init__( self, parent_scope )
def importIdentifier( self, identifier ):
--- 97,103 ----
class UsingDeclScope(Scope):
def __init__( self, parent_scope ):
Scope.__init__( self, parent_scope )
+ self.imported = {}
def importIdentifier( self, identifier ):
***************
*** 113,122 ****
class LocalVariableResolver:
- standard_for_scope = True
- scope_depth = 0
- resolved = {}
-
def __init__( self, function_scope ):
self.current_scope = function_scope
def resolveVariable( self, variableName, variable_name_element ):
--- 110,118 ----
class LocalVariableResolver:
def __init__( self, function_scope ):
self.current_scope = function_scope
+ self.standard_for_scope = True
+ self.scope_depth = 0
+ self.resolved = {}
def resolveVariable( self, variableName, variable_name_element ):
Index: codeanalysistest.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/codeanalysistest.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** codeanalysistest.py 29 May 2003 21:15:18 -0000 1.3
--- codeanalysistest.py 30 May 2003 07:31:25 -0000 1.4
***************
*** 160,167 ****
self.resolver = LocalVariableResolver( FunctionScope( self.function ) )
self.declExpr1 = self.makeVariableDeclExpr( [("var1", "1"), ("var2","b"), ("var3","c")] )
self.declExpr2 = self.makeVariableDeclExpr( [("x", "1"), ("y","b"), ("z","c")] )
self.identifiers = {}
! for name in [ "var1", "var2", "var3", "x", "y", "z" ]:
! for count in range(1,5):
variable_name = name + "." + str(count)
self.identifiers[ variable_name ] = self.makeVariableName( variable_name )
--- 160,171 ----
self.resolver = LocalVariableResolver( FunctionScope( self.function ) )
self.declExpr1 = self.makeVariableDeclExpr( [("var1", "1"), ("var2","b"), ("var3","c")] )
+ self.declExpr1b = self.makeVariableDeclExpr( [("var1", "a"), ("var2","z")] )
self.declExpr2 = self.makeVariableDeclExpr( [("x", "1"), ("y","b"), ("z","c")] )
+ self.declExpr2b = self.makeVariableDeclExpr( [("x", "1"), ("y","b")] )
+ self.declExpr3 = self.makeVariableDeclExpr( [("a", "1"), ("b","b"), ("c","c")] )
+ self.declExpr3b = self.makeVariableDeclExpr( [("a", "1"), ("b","b")] )
self.identifiers = {}
! for name in [ "var1", "var2", "var3", "x", "y", "z", "a", "b", "c" ]:
! for count in range(1,10):
variable_name = name + "." + str(count)
self.identifiers[ variable_name ] = self.makeVariableName( variable_name )
***************
*** 187,201 ****
self.assertEqual( self.resolver.current_scope.function, self.function )
! def testDeclareAndResolve( self ):
self.resolver.enterScope()
self.declareVariables( ["var1", "var2", "var3"], self.declExpr1 )
! self.declareVariables( ["x", "y", "z"], self.declExpr1 )
! self.resolveVariables( [ ("var1",1), ("var2",1) ] )
self.resolver.exitScope()
! self.checkVariableResolutions( ["var1.1", "var2.1"], self.declExpr1 )
def suite():
! return unittest.makeSuite(IdentifierResolverTestCase, LocaleVariableResolverTest)
if __name__ == '__main__':
--- 191,226 ----
self.assertEqual( self.resolver.current_scope.function, self.function )
! def testResolveWithNoSubScope( self ):
self.resolver.enterScope()
self.declareVariables( ["var1", "var2", "var3"], self.declExpr1 )
! self.declareVariables( ["x", "y", "z"], self.declExpr2 )
! self.resolveVariables( [ ("var1",1), ("var2",1), ("var3",1), ("var2",2), ("var3",2), ("var3",3), ("var1",2) ] )
! self.resolveVariables( [ ("x",1), ("y",1), ("x",2), ("z",1), ("z",2), ("y",1) ] )
self.resolver.exitScope()
! self.checkVariableResolutions( ["var1.1", "var2.1", "var1.2", "var2.2", "var3.1", "var3.2", "var3.3"], self.declExpr1 )
! self.checkVariableResolutions( ["x.1", "x.2", "y.1", "z.1", "z.2"], self.declExpr2 )
!
! def testResolveWithSubScope( self ):
! self.resolver.enterScope()
! self.declareVariables( ["var1","var2"], self.declExpr1 )
! self.resolveVariables( [ ("var1",1), ("var1",2), ("var2",1) ] )
! self.resolver.enterScope()
! self.declareVariables( ["var1"], self.declExpr1b )
! self.resolver.enterScope()
! self.resolveVariables( [ ("var1",3), ("var2",2), ("var2",3) ] )
! self.resolver.exitScope()
! self.resolveVariables( [ ("var1",4), ("var2",4) ] )
! self.resolver.exitScope()
! self.resolveVariables( [ ("var1",5), ("var2",5) ] )
! self.resolver.exitScope()
!
! self.checkVariableResolutions( ["var1.1", "var1.2", "var1.5",
! "var2.1", "var2.2", "var2.3", "var2.4", "var2.5"], self.declExpr1 )
! self.checkVariableResolutions( ["var1.3", "var1.4"], self.declExpr1b )
!
def suite():
! return unittest.makeSuite(LocaleVariableResolverTest)
if __name__ == '__main__':
|
|
From: <bl...@us...> - 2003-05-30 07:28:05
|
Update of /cvsroot/cpptool/rfta/src/pyrfta/test/rfta
In directory sc8-pr-cvs1:/tmp/cvs-serv1528/src/pyrfta/test/rfta
Modified Files:
__init__.py
Log Message:
* cleaned up & added conversion to string
Index: __init__.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/__init__.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** __init__.py 29 May 2003 14:05:56 -0000 1.1
--- __init__.py 30 May 2003 07:28:02 -0000 1.2
***************
*** 1,11 ****
from _pyrfta import *
! ##source = "void f() { return; }"
! ##parser = Parser( source )
! ##fn = parser.getFunctionAt( 16 )
! ##print fn.functionName.name
! ##body = fn.body
! ##for statement in body.getStatements():
! ## print statement
!
--- 1,20 ----
from _pyrfta import *
! def _identifier_str( self ):
! return self.identifier
!
! def _declarator_str( self ):
! return self.type.typeText + ' ' + self.name.identifier + self.typeSuffix.typeText
+ def _declarator_expr_str( self ):
+ s = 'DeclarationExpr<' + self.primaryType.typeText + " "
+ sep = ''
+ for decl in self.getDeclarators():
+ s += sep
+ s += str(decl)
+ sep = ','
+ return s + '>'
+
+ Declarator.__str__ = _declarator_str
+ DeclaratorExpression.__repr__ = _declarator_expr_str
+ Identifier.__str__ = _identifier_str
\ No newline at end of file
|
|
From: <bl...@us...> - 2003-05-29 21:15:35
|
Update of /cvsroot/cpptool/rfta/src/pyrfta/test/rfta
In directory sc8-pr-cvs1:/tmp/cvs-serv17464/src/pyrfta/test/rfta
Modified Files:
codeanalysis.py codeanalysistest.py
Log Message:
* added scope handling
* added locale variable resolution
* added using declaration support in scope
Index: codeanalysis.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/codeanalysis.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** codeanalysis.py 29 May 2003 17:03:06 -0000 1.2
--- codeanalysis.py 29 May 2003 21:15:18 -0000 1.3
***************
*** 1,3 ****
--- 1,4 ----
import rfta
+ import string
***************
*** 17,23 ****
self.resolver.exitScope()
- def visitNullStatement( self, statement ):
- pass
-
def visitDeclarationStatement( self, statement ):
statement.declaration.accept( self )
--- 18,21 ----
***************
*** 25,43 ****
def visitDeclaratorExpression( self, expression ):
for declarator in expression.getDeclarators():
! self.resolver.declareVariable( declarator.name.identifier )
!
! class LocalVariableResolver:
! def isLocaleVariable(self, variableName):
! return false
! def declareVariable(self, variableName):
! pass
! def enterScope(self):
pass
! def exitScope(self):
! pass
--- 23,151 ----
def visitDeclaratorExpression( self, expression ):
for declarator in expression.getDeclarators():
! self.resolver.declareVariable( declarator.name.identifier, expression )
! def visitForStatement( self, statement ):
! self.resolver.enterForScope()
! statement.declaration.accept( self )
! self._visitScopedSubstatement( statement.iteratedStatement )
! self.resolver.exitForScope()
! def visitIfStatement( self, statement ):
! self._visitScopedSubstatement( statement.thenStatement )
! if statement.hasElseStatement():
! self._visitScopedSubstatement( statement.elseStatement )
! def visitNullStatement( self, statement ):
pass
! def visitWhileStatement( self, statement ):
! self._visitScopedSubstatement( statement.iteratedStatement )
!
! def _visitScopedSubstatement( self, statement ):
! self.resolver.enterScope()
! statement.accept( self )
! self.resolver.exitScope()
!
! class Identifier:
! def __init__( self, identifier ):
! self.identifier = identifier
!
! def name( self ):
! pos = string.rfind( self.identifier, '::' )
! if pos == -1:
! return self.identifier
! return self.identifier[pos:]
!
! IDTYPE_LOCALVARIABLE = 1
! IDTYPE_IMPORTEDID = 2
!
! class Scope:
! children = []
!
! def __init__( self, parent_scope ):
! self.parent_scope = parent_scope
! if self.parent_scope:
! self.parent_scope.children.append( self )
!
! def resolve( self, identifier ):
! return None
!
! def parentResolve( self, identifier ):
! if self.parent_scope:
! return self.parent_scope.resolve( self, identifier )
! return None
!
! class FunctionScope(Scope):
! def __init__( self, function ):
! Scope.__init__( self, None )
! self.function = function
!
! class LocalVariableScope(Scope):
! declared = {}
!
! def __init__( self, parent_scope ):
! Scope.__init__( self, parent_scope )
!
! def declare( self, variableName, declExpr ):
! self.declared[variableName] = declExpr
!
! def declareLocalVariable( self, variableName ):
! return variableName in self.declared
!
! def resolve( self, identifier ):
! if self.declareLocalVariable( identifier ):
! return (IDTYPE_LOCALVARIABLE, self.declared[identifier])
! return self.parentResolve( identifier )
!
! class UsingDeclScope(Scope):
! imported = {}
!
! def __init__( self, parent_scope ):
! Scope.__init__( self, parent_scope )
!
! def importIdentifier( self, identifier ):
! imported[ Identifier(identifier).name() ] = identifier
!
! def resolve( self, identifier ):
! if declareLocalVariable( self, identifier ):
! return (IDTYPE_IMPORTEDID, imported[identifier])
! return self.parentResolve( identifier )
!
! class LocalVariableResolver:
! standard_for_scope = True
! scope_depth = 0
! resolved = {}
!
! def __init__( self, function_scope ):
! self.current_scope = function_scope
!
! def resolveVariable( self, variableName, variable_name_element ):
! variableDecl = self.current_scope.resolve( variableName )
! if variableDecl:
! self.resolved[ variable_name_element ] = variableDecl
!
! def declareVariable( self, variableName, declExpr ):
! assert( self.scope_depth > 0 )
! self.current_scope.declare( variableName, declExpr )
!
! def findVariable( self, variable_name_element ):
! return self.resolved.get( variable_name_element, None )
!
! def enterScope( self ):
! self.current_scope = LocalVariableScope( self.current_scope )
! self.scope_depth += 1
!
! def exitScope( self ):
! assert( self.scope_depth > 0 )
! self.scope_depth -= 1
! self.current_scope = self.current_scope.parent_scope
!
! def enterForScope( self ):
! if self.standard_for_scope:
! self.enterScope()
!
! def exitForScope( self ):
! if self.standard_for_scope:
! self.exitScope()
Index: codeanalysistest.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/codeanalysistest.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** codeanalysistest.py 29 May 2003 17:03:06 -0000 1.2
--- codeanalysistest.py 29 May 2003 21:15:18 -0000 1.3
***************
*** 5,15 ****
from mock import MockFactory
! class LocaleVariableDeclaratorTest(unittest.TestCase):
"""LocaleVariableDeclarator tests"""
def setUp( self ):
! self.resolver = self.createMockInstance( LocalVariableResolver, [] )
self.declarator = LocalVariableDeclarator( self.resolver )
- self.body = rfta.CompoundStatement()
def tearDown( self ):
--- 5,79 ----
from mock import MockFactory
!
! class CodeMother:
! """code model object mother"""
!
! def makeType( self, name ):
! return rfta.Type( name )
!
! def makeFunctionName( self, name ):
! return rfta.FunctionName( name )
!
! def makeParameters( self ):
! return rfta.Parameters()
!
! def makeFunctionDecl( self, return_type, name, parameters, body = None ):
! return rfta.FunctionDeclaration( return_type, name, parameters, body )
!
! def makeQuickFunctionDecl( self, return_type, name ):
! return self.makeFunctionDecl( self.makeType( return_type ),
! self.makeFunctionName( name ),
! self.makeParameters(),
! self.makeCompound() )
!
! def makeCompound( self ):
! return rfta.CompoundStatement()
!
! def makeVariableDeclExpr( self, variables ):
! declExpr = rfta.DeclaratorExpression( rfta.TypePart( "int" ) )
! for variable in variables:
! declarator = rfta.Declarator( rfta.TypePart(),
! rfta.Identifier(variable[0]),
! rfta.TypePart(),
! rfta.AssignInitializerExpression( rfta.GenericExpression( variable[1] ) ) )
! declExpr.appendDeclarator( declarator )
! return declExpr
!
! def makeVariableDecl( self, variables ):
! return rfta.DeclarationStatement( self.makeVariableDeclExpr( variables ) )
!
! def makeVariableName( self, name ):
! return rfta.VariableName( name )
!
! def makeWhile( self, condition, substatement ):
! return rfta.WhileStatement( condition, substatement )
!
! def makeFor( self, init, condition, update, substatement ):
! return rfta.ForStatement( init, condition, update, substatement )
!
! def makeIf( self, condition, then_statment, else_statement = None ):
! return rfta.IfStatement( condition, then_statment, else_statement )
!
! def makeNullStatement( self ):
! return rfta.NullStatement()
!
! def makeNull( self ):
! return rfta.NullExpression()
!
! def makeExpr( self, value ):
! return rfta.GenericExpression( value )
!
! def makeTrue( self ):
! return self.makeExpr( "true" )
!
!
! class LocaleVariableDeclaratorTest(unittest.TestCase,CodeMother):
"""LocaleVariableDeclarator tests"""
def setUp( self ):
! self.function = self.makeQuickFunctionDecl( "void", "f" )
! self.body = self.function.body
! self.resolver = self.createMockInstance( LocalVariableResolver, [], FunctionScope( self.function ) )
self.declarator = LocalVariableDeclarator( self.resolver )
def tearDown( self ):
***************
*** 17,29 ****
self.resolver = None
! def makeVariableDecl( self, name, init ):
! declarator = rfta.Declarator( rfta.TypePart(),
! rfta.Identifier(name),
! rfta.TypePart(),
! rfta.AssignInitializerExpression( rfta.GenericExpression( init ) ) )
! declExpr = rfta.DeclaratorExpression( rfta.TypePart( "int" ) )
! declExpr.appendDeclarator( declarator )
! declStatement = rfta.DeclarationStatement( declExpr )
! return declStatement
def testConstruction( self ):
--- 81,92 ----
self.resolver = None
! def doResolve( self ):
! self.declarator.declare( self.body )
!
! def checkDeclaredVariable( self, expected_variables ):
! actual_variables = []
! for variable_decl in self.resolver.declareVariable.argsPassed:
! actual_variables.append( variable_decl[0] )
! self.assertEqual( actual_variables, expected_variables )
def testConstruction( self ):
***************
*** 32,54 ****
def testEmptyBody( self ):
self.resolver.declareVariable.setExpectNoCall()
! self.declarator.visitCompoundStatement( self.body )
self.assertEqual( self.resolver.called, [ "enterScope", "exitScope" ] )
def testDummyBody( self ):
! self.body.appendStatement( rfta.NullStatement() )
self.resolver.declareVariable.setExpectNoCall()
! self.declarator.visitCompoundStatement( self.body )
self.assertEqual( self.resolver.called, [ "enterScope", "exitScope" ] )
! def testDeclareOneVariable( self ):
! self.body.appendStatement( self.makeVariableDecl( "var1", "3" ) )
! self.declarator.visitCompoundStatement( self.body )
! self.assertEqual( self.resolver.called, [ "enterScope", "declareVariable", "exitScope" ] )
! self.assertEqual( self.resolver.declareVariable.argsPassed, [("var1",)] )
def suite():
! return unittest.makeSuite(IdentifierResolverTestCase)
if __name__ == '__main__':
--- 95,201 ----
def testEmptyBody( self ):
self.resolver.declareVariable.setExpectNoCall()
! self.declarator.declare( self.body )
self.assertEqual( self.resolver.called, [ "enterScope", "exitScope" ] )
def testDummyBody( self ):
! self.body.appendStatement( self.makeNullStatement() )
self.resolver.declareVariable.setExpectNoCall()
! self.declarator.declare( self.body )
self.assertEqual( self.resolver.called, [ "enterScope", "exitScope" ] )
! def testDeclareTwoVariables( self ):
! self.body.appendStatement( self.makeVariableDecl( [("var1", "3"), ("var2", "7")] ) )
! self.declarator.declare( self.body )
! self.assertEqual( self.resolver.called, [ "enterScope", "declareVariable", "declareVariable", "exitScope" ] )
! self.checkDeclaredVariable( ["var1", "var2" ] )
!
! def testWhileScope( self ):
! self.body.appendStatement( self.makeWhile( self.makeTrue(),
! self.makeVariableDecl( [("var1", "453")] ) ) )
! self.declarator.declare( self.body )
! self.assertEqual( self.resolver.called,
! [ "enterScope", "enterScope", "declareVariable", "exitScope", "exitScope" ] )
! self.checkDeclaredVariable( ["var1"] )
!
! def testIfThenScope( self ):
! self.body.appendStatement( self.makeIf( self.makeTrue(),
! self.makeVariableDecl( [("var1", "453")] ) ) )
! self.declarator.declare( self.body )
! self.assertEqual( self.resolver.called,
! [ "enterScope", "enterScope", "declareVariable", "exitScope", "exitScope" ] )
! self.checkDeclaredVariable( ["var1"] )
!
! def testIfThenElseScope( self ):
! self.body.appendStatement( self.makeIf( self.makeTrue(),
! self.makeVariableDecl( [("var1", "453")] ),
! self.makeVariableDecl( [("var2", "456")] ) ) )
! self.declarator.declare( self.body )
! self.assertEqual( self.resolver.called,
! [ "enterScope", "enterScope", "declareVariable", "exitScope",
! "enterScope", "declareVariable", "exitScope",
! "exitScope" ] )
! self.checkDeclaredVariable( ["var1","var2"] )
!
! def testForScope( self ):
! self.body.appendStatement( self.makeFor( self.makeVariableDeclExpr( [("var1", "453")] ),
! self.makeTrue(),
! self.makeNull(),
! self.makeVariableDecl( [("var2", "412")] ),
! ) )
! self.declarator.declare( self.body )
! self.assertEqual( self.resolver.called,
! [ "enterScope",
! "enterForScope", "enterScope", "declareVariable",
! "enterScope", "declareVariable", "exitScope",
! "exitForScope", "exitScope", "exitScope" ] )
! self.checkDeclaredVariable( ["var1","var2"] )
!
! class LocaleVariableResolverTest(unittest.TestCase,CodeMother):
! """LocaleVariableResolver tests"""
!
! def setUp( self ):
! self.function = self.makeQuickFunctionDecl( "void", "f" )
! self.resolver = LocalVariableResolver( FunctionScope( self.function ) )
! self.declExpr1 = self.makeVariableDeclExpr( [("var1", "1"), ("var2","b"), ("var3","c")] )
! self.declExpr2 = self.makeVariableDeclExpr( [("x", "1"), ("y","b"), ("z","c")] )
! self.identifiers = {}
! for name in [ "var1", "var2", "var3", "x", "y", "z" ]:
! for count in range(1,5):
! variable_name = name + "." + str(count)
! self.identifiers[ variable_name ] = self.makeVariableName( variable_name )
!
! def tearDown( self ):
! pass
!
! def declareVariables( self, names, declExpr ):
! for name in names:
! self.resolver.declareVariable( name, declExpr )
!
! def resolveVariables( self, variables ):
! for variable in variables:
! id = variable[0] + "." + str(variable[1])
! self.resolver.resolveVariable( variable[0], self.identifiers[id] )
!
! def checkVariableResolutions( self, names, declExpr ):
! for name in names:
! self.assertEqual( self.resolver.findVariable( self.identifiers[name] ),
! (IDTYPE_LOCALVARIABLE,declExpr) )
!
! def testConstruction( self ):
! self.assertEqual( self.resolver.current_scope.function, self.function )
!
! def testDeclareAndResolve( self ):
! self.resolver.enterScope()
! self.declareVariables( ["var1", "var2", "var3"], self.declExpr1 )
! self.declareVariables( ["x", "y", "z"], self.declExpr1 )
! self.resolveVariables( [ ("var1",1), ("var2",1) ] )
! self.resolver.exitScope()
!
! self.checkVariableResolutions( ["var1.1", "var2.1"], self.declExpr1 )
def suite():
! return unittest.makeSuite(IdentifierResolverTestCase, LocaleVariableResolverTest)
if __name__ == '__main__':
|
|
From: <bl...@us...> - 2003-05-29 21:14:33
|
Update of /cvsroot/cpptool/rfta/src/pyrfta
In directory sc8-pr-cvs1:/tmp/cvs-serv16976/src/pyrfta
Modified Files:
ExposeDeclarations.cpp ExposeStatements.cpp
ExposeStatements2.cpp ExposeVisitors.cpp
Log Message:
* fixed bug
* switch get/set to properties
Index: ExposeDeclarations.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/ExposeDeclarations.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** ExposeDeclarations.cpp 29 May 2003 09:53:49 -0000 1.1
--- ExposeDeclarations.cpp 29 May 2003 21:14:30 -0000 1.2
***************
*** 37,40 ****
--- 37,45 ----
;
+ class_<VariableName, VariableNamePtr, bases<Element>, boost::noncopyable>( "VariableName",
+ init< std::string >() )
+ .add_property( "name", &VariableName::getName )
+ ;
+
class_<Parameters, ParametersPtr, bases<Element>, boost::noncopyable>( "Parameters" )
;
Index: ExposeStatements.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/ExposeStatements.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** ExposeStatements.cpp 28 May 2003 20:47:27 -0000 1.5
--- ExposeStatements.cpp 29 May 2003 21:14:30 -0000 1.6
***************
*** 32,37 ****
class_<ConditionStatement, bases<Statement>, boost::noncopyable>( "ConditionStatement", no_init )
! .def( "getCondition", &ConditionStatement::getCondition )
! .def( "setCondition", &ConditionStatement::setCondition )
.def( "getConditionChange", &ConditionStatement::getConditionChange )
;
--- 32,37 ----
class_<ConditionStatement, bases<Statement>, boost::noncopyable>( "ConditionStatement", no_init )
! .add_property( "condition", &ConditionStatement::getCondition,
! &ConditionStatement::setCondition )
.def( "getConditionChange", &ConditionStatement::getConditionChange )
;
***************
*** 40,57 ****
init<ExpressionPtr, StatementPtr>() )
.def( init<ExpressionPtr, StatementPtr, StatementPtr>() )
! .def( "getThenStatement", &IfStatement::getThenStatement )
! .def( "setThenStatement", &IfStatement::setThenStatement )
.def( "getThenStatementChange", &IfStatement::getThenStatementChange )
.def( "hasElseStatement", &IfStatement::hasElseStatement )
! .def( "getElseStatement", &IfStatement::getElseStatement )
! .def( "setElseStatement", &IfStatement::setElseStatement )
.def( "getElseStatementChange", &IfStatement::getElseStatementChange )
- .def( "getThenStatement", &IfStatement::getThenStatement )
- .def( "getThenStatement", &IfStatement::getThenStatement )
;
class_<IterationStatement, bases<ConditionStatement>, boost::noncopyable >( "IterationStatement", no_init )
! .def( "getIteratedStatement", &IterationStatement::getIteratedStatement )
! .def( "setIteratedStatement", &IterationStatement::setIteratedStatement )
.def( "getIteratedStatementChange", &IterationStatement::getIteratedStatementChange )
;
--- 40,55 ----
init<ExpressionPtr, StatementPtr>() )
.def( init<ExpressionPtr, StatementPtr, StatementPtr>() )
! .add_property( "thenStatement", &IfStatement::getThenStatement,
! &IfStatement::setThenStatement )
.def( "getThenStatementChange", &IfStatement::getThenStatementChange )
.def( "hasElseStatement", &IfStatement::hasElseStatement )
! .add_property( "elseStatement", &IfStatement::getElseStatement,
! &IfStatement::setElseStatement )
.def( "getElseStatementChange", &IfStatement::getElseStatementChange )
;
class_<IterationStatement, bases<ConditionStatement>, boost::noncopyable >( "IterationStatement", no_init )
! .add_property( "iteratedStatement", &IterationStatement::getIteratedStatement,
! &IterationStatement::setIteratedStatement )
.def( "getIteratedStatementChange", &IterationStatement::getIteratedStatementChange )
;
Index: ExposeStatements2.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/ExposeStatements2.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** ExposeStatements2.cpp 6 Apr 2003 07:20:23 -0000 1.2
--- ExposeStatements2.cpp 29 May 2003 21:14:30 -0000 1.3
***************
*** 20,30 ****
class_<ForStatement, ForStatementPtr, bases<IterationStatement>, boost::noncopyable >( "ForStatement",
init<ExpressionPtr, ExpressionPtr, ExpressionPtr, StatementPtr>() )
! .def( "getDeclaration", &ForStatement::getDeclaration )
! .def( "setDeclaration", &ForStatement::setDeclaration )
! .def( "getDeclarationChange", &ForStatement::getDeclarationChange )
! .def( "getIteration", &ForStatement::getIteration )
! .def( "setIteration", &ForStatement::setIteration )
! .def( "getIterationChange", &ForStatement::getIterationChange )
! ;
class_<SwitchStatement, SwitchStatementPtr, bases<ConditionStatement>, boost::noncopyable >( "SwitchStatement",
--- 20,30 ----
class_<ForStatement, ForStatementPtr, bases<IterationStatement>, boost::noncopyable >( "ForStatement",
init<ExpressionPtr, ExpressionPtr, ExpressionPtr, StatementPtr>() )
! .add_property( "declaration", &ForStatement::getDeclaration,
! &ForStatement::setDeclaration )
! .def( "getDeclarationChange", &ForStatement::getDeclarationChange )
! .add_property( "iteration", &ForStatement::getIteration,
! &ForStatement::setIteration )
! .def( "getIterationChange", &ForStatement::getIterationChange )
! ;
class_<SwitchStatement, SwitchStatementPtr, bases<ConditionStatement>, boost::noncopyable >( "SwitchStatement",
Index: ExposeVisitors.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/ExposeVisitors.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** ExposeVisitors.cpp 6 Apr 2003 07:20:23 -0000 1.2
--- ExposeVisitors.cpp 29 May 2003 21:14:30 -0000 1.3
***************
*** 59,63 ****
void visit( const ForStatementPtr &statement )
{
! call_method<void>( self, "visitForStatementStatement", object(statement) );
}
--- 59,63 ----
void visit( const ForStatementPtr &statement )
{
! call_method<void>( self, "visitForStatement", object(statement) );
}
|
|
From: <bl...@us...> - 2003-05-29 17:09:40
|
Update of /cvsroot/cpptool/rfta/src/pyrfta
In directory sc8-pr-cvs1:/tmp/cvs-serv20024/src/pyrfta
Modified Files:
ExposeExpressions.cpp ExposeExpressions2.cpp
ExposeStatements3.cpp pyrfta.dsp
Log Message:
* added missing exposition
* now run .bat to install dlls in src/pyrfta/test/rfta
Index: ExposeExpressions.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/ExposeExpressions.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** ExposeExpressions.cpp 6 Apr 2003 07:42:16 -0000 1.2
--- ExposeExpressions.cpp 29 May 2003 17:00:12 -0000 1.3
***************
*** 3,6 ****
--- 3,7 ----
#include <rfta/refactoring/CodeModelStatements.h>
#include <rfta/refactoring/CodeModelExpressions.h>
+ #include <xtl/python/ExposeEnumerator.h>
using namespace boost::python;
***************
*** 27,30 ****
--- 28,37 ----
;
+ class_<Identifier, IdentifierPtr, bases<Element>, boost::noncopyable>( "Identifier",
+ init<std::string>() )
+ .add_property( "identifier", &Identifier::getIdentifier )
+ ;
+
+ Xtl::Python::ExposeEnumerator<DeclaratorPtr>( "DeclaratorEnumerator" );
class_<DeclaratorExpression, DeclaratorExpressionPtr, bases<Expression>, boost::noncopyable>( "DeclaratorExpression",
init<TypePartPtr>() )
***************
*** 33,36 ****
--- 40,44 ----
.def( "getDeclaratorCount", &DeclaratorExpression::getDeclaratorCount )
.def( "getDeclaratorAt", &DeclaratorExpression::getDeclaratorAt )
+ .def( "getDeclarators", &DeclaratorExpression::getDeclarators )
.def( "insertDeclaratorAt", &DeclaratorExpression::insertDeclaratorAt )
.def( "appendDeclarator", &DeclaratorExpression::appendDeclarator )
Index: ExposeExpressions2.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/ExposeExpressions2.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** ExposeExpressions2.cpp 10 Apr 2003 08:40:34 -0000 1.2
--- ExposeExpressions2.cpp 29 May 2003 17:00:12 -0000 1.3
***************
*** 16,20 ****
.add_property( "type", &Declarator::getType, &Declarator::setType )
.add_property( "typeSuffix", &Declarator::getTypeSuffix, &Declarator::setTypeSuffix )
! .add_property( "getName", &Declarator::getName, &Declarator::setName )
.def( "hasInitializer", &Declarator::hasInitializer )
.add_property( "initializer", &Declarator::getInitializer, &Declarator::setInitializer )
--- 16,20 ----
.add_property( "type", &Declarator::getType, &Declarator::setType )
.add_property( "typeSuffix", &Declarator::getTypeSuffix, &Declarator::setTypeSuffix )
! .add_property( "name", &Declarator::getName, &Declarator::setName )
.def( "hasInitializer", &Declarator::hasInitializer )
.add_property( "initializer", &Declarator::getInitializer, &Declarator::setInitializer )
Index: ExposeStatements3.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/ExposeStatements3.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** ExposeStatements3.cpp 6 Apr 2003 07:20:23 -0000 1.2
--- ExposeStatements3.cpp 29 May 2003 17:00:12 -0000 1.3
***************
*** 40,42 ****
--- 40,50 ----
class_<NullStatement, NullStatementPtr, bases<Statement>, boost::noncopyable >( "NullStatement" )
;
+
+
+ class_<DeclarationStatement, DeclarationStatementPtr, bases<Statement>,
+ boost::noncopyable >( "DeclarationStatement", init<DeclaratorExpressionPtr>() )
+ .add_property( "declaration",
+ &DeclarationStatement::getDeclaration,
+ &DeclarationStatement::setDeclaration )
+ ;
}
Index: pyrfta.dsp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/pyrfta.dsp,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** pyrfta.dsp 29 May 2003 14:05:51 -0000 1.9
--- pyrfta.dsp 29 May 2003 17:00:12 -0000 1.10
***************
*** 58,62 ****
TargetPath=\prg\vc\Rfta\build\pyrfta\Release\_pyrfta.pyd
SOURCE="$(InputPath)"
! PostBuild_Cmds=copy $(TargetPath) ..\..\bin\_pyrfta.pyd
# End Special Build Tool
--- 58,62 ----
TargetPath=\prg\vc\Rfta\build\pyrfta\Release\_pyrfta.pyd
SOURCE="$(InputPath)"
! PostBuild_Cmds=copy $(TargetPath) ..\..\bin\_pyrfta.pyd cd ..\..\bin\ install-python-extension.bat
# End Special Build Tool
***************
*** 89,93 ****
TargetPath=\prg\vc\Rfta\build\pyrfta\Debug\_pyrfta.pyd
SOURCE="$(InputPath)"
! PostBuild_Cmds=copy $(TargetPath) ..\..\bin\_pyrfta.pyd
# End Special Build Tool
--- 89,93 ----
TargetPath=\prg\vc\Rfta\build\pyrfta\Debug\_pyrfta.pyd
SOURCE="$(InputPath)"
! PostBuild_Cmds=copy $(TargetPath) ..\..\bin\_pyrfta.pyd cd ..\..\bin\ install-python-extension.bat
# End Special Build Tool
|
|
From: <bl...@us...> - 2003-05-29 17:07:54
|
Update of /cvsroot/cpptool/rfta/src/rfta In directory sc8-pr-cvs1:/tmp/cvs-serv20315/src/rfta Modified Files: CodeModelDeclarations.cpp Log Message: * exposed declarators iterator Index: CodeModelDeclarations.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeModelDeclarations.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** CodeModelDeclarations.cpp 28 May 2003 20:46:58 -0000 1.2 --- CodeModelDeclarations.cpp 29 May 2003 17:00:46 -0000 1.3 *************** *** 21,25 **** - void Type::accept( ElementVisitor &visitor ) --- 21,24 ---- |
|
From: <bl...@us...> - 2003-05-29 17:03:39
|
Update of /cvsroot/cpptool/rfta/src/pyrfta/pytest
In directory sc8-pr-cvs1:/tmp/cvs-serv21542/src/pyrfta/pytest
Modified Files:
test.py
Log Message:
* added handling for simple variable declaration
Index: test.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/pytest/test.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** test.py 6 Apr 2003 07:20:23 -0000 1.2
--- test.py 29 May 2003 17:03:05 -0000 1.3
***************
*** 1,3 ****
! from pyrfta import *
class Visitor(StatementVisitor):
--- 1,3 ----
! from _pyrfta import *
class Visitor(StatementVisitor):
***************
*** 12,15 ****
--- 12,18 ----
def visitLabelStatement( self, statement ):
print "label statement visited : ", statement.label.labelName
+
+ def visitCompoundStatement( self, statement ):
+ print "compound statement visited : "
|
|
From: <bl...@us...> - 2003-05-29 17:03:10
|
Update of /cvsroot/cpptool/rfta/src/pyrfta/test/rfta
In directory sc8-pr-cvs1:/tmp/cvs-serv21542/src/pyrfta/test/rfta
Modified Files:
codeanalysis.py codeanalysistest.py
Log Message:
* added handling for simple variable declaration
Index: codeanalysis.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/codeanalysis.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** codeanalysis.py 29 May 2003 14:05:56 -0000 1.1
--- codeanalysis.py 29 May 2003 17:03:06 -0000 1.2
***************
*** 1,6 ****
import rfta
! class LocalVariableDeclarator(rfta.StatementVisitor):
def __init__( self, resolver ):
self.resolver = resolver
--- 1,9 ----
import rfta
!
! class LocalVariableDeclarator(rfta.StatementVisitor,rfta.ExpressionVisitor):
def __init__( self, resolver ):
+ rfta.StatementVisitor.__init__( self )
+ rfta.ExpressionVisitor.__init__( self )
self.resolver = resolver
***************
*** 8,14 ****
functionBody.accept(self)
! def visitCompoundStatement(self,compound):
self.resolver.enterScope()
self.resolver.exitScope()
class LocalVariableResolver:
--- 11,30 ----
functionBody.accept(self)
! def visitCompoundStatement( self, compound ):
self.resolver.enterScope()
+ for statement in compound.getStatements():
+ statement.accept( self )
self.resolver.exitScope()
+
+ def visitNullStatement( self, statement ):
+ pass
+
+ def visitDeclarationStatement( self, statement ):
+ statement.declaration.accept( self )
+
+ def visitDeclaratorExpression( self, expression ):
+ for declarator in expression.getDeclarators():
+ self.resolver.declareVariable( declarator.name.identifier )
+
class LocalVariableResolver:
Index: codeanalysistest.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/codeanalysistest.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** codeanalysistest.py 29 May 2003 14:05:56 -0000 1.1
--- codeanalysistest.py 29 May 2003 17:03:06 -0000 1.2
***************
*** 17,20 ****
--- 17,30 ----
self.resolver = None
+ def makeVariableDecl( self, name, init ):
+ declarator = rfta.Declarator( rfta.TypePart(),
+ rfta.Identifier(name),
+ rfta.TypePart(),
+ rfta.AssignInitializerExpression( rfta.GenericExpression( init ) ) )
+ declExpr = rfta.DeclaratorExpression( rfta.TypePart( "int" ) )
+ declExpr.appendDeclarator( declarator )
+ declStatement = rfta.DeclarationStatement( declExpr )
+ return declStatement
+
def testConstruction( self ):
pass
***************
*** 24,29 ****
self.declarator.visitCompoundStatement( self.body )
! self.assertEqual( self.resolver.enterScope.argsPassed, [()] )
! self.assertEqual( self.resolver.exitScope.argsPassed, [()] )
def suite():
--- 34,51 ----
self.declarator.visitCompoundStatement( self.body )
! self.assertEqual( self.resolver.called, [ "enterScope", "exitScope" ] )
!
! def testDummyBody( self ):
! self.body.appendStatement( rfta.NullStatement() )
! self.resolver.declareVariable.setExpectNoCall()
! self.declarator.visitCompoundStatement( self.body )
!
! self.assertEqual( self.resolver.called, [ "enterScope", "exitScope" ] )
!
! def testDeclareOneVariable( self ):
! self.body.appendStatement( self.makeVariableDecl( "var1", "3" ) )
! self.declarator.visitCompoundStatement( self.body )
! self.assertEqual( self.resolver.called, [ "enterScope", "declareVariable", "exitScope" ] )
! self.assertEqual( self.resolver.declareVariable.argsPassed, [("var1",)] )
def suite():
|
|
From: <bl...@us...> - 2003-05-29 16:58:57
|
Update of /cvsroot/cpptool/rfta/src/rfta
In directory sc8-pr-cvs1:/tmp/cvs-serv19278/src/rfta
Modified Files:
CodeModelExpressions.cpp
Log Message:
* exposed declarators iterator
Index: CodeModelExpressions.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeModelExpressions.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** CodeModelExpressions.cpp 28 May 2003 07:34:53 -0000 1.17
--- CodeModelExpressions.cpp 29 May 2003 16:58:54 -0000 1.18
***************
*** 7,10 ****
--- 7,11 ----
#include <rfta/refactoring/CodeModelExpressions.h>
#include <rfta/refactoring/CodeModelVisitor.h>
+ #include <xtl/GetAtEnumerator.h>
***************
*** 111,114 ****
--- 112,122 ----
{
return declaratorsTracker_.getAt( index );
+ }
+
+
+ Xtl::Enumerator<DeclaratorPtr>
+ DeclaratorExpression::getDeclarators() const
+ {
+ return Xtl::enumGetAt( *this, &DeclaratorExpression::getDeclaratorAt, 0, getDeclaratorCount() );
}
|
|
From: <bl...@us...> - 2003-05-29 16:58:57
|
Update of /cvsroot/cpptool/rfta/include/rfta/refactoring
In directory sc8-pr-cvs1:/tmp/cvs-serv19278/include/rfta/refactoring
Modified Files:
CodeModelExpressions.h
Log Message:
* exposed declarators iterator
Index: CodeModelExpressions.h
===================================================================
RCS file: /cvsroot/cpptool/rfta/include/rfta/refactoring/CodeModelExpressions.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** CodeModelExpressions.h 28 May 2003 07:34:54 -0000 1.17
--- CodeModelExpressions.h 29 May 2003 16:58:54 -0000 1.18
***************
*** 10,13 ****
--- 10,14 ----
#include <rfta/refactoring/CodeModelElement.h>
#include <boost/shared_ptr.hpp>
+ #include <xtl/Enumerator.h>
#include <string>
#include <vector>
***************
*** 77,80 ****
--- 78,83 ----
DeclaratorPtr getDeclaratorAt( int index ) const;
+
+ Xtl::Enumerator<DeclaratorPtr> getDeclarators() const;
void insertDeclaratorAt( int index,
|
|
From: <bl...@us...> - 2003-05-29 16:58:08
|
Update of /cvsroot/cpptool/rfta/bin In directory sc8-pr-cvs1:/tmp/cvs-serv18897/bin Modified Files: install-python-extension.bat Log Message: * fixed to install dll in src/pyrfta/test/rfta directory Index: install-python-extension.bat =================================================================== RCS file: /cvsroot/cpptool/rfta/bin/install-python-extension.bat,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** install-python-extension.bat 27 Apr 2003 13:01:58 -0000 1.1 --- install-python-extension.bat 29 May 2003 16:58:04 -0000 1.2 *************** *** 1,6 **** ! set PYTHON_DIR=C:\Python22 ! set INSTALL_DIR=%PYTHON_DIR%\DLLs xcopy /Y rfta_mdr.ext %INSTALL_DIR% xcopy /Y rftaparser_mdr.ext %INSTALL_DIR% ! xcopy /Y pyrfta.pyd %INSTALL_DIR% pause --- 1,5 ---- ! set INSTALL_DIR=..\src\pyrfta\test\rfta xcopy /Y rfta_mdr.ext %INSTALL_DIR% xcopy /Y rftaparser_mdr.ext %INSTALL_DIR% ! xcopy /Y _pyrfta.pyd %INSTALL_DIR% pause |
|
From: <bl...@us...> - 2003-05-29 14:42:10
|
Update of /cvsroot/cpptool/rfta/src/pyrfta/test/rfta In directory sc8-pr-cvs1:/tmp/cvs-serv11587/rfta Log Message: Directory /cvsroot/cpptool/rfta/src/pyrfta/test/rfta added to the repository |
|
From: <bl...@us...> - 2003-05-29 14:05:59
|
Update of /cvsroot/cpptool/rfta/src/pyrfta/test/rfta
In directory sc8-pr-cvs1:/tmp/cvs-serv13378/test/rfta
Added Files:
__init__.py alltests.py codeanalysis.py codeanalysistest.py
Log Message:
* added initial structure for python extension
--- NEW FILE: __init__.py ---
from _pyrfta import *
##source = "void f() { return; }"
##parser = Parser( source )
##fn = parser.getFunctionAt( 16 )
##print fn.functionName.name
##body = fn.body
##for statement in body.getStatements():
## print statement
--- NEW FILE: alltests.py ---
#!/usr/bin/env python
#
# Example of assembling all available unit tests into one suite. This usually
# varies greatly from one project to the next, so the code shown below will not
# be incorporated into the 'unittest' module. Instead, modify it for your own
# purposes.
#
# $Id: alltests.py,v 1.1 2003/05/29 14:05:56 blep Exp $
import unittest
import rfta.codeanalysistest
def suite():
# modules_to_test = ('rfta.codeanalysistest') # and so on
alltests = unittest.TestSuite()
alltests.addTest(unittest.findTestCases(rfta.codeanalysistest))
# for module in map(__import__, modules_to_test):
# alltests.addTest(unittest.findTestCases(module))
return alltests
#if __name__ == '__main__':
# unittest.main(defaultTest='suite')
--- NEW FILE: codeanalysis.py ---
import rfta
class LocalVariableDeclarator(rfta.StatementVisitor):
def __init__( self, resolver ):
self.resolver = resolver
def declare(self, functionBody):
functionBody.accept(self)
def visitCompoundStatement(self,compound):
self.resolver.enterScope()
self.resolver.exitScope()
class LocalVariableResolver:
def isLocaleVariable(self, variableName):
return false
def declareVariable(self, variableName):
pass
def enterScope(self):
pass
def exitScope(self):
pass
class Analyser:
def getFunctionResolver( function ):
resolver = LocaleVariableResolver()
declarator = LocalVariableDeclarator( resolver )
declarator.visitCompoundStatement( function.body )
return resolver
--- NEW FILE: codeanalysistest.py ---
import unittest
import mock
import rfta
from rfta.codeanalysis import *
from mock import MockFactory
class LocaleVariableDeclaratorTest(unittest.TestCase):
"""LocaleVariableDeclarator tests"""
def setUp( self ):
self.resolver = self.createMockInstance( LocalVariableResolver, [] )
self.declarator = LocalVariableDeclarator( self.resolver )
self.body = rfta.CompoundStatement()
def tearDown( self ):
self.declarator = None
self.resolver = None
def testConstruction( self ):
pass
def testEmptyBody( self ):
self.resolver.declareVariable.setExpectNoCall()
self.declarator.visitCompoundStatement( self.body )
self.assertEqual( self.resolver.enterScope.argsPassed, [()] )
self.assertEqual( self.resolver.exitScope.argsPassed, [()] )
def suite():
return unittest.makeSuite(IdentifierResolverTestCase)
if __name__ == '__main__':
unittest.TextTestRunner().run(suite())
|
|
From: <bl...@us...> - 2003-05-29 14:05:58
|
Update of /cvsroot/cpptool/rfta/src/pyrfta/test/mock
In directory sc8-pr-cvs1:/tmp/cvs-serv13378/test/mock
Added Files:
MockFactory.py Test_MockFactory.py __init__.py
Log Message:
* added initial structure for python extension
--- NEW FILE: MockFactory.py ---
class MockMethod(object):
def __init__(self, instance, methodName, realMethod):
object.__init__(self)
self.__name__ = methodName
self.instance = instance
self.method = getattr(instance, methodName)
self.realMethod = realMethod
self.kwargsPassed = []
self.argsPassed = []
def setExpectNoCall( self ):
self.setException( AssertionError( "Expected no call." ) )
def setException(self, exception):
self.eventSequence = [exception]
def setReturnValue(self, value):
self.eventSequence = [value]
def setEventSequence(self, seq):
self.eventSequence = seq[:]
def __call__(self, *args, **kwargs):
# Can we check the mock method has a similar interface to the real method?
## hide private methods from caller
self.instance.called.append(self.__name__)
self.argsPassed.append(args)
self.kwargsPassed.append(kwargs)
# default to returning None (if u don;t do anything)
obj = None
if self.realMethod:
obj = self.realMethod(*args, **kwargs)
if hasattr(self, "eventSequence"):
try:
obj = self.eventSequence.pop(0)
except IndexError, ie:
raise ie
else:
if isinstance(obj, Exception):
raise obj
return obj
class MockFactory(object):
def __new__(classDef, mockMethods, *args, **kwargs):
self = classDef(*args, **kwargs)
self.called = []
## ensure specified methods are avaiaible
callables = [ name for name in dir(self) if callable(getattr(self, name)) ]
for m in mockMethods:
if not m in callables:
raise AttributeError("Specified mock method (%s)does not exist" % m)
## override this instances attributes
for name in dir(self):
attr = getattr(self, name)
if name.startswith("__") and not name.endswith("__") or name=='called':
continue
elif callable(attr):
if name in mockMethods:
real = None
else:
real = attr
setattr(self, name, MockMethod(self, name, real))
elif attr is None and name not in mockMethods and \
not (name.startswith("__") and name.endswith("__")):
raise AttributeError("Cannot mock undefined instance variable (%s)" % name)
else:
setattr(self, name, attr)
return self
--- NEW FILE: Test_MockFactory.py ---
import unittest
from MockFactory import MockFactory, MockMethod
class TestClass:
"test"
y=2
def __init__(self):
self.x=1
def do(self, *args, **kwargs):
return 1
def dont(self):
return 2
def a(self):
pass
def b(self):
pass
def c(self):
raise Exception("test")
def d(self, x=1):
print x
def e(self, a,b,c=2,d=3):
pass
def main(self):
self.do(1)
self.dont()
self.a()
self.b()
try:
res = self.c()
except Exception, e:
print e
res = self.dont()
return res
class TestClass2(TestClass):
def __init__(self, a,b,c,d={}):
TestClass.__init__(self)
class TestClass3(TestClass):
pass
class AcceptMockFactory(unittest.TestCase):
# nb. this method is named duiffently to show we are not testing a method of the mock object class
def testAttributes(self):
"""prove mock object is the *same* object as the "real" class"""
mockInstance = MockFactory.__new__(TestClass, [])
self.assertEqual(mockInstance.y, 2)
mockInstance.y = 5
self.assertEqual(mockInstance.y, 5)
self.assertEqual(TestClass.y, 2)
TestClass.y = 100
self.assertEqual(TestClass.y, 100)
def testMethods(self):
"""prove a mock object's methods are all instances of MockMethod"""
mockInstance = MockFactory.__new__(TestClass, [])
callables = [ getattr(mockInstance, n) for n in dir(mockInstance)
if callable(getattr(mockInstance, n)) and not n=="__init__" ]
for method in callables:
#just check that doen't raise
method.setEventSequence(['anything'])
self.assertRaises(AttributeError, MockFactory.__new__, TestClass3, ["a", "d", "quit"])
mockInstance = MockFactory.__new__(TestClass3, ["a", "d"])
self.failUnless(isinstance(mockInstance.a, MockMethod))
self.failUnless(isinstance(mockInstance.d, MockMethod))
class TestMockFactory(unittest.TestCase):
def testConstruction(self):
"Test that the mock object's constructor is valid"
self.assertRaises(TypeError, MockFactory.__new__, TestClass2, [])
self.assertRaises(TypeError, MockFactory.__new__, TestClass2, [], 1,2)
self.assertRaises(TypeError, MockFactory.__new__, TestClass2, [], 1,2,3,e={1:1})
MockFactory.__new__(TestClass2, [], 1,2,3)
MockFactory.__new__(TestClass2, [], 1,2,3,d={1:2})
## add test for raising contructor
def testCalled(self):
"Test that we can find out what methods have been called on the mock object"
tests = [(TestClass, [], ["main", "do", "dont", "a", "b", "c", "dont"]),
(TestClass, ['c'], ["main", "do", "dont", "a", "b", "c"]),
(TestClass3, [], ["main", "do", "dont", "a", "b", "c", "dont"])
]
for (testKlass, mockMethods, expected) in tests:
mockObject = MockFactory.__new__(testKlass, mockMethods)
mockObject.main()
actual = mockObject.called
self.assertEqual(actual,expected)
class TestMockMethod(unittest.TestCase):
def testSetException(self):
"Simulate a method raising an exception"
mockObject = MockFactory.__new__(TestClass, [])
mockObject.a.setException(IOError("deliberate exception"))
self.assertRaises(IOError, mockObject.a)
def testSetReturnValue(self):
"Simulate a method returning something"
mockObject = MockFactory.__new__(TestClass, [])
self.assertEqual(mockObject.dont(), 2)
expected = "123"
mockObject.dont.setReturnValue(expected)
self.assertEqual(mockObject.dont(), expected)
def testArgsPassed(self):
"Get the arguments passed to a method"
expected = [(123, "test"),(1123123,), ("matt",)]
mockObject = MockFactory.__new__(TestClass, [])
for args in expected:
apply(mockObject.do, args)
self.assertEqual(mockObject.do.argsPassed, expected)
def testKwargsPassed(self):
"Get the keyword arguments passed to a method"
expected = [{"test":1},{"default":2}, {"3":4}]
mockObject = MockFactory.__new__(TestClass, ["a", "b", "c"])
for kwargs in expected:
apply(mockObject.do, [], kwargs)
self.assertEqual(mockObject.do.kwargsPassed, expected)
def testSetEventSequence(self):
"Set a list of events that a method will return/raise upon invokation"
events = [Exception("delibratly raised"), "some return value", IOError("Another raise"), None, "another return value"]
mockObject = MockFactory.__new__(TestClass, [])
mockObject.a.setEventSequence(events)
for event in events:
if isinstance(event, Exception):
self.assertRaises(event.__class__, mockObject.a)
else:
self.assertEqual(mockObject.a(), event)
self.assertRaises(IndexError, mockObject.a)
class TestTestCaseUsage(unittest.TestCase):
def testCreateMockInstance(self):
x=self.createMockInstance(TestClass,[])
y=MockFactory.__new__(TestClass,[])
self.assertEqual(dir(x),dir(y))
if __name__=="__main__":
unittest.main()
--- NEW FILE: __init__.py ---
import unittest
from MockFactory import MockFactory
def _createMockInstance( self, classType, methods=[], *initArgs, **initKwargs):
"""Create a mock instance of specified type (classType)
See MockFactory.py for more detail
"""
return MockFactory.__new__( classType, methods,
*initArgs, **initKwargs )
unittest.TestCase.createMockInstance = _createMockInstance
|
|
From: <bl...@us...> - 2003-05-29 14:05:58
|
Update of /cvsroot/cpptool/rfta/src/pyrfta/test
In directory sc8-pr-cvs1:/tmp/cvs-serv13378/test
Added Files:
README.txt alltests.py
Log Message:
* added initial structure for python extension
--- NEW FILE: README.txt ---
* Installation instruction.
- You need at least python 2.2 to be installed.
- You need to copy the following file in rfta/:
_pyrfta.pyd
boost_python.dll
rfta_mdr.ext
rftaparser_mdr.ext
The python extension _pyrfta is imported in the rfta package
in rfta/__init__.py.
* Testing
You need to make sure that the top directory (test/) is in the
PYTHONPATH if you are not running script from the top directory.
run alltests.py to run all the tests.
--- NEW FILE: alltests.py ---
#!/usr/bin/env python
#
# $Id: alltests.py,v 1.1 2003/05/29 14:05:55 blep Exp $
import unittest
import rfta.alltests
def suite():
alltests = unittest.TestSuite()
alltests.addTest( rfta.alltests.suite() )
return alltests
if __name__ == '__main__':
unittest.main(defaultTest='suite')
|
|
From: <bl...@us...> - 2003-05-29 14:05:58
|
Update of /cvsroot/cpptool/rfta/src/pyrfta
In directory sc8-pr-cvs1:/tmp/cvs-serv13378
Modified Files:
pyrfta.cpp pyrfta.dsp
Log Message:
* added initial structure for python extension
Index: pyrfta.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/pyrfta.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** pyrfta.cpp 28 May 2003 20:47:27 -0000 1.7
--- pyrfta.cpp 29 May 2003 14:05:50 -0000 1.8
***************
*** 92,96 ****
! BOOST_PYTHON_MODULE(pyrfta)
{
exposeCPPParser();
--- 92,96 ----
! BOOST_PYTHON_MODULE(_pyrfta)
{
exposeCPPParser();
Index: pyrfta.dsp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/pyrfta.dsp,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** pyrfta.dsp 28 May 2003 20:47:27 -0000 1.8
--- pyrfta.dsp 29 May 2003 14:05:51 -0000 1.9
***************
*** 54,62 ****
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib python22.lib boost_python.lib /nologo /dll /machine:I386 /out:"..\..\build\pyrfta\Release/pyrfta.pyd" /libpath:"../../lib" /libpath:"../../deplib/libs"
# Begin Special Build Tool
! TargetPath=\prg\vc\Rfta\build\pyrfta\Release\pyrfta.pyd
SOURCE="$(InputPath)"
! PostBuild_Cmds=copy $(TargetPath) ..\..\bin\pyrfta.pyd
# End Special Build Tool
--- 54,62 ----
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib python22.lib boost_python.lib /nologo /dll /machine:I386 /out:"..\..\build\pyrfta\Release/_pyrfta.pyd" /libpath:"../../lib" /libpath:"../../deplib/libs"
# Begin Special Build Tool
! TargetPath=\prg\vc\Rfta\build\pyrfta\Release\_pyrfta.pyd
SOURCE="$(InputPath)"
! PostBuild_Cmds=copy $(TargetPath) ..\..\bin\_pyrfta.pyd
# End Special Build Tool
***************
*** 85,93 ****
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib python22.lib boost_python_debug.lib /nologo /dll /debug /machine:I386 /out:"..\..\build\pyrfta\Debug/pyrfta.pyd" /pdbtype:sept /libpath:"../../lib" /libpath:"../../deplib/libs"
# Begin Special Build Tool
! TargetPath=\prg\vc\Rfta\build\pyrfta\Debug\pyrfta.pyd
SOURCE="$(InputPath)"
! PostBuild_Cmds=copy $(TargetPath) ..\..\bin\pyrfta.pyd
# End Special Build Tool
--- 85,93 ----
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib python22.lib boost_python_debug.lib /nologo /dll /debug /machine:I386 /out:"..\..\build\pyrfta\Debug/_pyrfta.pyd" /pdbtype:sept /libpath:"../../lib" /libpath:"../../deplib/libs"
# Begin Special Build Tool
! TargetPath=\prg\vc\Rfta\build\pyrfta\Debug\_pyrfta.pyd
SOURCE="$(InputPath)"
! PostBuild_Cmds=copy $(TargetPath) ..\..\bin\_pyrfta.pyd
# End Special Build Tool
|
|
From: <bl...@us...> - 2003-05-29 13:59:37
|
Update of /cvsroot/cpptool/rfta/src/pyrfta/test/mock In directory sc8-pr-cvs1:/tmp/cvs-serv10954/mock Log Message: Directory /cvsroot/cpptool/rfta/src/pyrfta/test/mock added to the repository |
|
From: <bl...@us...> - 2003-05-29 13:59:20
|
Update of /cvsroot/cpptool/rfta/src/pyrfta/test In directory sc8-pr-cvs1:/tmp/cvs-serv10836/test Log Message: Directory /cvsroot/cpptool/rfta/src/pyrfta/test added to the repository |
|
From: <bl...@us...> - 2003-05-29 10:01:14
|
Update of /cvsroot/cpptool/rfta/src/rftavc7addin In directory sc8-pr-cvs1:/tmp/cvs-serv23827/src/rftavc7addin Modified Files: rftavc7addin.vcproj Log Message: * updated projects Index: rftavc7addin.vcproj =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rftavc7addin/rftavc7addin.vcproj,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** rftavc7addin.vcproj 15 May 2003 19:14:12 -0000 1.4 --- rftavc7addin.vcproj 29 May 2003 10:01:11 -0000 1.5 *************** *** 31,35 **** WarningLevel="3" Detect64BitPortabilityProblems="TRUE" ! DebugInformationFormat="4"/> <Tool Name="VCCustomBuildTool"/> --- 31,36 ---- WarningLevel="3" Detect64BitPortabilityProblems="TRUE" ! DebugInformationFormat="4" ! ShowIncludes="TRUE"/> <Tool Name="VCCustomBuildTool"/> |
|
From: <bl...@us...> - 2003-05-29 10:01:13
|
Update of /cvsroot/cpptool/rfta/src/rftavc6addin In directory sc8-pr-cvs1:/tmp/cvs-serv23827/src/rftavc6addin Modified Files: rftavc6addin.vcproj Log Message: * updated projects Index: rftavc6addin.vcproj =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rftavc6addin/rftavc6addin.vcproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** rftavc6addin.vcproj 14 May 2003 19:44:12 -0000 1.1 --- rftavc6addin.vcproj 29 May 2003 10:01:10 -0000 1.2 *************** *** 204,207 **** --- 204,213 ---- <File RelativePath=".\Commands.cpp"> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + ShowIncludes="FALSE"/> + </FileConfiguration> </File> <File |
|
From: <bl...@us...> - 2003-05-29 10:01:13
|
Update of /cvsroot/cpptool/rfta/src/rftaparser In directory sc8-pr-cvs1:/tmp/cvs-serv23827/src/rftaparser Modified Files: rftaparser.vcproj Log Message: * updated projects Index: rftaparser.vcproj =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rftaparser/rftaparser.vcproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** rftaparser.vcproj 14 May 2003 19:44:12 -0000 1.1 --- rftaparser.vcproj 29 May 2003 10:01:10 -0000 1.2 *************** *** 1100,1106 **** </File> <File - RelativePath=".\Makefile.am"> - </File> - <File RelativePath=".\NonSemanticBlanker.cpp"> </File> --- 1100,1103 ---- *************** *** 1113,1116 **** --- 1110,1116 ---- <File RelativePath="..\..\include\rfta\parser\ParserTools.h"> + </File> + <File + RelativePath="UnitTests.cpp"> </File> </Files> |
|
From: <bl...@us...> - 2003-05-29 10:01:12
|
Update of /cvsroot/cpptool/rfta/src/rfta In directory sc8-pr-cvs1:/tmp/cvs-serv23827/src/rfta Modified Files: rfta.vcproj Log Message: * updated projects Index: rfta.vcproj =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/rfta.vcproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** rfta.vcproj 14 May 2003 19:44:11 -0000 1.1 --- rfta.vcproj 29 May 2003 10:01:09 -0000 1.2 *************** *** 185,188 **** --- 185,200 ---- </File> <File + RelativePath="IdentifierScope.cpp"> + </File> + <File + RelativePath="IdentifierScope.h"> + </File> + <File + RelativePath="IdentifierScopeTest.cpp"> + </File> + <File + RelativePath="IdentifierScopeTest.h"> + </File> + <File RelativePath=".\IdentifierVisitor.cpp"> </File> *************** *** 311,314 **** --- 323,332 ---- </File> <File + RelativePath="CodeModelDeclarations.cpp"> + </File> + <File + RelativePath="..\..\include\rfta\refactoring\CodeModelDeclarations.h"> + </File> + <File RelativePath=".\CodeModelElement.cpp"> </File> *************** *** 326,329 **** --- 344,359 ---- </File> <File + RelativePath="CodeModelGenerator.cpp"> + </File> + <File + RelativePath="..\..\include\rfta\refactoring\CodeModelGenerator.h"> + </File> + <File + RelativePath="CodeModelParser.cpp"> + </File> + <File + RelativePath="..\..\include\rfta\refactoring\CodeModelParser.h"> + </File> + <File RelativePath=".\CodeModelStatements.cpp"> </File> *************** *** 623,626 **** --- 653,680 ---- <File RelativePath=".\CodeModelGeneratorTest.h"> + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCustomBuildTool"/> + </FileConfiguration> + </File> + <File + RelativePath="CodeModelParserTest.cpp"> + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCLCompilerTool"/> + </FileConfiguration> + </File> + <File + RelativePath="CodeModelParserTest.h"> + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCustomBuildTool"/> + </FileConfiguration> </File> <File *************** *** 635,638 **** --- 689,698 ---- <File RelativePath=".\CodeWriterInsertTest.h"> + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCustomBuildTool"/> + </FileConfiguration> </File> <File *************** *** 647,650 **** --- 707,716 ---- <File RelativePath=".\CodeWriterTest.h"> + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCustomBuildTool"/> + </FileConfiguration> </File> <File *************** *** 659,662 **** --- 725,734 ---- <File RelativePath=".\CodeWriterTestBase.h"> + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCustomBuildTool"/> + </FileConfiguration> </File> </Filter> |
|
From: <bl...@us...> - 2003-05-29 10:01:12
|
Update of /cvsroot/cpptool/rfta/src/pyrfta In directory sc8-pr-cvs1:/tmp/cvs-serv23827/src/pyrfta Modified Files: pyrfta.vcproj Log Message: * updated projects Index: pyrfta.vcproj =================================================================== RCS file: /cvsroot/cpptool/rfta/src/pyrfta/pyrfta.vcproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** pyrfta.vcproj 14 May 2003 19:44:09 -0000 1.1 --- pyrfta.vcproj 29 May 2003 10:01:09 -0000 1.2 *************** *** 150,153 **** --- 150,156 ---- </File> <File + RelativePath="ExposeDeclarations.cpp"> + </File> + <File RelativePath="..\..\include\xtl\python\ExposeEnumerator.h"> </File> |
|
From: <bl...@us...> - 2003-05-29 09:55:31
|
Update of /cvsroot/cpptool/rfta/src/rfta In directory sc8-pr-cvs1:/tmp/cvs-serv22057a/src/rfta Modified Files: rfta.dsp Log Message: * added CodeModelParser, similar to CPPParser but returns CodeModel object instead of ASTNode. Index: rfta.dsp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/rfta.dsp,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** rfta.dsp 28 May 2003 07:36:21 -0000 1.50 --- rfta.dsp 29 May 2003 09:55:25 -0000 1.51 *************** *** 1016,1023 **** --- 1016,1041 ---- SOURCE=.\CodeModelParserTest.cpp + + !IF "$(CFG)" == "rfta - Win32 Release" + + # PROP Exclude_From_Build 1 + + !ELSEIF "$(CFG)" == "rfta - Win32 Debug" + + !ENDIF + # End Source File # Begin Source File SOURCE=.\CodeModelParserTest.h + + !IF "$(CFG)" == "rfta - Win32 Release" + + # PROP Exclude_From_Build 1 + + !ELSEIF "$(CFG)" == "rfta - Win32 Debug" + + !ENDIF + # End Source File # Begin Source File |
|
From: <bl...@us...> - 2003-05-29 09:53:52
|
Update of /cvsroot/cpptool/rfta/src/pyrfta
In directory sc8-pr-cvs1:/tmp/cvs-serv21597/src/pyrfta
Added Files:
ExposeDeclarations.cpp
Log Message:
* exposed code model declaration and parser
--- NEW FILE: ExposeDeclarations.cpp ---
#include "Forwards.h"
#include <boost/python.hpp>
#include <rfta/refactoring/CodeModelDeclarations.h>
using namespace boost::python;
using namespace Refactoring::CodeModel;
void
exposeDeclarations()
{
// void (Expression::*mfAcceptExpressionVisitor)( ExpressionVisitor & ) = &Expression::accept;
// class_<Expression, bases<Element>, boost::noncopyable >( "Expression", no_init )
// .def( "accept", mfAcceptExpressionVisitor )
// ;
class_<FunctionDeclaration, FunctionDeclarationPtr, bases<Element>, boost::noncopyable >( "FunctionDeclaration",
init< TypePtr, FunctionNamePtr, ParametersPtr, optional<CompoundStatementPtr> >() )
.add_property( "functionName", &FunctionDeclaration::getFunctionName )
.def( "hasBody", &FunctionDeclaration::hasBody )
.add_property( "body", &FunctionDeclaration::getBody )
;
class_<Type, TypePtr, bases<Element>, boost::noncopyable>( "Type",
init< std::string >() )
.add_property( "typeText", &Type::getTypeText )
;
class_<ArrayTypeSuffix, ArrayTypeSuffixPtr, bases<Element>, boost::noncopyable>( "ArrayTypeSuffix",
init< std::string >() )
.add_property( "suffixText", &ArrayTypeSuffix::getSuffixText )
;
class_<FunctionName, FunctionNamePtr, bases<Element>, boost::noncopyable>( "FunctionName",
init< std::string >() )
.add_property( "name", &FunctionName::getName )
;
class_<Parameters, ParametersPtr, bases<Element>, boost::noncopyable>( "Parameters" )
;
}
|