Apply maemo2 patch
[opencv] / utils / cvt_xml2xml.py
1 #!/usr/bin/env python
2 #
3 """
4 Script that converts old-style OpenCV docs to new-style.
5 Only matrices are supported right now, base64-encoded data is not supported.
6 """
7
8 import sys,re
9
10 infile = open(sys.argv[1],"r")
11 outfile = open(sys.argv[2], "w")
12 mode = 0 # neutral
13
14 outfile.write("<?xml version=\"1.0\"?>\n<opencv_storage>\n");
15
16 for l in infile.xreadlines():
17     if mode == 0:
18         if re.match( "^<elem.+", l ):
19             elem_id = re.findall( "id *= *\"([^\"]+)\"", l )[0]
20             elem_val = re.findall( "value *= *\"([^\"]+)\"", l )[0]
21             outfile.write( "<%s>%s</%s>\n" % (elem_id, elem_val, elem_id))
22         elif re.match( r"^ *<struct.+", l ):
23             if l.find('"CvMat"') > 0:
24                 mat_id = re.findall( "id *= *\"([^\"]+)\"", l )[0]
25                 mat_size = re.findall( "size *= *\"([^\"]+)\"", l )[0].split()
26                 mat_dt = re.findall( "dt *= *\"([^\"]+)\"", l )[0]
27                 outfile.write("<%s type_id=\"opencv-matrix\">\n" % (mat_id,))
28                 outfile.write("<rows>%s</rows>\n" % (mat_size[0],))
29                 outfile.write("<cols>%s</cols>\n" % (mat_size[1],))
30                 outfile.write("<dt>%s</dt>\n" % (mat_dt,))
31                 outfile.write("<data>\n")
32                 mode = 1
33     else:
34         if re.match( r"^ *</struct>", l ):
35             outfile.write("</data></%s>\n" % (mat_id,))
36             mode = 0
37         else:
38             outfile.write(l)
39
40 outfile.write("</opencv_storage>\n")
41 infile.close()
42 outfile.close()