deleted obsolete scripts
This commit is contained in:
		@@ -1,184 +0,0 @@
 | 
			
		||||
#!/usr/bin/env python
 | 
			
		||||
"""
 | 
			
		||||
Usage: check_doc.py > log.txt
 | 
			
		||||
The script parses different opencv modules
 | 
			
		||||
(that are described by instances of class Comp below) and
 | 
			
		||||
checks for typical errors in headers and docs, for consistence and for completeness.
 | 
			
		||||
Due to its simplicity, it falsely reports some bugs, that should be
 | 
			
		||||
just ignored.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
import sys, os, re, glob
 | 
			
		||||
 | 
			
		||||
comps = []
 | 
			
		||||
 | 
			
		||||
class Comp:
 | 
			
		||||
    def __init__(self,comp_name):
 | 
			
		||||
        self.name = comp_name
 | 
			
		||||
 | 
			
		||||
cxcore = Comp('cxcore')
 | 
			
		||||
cxcore.header_path = '../cxcore/include'
 | 
			
		||||
cxcore.headers = ['cxcore.h','cxtypes.h']
 | 
			
		||||
cxcore.ext_macro = 'CVAPI'
 | 
			
		||||
cxcore.inline_macro = 'CV_INLINE'
 | 
			
		||||
cxcore.func_prefix = 'cv'
 | 
			
		||||
cxcore.doc_path = '../docs/ref'
 | 
			
		||||
cxcore.docs = ['opencvref_cxcore.htm']
 | 
			
		||||
comps.append(cxcore)
 | 
			
		||||
 | 
			
		||||
cv = Comp('cv')
 | 
			
		||||
cv.header_path = '../cv/include'
 | 
			
		||||
cv.headers = ['cv.h','cvtypes.h']
 | 
			
		||||
cv.ext_macro = 'CVAPI'
 | 
			
		||||
cv.inline_macro = 'CV_INLINE'
 | 
			
		||||
cv.func_prefix = 'cv'
 | 
			
		||||
cv.doc_path = '../docs/ref'
 | 
			
		||||
cv.docs = ['opencvref_cv.htm']
 | 
			
		||||
comps.append(cv)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
highgui = Comp('highgui')
 | 
			
		||||
highgui.header_path = '../otherlibs/highgui'
 | 
			
		||||
highgui.headers = ['highgui.h']
 | 
			
		||||
highgui.ext_macro = 'CVAPI'
 | 
			
		||||
highgui.inline_macro = 'CV_INLINE'
 | 
			
		||||
highgui.func_prefix = 'cv'
 | 
			
		||||
highgui.doc_path = '../docs/ref'
 | 
			
		||||
highgui.docs = ['opencvref_highgui.htm']
 | 
			
		||||
comps.append(highgui)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def normalize_decl(decl):
 | 
			
		||||
    decl = re.sub( r'^\((.+?)\)', r'\1', decl)
 | 
			
		||||
    decl = re.sub( r' CV_DEFAULT\((.+?)\)(,|( *\);))', r'=\1\2', decl)
 | 
			
		||||
    decl = re.sub( r'\);', r' );', decl )
 | 
			
		||||
    decl = re.sub( r'\(', r'( ', decl )
 | 
			
		||||
    decl = re.sub( r'/\*.+?\*/', r'', decl )
 | 
			
		||||
    decl = re.sub( r'\binline\b', r'', decl )
 | 
			
		||||
    decl = re.sub( r' +', r' ', decl )
 | 
			
		||||
    decl = re.sub( r' ?= ?', r'=', decl )
 | 
			
		||||
    return decl.strip()
 | 
			
		||||
 | 
			
		||||
def print_report(filename, line_no, msg):
 | 
			
		||||
    print '%s(%d): %s' % (filename,line_no,msg)
 | 
			
		||||
 | 
			
		||||
for comp in comps:
 | 
			
		||||
    print "==================================================="
 | 
			
		||||
    print 'Checking %s...' % (comp.name,)
 | 
			
		||||
    header_path = comp.header_path
 | 
			
		||||
    func_list = {}
 | 
			
		||||
 | 
			
		||||
    if not header_path.endswith('/') and not header_path.endswith('\\'):
 | 
			
		||||
        header_path += '/'
 | 
			
		||||
    for header_glob in comp.headers:
 | 
			
		||||
        glob_expr = header_path + header_glob
 | 
			
		||||
        for header in glob.glob(glob_expr):
 | 
			
		||||
            f = open(header,'r')
 | 
			
		||||
            func_name = ""
 | 
			
		||||
            mode = line_no = 0 # mode - outside func declaration (0) or inside (1)
 | 
			
		||||
            for l in f.xreadlines():
 | 
			
		||||
                line_no += 1
 | 
			
		||||
                ll = ""
 | 
			
		||||
                
 | 
			
		||||
                #if re.findall(r'\b([abd-z]|([c][a-uw-z]))[a-z]*[A-Z]', l):
 | 
			
		||||
                #    print_report(header,line_no,"Bad-style identifier:\n\t"+l) 
 | 
			
		||||
                
 | 
			
		||||
                if mode == 0:
 | 
			
		||||
                    if l.startswith(comp.ext_macro):
 | 
			
		||||
                        ll = l[len(comp.ext_macro):]
 | 
			
		||||
                        decl = ""
 | 
			
		||||
                        mode = 1
 | 
			
		||||
                    elif l.startswith(comp.inline_macro):
 | 
			
		||||
                        temp_func_name = re.findall( r'^.+?\b(' + comp.func_prefix + '\w+)', l )
 | 
			
		||||
                        if temp_func_name and temp_func_name[0] != func_name:
 | 
			
		||||
                            ll = l[len(comp.inline_macro):]
 | 
			
		||||
                            decl = ""
 | 
			
		||||
                            mode = 1
 | 
			
		||||
                else:
 | 
			
		||||
                    ll = l
 | 
			
		||||
 | 
			
		||||
                if ll:
 | 
			
		||||
                    decl += ll.rstrip('\n') + ' '
 | 
			
		||||
                    if ll.find(';') >= 0:
 | 
			
		||||
                        mode = 0
 | 
			
		||||
                        decl = normalize_decl(decl)
 | 
			
		||||
                        func_name = re.findall( r'^.+?\b(' + comp.func_prefix + '\w+)', decl )[0]
 | 
			
		||||
                        if func_list.get(func_name,[]):
 | 
			
		||||
                            print_report(header,line_no,"Duplicated declaration of " + \
 | 
			
		||||
                                         func_name + "... ignored") 
 | 
			
		||||
                        else:
 | 
			
		||||
                            func_list[func_name] = [decl,header,line_no,0]
 | 
			
		||||
                    else:
 | 
			
		||||
                        mode = 1
 | 
			
		||||
            f.close()
 | 
			
		||||
    
 | 
			
		||||
    doc_path = comp.doc_path
 | 
			
		||||
    if not doc_path.endswith('/') and not doc_path.endswith('\\'):
 | 
			
		||||
        doc_path += '/'
 | 
			
		||||
 | 
			
		||||
    blurb_re = re.compile( r'^<p class="Blurb"' )
 | 
			
		||||
 | 
			
		||||
    for doc_glob in comp.docs:
 | 
			
		||||
        glob_expr = doc_path + doc_glob
 | 
			
		||||
        for doc in glob.glob(glob_expr):
 | 
			
		||||
            f = open(doc, 'r')
 | 
			
		||||
            mode = line_no = 0 # mode - 0 outside function declaration, 2 - inside,
 | 
			
		||||
                               # 1 transitional state ('cause <pre> is used not only
 | 
			
		||||
                               # for declaring functions)
 | 
			
		||||
            for l in f.xreadlines():
 | 
			
		||||
                line_no += 1
 | 
			
		||||
                #if re.findall(r'\b([abd-z]|([c][a-uw-z]))[a-z]*[A-Z]', l):
 | 
			
		||||
                #    print_report(doc,line_no,"Bad-style identifier:\n\t" + l) 
 | 
			
		||||
                if mode == 0:
 | 
			
		||||
                    if blurb_re.match(l):
 | 
			
		||||
                        mode = 1
 | 
			
		||||
                elif mode == 1:
 | 
			
		||||
                    if l.endswith('<pre>\n'):
 | 
			
		||||
                        mode = 2
 | 
			
		||||
                        decl = ""
 | 
			
		||||
                elif mode == 2:
 | 
			
		||||
                    if l.startswith('</pre>'):
 | 
			
		||||
                        mode = 0
 | 
			
		||||
                        if decl.find('CV_DEFAULT') >= 0:
 | 
			
		||||
                            print_report(doc,line_no,'CV_DEFAULT is used in documentation')
 | 
			
		||||
                        decl = normalize_decl(decl)
 | 
			
		||||
                        decl_list = decl.split(';')
 | 
			
		||||
                        for decl in decl_list:
 | 
			
		||||
                            decl = decl.strip()
 | 
			
		||||
                            if decl:
 | 
			
		||||
                                decl = decl + ';'
 | 
			
		||||
 | 
			
		||||
                                #print '***', decl
 | 
			
		||||
                                func_name = re.findall( r'^.+?\b(' + comp.func_prefix + '\w+)\(', decl )
 | 
			
		||||
                                if not func_name: continue
 | 
			
		||||
 | 
			
		||||
                                func_name = func_name[0]
 | 
			
		||||
                                decl_info = func_list.get(func_name,[])
 | 
			
		||||
                                if decl_info:
 | 
			
		||||
                                    if decl_info[3] == 0:
 | 
			
		||||
                                        if decl_info[0] != decl:
 | 
			
		||||
                                            print_report(doc,line_no,'Incorrect documentation on ' + func_name + ':')
 | 
			
		||||
                                            print '  hdr: ' + decl_info[0]
 | 
			
		||||
                                            print '  doc: ' + decl
 | 
			
		||||
                                        decl_info[3] = 1
 | 
			
		||||
                                    else:
 | 
			
		||||
                                        print_report(doc,line_no,'Duplicated documentation on ' + func_name)
 | 
			
		||||
                                else:
 | 
			
		||||
                                    print_report(doc,line_no,'The function '+func_name+' is not declared')
 | 
			
		||||
                    elif not l.startswith('#define'):
 | 
			
		||||
                        decl += l.rstrip('\n')
 | 
			
		||||
            f.close()
 | 
			
		||||
 | 
			
		||||
    print "---------------------------------------------------"
 | 
			
		||||
    keys = func_list.keys()
 | 
			
		||||
    undocumented_funcs = []
 | 
			
		||||
    for k in keys:
 | 
			
		||||
        decl_info = func_list[k]
 | 
			
		||||
        if decl_info[3] == 0:
 | 
			
		||||
            undocumented_funcs.append((decl_info[1],decl_info[2],k))
 | 
			
		||||
 | 
			
		||||
    undocumented_funcs.sort()
 | 
			
		||||
            
 | 
			
		||||
    for decl_info in undocumented_funcs:
 | 
			
		||||
        print_report(decl_info[0],decl_info[1],'Undocumented function '+decl_info[2])
 | 
			
		||||
 | 
			
		||||
@@ -1,103 +0,0 @@
 | 
			
		||||
#!/usr/bin/python
 | 
			
		||||
BINARY_OPERATORS={
 | 
			
		||||
    '+':'cvAdd',
 | 
			
		||||
    '-':'cvSub', 
 | 
			
		||||
    '/':'cvDiv', 
 | 
			
		||||
    '*':'cvMul',
 | 
			
		||||
    '^':'cvXor',
 | 
			
		||||
    '&':'cvAnd',
 | 
			
		||||
    '|':'cvOr',
 | 
			
		||||
}
 | 
			
		||||
SCALAR_OPERATORS={
 | 
			
		||||
    '+':'cvAddS',
 | 
			
		||||
    '-':'cvSubS', 
 | 
			
		||||
    '&':'cvAndS',
 | 
			
		||||
    '|':'cvOrS',
 | 
			
		||||
    '^':'cvXorS',
 | 
			
		||||
}
 | 
			
		||||
SCALE_OPERATORS={
 | 
			
		||||
    '*':'val',
 | 
			
		||||
    '/':'1.0/val'
 | 
			
		||||
}
 | 
			
		||||
CMP_OPERATORS={
 | 
			
		||||
    '==':'CV_CMP_EQ',
 | 
			
		||||
    '!=':'CV_CMP_NE',
 | 
			
		||||
    '>=':'CV_CMP_GE',
 | 
			
		||||
    '>':'CV_CMP_GT',
 | 
			
		||||
    '<=':'CV_CMP_LE',
 | 
			
		||||
    '<':'CV_CMP_LT',
 | 
			
		||||
}
 | 
			
		||||
ARR={
 | 
			
		||||
    'CvMat':'cvCreateMat(self->rows, self->cols, self->type)',
 | 
			
		||||
    'IplImage':'cvCreateImage(cvGetSize(self), self->depth, self->nChannels)'
 | 
			
		||||
}
 | 
			
		||||
CMP_ARR={
 | 
			
		||||
    'CvMat':'cvCreateMat(self->rows, self->cols, CV_8U)',
 | 
			
		||||
    'IplImage':'cvCreateImage(cvGetSize(self), IPL_DEPTH_8U, 1)' 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
def scalar_scale_operator(arr, op, arg):
 | 
			
		||||
    print '\t%s * operator %s (double val){' % (arr, op)
 | 
			
		||||
    print '\t\t%s * res = %s;' % (arr, ARR[arr] )
 | 
			
		||||
    print '\t\tcvScale(self, res, %s);' % arg
 | 
			
		||||
    print '\t\treturn res;'
 | 
			
		||||
    print '\t}'
 | 
			
		||||
    print '\t%s * operator %s (double val){' % (arr, op)
 | 
			
		||||
    print '\t\t%s * res = %s;' % (arr, ARR[arr] )
 | 
			
		||||
    print '\t\tcvScale(self, res, %s);' % arg
 | 
			
		||||
    print '\t\treturn res;'
 | 
			
		||||
    print '\t}'
 | 
			
		||||
 | 
			
		||||
print "/** This file was automatically generated using util/cvarr_operators.py script */"
 | 
			
		||||
 | 
			
		||||
for arr in ARR:
 | 
			
		||||
    print '%%extend %s {' % arr
 | 
			
		||||
    for op in BINARY_OPERATORS:
 | 
			
		||||
        print '\t%%newobject operator %s;' % (op)
 | 
			
		||||
        print '\t%s * operator %s (CvArr * src){' % ( arr, op )
 | 
			
		||||
        print '\t\t%s * res = %s;' % ( arr, ARR[arr] )
 | 
			
		||||
        print '\t\t%s(self, src, res);' % ( BINARY_OPERATORS[op] )
 | 
			
		||||
        print '\t\treturn res;'
 | 
			
		||||
        print '\t}'
 | 
			
		||||
        print '\t%s * operator %s= (CvArr * src){' % ( arr, op )
 | 
			
		||||
        print '\t\t%s(self, src, self);' % ( BINARY_OPERATORS[op] )
 | 
			
		||||
        print '\t\treturn self;'
 | 
			
		||||
        print '\t}'
 | 
			
		||||
    for op in SCALAR_OPERATORS:
 | 
			
		||||
        print '\t%%newobject operator %s;' % (op)
 | 
			
		||||
        print '\t%s * operator %s (CvScalar val){' % ( arr, op )
 | 
			
		||||
        print '\t\t%s * res = %s;' % ( arr, ARR[arr] )
 | 
			
		||||
        print '\t\t%s(self, val, res);' % ( SCALAR_OPERATORS[op] )
 | 
			
		||||
        print '\t\treturn res;'
 | 
			
		||||
        print '\t}'
 | 
			
		||||
        print '\t%s * operator %s= (CvScalar val){' % ( arr, op )
 | 
			
		||||
        print '\t\t%s(self, val, self);' % ( SCALAR_OPERATORS[op] )
 | 
			
		||||
        print '\t\treturn self;'
 | 
			
		||||
        print '\t}'
 | 
			
		||||
    for op in CMP_OPERATORS:
 | 
			
		||||
        print '\t%%newobject operator %s;' % (op)
 | 
			
		||||
        print '\t%s * operator %s (CvArr * src){' % ( arr, op )
 | 
			
		||||
        print '\t\t%s * res = %s;' % ( arr, CMP_ARR[arr] )
 | 
			
		||||
        print '\t\tcvCmp(self, src, res, %s);' % ( CMP_OPERATORS[op] )
 | 
			
		||||
        print '\t\treturn res;'
 | 
			
		||||
        print '\t}'
 | 
			
		||||
        print '\t%s * operator %s (double val){' % ( arr, op )
 | 
			
		||||
        print '\t\t%s * res = %s;' % ( arr, CMP_ARR[arr] )
 | 
			
		||||
        print '\t\tcvCmpS(self, val, res, %s);' % ( CMP_OPERATORS[op] )
 | 
			
		||||
        print '\t\treturn res;'
 | 
			
		||||
        print '\t}'
 | 
			
		||||
 | 
			
		||||
    for op in SCALE_OPERATORS:
 | 
			
		||||
        print '\t%%newobject operator %s;' % (op)
 | 
			
		||||
        print '\t%s * operator %s (double val){' % (arr, op)
 | 
			
		||||
        print '\t\t%s * res = %s;' % (arr, ARR[arr] )
 | 
			
		||||
        print '\t\tcvScale(self, res, %s);' % SCALE_OPERATORS[op]
 | 
			
		||||
        print '\t\treturn res;'
 | 
			
		||||
        print '\t}'
 | 
			
		||||
        print '\t%s * operator %s= (double val){' % (arr, op)
 | 
			
		||||
        print '\t\tcvScale(self, self, %s);' % SCALE_OPERATORS[op]
 | 
			
		||||
        print '\t\treturn self;'
 | 
			
		||||
        print '\t}'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    print '} /* extend %s */\n' % arr
 | 
			
		||||
@@ -1,28 +0,0 @@
 | 
			
		||||
#! /usr/bin/env python
 | 
			
		||||
"""
 | 
			
		||||
