mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/perl
 | 
						|
 | 
						|
# $Id: gendescr 1.2 2003/12/13 10:42:05 kls Exp $
 | 
						|
 | 
						|
print "Name (ohne ...Descriptor):";
 | 
						|
$name=<STDIN>;
 | 
						|
$name =~ s/\n$//;
 | 
						|
$inner = ($name =~ s/ä$//);
 | 
						|
$name .= "Descriptor" unless ($inner);
 | 
						|
 | 
						|
print "Struct:";
 | 
						|
$struct=<STDIN>;
 | 
						|
$struct =~ s/\n$//;
 | 
						|
 | 
						|
mm:
 | 
						|
$index=0;
 | 
						|
$which=1;
 | 
						|
print "Variablen:";
 | 
						|
while ( <STDIN> ) {
 | 
						|
   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;
 | 
						|
}
 |