#include #include #include #include "bserv.h" /* Enregistre la d‚claration d'un type et fait l'analyse On pourra savoir si le type est composite, de base etc etc... */ PUBLIC ARG_TYPE::ARG_TYPE(const char *decltype) { str = NULL; set (decltype); } PUBLIC ARG_TYPE::ARG_TYPE() { str = NULL; } PUBLIC ARG_TYPE::~ARG_TYPE() { if (str != NULL) free (str); } /* Enregistre la d‚claration d'un type */ PUBLIC void ARG_TYPE::set (const char *decltype) { if (str != NULL) free (str); str = strdup_err (decltype,1); } /* Retourne la d‚claration d'un type. */ PUBLIC ARG_TYPE::operator const char *() { return str; } /* Retourne la d‚claration d'un type. */ PUBLIC const char *ARG_TYPE::getdecl() { return str; } /* D‚termine la cat‚gorie du type de l'argument. -1: pour type void 0: Atomique standard (type de base du C++). 1: Type standard array ou pointeur. 2: User define atomique. 3: User define array ou pointeur. ATTENTION: fonction pas encore termin‚e. */ PUBLIC int ARG_TYPE::categ() { if (isvoid()){ return -1; }else{ static const char *tbstd[]={ "char","int","long","float","double", NULL }; for (int i=0; tbstd[i] != NULL; i++){ if (strcmp(tbstd[i],str)==0){ return 0; } } } return 2; } /* Retourne != 0 si le type est "void" */ PUBLIC int ARG_TYPE::isvoid() { return strcmp(str,"void")==0; }