This script extracts macros #defines from those OpenCV headers that can't be
 | 
			
		||||
directly parsed by current SWIG versions and must be pre-filtered by
 | 
			
		||||
the C preprocessor (that erases all #defines).  Type information is missing in the 
 | 
			
		||||
macros, so C code can't be regenerated.  Instead, try to convert C to Python code.
 | 
			
		||||
C macros too complicated to represent in python using regexes are listed in EXCLUDE
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
import sys, re
 | 
			
		||||
 | 
			
		||||
EXCLUDE = { } 
 | 
			
		||||
 | 
			
		||||
# force this to be part of cv module
 | 
			
		||||
# otherwise becomes cv.cvmacros
 | 
			
		||||
print "/** This file was automatically generated using util/extract_aliases.py script */"
 | 
			
		||||
print "%module cv"
 | 
			
		||||
print "%pythoncode %{"
 | 
			
		||||
for fn in sys.argv[1:]:
 | 
			
		||||
    f = open( fn, "r" )
 | 
			
		||||
    in_define = 0
 | 
			
		||||
    for l in f.xreadlines():
 | 
			
		||||
        m = re.match( r"^#define\s+((?:CV_|IPL_|cv)\w+)\s+((?:CV|IPL|cv)\w*)\s*$", l )
 | 
			
		||||
        if m and not l.endswith( "\\\n" ) and not EXCLUDE.has_key(m.group(1)):
 | 
			
		||||
            print "%s=%s" % (m.group(1), m.group(2))
 | 
			
		||||
    f.close()
 | 
			
		||||
 | 
			
		||||
print "%}"
 | 
			
		||||
@@ -1,30 +0,0 @@
 | 
			
		||||
#! /usr/bin/env python
 | 
			
		||||
"""
 | 
			
		||||
This script extracts #defines from those OpenCV headers that can't be
 | 
			
		||||
directly parsed by current SWIG versions and must be pre-filtered by
 | 
			
		||||
the C preprocessor (that erases all #defines).
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
import sys, re
 | 
			
		||||
 | 
			
		||||
for fn in sys.argv[1:]:
 | 
			
		||||
    f = open( fn, "r" )
 | 
			
		||||
    in_define = 0
 | 
			
		||||
    for l in f.xreadlines():
 | 
			
		||||
        if re.match( r"^#define\s+(CV_|IPL_|cv)\w+\s+", l ):
 | 
			
		||||
            in_define = 1
 | 
			
		||||
        if re.match (r"^#define\s+CV_MAKETYPE", l):
 | 
			
		||||
            in_define = 1
 | 
			
		||||
        if re.match (r"^#define\s+CV_CN", l):
 | 
			
		||||
            in_define = 1
 | 
			
		||||
        if re.match (r"^#define\s+CV_MAT_TYPE", l):
 | 
			
		||||
            in_define = 1
 | 
			
		||||
        if re.match (r"^#define\s+CV_MAT_DEPTH", l):
 | 
			
		||||
            in_define = 1
 | 
			
		||||
        if in_define:
 | 
			
		||||
            print l[:l.find ('/*')]
 | 
			
		||||
            if not l.endswith( "\\\n" ):
 | 
			
		||||
                in_define = 0
 | 
			
		||||
                print
 | 
			
		||||
    f.close()
 | 
			
		||||
 | 
			
		||||
@@ -1,73 +0,0 @@
 | 
			
		||||
#! /usr/bin/env python
 | 
			
		||||
"""
 | 
			
		||||
This script checks the OpenCV headers to find methods that take double pointers
 | 
			
		||||
to OpenCV data structures as in/out parameters.
 | 
			
		||||
 | 
			
		||||
These methods need a special treatment and therefore SWIG typemaps are generated.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
def convert_name(str):
 | 
			
		||||
    count = 0
 | 
			
		||||
    if (str[0:2] == "_p"):
 | 
			
		||||
        p,s = convert_name(str[2:])
 | 
			
		||||
        return(('*' + p),s)
 | 
			
		||||
    return ('',str[1:])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if (sys.argv.__len__() < 1):
 | 
			
		||||
    sys.exit(1)
 | 
			
		||||
 | 
			
		||||
infile = open(sys.argv[1],'r')
 | 
			
		||||
 | 
			
		||||
lines = infile.readlines()
 | 
			
		||||
 | 
			
		||||
infile.close()
 | 
			
		||||
 | 
			
		||||
foundit = 0
 | 
			
		||||
mytypes = []
 | 
			
		||||
 | 
			
		||||
for line in lines:
 | 
			
		||||
    if (foundit == 0):
 | 
			
		||||
        if (line.find('TYPES TABLE (BEGIN') > -1):
 | 
			
		||||
            foundit = 1
 | 
			
		||||
    else:
 | 
			
		||||
        if (line.find('TYPES TABLE (END)') > -1):
 | 
			
		||||
            foundit = 0
 | 
			
		||||
        else:
 | 
			
		||||
            stuff = line.split()
 | 
			
		||||
            if (stuff.__len__() >= 3):
 | 
			
		||||
                if (stuff[0] == "#define"):
 | 
			
		||||
                    mytypes.append(stuff[1][8:])
 | 
			
		||||
 | 
			
		||||
print """
 | 
			
		||||
/*//////////////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// This file was automatically generated from the extract_doublepointers.py script found in the 
 | 
			
		||||
// 'utils' subdirectory of the OpenCV distribution.  Run it on the .cpp file generated by swig to
 | 
			
		||||
// generate the double pointer typemaps
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////////////////////M*/
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
for mytype in mytypes:
 | 
			
		||||
    p,s = convert_name(mytype)
 | 
			
		||||
    if (p.__len__() >= 2):
 | 
			
		||||
        print '%typemap(in)',s,p,' (void * vptr, $*1_ltype buffer) {'
 | 
			
		||||
        print '\tif ((SWIG_ConvertPtr($input, &vptr, $*1_descriptor, 1)) == -1){'
 | 
			
		||||
        print '\t\tSWIG_fail;';
 | 
			
		||||
        print '\t}'
 | 
			
		||||
        print '\tbuffer = ($*1_ltype) vptr;'
 | 
			
		||||
        print '\t$1=&buffer;'
 | 
			
		||||
        print '}'
 | 
			
		||||
        #rez = "" + s + " " + p + 'getPtrTo' + s + '( ' +  s +  ' ' + p[1:] + 'input)'
 | 
			
		||||
        #sys.stdout.write(rez)
 | 
			
		||||
        #sys.stdout.write('\n{\n\t' + s + ' ' + p + 'rez = new ' + s + p[1:] + '();')
 | 
			
		||||
        #sys.stdout.write('\n\t*rez =input;\n\treturn(rez);\n}\n')
 | 
			
		||||
        #sys.stdout.write(rez)
 | 
			
		||||
        #sys.stdout.write(';\n')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#    else:
 | 
			
		||||
#        print '/* No conversions needed for type ', s, ' */'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1,180 +0,0 @@
 | 
			
		||||
#! /usr/bin/env python
 | 
			
		||||
"""
 | 
			
		||||
This script extracts macros functions from the OpenCV headers and attempts to generate
 | 
			
		||||
standard C function prototypes.  Type information is missing in the macros, so SWIG 
 | 
			
		||||
cannot generate C code for them unless we provide this.  
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
import sys, re
 | 
			
		||||
 | 
			
		||||
ARG_MAP = { 
 | 
			
		||||
    "mat":"CvMat*",   
 | 
			
		||||
    "type":"int", 
 | 
			
		||||
    "flags":"int",
 | 
			
		||||
    "img":"CvArr *", 
 | 
			
		||||
    "image":"IplImage *", 
 | 
			
		||||
    "mat1":"CvMat*", 
 | 
			
		||||
    "mat2":"CvMat*",
 | 
			
		||||
    "seq":"CvSeq*",
 | 
			
		||||
    "elem_ptr":"void *",
 | 
			
		||||
    "elem":"CvPoint",
 | 
			
		||||
    "elem_type":"ignore",
 | 
			
		||||
    "elemtype":"ignore",
 | 
			
		||||
    "elem_size":"int",
 | 
			
		||||
    "edge":"CvGraphEdge *",
 | 
			
		||||
    "vertex":"CvGraphVtx *",
 | 
			
		||||
    "contour":"CvSeq *",
 | 
			
		||||
    "vtx":"CvGraphVtx *",
 | 
			
		||||
    "reader":"CvSeqReader",
 | 
			
		||||
    "writer":"CvSeqWriter",
 | 
			
		||||
    "hist":"CvHistogram *",
 | 
			
		||||
    "ptr":"void *",
 | 
			
		||||
    "arr":"CvArr *",
 | 
			
		||||
    "header":"CvMat *",
 | 
			
		||||
    "src":"CvArr *",
 | 
			
		||||
    "src1":"CvArr *",
 | 
			
		||||
    "src2":"CvArr *",
 | 
			
		||||
    "src3":"CvArr *",
 | 
			
		||||
    "dst":"CvArr *",
 | 
			
		||||
    "pt1":"CvPoint",
 | 
			
		||||
    "pt2":"CvPoint",
 | 
			
		||||
    "_pt":"CvPoint",
 | 
			
		||||
    "index":"int",
 | 
			
		||||
    "idx":"int",
 | 
			
		||||
    "set":"CvSet *",
 | 
			
		||||
    "n":"int",
 | 
			
		||||
    "a":"int",
 | 
			
		||||
    "b":"int",
 | 
			
		||||
    "t":"int",
 | 
			
		||||
    "value":"double",
 | 
			
		||||
    "row":"int",
 | 
			
		||||
    "col":"int",
 | 
			
		||||
    "cn":"int",
 | 
			
		||||
    "new_cn":"int",
 | 
			
		||||
    "pix_size":"int",
 | 
			
		||||
    "depth":"int",
 | 
			
		||||
    "node":"CvSparseNode *",
 | 
			
		||||
    "storage":"CvMemStorage *",
 | 
			
		||||
    "new_dims": "int",
 | 
			
		||||
    "new_sizes": "int *",
 | 
			
		||||
    "A":"CvArr *",
 | 
			
		||||
    "B":"CvArr *",
 | 
			
		||||
    "C":"CvArr *",
 | 
			
		||||
    "real_scalar":"double",
 | 
			
		||||
    "graph":"CvGraph *",
 | 
			
		||||
    "r":"double",
 | 
			
		||||
    "g":"double",
 | 
			
		||||
#    "b":"double",
 | 
			
		||||
    "line_iterator":"CvLineIterator",
 | 
			
		||||
    "deltas":"double *",
 | 
			
		||||
    "step":"int",
 | 
			
		||||
    "haar":"void *",
 | 
			
		||||
#    "contour":"const void*",  # handled as a special case in cvshadow
 | 
			
		||||
    "range":"CvSize", 
 | 
			
		||||
    "nch":"int",
 | 
			
		||||
    "method":"int",
 | 
			
		||||
    "factor":"double"
 | 
			
		||||
}
 | 
			
		||||
RET_MAP = {
 | 
			
		||||
    "cvContourPerimeter":"double",
 | 
			
		||||
    "CV_RGB":"CvScalar",
 | 
			
		||||
    "CV_NEXT_GRAPH_EDGE":"CvGraphEdge *",
 | 
			
		||||
    "CV_IMIN":"int",
 | 
			
		||||
    "CV_IMAX":"int",
 | 
			
		||||
    "CV_IABS":"int",
 | 
			
		||||
    "CV_MAT_CN":"int",
 | 
			
		||||
    "CV_MAT_DEPTH":"int",
 | 
			
		||||
    "CV_NEXT_LINE_POINT":"void",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# special cases
 | 
			
		||||
MACROS = {
 | 
			
		||||
    #"CV_MAKETYPE":"",  # SWIG 1.3.29 doesn't like this one for some indeterminant reason
 | 
			
		||||
    "CV_TURN_ON_IPL_COMPATIBILITY":"",
 | 
			
		||||
    "CV_MAT_ELEM_PTR_FAST":"void * CV_MAT_ELEM_PTR_FAST(CvMat mat,int row,int col,int pix_size);",
 | 
			
		||||
    "CV_MAT_ELEM_PTR":"void * CV_MAT_ELEM_PTR(CvMat mat,int row,int col);",
 | 
			
		||||
    "CV_NODE_VAL":"void * CV_NODE_VAL(CvSparseMat* mat,CvSparseNode * node);",
 | 
			
		||||
    "CV_NODE_IDX":"int * CV_NODE_IDX(CvSparseMat* mat,CvSparseNode * node);",
 | 
			
		||||
    "CV_READ_CHAIN_POINT":"void CV_READ_CHAIN_POINT(CvPoint _pt, CvChainPtReader reader);",
 | 
			
		||||
    "CV_SUBDIV2D_NEXT_EDGE":"CvQuadEdge2D* CV_SUBDIV2D_NEXT_EDGE(CvSubdiv2DEdge edge);",
 | 
			
		||||
    "cvFree":"void cvFree(void ** ptr);",
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print """
 | 
			
		||||
/*//////////////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// This file is automatically generated from the extract_macros.py script found in the 'utils'
 | 
			
		||||
// subdirectory of the OpenCV distribution.  If the generated function prototypes are missing or 
 | 
			
		||||
// incorrect, it is likely that a name->type mapping will have to be added to the script 
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////////////////////M*/
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
print "// This file was generated from the following header files: "
 | 
			
		||||
print "// %s" % "\n// ".join(sys.argv[1:])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def determine_return_type(name, arguments):
 | 
			
		||||
    if RET_MAP.has_key( name ):
 | 
			
		||||
        return RET_MAP[name]
 | 
			
		||||
    if name.find("_IS_")>=0 or \
 | 
			
		||||
       name.find("_HAS_")>=0 or \
 | 
			
		||||
       name.find("_KIND")>=0 or \
 | 
			
		||||
       name.find("_ARE_")>=0 or \
 | 
			
		||||
       name.find("_SIZE")>=0 or \
 | 
			
		||||
       name.find("Idx")>=0 or \
 | 
			
		||||
       name.find("Count")>=0 or \
 | 
			
		||||
       (name.find("TYPE")>=0 and not name.find("TYPES")>=0):
 | 
			
		||||
        return "int"
 | 
			
		||||
    if re.match( r"CV_(?:8|16|32|64)(?:U|S|F)C", name ):
 | 
			
		||||
        return "int"
 | 
			
		||||
    if len(arguments) is 1 and arguments[0].startswith("double"):
 | 
			
		||||
        return "double"
 | 
			
		||||
    if name.find("_PTR")>=0:
 | 
			
		||||
        return "void *"
 | 
			
		||||
    if name.endswith("POINT"):
 | 
			
		||||
        return "CvPoint"
 | 
			
		||||
    return "void"
 | 
			
		||||
 | 
			
		||||
for m in MACROS:
 | 
			
		||||
    print MACROS[m]
 | 
			
		||||
 | 
			
		||||
for fn in sys.argv[1:]:
 | 
			
		||||
    f = open( fn, "r" )
 | 
			
		||||
    in_define = False
 | 
			
		||||
    fstr=""
 | 
			
		||||
    macro_name=""
 | 
			
		||||
    for l in f.xreadlines():
 | 
			
		||||
        m = re.match( r"^#define\s+((?:CV_|IPL_|cv)\w+)\s*\(([_, a-zA-Z0-9]*)\)\s*(.*)", l )
 | 
			
		||||
 | 
			
		||||
        if m and not m.group(1).endswith("FIELDS") and not MACROS.has_key(m.group(1)):
 | 
			
		||||
            macro_name = m.group(1)
 | 
			
		||||
            args = m.group(2).strip().split(",")
 | 
			
		||||
            
 | 
			
		||||
            # assign return type
 | 
			
		||||
            ret=determine_return_type( macro_name, args )
 | 
			
		||||
 | 
			
		||||
            # assign type to each argument
 | 
			
		||||
            no_args = len(args) is 0
 | 
			
		||||
            typed_args = []
 | 
			
		||||
            ignore = False
 | 
			
		||||
            for arg in args:
 | 
			
		||||
                arg = arg.strip()
 | 
			
		||||
                if len(arg) is 0:
 | 
			
		||||
                    no_args = True
 | 
			
		||||
                    break
 | 
			
		||||
                if ARG_MAP.has_key( arg ):
 | 
			
		||||
                    if ARG_MAP[arg] is "ignore":
 | 
			
		||||
                        ignore=True
 | 
			
		||||
                        break
 | 
			
		||||
                    typed_args.append( "%s %s"%( ARG_MAP[arg], arg ) )
 | 
			
		||||
                else:
 | 
			
		||||
                    sys.stderr.write( "\"%s\":\"?\", in macro '%s'\n" % (arg, macro_name) )
 | 
			
		||||
                    typed_args = []
 | 
			
		||||
                    break
 | 
			
		||||
            if not ignore and (no_args or len(typed_args)>0):
 | 
			
		||||
                decl = "%s %s(%s);" % (ret, macro_name, ",".join( typed_args) )
 | 
			
		||||
                MACROS[ macro_name ] = decl
 | 
			
		||||
                print decl
 | 
			
		||||
 | 
			
		||||
    f.close()
 | 
			
		||||
@@ -1,63 +0,0 @@
 | 
			
		||||
#!/usr/bin/env python
 | 
			
		||||
"""
 | 
			
		||||
Usage: make_index.py <html_ref_file> [ > <output_func_index_file> ]
 | 
			
		||||
This script parses html reference file, creates alphabetical list of
 | 
			
		||||
functions and list of examples ]
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
import sys, re, string
 | 
			
		||||
 | 
			
		||||
f = open(sys.argv[1])
 | 
			
		||||
func_list = {}
 | 
			
		||||
struct_list = []
 | 
			
		||||
func_decl_re = re.compile( r'<a name="decl_(.+?)"' )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
for l in f.xreadlines():
 | 
			
		||||
    llist = func_decl_re.findall(l)
 | 
			
		||||
    if llist:
 | 
			
		||||
        ll = llist[0]
 | 
			
		||||
        if ll.startswith('Cv'):
 | 
			
		||||
            struct_list.append(ll)
 | 
			
		||||
        elif ll.startswith('Ipl'):
 | 
			
		||||
            struct_list.append(ll)
 | 
			
		||||
        elif ll.startswith('cvm'):
 | 
			
		||||
            sublist = func_list.get(ll[3], [])
 | 
			
		||||
            sublist.append(ll)
 | 
			
		||||
            func_list[ll[3]] = sublist
 | 
			
		||||
        elif ll.startswith('cv'):
 | 
			
		||||
            sublist = func_list.get(ll[2], [])
 | 
			
		||||
            sublist.append(ll)
 | 
			
		||||
            func_list[ll[2]] = sublist
 | 
			
		||||
 | 
			
		||||
f.close()
 | 
			
		||||
 | 
			
		||||
struct_list.sort()
 | 
			
		||||
func_letters = func_list.keys()
 | 
			
		||||
func_letters.sort()
 | 
			
		||||
 | 
			
		||||
print "<html><body>"
 | 
			
		||||
 | 
			
		||||
columns = 3
 | 
			
		||||
 | 
			
		||||
for letter in func_letters:
 | 
			
		||||
    print '<hr><h3>%s</h3>\n<table width="100%%">' % letter
 | 
			
		||||
    sublist = func_list[letter]
 | 
			
		||||
    sublist.sort()
 | 
			
		||||
    col_len = (len(sublist)+columns-1)/columns
 | 
			
		||||
    #if col_len*columns > len(sublist):
 | 
			
		||||
    #    sublist.append( "" * (col_len*columns - len(sublist)) )
 | 
			
		||||
    for i in range(col_len):
 | 
			
		||||
        print '<tr>'
 | 
			
		||||
        for j in range(columns):
 | 
			
		||||
            if i + j*col_len < len(sublist):
 | 
			
		||||
                fn = sublist[i+j*col_len]
 | 
			
		||||
                fn_short = fn.lstrip(string.lowercase)
 | 
			
		||||
                print '<td width="25%%"><a href="#decl_%s">%s</a></td>' % (fn, fn_short)
 | 
			
		||||
            else:
 | 
			
		||||
                print '<td width="25%%"></td>'
 | 
			
		||||
        print '</tr>'
 | 
			
		||||
    print "</table>"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user