diff --git a/src/build_models/translate_plugin.pl b/src/build_models/translate_plugin.pl new file mode 100755 --- /dev/null +++ b/src/build_models/translate_plugin.pl @@ -0,0 +1,78 @@ +#!/usr/bin/perl + +$cfilename = shift(@ARGV) || die "Usage: translate_plugin.pl [cfile] [hfile] [profile]\n"; +$hfilename = shift(@ARGV) || die "Usage: translate_plugin.pl [cfile] [hfile] [profile]\n"; +$pfilename = shift(@ARGV) || die "Usage: translate_plugin.pl [cfile] [hfile] [profile]\n"; + +$ocfname = $cfilename; $ocfname =~ s/\.cpp/_tl.cpp/g; +$ohfname = $hfilename; $ohfname =~ s/\.h/_tl.h/g; +$opfname = $pfilename; $opfname =~ s/\.pro/_tl.pro/g; + +print STDERR "Translating '$cfilename' to '$ocfname', '$hfilename' to '$ohfname', and '$pfilename' to '$opfname'\n"; + +open cfile,"<$cfilename"; +open ocfile,">$ocfname"; + +while () { + + #s/$hfilename/$ohfname/g; + + # translate function definitions + if (/[a-zA-Z0-9 ]*::OnDivide/) { + s/ParentInfo &parent_info/ParentInfo *parent_info/g; + s/CellBase &daughter1/CellBase *daughter1/g; + s/CellBase &daughter2/CellBase *daughter2/g; + } + + if (/[a-zA-Z0-9 ]*::SetCellColor/) { + s/CellBase &c/CellBase *c/g; + s/QColor &color/QColor *color/g; + } + + if (/[a-zA-Z0-9 ]*::CellHouseKeeping/) { + s/CellBase &c/CellBase *c/g; + } + + # translate member function calls + s/\bparent_info\b\./parent_info->/g; + s/\bdaughter1\b\./daughter1->/g; + s/\bdaughter2\b\./daughter2->/g; + s/\bc\b\./c->/g; + s/\bcolor\b\./color->/g; + print ocfile; + +} + +open hfile,"<$hfilename"; +open ohfile,">$ohfname"; + +while () { + if (/[ \t]*virtual[ \t]+void[ \t]+CellHouseKeeping/) { + s/CellBase &c/CellBase *c/g; + } + if (/[ \t]*virtual[ \t]+void[ \t]+OnDivide/) { + s/ParentInfo &parent_info/ParentInfo *parent_info/g; + s/CellBase &daughter1/CellBase *daughter1/g; + s/CellBase &daughter2/CellBase *daughter2/g; + } + if (/[ \t]*virtual[ \t]+void[ \t]+SetCellColor/) { + s/CellBase &c/CellBase *c/g; + s/QColor &color/QColor *color/g; + } + + + print ohfile; + +} + +open pfile,"<$pfilename"; +open opfile,">$opfname"; + +while () { + + s/\bplugin\b\.h/plugin_tl\.h/g; + s/\bplugin\b\.cpp/plugin_tl\.cpp/g; + + print opfile; + +} \ No newline at end of file