h2html.pl
资源名称:ilib [点击查看]
上传用户:changbiao
上传日期:2007-01-13
资源大小:141k
文件大小:4k
源码类别:

图片显示

开发平台:

C/C++

  1. #!/usr/local/bin/perl
  2. #
  3. # h2html.pl
  4. #
  5. # Image library
  6. #
  7. # Description:
  8. # Create HTML documentation from a C include file.
  9. #
  10. # History:
  11. # 29-Nov-99 Craig Knudsen cknudsen@radix.net
  12. # Updated to show prototype
  13. # 20-Aug-99 Craig Knudsen cknudsen@radix.net
  14. # Misc. bug fix
  15. # 19-Jul-99 Craig Knudsen cknudsen@radix.net
  16. # Modified for nicer looking output.
  17. # 29-May-96 Craig Knudsen cknudsen@radix.net
  18. # Created
  19. #
  20. #######################################################################
  21. sub print_function {
  22.   $out{$name} = "<H3><A NAME="$name">$name</A></H3>n";
  23.   $out{$name} .= "<TT>$ret_type $name ( $args )</TT><P>n";
  24.   $out{$name} .= "$description<P>n"
  25.     if ( defined ( $description ) );
  26.   $out{$name} .= "Returns: <TT>$ret_type</TT><P>n" .
  27.     "Input Parameters:<BR>n<UL>n";
  28.   for ( $i = 0; $i < $num_ivars; $i++ ) {
  29.     $out{$name} .= "<LI><TT>$vars[$i]</TT>";
  30.     $out{$name} .= " - $comments[$i]" if ( defined ( $comments[$i] ) );
  31.     $out{$name} .= "n";
  32.   }
  33.   $out{$name} .= "</UL><P>n";
  34.   if ( $i < $num_vars ) {
  35.     $out{$name} .= "Output Parameters:<BR>n<UL><P>n";
  36.     for ( ; $i < $num_vars; $i++ ) {
  37.       $out{$name} .= "<LI><TT>$vars[$i]</TT>";
  38.       $out{$name} .= " - $comments[$i]" if ( defined ( $comments[$i] ) );
  39.       $out{$name} .= "n";
  40.     }
  41.     $out{$name} .= "</UL>n";
  42.   }
  43. }
  44. $line = 1;
  45. $functions_found;
  46. while ( <> ) {
  47.   chop;
  48.   $line++;
  49.   if ( /Description:/ ) {
  50.     $in_info = 1;
  51.   } elsif ( /History:/ ) {
  52.     $in_info = 0;
  53.   } elsif ( $in_info ) {
  54.     if ( /*s+/ ) {
  55.       $info .= " " if length ( $info );
  56.       $info .= $';
  57.     }
  58.   } elsif ( ! $functions_found ) {
  59.     if ( /^** Functions/ ) {
  60.       $functions_found = 1;
  61.     } else {
  62.       next;
  63.     }
  64.   }
  65.   elsif ( /^([^*]S+)s+(S+)s+(/ ) {
  66.     # start of a function.
  67.     $name = $2;
  68.     $ret_type = $1;
  69.     if ( $name =~ /^*/ ) {
  70.       $name = $';
  71.       $ret_type .= " *";
  72.     }
  73.     $name =~ s/^_//;
  74.     $num_vars = 0;
  75.     $num_ivars = 0;
  76.   } elsif ( defined ( $name ) ) {
  77.     if ( /^s+(S.*)s+/*s*(S.*)s**// ) {
  78.       $vars[$num_vars] = $1;
  79.       $comments[$num_vars] = $2;
  80.       if ( $comments[$num_vars] =~ /^out: / ) {
  81.         $comments[$num_vars] =~ s/^out:s*//;;
  82.       } else {
  83.         $num_ivars++;
  84.       }
  85.       $vars[$num_vars] =~ s/[s,]+$//;
  86.       $args .= ", " if ( $args ne "" );
  87.       $args .= $vars[$num_vars];
  88.       $num_vars++;
  89.     } elsif ( /^);/ ) {
  90.       &print_function;
  91.       undef ( $name );
  92.       undef ( @vars );
  93.       undef ( @comments );
  94.       undef ( $description );
  95.       undef ( $args );
  96.     } elsif ( /s+/*s*(S.*)s**// ) {
  97. if ( $num_vars <= 0 ) { print "ERROR ($line): $_n"; exit ( 1 ); }
  98.       $comments[$num_vars-1] .= " " . $1;
  99.     }
  100.   } elsif ( /^*+// ) {
  101.     # end comment
  102.   } elsif ( /^*+s*(S.*)$/ ) {
  103.     $description .= " " if ( length ( $description ) );
  104.     $description .= $1;
  105.   } elsif ( /^/*/ ) {
  106.     undef ( $description );
  107.   }
  108. }
  109. @months = ( "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
  110.   "Aug", "Sep", "Oct", "Nov", "Dec" );
  111. ( $mday, $mon, $year ) = ( localtime ( time ) )[3,4,5];
  112. $now = sprintf "%02d-%s-%04d",
  113.   $mday, $months[$mon], $year + 1900;
  114. print<<EOF;
  115. <HTML>
  116. <HEAD>
  117. <TITLE>ILib API Documentation</TITLE>
  118. </HEAD>
  119. <BODY BGCOLOR="#FFFFFF">
  120. <H2>Ilib Image Library</H2>
  121. <BLOCKQUOTE>
  122. $info
  123. </BLOCKQUOTE>
  124. <TABLE BORDER=0>
  125. <TR><TD>Home Page:</TD>
  126.   <TD><A HREF="http://www.radix.net/~cknudsen/Ilib/">http://www.radix.net/~cknudsen/Ilib/</A></TD></TR>
  127. <TR><TD>Author:</TD>
  128.   <TD><A HREF="http://www.radix.net/~cknudsen/">Craig Knudsen</A>, <A HREF="mailto:cknudsen@radix.net">cknudsen@radix.net</A></TD></TR>
  129. <TR><TD>Last updated:</TD><TD>$now</TD></TR>
  130. </TABLE>
  131. <H2>API Documentation</H2>
  132. <UL>
  133. EOF
  134. foreach $name ( sort keys ( %out ) ) {
  135.   print "<LI><A HREF="#$name">$name</A>n";
  136. }
  137. print "</UL>n<HR>n";
  138. foreach $name ( sort keys ( %out ) ) {
  139.   print "<P>n" . $out{$name};
  140. }
  141. print "</BODY>n</HTML>n";
  142. exit 0;