00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "image.h"
00026 #include "proto2D.h"
00027
00028 #include <stdlib.h>
00029 #include <stdio.h>
00030 #include <string.h>
00031
00032 #include "classifier.h"
00033 #include "macros.h"
00034
00035
00036
00037 int main(int argc, char *argv[])
00038 {
00039 FILE *fp = NULL;
00040 char nom[200], proto[200];
00041 int i;
00042
00043
00044 if(argc == 1)
00045 ERREUR("\nPas assez d'arguments : le nom de l'operateur doit etre specifie\n");
00046
00047 if(argc>2)
00048 ERREUR("\nTrop d'arguments : le seul argument a specifier doit etre le nom de l'operateur\n");
00049
00050 if(argv[1][0] == '-' )
00051 {
00052 if(argv[1][1] != '-' )
00053 {
00054 ERREUR("1 : Option non reconnue : --h pour afficher l'aide\n");
00055 }
00056
00057 else
00058 {
00059 if(argv[1][2] == 'h')
00060 {
00061 printf("\nCet executable permet de creer les fichiers d'un operateur xxx :\n");
00062 printf(" -> un fichier lxxx.c \n -> et un fichier xxx.h.\n");
00063 printf("\nCes fichiers sont crees a partir de la chaine \"lxxx\" qui doit etre passee en argument.\n");
00064 printf("\nLe fichier passe en argument doit ne doit pas posseder d'extension.\n");
00065 printf("\nLe fichier passe en argument doit commencer par le caractere 'l'.\n\n");
00066
00067 return 0;
00068 }
00069 else ERREUR("2 : Option non reconnue : --h pour afficher l'aide\n");
00070 }
00071 }
00072
00073
00074 if(argv[1][0] != 'l')
00075 ERREUR("Le nom de l'operateur doit etre precede du caractere 'l'\n");
00076
00077
00078 for(i=1;i<strlen(argv[1]);i++)
00079 {
00080 nom[i-1] = argv[1][i];
00081 if(argv[1][i] == '.')
00082 {
00083 ERREUR("Le fichier passe en parametre ne doit pas avoir d'extension.\n");
00084 }
00085 }
00086 nom[i-1]='\0';
00087
00088
00089 strcpy(proto,nom);
00090 proto[strlen(nom)] = '\0';
00091 strcat(proto,".h");
00092
00093
00094 strcat(argv[1],".c");
00095 VERIF_PT_NULL(argv[1],"La fonction strcat renvoie null\n");
00096
00097 fp=fopen(argv[1],"w");
00098
00099 VERIF_PT_NULL(fp,"Pointeur fichier null : probleme a l'ouverture du fichier de l'operateur (.c)");
00100
00101 fprintf(fp,"/* -----------------------------------------------------------------------------------------------\n");
00102
00103 fprintf(fp," Operateur : %s \n",nom);
00104
00105 fprintf(fp," -----------------------------------------------------------------------------------------------\n");
00106
00107 fprintf(fp," Objectif de l'operateur\n\n");
00108
00109 fprintf(fp," Cet operateur a pour but de ............\n\n");
00110
00111 fprintf(fp," -----------------------------------------------------------------------------------------------\n");
00112
00113 fprintf(fp," Derniere modification le %s a %s \n",__DATE__,__TIME__);
00114
00115 fprintf(fp," -----------------------------------------------------------------------------------------------\n");
00116
00117 fprintf(fp," Cree par \n");
00118
00119 fprintf(fp," -----------------------------------------------------------------------------------------------*/");
00120
00121 fprintf(fp,"\n\n\n\n");
00122
00123 fprintf(fp,"/** @name %s\\n \n \n Cet ensemble de fonctions permet de .... \n\n */ \n //@{ \n\n\n\n",nom);
00124
00125
00126
00127 fprintf(fp,"/* Bibliotheques */\n");
00128 fprintf(fp,"#include <stdlib.h>\n");
00129 fprintf(fp,"#include \"%s\"\n",proto);
00130 fprintf(fp,"#include \"image.h\"\n");
00131 fprintf(fp,"#include \"proto2D.h\"\n");
00132 fprintf(fp,"\n\n\n");
00133
00134 fprintf(fp,"/**************************** LECTURE ******************************** /\n");
00135
00136 fprintf(fp,"/*! \\brief Mettre une phrase de resume ou le debut de l'explication \n");
00137 fprintf(fp,"de la lecture de l'operateur \n");
00138 fprintf(fp,"Mettre la suite de l'explication ici...\n\n");
00139
00140 fprintf(fp,"Lecture des parametres de l'operateur %s :\n\n",nom);
00141
00142 fprintf(fp,"\\param desc pointeur descripteur \n");
00143 fprintf(fp,"\\param ptp pointeur sur parametre courant deja alloue (a lire)\n");
00144 fprintf(fp,"\\param debq pointeur de chaine de caracteres placee en debut de question\n");
00145 fprintf(fp,"\\return renvoie nouveau pointeur de parametres deja alloue (pour la suite) \n");
00146 fprintf(fp,"\\author Nom Prenom\n");
00147 fprintf(fp,"\\version 1.0\n");
00148 fprintf(fp,"*/\n\n\n");
00149
00150
00151 fprintf(fp,"param *%s_lect(\n",nom);
00152 fprintf(fp," %s_t *desc, \n",nom);
00153 fprintf(fp," param *ptp, \n");
00154 fprintf(fp," char *debq \n");
00155 fprintf(fp," )\n");
00156 fprintf(fp,"{\n");
00157 fprintf(fp,"char question[500];\n");
00158 fprintf(fp,"\n\n\n");
00159 fprintf(fp,"return ptp;\n");
00160 fprintf(fp,"\n}\n\n\n");
00161
00162
00163
00164 fprintf(fp,"/**************************** INIT ******************************** /\n");
00165
00166 fprintf(fp,"/*! \\brief Mettre une phrase de resume ou le debut de l'explication \n de l'initialisation de l'operateur \n");
00167
00168 fprintf(fp,"Initialisation des parametres de l'operateur %s :\n",nom);
00169
00170 fprintf(fp,"\\param desc pointeur descripteur \n");
00171 fprintf(fp,"\\param .........\n");
00172 fprintf(fp,"\\param .........\n");
00173 fprintf(fp,"\\return une des constantes definie dans le .h suivant erreur rencontree \n");
00174 fprintf(fp,"\\author Nom Prenom\n");
00175 fprintf(fp,"\\version 1.0\n");
00176 fprintf(fp,"*/\n\n\n");
00177
00178
00179 fprintf(fp,"int %s_init(\n",nom);
00180 fprintf(fp," %s_t *desc, \n",nom);
00181 fprintf(fp," \n");
00182 fprintf(fp," )\n");
00183 fprintf(fp,"{\n");
00184
00185 fprintf(fp,"\n\n\n");
00186 fprintf(fp,"return NO_ERROR;\n");
00187 fprintf(fp,"\n}\n\n\n");
00188
00189
00190
00191
00192 fprintf(fp,"/**************************** CALC******************************** /\n");
00193
00194 fprintf(fp,"/*! \\brief Mettre une phrase de resume ou le debut de l'explication \n du calcul de l'operateur \n");
00195
00196 fprintf(fp,"Calcul de l'operateur %s :\n",nom);
00197
00198 fprintf(fp,"\\param desc pointeur descripteur \n");
00199 fprintf(fp,"\\param .........\n");
00200 fprintf(fp,"\\param .........\n");
00201 fprintf(fp,"\\param resultat de type pointeur sur .........\n");
00202 fprintf(fp,"\\return une des constantes definie dans le .h suivant erreur rencontree \n");
00203 fprintf(fp,"\\author Nom Prenom\n");
00204 fprintf(fp,"\\version 1.0\n");
00205 fprintf(fp,"*/\n\n\n");
00206
00207
00208 fprintf(fp,"int %s_calc(\n",nom);
00209 fprintf(fp," %s_t *desc, \n",nom);
00210 fprintf(fp," \n");
00211 fprintf(fp," )\n");
00212 fprintf(fp,"{\n");
00213
00214 fprintf(fp,"\n\n\n");
00215 fprintf(fp,"return NO_ERROR;\n");
00216 fprintf(fp,"\n}\n\n\n");
00217
00218
00219
00220 fprintf(fp,"/**************************** FERM ******************************** /\n");
00221
00222 fprintf(fp,"/*! \\brief Mettre une phrase de resume ou le debut de l'explication \n de la fermeture de l'operateur \n");
00223
00224 fprintf(fp,"Liberation de la memoire allouee pour les parametres de l'operateur %s :\n",nom);
00225
00226 fprintf(fp,"\\param desc pointeur descripteur \n");
00227 fprintf(fp,"\\return une des constantes definie dans le .h suivant erreur rencontree \n");
00228 fprintf(fp,"\\author Nom Prenom\n");
00229 fprintf(fp,"\\version 1.0\n");
00230 fprintf(fp,"*/\n\n\n");
00231
00232
00233 fprintf(fp,"int %s_ferm(\n",nom);
00234 fprintf(fp," %s_t *desc, \n",nom);
00235 fprintf(fp," )\n");
00236 fprintf(fp,"{\n");
00237
00238 fprintf(fp,"\n\n\n");
00239 fprintf(fp,"return NO_ERROR;\n");
00240 fprintf(fp,"\n}\n\n\n");
00241
00242
00243 fprintf(fp,"/* fin doc */\n");
00244 fprintf(fp,"//@}\n\n");
00245
00246 if(fclose(fp))
00247 ERREUR("Impossible de fermer la fichier de l'operateur (.c)");
00248
00249 printf("Le fichier --- %s --- a ete cree\n",argv[1]);
00250
00251
00252
00253
00254
00255
00256 VERIF_PT_NULL(proto,"La fonction strcat renvoie null\n");
00257
00258 fp=fopen(proto,"w");
00259
00260 VERIF_PT_NULL(fp,"Pointeur fichier null : probleme a l'ouverture du fichier de l'operateur (.h)");
00261
00262 fprintf(fp,"/* -----------------------------------------------------------------------------------------------\n");
00263
00264 fprintf(fp," Operateur : %s \n",nom);
00265
00266 fprintf(fp," -----------------------------------------------------------------------------------------------\n");
00267
00268 fprintf(fp," Fichier des prototypes des fonctions de l'operateur\n\n");
00269
00270 fprintf(fp," -----------------------------------------------------------------------------------------------\n");
00271
00272 fprintf(fp," Derniere modification le %s a %s \n",__DATE__,__TIME__);
00273
00274 fprintf(fp," -----------------------------------------------------------------------------------------------\n");
00275
00276 fprintf(fp," Cree par \n");
00277
00278 fprintf(fp," -----------------------------------------------------------------------------------------------*/");
00279
00280 fprintf(fp,"\n\n\n\n");
00281
00282
00283 fprintf(fp,"/* Pas de code avant cette ligne */\n");
00284 fprintf(fp,"#ifndef __%s\n",nom);
00285 fprintf(fp,"#define __%s\n",nom);
00286 fprintf(fp,"\n\n\n\n");
00287
00288
00289 fprintf(fp,"/* Bibliotheques */\n");
00290 fprintf(fp,"#include <stdlib.h>\n");
00291 fprintf(fp,"#include \"image.h\"\n");
00292 fprintf(fp,"#include \"proto2D.h\"\n");
00293 fprintf(fp,"\n\n\n\n");
00294
00295 fprintf(fp,"/* La doc a extraire doit etre dans /** .... */ //(2 *)\n");
00296 fprintf(fp,"\n\n\n\n");
00297
00298
00299 fprintf(fp,"/* Descripteur */\n");
00300 fprintf(fp,"typedef struct{\n\n");
00301 fprintf(fp,"/** champ 1 : ........ */\n");
00302 fprintf(fp,"/** champ 2 : ........ */\n");
00303 fprintf(fp,"/** champ 3 : ........ */\n");
00304 fprintf(fp,"\n}%s_t;",nom);
00305 fprintf(fp,"\n\n\n\n");
00306
00307
00308 fprintf(fp,"/* Lecture */\n\n");
00309 fprintf(fp,"param *%s_lect(\n",nom);
00310 fprintf(fp," %s_t *desc, \n",nom);
00311 fprintf(fp," param *ptp, \n");
00312 fprintf(fp," char *debq \n");
00313 fprintf(fp," );\n");
00314 fprintf(fp,"\n\n\n");
00315
00316
00317 fprintf(fp,"/* Initialisation */\n\n");
00318 fprintf(fp,"int %s_init(\n",nom);
00319 fprintf(fp," %s_t *desc, \n",nom);
00320 fprintf(fp," \n");
00321 fprintf(fp," );\n");
00322 fprintf(fp,"\n\n\n");
00323
00324 fprintf(fp,"/* Calcul */\n\n");
00325 fprintf(fp,"int %s_calc(\n",nom);
00326 fprintf(fp," %s_t *desc, \n",nom);
00327 fprintf(fp," \n");
00328 fprintf(fp," );\n");
00329 fprintf(fp,"\n\n\n");
00330
00331 fprintf(fp,"/* Fermeture */\n\n");
00332 fprintf(fp,"int %s_ferm(\n",nom);
00333 fprintf(fp," %s_t *desc, \n",nom);
00334 fprintf(fp," );\n");
00335 fprintf(fp,"\n\n\n");
00336
00337
00338 fprintf(fp,"/* Pas de code apres cette ligne */\n");
00339 fprintf(fp,"#endif\n");
00340
00341
00342 if(fclose(fp))
00343 ERREUR("Impossible de fermer la fichier de l'operateur (.h)");
00344
00345 printf("Le fichier --- %s --- a ete cree\n",proto);
00346
00347 printf("Fin.\n");
00348 }
00349
00350
00351
00352