[BACK]Return to oxgentexi.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / util

Diff for /OpenXM/src/util/oxgentexi.c between version 1.2 and 1.10

version 1.2, 2005/04/04 07:36:44 version 1.10, 2005/05/04 22:02:08
Line 1 
Line 1 
 /*  $OpenXM: OpenXM/src/util/oxgentexi.c,v 1.1 2005/04/04 06:10:58 takayama Exp $ */  /*  $OpenXM: OpenXM/src/util/oxgentexi.c,v 1.9 2005/05/04 10:32:36 takayama Exp $ */
   
 #include <stdio.h>  #include <stdio.h>
 int Debug = 0;  int Debug = 0;
Line 16  struct item {
Line 16  struct item {
   char *shortDescription;    char *shortDescription;
   char *description;    char *description;
   char *algorithm;    char *algorithm;
     char *changelog;
   char *examplev[VMAX];    char *examplev[VMAX];
   char *exampleDescv[VMAX];    char *exampleDescv[VMAX];
   int examplec;    int examplec;
Line 39  char *Lang="en";
Line 40  char *Lang="en";
 int Include = 0;  int Include = 0;
 int GenExample = 0;  int GenExample = 0;
 int DebugItem = 0;  int DebugItem = 0;
   char *Title = NULL;
   char *Author = NULL;
   char *InfoName = NULL;
   int NoSorting = 0;
   
 main(int argc,char *argv[]) {  main(int argc,char *argv[]) {
   char *t;    char *t;
Line 66  main(int argc,char *argv[]) {
Line 71  main(int argc,char *argv[]) {
       Debug = 1;        Debug = 1;
     }else if (strcmp(argv[i],"--debugItem") == 0) {      }else if (strcmp(argv[i],"--debugItem") == 0) {
       DebugItem = 1;        DebugItem = 1;
       }else if (strcmp(argv[i],"--title") == 0) {
         i++; Title = str(argv[i]);
       }else if (strcmp(argv[i],"--infoName") == 0) {
         i++; InfoName = str(argv[i]);
       }else if (strcmp(argv[i],"--author") == 0) {
         i++; Author = str(argv[i]);
       }else if (strcmp(argv[i],"--noSorting") == 0) {
         NoSorting = 1;
     }else {      }else {
       fprintf(stderr,"Unknown option\n"); exit(1);        fprintf(stderr,"Unknown option\n"); exit(1);
     }      }
Line 102  main(int argc,char *argv[]) {
Line 115  main(int argc,char *argv[]) {
       items[n++] = tt;        items[n++] = tt;
     }      }
   }    }
   if (Debug) fprintf(stderr,"Sorting...\n");  
   shell(items,n);    if (!NoSorting) {
   if (Debug) fprintf(stderr,"Done.\n");      if (Debug) fprintf(stderr,"Sorting...\n");
       shell(items,n);
       if (Debug) fprintf(stderr,"Done.\n");
     }
   
   if (DebugItem) {    if (DebugItem) {
         for (i=0; i<n; i++) {          for (i=0; i<n; i++) {
Line 113  main(int argc,char *argv[]) {
Line 129  main(int argc,char *argv[]) {
         exit(0);          exit(0);
   }    }
   
     if (Title) printTitlePage(Title,Author,InfoName);
   
   printMenu(stdout,items,n);    printMenu(stdout,items,n);
   
   for (i=0; i<n; i++) {    for (i=0; i<n; i++) {
     printTexi(stdout,items[i]);      printTexi(stdout,items[i]);
   }    }
   
     if (Title) printBye();
   exit(0);    exit(0);
 }  }
   
Line 217  printItem(struct item *it) {
Line 237  printItem(struct item *it) {
     printf("examplev[%d]=%s\n",i,it->examplev[i]);      printf("examplev[%d]=%s\n",i,it->examplev[i]);
   for (i=0; i <it->examplec; i++)    for (i=0; i <it->examplec; i++)
     printf("exampleDescv[%d]=%s\n",i,it->exampleDescv[i]);      printf("exampleDescv[%d]=%s\n",i,it->exampleDescv[i]);
     if (it->changelog != NULL)
       printf("changelog=%s\n",it->changelog);
   for (i=0; i<it->refc; i++)    for (i=0; i<it->refc; i++)
     printf("  refv[%d]=%s\n",i,it->refv[i]);      printf("  refv[%d]=%s\n",i,it->refv[i]);
   if (it->author != NULL)    if (it->author != NULL)
Line 284  struct item *getItem() {
Line 306  struct item *getItem() {
   int pp,pOld;    int pp,pOld;
   int argc;    int argc;
   int examplec = 0;    int examplec = 0;
     int i;
   it = newItem();    it = newItem();
   do {    do {
     p = nextToken(key,LIMIT);      p = nextToken(key,LIMIT);
Line 302  struct item *getItem() {
Line 325  struct item *getItem() {
   if (strcmp(key,"(") != 0) {    if (strcmp(key,"(") != 0) {
     pp = p+1;      pp = p+1;
     it->type = 1; /* For non-functions */      it->type = 1; /* For non-functions */
       goto LL ;
   }else{    }else{
     it->type = 0; /* For functions */      it->type = 0; /* For functions */
     argc = 0;      argc = 0;
Line 346  struct item *getItem() {
Line 370  struct item *getItem() {
   }while (p >= 0);    }while (p >= 0);
   it->shortDescription = str2(&(S[pp]),pOld-pp);    it->shortDescription = str2(&(S[pp]),pOld-pp);
   
    LL: ;
     if (it->type == 1 ) {strcpy(key,"description:"); p++; }
   do {    do {
     /* Get Description or Examples */      /* Get Description or Examples */
     if (strcmp(key,"end:") == 0) break;      if (strcmp(key,"end:") == 0) break;
     if (strcmp(key,"description:") == 0 ||      if (strcmp(key,"description:") == 0 ||
         strcmp(key,"algorithm:") == 0 ||          strcmp(key,"algorithm:") == 0 ||
         strcmp(key,"author:") == 0 ||          strcmp(key,"author:") == 0 ||
           strcmp(key,"changelog:") == 0 ||
         strcmp(key,"sortKey:") == 0 ||          strcmp(key,"sortKey:") == 0 ||
         strcmp(key,"example:") == 0 ||          strcmp(key,"example:") == 0 ||
         strcmp(key,"example_description:") ==0 ) {          strcmp(key,"example_description:") ==0 ) {
Line 361  struct item *getItem() {
Line 387  struct item *getItem() {
       do {        do {
         pOld = p;          pOld = p;
         p = nextToken(key,LIMIT);          p = nextToken(key,LIMIT);
         /* printf("%s\n",key); */          /* printf("key=%s\n",key); */
         if (key[strlen(key)-1] == ':') break; /* Next keyword. */          if (key[strlen(key)-1] == ':') {
             pOld = p-strlen(key);
             break; /* Next keyword. */
           }
       }while (p >= 0);        }while (p >= 0);
       if (strcmp(key2,"description:") == 0) {        if (strcmp(key2,"description:") == 0) {
         it->description = str2(&(S[pp]),pOld-pp);          it->description = str2(&(S[pp]),pOld-pp);
Line 389  struct item *getItem() {
Line 418  struct item *getItem() {
       if (strcmp(key2,"algorithm:") == 0) {        if (strcmp(key2,"algorithm:") == 0) {
         it->algorithm = str2(&(S[pp]),pOld-pp);          it->algorithm = str2(&(S[pp]),pOld-pp);
       }        }
         if (strcmp(key2,"changelog:") == 0) {
           it->changelog = str2(&(S[pp]),pOld-pp);
         }
     }else if (strcmp(key,"ref:") == 0) {      }else if (strcmp(key,"ref:") == 0) {
       argc = 0;        argc = 0;
       while ((pp=nextToken(key,LIMIT)) >= 0) {        while ((pp=nextToken(key,LIMIT)) >= 0) {
Line 404  struct item *getItem() {
Line 436  struct item *getItem() {
         }          }
       }        }
     }else{      }else{
       fprintf(stderr,"Warning: unknown keyword << %s >> at %s. Ignored.\n",key, it->name);        fprintf(stderr,"Error: unknown keyword << %s >> at %s.\n",key, it->name);
             fprintf(stderr,"       The error occurs around ");
             for (i=pp ; i < p; i++) fputc(S[i],stderr);
             fprintf(stderr,"\n\n");
             exit(1);
       p = nextToken(key,LIMIT);        p = nextToken(key,LIMIT);
     }      }
   }while (p >= 0);    }while (p >= 0);
Line 449  printTexi(FILE *fp, struct item *it) {
Line 485  printTexi(FILE *fp, struct item *it) {
   
 printTexi_common(FILE *fp,struct item *it) {  printTexi_common(FILE *fp,struct item *it) {
   int i;    int i;
   if (it->description != NULL) {    if ((it->shortDescription != NULL) || (it->refc >0)
     fprintf(fp,"%s\n\n",it->description);        || (it->examplec > 0)) {
       if (it->description != NULL) {
         fprintf(fp,"\nDescription:");
         fprintf(fp,"@quotation\n%s\n@end quotation\n\n",it->description);
       }
     }else {
       if (it->description != NULL) {
         fprintf(fp,"%s\n\n",it->description);
       }
   }    }
   
   if (it->algorithm != NULL) {    if (it->algorithm != NULL) {
     fprintf(fp,"\n\n@noindent\nAlgorithm: \n");      fprintf(fp,"\n\n@noindent\nAlgorithm: \n@quotation\n");
     fprintf(fp,"%s\n\n",it->algorithm);      fprintf(fp,"%s\n@end quotation\n",it->algorithm);
   }    }
   
   if (it->examplec > 0) {    if (it->examplec > 0) {
Line 466  printTexi_common(FILE *fp,struct item *it) {
Line 510  printTexi_common(FILE *fp,struct item *it) {
         fprintf(fp,"Example %d:\n",i);          fprintf(fp,"Example %d:\n",i);
       }        }
       fprintf(fp,"@example\n");        fprintf(fp,"@example\n");
       fprintf(fp,"%s\n",it->examplev[i]);        outputExample(fp,it->examplev[i]);
       if (GenExample) {        if (GenExample) {
         outputOfExample(it->examplev[i]);          outputOfExample(it->examplev[i]);
       }        }
Line 479  printTexi_common(FILE *fp,struct item *it) {
Line 523  printTexi_common(FILE *fp,struct item *it) {
   if (it->author != NULL) {    if (it->author != NULL) {
     fprintf(fp,"Author : %s\n\n",it->author);      fprintf(fp,"Author : %s\n\n",it->author);
   }    }
     if (it->changelog != NULL) {
       fprintf(fp,"\n\nChange Log:\n@quotation\n");
       fprintf(fp,"%s\n@end quotation\n",it->changelog);
     }
   if (it->refc > 0) {    if (it->refc > 0) {
     fprintf(fp,"@table @t\n");      fprintf(fp,"\n\nReferences:\n@quotation\n");
     fprintf(fp,"@item References\n");  
     for (i=0; i <it->refc; i++) {      for (i=0; i <it->refc; i++) {
       fprintf(fp,"@code{%s} ",it->refv[i]);        fprintf(fp," @code{%s} ",it->refv[i]);
       if (i != it->refc-1) fprintf(fp,", ");        if (i != it->refc-1) fprintf(fp,", \n");
     }      }
     fprintf(fp,"\n@end table\n");      fprintf(fp,"\n@end quotation\n");
   }    }
   fprintf(fp,"\n");    fprintf(fp,"\n");
 }  }
Line 494  printTexi_common(FILE *fp,struct item *it) {
Line 541  printTexi_common(FILE *fp,struct item *it) {
 printTexi0(FILE *fp, struct item *it) {  printTexi0(FILE *fp, struct item *it) {
   int i;    int i;
   
   fprintf(fp,"@c DO NOT EDIT THIS FILE. Generated by gentexi0.\n");    fprintf(fp,"@c DO NOT EDIT THIS FILE. Generated by gentexi for asir function item.\n");
   if (it == NULL) {    if (it == NULL) {
     fprintf(fp,"@c item is NULL.\n");      fprintf(fp,"@c item is NULL.\n");
     return ;      return ;
   }    }
     fprintf(fp,"@c sortKey: %s\n",it->sortKey);
   if (it->name == NULL) {    if (it->name == NULL) {
     fprintf(fp,"@c item name is missing.\n");      fprintf(fp,"@c item name is missing.\n");
     return ;      return ;
Line 567  printTexi1(FILE *fp, struct item *it) {
Line 615  printTexi1(FILE *fp, struct item *it) {
   int i;    int i;
   /* For  it->type == 1 */    /* For  it->type == 1 */
   
   fprintf(fp,"@c DO NOT EDIT THIS FILE. Generated by gentexi1.\n");    fprintf(fp,"@c DO NOT EDIT THIS FILE. Generated by gentexi for verbose item.\n");
   if (it == NULL) {    if (it == NULL) {
     fprintf(fp,"@c item is NULL.\n");      fprintf(fp,"@c item is NULL.\n");
     return ;      return ;
   }    }
     fprintf(fp,"@c sortKey: %s\n",it->sortKey);
   
   if (it->shortDescription != NULL) {    if (it->shortDescription != NULL) {
     for (i=0; i<strlen(it->shortDescription); i++) {      for (i=0; i<strlen(it->shortDescription); i++) {
Line 589  printTexi1(FILE *fp, struct item *it) {
Line 638  printTexi1(FILE *fp, struct item *it) {
   printTexi_common(fp,it);    printTexi_common(fp,it);
 }  }
   
   outputExample(FILE *fp,char *s) {
     int i;
     for (i=0; s[i] != 0; i++) {
           if (s[i] == '@') {
             if (s[i+1] == '{') {fprintf(fp,"%s","@{"); i += 1;}
             else if (s[i+1] == '}') {fprintf(fp,"%s","@}"); i += 1;}
             else if (s[i+1] == '@') {fprintf(fp,"%s","@@"); i += 1;}
             else if (strncmp(&(s[i+1]),"colon",5)==0) {
                   fprintf(fp,":"); i += 5;
             }else fprintf(fp,"@@");
       }else{
             if (s[i] == '{') {fprintf(fp,"%s","@{"); }
             else if (s[i] == '}') {fprintf(fp,"%s","@}");}
             else fputc(s[i],fp);
       }
     }
   }
   
 outputOfExample(char *com) {  outputOfExample(char *com) {
   FILE *fp2;    FILE *fp2;
   int c;    int c;
Line 616  outputOfExample(char *com) {
Line 683  outputOfExample(char *com) {
   putchar('\n');    putchar('\n');
 }  }
   
   printTitlePage(char *title, char *author,char *infoName) {
     printf("\\input texinfo\n");
     printf("@def@colon{:}\n\n");
     printf("@iftex\n");
     printf("@catcode`@#=6\n");
     printf("@def@b#1{{@bf@gt #1}}\n");
     printf("@catcode`@#=@other\n");
     printf("@end iftex\n");
     printf("@overfullrule=0pt\n");
   
     if (infoName != NULL) printf("@setfilename %s\n",infoName);
     else printf("@setfilename asir-contrib-infoName-is-not-set\n");
     printf("@settitle %s\n",Title);
   
     printf("@titlepage\n");
     printf("@title %s\n",Title);
     printf("@subtitle Edition : auto generated by oxgentexi on @today{}\n");
     if (author != NULL) printf("@author %s\n",author);
     printf("@end titlepage\n\n");
     printf("@synindex vr fn\n");
     printf("@node Top,, (dir), (dir)\n\n");
   }
   
   printBye() {
     printf("@node Index,,, Top\n");
     printf("@unnumbered Index\n");
     printf("@printindex fn\n");
     printf("@printindex cp\n");
     printf("@iftex\n");
     printf("@vfill @eject\n");
     printf("@end iftex\n");
     printf("@summarycontents\n");
     printf("@contents\n");
     printf("\n@bye\n");
   }
 /* Old file was OpenXM/src/asir-contrib/packages/doc/gentexi.c */  /* Old file was OpenXM/src/asir-contrib/packages/doc/gentexi.c */

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.10

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>