Revision: 8113
          http://playerstage.svn.sourceforge.net/playerstage/?rev=8113&view=rev
Author:   thjc
Date:     2009-07-24 10:57:21 +0000 (Fri, 24 Jul 2009)

Log Message:
-----------
remove duplicate file and use the one from the python bindings folder instead

Modified Paths:
--------------
    code/player/trunk/client_libs/libplayerc/bindings/ruby/CMakeLists.txt

Removed Paths:
-------------
    code/player/trunk/client_libs/libplayerc/bindings/ruby/playerc_swig_parse.py

Modified: code/player/trunk/client_libs/libplayerc/bindings/ruby/CMakeLists.txt
===================================================================
--- code/player/trunk/client_libs/libplayerc/bindings/ruby/CMakeLists.txt       
2009-07-23 23:37:42 UTC (rev 8112)
+++ code/player/trunk/client_libs/libplayerc/bindings/ruby/CMakeLists.txt       
2009-07-24 10:57:21 UTC (rev 8113)
@@ -25,7 +25,7 @@
             # Generate playerc_wrap.i and playerc_wrap.h from playerc.h
             SET (playerc_wrap_prefix 
"${CMAKE_CURRENT_BINARY_DIR}/playerc_wrap")
             ADD_CUSTOM_COMMAND (OUTPUT "${playerc_wrap_prefix}.i"
-                COMMAND ${PYTHON_EXECUTABLE} 
${CMAKE_CURRENT_SOURCE_DIR}/playerc_swig_parse.py 
${PROJECT_SOURCE_DIR}/client_libs/libplayerc/playerc.h ${playerc_wrap_prefix}
+                COMMAND ${PYTHON_EXECUTABLE} 
${CMAKE_CURRENT_SOURCE_DIR}/../python/playerc_swig_parse.py 
${PROJECT_SOURCE_DIR}/client_libs/libplayerc/playerc.h ${playerc_wrap_prefix}
                 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
                 VERBATIM)
 

Deleted: 
code/player/trunk/client_libs/libplayerc/bindings/ruby/playerc_swig_parse.py
===================================================================
--- 
code/player/trunk/client_libs/libplayerc/bindings/ruby/playerc_swig_parse.py    
    2009-07-23 23:37:42 UTC (rev 8112)
+++ 
code/player/trunk/client_libs/libplayerc/bindings/ruby/playerc_swig_parse.py    
    2009-07-24 10:57:21 UTC (rev 8113)
