home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / fractal / kaos.lha / modellib / kwrite_def.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-01-16  |  3.9 KB  |  117 lines

  1. #include <stdio.h>
  2.  
  3. main(argc,argv)
  4. int argc;
  5. char **argv;
  6. {
  7.     int i,imax,len;
  8.     int model_dim,var_dim_max,param_dim_max,func_dim_max,aux_max;
  9.     char line[200],file_from[80],file_to[80],label[80],class_label[80];
  10.     FILE *fp,*ffp,*fopen();
  11.  
  12.     for(i=1;i<=6;i++){
  13.         if(argv[i]==NULL){
  14.             printf("Error in arguments of kwrite_label!!!\n");
  15.             printf("It needs more arguments.\n");
  16.             exit(1);
  17.         }
  18.     }
  19.  
  20.     strcpy(class_label,argv[1]);
  21.     var_dim_max = atoi(argv[2]);
  22.     param_dim_max = atoi(argv[3]);
  23.     func_dim_max = atoi(argv[4]);
  24.     aux_max = atoi(argv[5]);
  25.  
  26.     model_dim = argc-6;
  27.  
  28.     sprintf(file_to,"%s_kaos_def.h",class_label);
  29.     fp = fopen(file_to,"w");
  30.     fprintf(fp,"/* --------------------------------------------------\n");
  31.     fprintf(fp,"This file is automatically generated by kwrite_def.\n");
  32.     fprintf(fp,"-----------------------------------------------------*/\n");
  33.     fprintf(fp,"/*\nKAOS DYNAMICAL SYSTEM CLASS = %s\n*/\n",class_label);
  34.     fprintf(fp,"/*\n    # of models installed (Look up \"Makefile\" in ${KAOSDIR}/modellib)\n*/\n");
  35.     fprintf(fp,"#define MODEL_DIM %d /* number of installed models */\n",model_dim);
  36.     fprintf(fp,"/*\n    title labels for models installed (Look up \"%s_model_labels.h\" in ${KAOSDIR}/modellib)\n*/\n",class_label);
  37.     fprintf(fp,"/*\n    This is used to display the list of dynamical systems in a cycle item in the main panel\n*/\n",class_label);
  38.     fprintf(fp,"#define MODEL_LABELS\\\n"); 
  39.  
  40.     sprintf(file_from,"%s_model_labels.h",class_label);
  41.     ffp = fopen(file_from,"r");
  42.     i=0;
  43.     while(fgets(line,200,ffp)!= NULL){
  44.         len = strlen(line);
  45.         line[len-1] = '\0';
  46.         if(i<model_dim-1){
  47.             fprintf(fp,"\"%s\",\\\n",line);
  48.         }
  49.         else if(i==model_dim-1){
  50.             fprintf(fp,"\"%s\"\n",line);
  51.         }
  52.         i++;
  53.     }
  54.     if(i != model_dim){
  55.         printf("Error in a number of title labels!!\n");
  56.         printf("# of models in Makefile=%d, # of models in the file %s=%d\n",model_dim,file_from,i);
  57.         exit(0);
  58.     }
  59.     fclose(ffp);
  60.  
  61.     fprintf(fp,"/*\n    Customizable definitions of maximal dimensions\n*/\n");
  62.     fprintf(fp,"/*\n    These are used only to specify # of labels to be listed from the cycle items.\n    The memory for all data are dynamically allocated.\n*/\n");
  63.     fprintf(fp,"#define VAR_DIM_MAX %d\n",var_dim_max);
  64.     fprintf(fp,"#define PARAM_DIM_MAX %d\n",param_dim_max);
  65.     fprintf(fp,"#define FUNC_DIM_MAX %d\n",func_dim_max);
  66.     fprintf(fp,"#define AUX_MAX %d\n",aux_max);
  67.     fprintf(fp,"#define FULL_DIM_MAX (VAR_DIM_MAX+FUNC_DIM_MAX)\n");
  68.     fprintf(fp,"#define ALL_DIM_MAX (VAR_DIM_MAX+FUNC_DIM_MAX+PARAM_DIM_MAX)\n");
  69.  
  70.     fprintf(fp,"/*\n    primary variable labels: # of elements = VAR_DIM_MAX\n*/\n");
  71.     fprintf(fp,"#define VAR_LABELS\\\n");
  72.     strcpy(label,"var_label");
  73.     imax = var_dim_max;
  74.     for(i=0;i<imax-1;i++){
  75.         fprintf(fp,"%s[%d],\\\n",label,i);
  76.     }
  77.     fprintf(fp,"%s[%d]\n",label,i);
  78.  
  79.     fprintf(fp,"/*\n    secondary variable labels: # of elements = VAR_DIM_MAX\n*/\n");
  80.     fprintf(fp,"#define VAR_POLAR_LABELS\\\n");
  81.     strcpy(label,"var_polar_label");
  82.     imax = var_dim_max;
  83.     for(i=0;i<imax-1;i++){
  84.         fprintf(fp,"%s[%d],\\\n",label,i);
  85.     }
  86.     fprintf(fp,"%s[%d]\n",label,i);
  87.  
  88.     fprintf(fp,"/*\n    window variable labels: # of elements = VAR_DIM_MAX+FUNC_DIM_MAX\n*/\n");
  89.     fprintf(fp,"#define WIN_VAR_LABELS\\\n");
  90.     strcpy(label,"win_var_label");
  91.     imax = var_dim_max + func_dim_max;
  92.     for(i=0;i<imax-1;i++){
  93.         fprintf(fp,"%s[%d],\\\n",label,i);
  94.     }
  95.     fprintf(fp,"%s[%d]\n",label,i);
  96.  
  97.     fprintf(fp,"/*\n    parameter variable labels: # of elements = PARAM_DIM_MAX\n*/\n");
  98.     fprintf(fp,"#define PARAM_LABELS\\\n");
  99.     strcpy(label,"param_label");
  100.     imax = param_dim_max;
  101.     for(i=0;i<imax-1;i++){
  102.         fprintf(fp,"%s[%d],\\\n",label,i);
  103.     }
  104.     fprintf(fp,"%s[%d]\n",label,i);
  105.  
  106.     fprintf(fp,"/*\n    combined variable labels: # of elements = VAR_DIM_MAX+FUNC_DIM_MAX+PARAM_DIM_MAX\n*/\n");
  107.     fprintf(fp,"#define ALL_LABELS\\\n");
  108.     strcpy(label,"all_label");
  109.     imax = var_dim_max+param_dim_max+func_dim_max;
  110.     for(i=0;i<imax-1;i++){
  111.         fprintf(fp,"%s[%d],\\\n",label,i);
  112.     }
  113.     fprintf(fp,"%s[%d]\n",label,i);
  114.  
  115.     fclose(fp);
  116. }
  117.