root/applications/bdmtoolbox/doc/m2cpp.pl @ 1427

Revision 1041, 1.8 kB (checked in by smidl, 14 years ago)

Doxygen documentation of bdmtoolbox

  • Property svn:executable set to *
Line 
1#!/usr/bin/perl
2if ($#ARGV != 0)
3{
4  die "Argument must contain filename $#ARGV"
5}
6else
7{
8  $fname=$ARGV[0];
9}
10open(my $in, $fname);
11
12$declTypeDef="typedef void * in; \n"; 
13$output = "";
14$inClass = 0;
15
16$inStaticMethods = "";
17
18while (<$in>)
19{
20  if (/(^\s*)(%>)(.*)/)
21  {
22    $output=$output."$1///$3";
23  }
24  if (($listeProperties == 1) && (/(^\s*end\s*)/))
25  {
26    $listeProperties = 0;
27  }
28  if (($listeProperties == 1) && (/^\s*([\w\d]*)\s*[=]?.*(%>.*)?/))
29  {
30    if (!($1 =~ /^$/))
31    {
32      $properties = "$1;$2";
33      $properties =~ s/%>/\/\/\//g;
34      $properties =~ s/%/\/\//g;
35      $output=$output.$properties;
36    }
37  }
38  if (/(^\s*function)\s*([\] \w\d,_\[]+=)?\s*([.\w\d_-]*)\s*\(?([\w\d\s,]*)\)?(%?.*)/)
39  {
40    $functionKeyWord = $1;
41    $functionName = $3;
42    $arguments = $4;
43    if ($inClass == 0)
44    {
45      $output = $declTypeDef.$output;
46      $declTypeDef = "";
47    }
48    $arguments =~ s/,/,in /g;
49    $arguments = "in $arguments";
50    if ($arguments =~ /^in $/)
51    {
52      $arguments = "";
53    }
54    $ligne = "$inStaticMethods $functionKeyWord $functionName($arguments);"; 
55    $output=$output.$ligne;
56  }
57  # inheritance for classes
58  if (/(^\s*classdef)\s*([\w\d_]+)\s*<?\s*([\w\d_]+)?(.*)/)
59  {
60    if (!($3 =~ /^$/))
61    {
62      $classDef = "class $2:public $3";
63    }
64    elsif (/(^\s*classdef)\s*([\w\d_]+)(.*)/)
65    {
66      $classDef = "class $2";
67    }
68    $output=$output.$classDef;
69    $output=$output."{";
70    $output=$output.$declTypeDef;
71    $output=$output."public:\n";
72    $inClass = 1;
73  }
74  if (/(^\s*properties)\s*(.*)/)
75  {
76    $listeProperties = 1;
77  }
78  if (/^\s*methods\s*\(\s*Static(\s*=\s*true\s*)?\)(.*)/)
79  {
80    $inStaticMethods = "static";
81  }
82  elsif (/^\s*methods\s*\.*/)
83  {
84    $inStaticMethods = "";
85  }
86  $output=$output."\n";
87}
88$output=$output."};\n";
89print $output;
90close $in;
Note: See TracBrowser for help on using the browser.