@@ -1,251 +0,0 @@
-#!/usr/bin/env python
-
-import re
-import string
-import sys
-
-# Global array of PlayerStruct objects (defined below) to hold information 
about
-# structure definitions.
-structures=[]
-
-# Accessor functions to allow access to dynamic arrays (e.g. 
playerc_laser_t.ranges).
-# accessor_header goes in playerc_wrap.h, accessor_interface goes in 
playerc_wrap.i.
-accessor_header="""
-typedef struct
-{
-    TYPE *actual;
-} TYPEArray;
-"""
-
-accessor_interface="""
-typedef struct
-{
-    TYPE *actual;
-
-    %extend {
-        TYPE __getitem__(int index) {return $self->actual[index];}
-        void __setitem__(int index,TYPE value) {$self->actual[index]=value;}
-    }
-} TYPEArray;
-"""
-
-# Class for holding information about a detected structure, including a header
-# section for preprocessor directives and typedefs and a 'members' section for
-# external functions that become members.
-class PlayerStruct:
-    name=''
-    header=""
-    members=""
-    
-    def __init__(self,initName):
-        self.name=initName
-        
-    def __eq__(self,other):
-        if isinstance(other,str):
-            return self.name==other
-        return NotImplemented
-
-# Called for every function that matches the regex in main.  If successful,
-# the function will be removed, temporarily stored in a 'PlayerStruct' class,
-# and later reconstituted as a member function.
-def memberize(match):
-    # Used to remove the first parameter from a list of function parameters.
-    # The first parameter to a potential member function is a pointer to the 
structure
-    # to work with, which is not necessary after the transformation.
-    lastParams=re.compile('\(\s*\w+?.*?,\s*(?P<last>.*)\)',re.DOTALL)
-    funcName=match.group('name')
-    # The start of the loop checks chunks of the function name for a 
recognizable structure
-    # name.  e.g. playerc_some_class_do_some_action will try playerc_some, 
playerc_some_class
-    # and so on until a match is found.
-    objName="playerc"
-    for i in range(1,funcName.count("_")):
-        objName=funcName[:funcName.find("_",len(objName)+1)]
-        action=funcName[len(objName)+1:]
-        # Once a match is found, transform the external function to a member 
function.
-        if objName in structures:
-            struct=structures[structures.index(objName)]
-            # e.g. playerc_client_create
-            if action=="create":
-                # add the function to a structure
-                struct.members+="\t\t" + objName + " " + match.group('params') 
+ ";\n"
-                # add a preprocessor directive to ensure swig picks up the old 
library
-                # function name as a constructor.
-                struct.header+="\t#define new_" + objName + " " + funcName + 
"\n"
-            # e.g. playerc_client_destroy
-            elif action == "destroy":
-                # add the destructor to the structure.  No destructors take 
parameters
-                # or return a value.
-                struct.members+="\t\tvoid destroy(void);\n"
-                struct.header+="\t#define del_" + objName + " " + funcName + 
"\n"
-            # e.g. playerc_client_connect
-            else:
-                # set 'last' to every parameter in the parameter list except 
the first.
-                # if no match, there are less than two parameters, in which 
case the
-                # transformed function will have no parameters (void).
-                lm=lastParams.match(match.group('params'))
-                if lm:
-                    last=lm.group('last')
-                else:
-                    last="void"
-                # add the function prototype to the structure.
-                struct.members+="\t\t" + match.group('retval') + " " + action 
+ " (%s);\n" % last
-                # functions that are not constructors or destructors already 
match the required SWIG pattern,
-                # so no preprocessor directive is required.
-            # Since the function is a member function and will now have a 
prototype
-            # inside an 'extend' clause in the structure definition, remove 
the external
-            # reference by substituting with ''
-            return ''
-    # If the function is not a member function of a structure, take no action.
-    return match.group()
-
-# This function is called for every structure.  It attempts to find dynamically
-# allocated arrays of simple types (which are not subscriptable in python with
-# standard binding) and wrap them in an accessor structure defined at the top 
of this file.
-def accessorize(match):
-    # 'text' is the new code for the matched structure (to be returned)
-    text=match.group('decl')+"{"
-    # 'body' is everything within the {}s of the structure definition
-    body=match.group('body');
-    # 'arrayMember' is a regex designed to match certain member definitions,
-    # e.g. 'double *ranges;' (playerc_laser_t)
-    
arrayMember=re.compile(r"\b(?P<type>int|double|float)\s*[*]\s*(?P<name>\w+);",re.MULTILINE)
-    
-    # performs a substitution on the member definitions described above,
-    # e.g. 'double *ranges;' becomes 'doubleArray ranges;',
-    # and appends the modified struct body to the code.
-    text+=arrayMember.sub("\g<type>Array \g<name>;",body)
-    
-    # terminate the modified structure and add the 'footer', usually just the 
end
-    # of the typedef.
-    text+="}"+match.group('footer')
-    return text;
-
-# Called for every structure in the input stream.  Modifies the code block to 
include
-# an appropriate 'header' section with typedefs and preprocessor directives,
-# and adds new member function prototypes in a SWIG 'extend' block at the end 
of the
-# structure.
-def genifacestruct(match):
-    # ensure the structure has previously been scanned (should always be the 
case)
-    if match.group('name') in structures:
-        # retrieve the data about the matched structure
-        struct=structures[structures.index(match.group('name'))]
-        # add the header block and a typedef to permit the change from 
structname_t to structname
-        # (for clarity in python)
-        text="%header\n%{\n"+struct.header+"\ttypedef " + struct.name+"_t 
"+struct.name+";\n%}\n\n"
-        # add the structure declaration and the body, omitting a closing brace
-        text+=match.group('decl')+"{"+match.group('body')
-        # add the extension block with member function protoypes, plus a 
closing brace.
-        text+="\t%extend\n\t{\n"+struct.members+"\t}\n}"
-        # add the remainder of the original structure definition (usually just 
the typedef name)
-        text+=match.group('footer')
-        return text
-    # if no match, print a statement to that effect and return the original 
structure definition.
-    # should never happen.
-    print "No match on %s" % match.group('name')
-    return match.group() 
-
-# Used to remove _t from structure references.
-# Had to do this due to ambiguity with typedef statements and callback 
function prototypes.
-# e.g.   typedef void (*playerc_putmsg_fn_t) (void *device, char *header, char 
*data);
-# also   typedef player_blobfinder_blob_t playerc_blobfinder_blob_t;
-# This function ensures that only structures defined in playerc.h are modified.
-def underscore(match):
-    if match.group('name') in structures:
-        return match.group('name')
-    return match.group()
-
-if __name__ == '__main__':
-
-    # should always be playerc.h
-    infilename = sys.argv[1]
-    # should always be 'playerc_wrap'
-    outfilename = sys.argv[2]
-
-    # Read in the entire file
-    file = open(infilename, 'r')
-    ifaceStream = file.read()
-    file.close()
-
-    # Pattern to remove all double-spacing (used later)
-    blank=re.compile('([ \t\f\v\r]*\n){3,}',re.MULTILINE)
-
-    # Remove all comments (multi- and single-line).
-    comment=re.compile('((/\*.*?\*/)|(//.*?$))', re.DOTALL|re.MULTILINE)
-    ifaceStream=comment.sub('',ifaceStream)
-
-    # Pattern to recognise structure definitions
-    struct=re.compile("""
-        (?P<decl>typedef\s+struct\s*\w*\s*)  # Declaration
-        {(?P<body>.*?)}(?P<footer>\s*        # Body
-        (?P<name>playerc_\w+?)(_t)?          # Name
-        \s*;)
-    """, re.DOTALL|re.VERBOSE)
-    
-    # Match and replace all structure definitions with versions that have
-    # accessor structures for dynamically allocated arrays using the 
'accessorize'
-    # function above.
-    ifaceStream=struct.sub(accessorize,ifaceStream)
-    
-    # remove all double-spacing (pattern defined above)
-    ifaceStream=blank.sub('\n\n',ifaceStream)
-
-    # output to new header file.  It is necessary to modify the original 
header file to
-    # allow for data types of structure members to be changed.  Pointers are 
modified
-    # to structures containing a pointer, to allow the member to be 
subscriptable in python.
-    # see comments on the 'accessorize' function above.  
-    file=open("%s.h" % outfilename,"w")
-    # write accessor structure definitions for arrays of ints, doubles and 
floats.
-    for type in ["int","double","float"]:
-        file.write(accessor_header.replace("TYPE",type))
-    # write the modified header file.
-    file.write(ifaceStream)
-    file.close()
-    
-    # find the names of all the structures defined in the file, and make
-    # a list of objects to store information about the structures.
-    # could be done as part of 'accessorize' but left here for clarity.
-    am=struct.finditer(ifaceStream)
-    for m in am:
-        structures+=[PlayerStruct(m.group('name'))]
-
-    # Pattern to match function prototypes that could be changed to 'member 
functions'
-    # of structures, allowing object-oriented style calling from Python.
-    function=re.compile("""
-        \s*    
-        ((?P<retval>                  # Capture the return type:
-            \w+\s*?(                  # Type name, is a 
-            \** |                     # pointer OR
-            &?  |                     # reference OR
-            (\[\s*[0-9]*\s*\])        # array.
-            )
-        )\s*)?                        # Only one (potential) return value.
-        (?P<name>                     # Capture function name
-            playerc_\w+               # Class name and member function name
-        )\s*
-        (?P<params>\(.*?\))           # Parameters
-        \s*;
-    """, re.DOTALL|re.VERBOSE)
-
-    # remove the _t from the end of all the struct references.
-    structNames=re.compile(r"\b(?P<name>playerc_\w+)_t\b")
-    ifaceStream=structNames.sub(underscore,ifaceStream)
-
-    # using the 'memberize' function, find functions that should be struct 
'members' and shift them.
-    ifaceStream=function.sub(memberize,ifaceStream)
-
-    # Using the gathered information about functions and structures, rewrite 
the structure
-    # definitions in the interface file to include required extensions 
(function prototypes), 
-    # typedefs and preprocessor directives.  see comments on 'genifacestruct' 
function above.
-    ifaceStream=struct.sub(genifacestruct,ifaceStream)
-
-    # remove all double spacing.
-    ifaceStream=blank.sub('\n\n',ifaceStream)
-    
-    # write the SWIG interface definition file.
-    file=open("%s.i" % outfilename,"w")
-    # write interfaces for the accessor structs including subscripting 
functions.
-    for type in ["int","double","float"]:
-        file.write(accessor_interface.replace("TYPE",type))
-    file.write(ifaceStream)
-    file.close()
-    
\ No newline at end of file


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
_______________________________________________
Playerstage-commit mailing list
Playerstage-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to