Page principale | Hiérarchie des classes | Liste alphabétique | Liste des classes | Liste des fichiers | Membres de classe | Membres de fichier

Tools.c

Aller à la documentation de ce fichier.
00001 /*! \file Tools.c
00002     \brief Outils pour parser.
00003 
00004     Outils permetant de manipuler (conversion, decoupage) des données.
00005 
00006     \author     aerith (www.aerith.fr)
00007     \version    3.0
00008     \date       30/01/2007
00009 */
00010 
00011 #include    "Tools.h"
00012 
00013 
00014 char    *gettok(const char *pData, int iPos, char *pCar)
00015 {
00016     static char Data[NBCHAR];
00017     int         c = 0, n = 0, l = 0;
00018     char        *ppCar;
00019 
00020     for(; *pData && (n <= iPos); pData++)
00021     {
00022         for(ppCar = pCar; *ppCar && (*ppCar != *pData); ppCar++);
00023 
00024         if(*ppCar)
00025         {
00026             if(!l)
00027             {
00028                 l = 1;
00029                 n++;
00030             }
00031         }
00032         else
00033         {
00034             l = 0;
00035             if(iPos == n)
00036                 Data[c++] = *pData;
00037         }
00038     }
00039 
00040     Data[c] = 0;
00041 
00042     return Data;
00043 }
00044 
00045 void    ItoA(int iNbr, char *pBuf)
00046 {
00047     char    Buffer[12];
00048     char    *ppBuf = pBuf;
00049     char    *Temp = Buffer;
00050 
00051     *Temp++;
00052 
00053     if(iNbr < 0)
00054     {
00055         *Temp++ = '-';
00056         iNbr = -1 * iNbr;
00057     }
00058 
00059     do
00060     {
00061         *Temp++ = (char)((iNbr % 10) + '0');
00062         iNbr /= 10;
00063     }
00064     while(iNbr > 0);
00065 
00066     *Temp-- = 0;
00067 
00068     do
00069     {
00070         *ppBuf++ = *Temp--;
00071     }
00072     while(*Temp);
00073 }
00074 
00075 int     AtoI(const char *pNbr)
00076 {
00077     int     Total = 0;
00078     int     Sign = 0;
00079 
00080     if(*pNbr == '-')
00081     {
00082         Sign = 1;
00083         pNbr++;
00084     }
00085 
00086     while((*pNbr >= '0') && (*pNbr <= '9'))
00087         Total = 10 * Total + (*pNbr++ - '0');
00088 
00089     if(Sign)
00090         Total = -Total;
00091 
00092     return Total;
00093 }
00094 
00095 void    FtoA(float fNbr, char *pBuf)
00096 {
00097     char    Float[6];
00098 
00099     ItoA((int)fNbr, pBuf);
00100     strcat(pBuf, ".\0");
00101     ItoA((int)((fNbr - (int)fNbr) * 10000), Float);
00102     strcat(pBuf, Float);
00103 }
00104 
00105 float       AtoF(const char *pNbr)
00106 {
00107     float   Total = 0, Float = 1;
00108     int     Sign = 0;
00109 
00110     if(*pNbr == '-')
00111     {
00112         Sign = 1;
00113         pNbr++;
00114     }
00115 
00116     while((*pNbr >= '0') && (*pNbr <= '9'))
00117         Total = 10 * Total + (*pNbr++ - '0');
00118 
00119     if(*pNbr == '.')
00120         pNbr++;
00121 
00122     while((*pNbr >= '0') && (*pNbr <= '9'))
00123         Total += (Float /= 10) * (*pNbr++ - '0');
00124 
00125     if(Sign)
00126         Total = -Total;
00127 
00128     return Total;
00129 }
00130 
00131 int     IsUInt(const char *pNbr)
00132 {
00133     for(; *pNbr; *pNbr++)
00134         if((*pNbr < '0') || (*pNbr > '9'))
00135             return 0;
00136 
00137     return 1;
00138 }
00139 
00140 int     IsAlphaNum(const char *pBuf)
00141 {
00142     for(; *pBuf; *pBuf++)
00143     {
00144         if((*pBuf < 'a') || (*pBuf > 'z'))
00145         {
00146             if((*pBuf < 'A') || (*pBuf > 'Z'))
00147             {
00148                 if((*pBuf < '0') || (*pBuf > '9'))
00149                     return 0;
00150             }
00151         }
00152     }
00153 
00154     return 1;
00155 }
00156 
00157 int     IsAlphaNumCar(char cCar)
00158 {
00159     if((cCar < 'a') || (cCar > 'z'))
00160     {
00161         if((cCar < 'A') || (cCar > 'Z'))
00162         {
00163             if((cCar < '0') || (cCar > '9'))
00164                 return 0;
00165         }
00166     }
00167 
00168     return 1;
00169 }
00170 
00171 int     IsIn(char cCar, const char *pBuf)
00172 {
00173     for(; *pBuf; *pBuf++)
00174         if(cCar == *pBuf)
00175             return 1;
00176 
00177     return 0;
00178 }
00179 
00180 int     Replace(char cCar, char cNew, char *pBuf)
00181 {
00182     int     i = 0;
00183 
00184     for(; *pBuf; *pBuf++)
00185     {
00186         if(cCar == *pBuf)
00187         {
00188             *pBuf = cNew;
00189             i++;
00190         }
00191     }
00192 
00193     return i;
00194 }
00195 
00196 char    *StrStr(const char *pBuf, const char *pFind)
00197 {
00198     char    *Buf = (char *)pBuf;
00199     register char   *ppBuf;
00200     register char   *ppFind;
00201 
00202     if(!*pFind)
00203         return Buf;
00204 
00205     while(*Buf)
00206     {
00207         ppFind = (char *)pFind;
00208         ppBuf = Buf;
00209 
00210         while(!(*ppBuf ^ *ppFind))
00211         {
00212             ppBuf++;
00213             ppFind++;
00214         }
00215 
00216         if(!*ppFind)
00217             return Buf;
00218 
00219         Buf++;
00220     }
00221 
00222     return NULL;
00223 }
00224 

Généré le Thu Jan 24 12:36:04 2008 pour A.I.F. par  doxygen 1.3.9.1