#!/usr/bin/perl # $Id: gendescr 1.2 2003/12/13 10:42:05 kls Exp $ print "Name (ohne ...Descriptor):"; $name=; $name =~ s/\n$//; $inner = ($name =~ s/ä$//); $name .= "Descriptor" unless ($inner); print "Struct:"; $struct=; $struct =~ s/\n$//; mm: $index=0; $which=1; print "Variablen:"; while ( ) { if (/ä/) { goto vv; } elsif (/ü/) { $which=1; next; } $eingabe=$_; $eingabe =~ s/(.{75,120} )/\1\n/g; $eingabe =~ s/\n$//; if ($which) { $members[$index]=$eingabe; } else { $members_comments[$index]=$eingabe; $index++; print "Jep!\n"; } $which= (! $which); } vv: $filename_h="tempdescr.h"; $filename_c="tempdescr.c"; schreib(); sub schreib { print "Danke.\n"; open(OUTPUT_H, ">>".$filename_h) or die "Could not open file!!"; open(OUTPUT_C, ">>".$filename_c) or die "Could not open file!!"; if ($inner) { $offset=" "; } else { $offset=""; } print(OUTPUT_H $offset."class ".$name); if ($inner) { print(OUTPUT_H " : public LoopElement {\n".$offset."public:"); } else { print(OUTPUT_H " : public Descriptor {\n".$offset."public:"); } #for ($i=0; $i<=$#vars;$i++) { # print (OUTPUT "/*\n".$vars_comments[$i]." */\n".$vars[$i].";\n\n\n"); #} for ($i=0; $i<=$#members;$i++) { print (OUTPUT_H "\n".$offset." int get".$members[$i]."() const;"); } print(OUTPUT_H "\n".$offset."virtual int getLength() { return sizeof(".$struct."); }") if ($inner); print(OUTPUT_H "\n".$offset."protected:\n".$offset." virtual void Parse();"); print(OUTPUT_H "\n".$offset."private:\n".$offset." const ".$struct." *s;") if ($struct ne ""); print(OUTPUT_H "\n".$offset."};\n\n"); for ($i=0; $i<=$#members_comments;$i++) { print (OUTPUT_C "int ".$name."::get".$members[$i]."() const {\n"); if ($members_comments[$i] =~ /^(.+)_hi$/) { $varbase=$1; print (OUTPUT_C " return HILO(s->".$varbase.");\n}\n\n"); } else { print (OUTPUT_C " return s->".$members_comments[$i].";\n}\n\n"); } } print (OUTPUT_C "void ".$name."::Parse() {\n}\n\n"); print (OUTPUT_C "\n\n\n"); exit; }