SourceForge.jp

dkutilStdio.h

説明を見る。
00001 
00002 
00050 #ifndef _dkutilStdio__
00051 #define _dkutilStdio__
00052 
00053 #include "dkutilDefined.h"
00054 
00055 namespace dkutil{
00056     
00064 
00065     inline int dkmemcpy(void *dest,size_t size1,const void *src,size_t size2){
00066         if(size1 < size2) return edk_FAILED;
00067         ::memcpy(dest,src,size2);
00068         return edk_SUCCEEDED;
00069     }
00070     inline int dksprintf(char *buff,size_t bufsize,char *format,...){
00071         SET_VA_LIST(buff,bufsize,format);       
00072         return edk_SUCCEEDED;
00073     }
00087     inline int dkstrcpy(char *dest,size_t size1,const char *src,size_t srclen){
00088         if(size1 < srclen) return edk_FAILED;
00089         ::strncpy(dest,src,srclen);
00090         //if(dest[srclen] != '\0') return edk_FAILED;
00091         dest[srclen] = '\0';
00092         return edk_SUCCEEDED;
00093     }
00095     inline int dkstrcpy_amap(char *dest,size_t size1,const char *src,size_t srclen){
00096         if(size1 < srclen){//ここは<=か!?
00097             ::strncpy(dest,src,size1);
00098             dest[size1 - 1] = '\0';
00099             return edk_Not_Satisfactory;
00100         }else{
00101             ::strncpy(dest,src,srclen);
00102             dest[srclen] = '\0';
00103             return edk_SUCCEEDED;
00104         }
00105     }
00106     inline int dkstrcpy_amap2(char *dest,size_t size1,const char *src){
00107         return dkstrcpy_amap(dest,size1,src,strlen(src));
00108     }
00121     inline int dkstrcat(char *dest,size_t destsize,size_t destlen,
00122         const char *src,size_t srclen)
00123     {
00124         //destlen + srclen + NULL文字
00125         if(destsize < destlen + srclen + 1) return edk_FAILED;
00126         ::strncat(dest,src,srclen);
00127         return edk_SUCCEEDED;
00128     }
00130     inline int dkstrcat2(char *dest,size_t destsize,const char *src){
00131         return dkstrcat(dest,destsize,strlen(dest),src,strlen(src));
00132     }
00134     inline int dkstrcat_amap(char *dest,size_t destsize,size_t destlen,
00135         const char *src,size_t srclen)
00136     {
00137         //destlen + srclen + NULL文字
00138         int result = edk_SUCCEEDED;
00139         size_t lsize = destlen + srclen + 1;
00140         if(destsize < lsize)
00141         {//オーバーしてたら・・・
00142             srclen = lsize - destsize - 1;
00143             result = edk_Not_Satisfactory;
00144         }
00145         ::strncat(dest,src,srclen);
00146         //dest[destlen + srclen - 1] = '\0';
00147         return result;
00148     }
00150     inline int dkstrcat_amap2(char *dest,size_t destsize,const char *src){
00151         return dkstrcat_amap(dest,destsize,strlen(dest),src,strlen(src));
00152     }
00153 
00160     inline int dkmemcmp( const void *buf1,size_t buf1PermitSize, const void *buf2, size_t count )
00161     {
00162         if(buf1PermitSize < count)return edk_FAILED;
00163         if(0 !=::memcmp(buf1,buf2,count))return edk_FAILED;
00164         return edk_SUCCEEDED;
00165     }
00166         
00167 
00168 
00169 
00170 
00171 
00172 #if 0
00173 
00174     class datatable{
00175         enum{
00176             enuDigitNum=10,
00177             enuDigit16Num=6,
00178             enuCTOI_CHECK=48,
00179             enuCTOI16_LOWER=97,
00180             enuCTOI16_WUPPER=65,
00181         };
00182         static char digit[enuDigitNum];
00183         static char digit16[enuDigit16Num];
00184         datatable(){
00185             {for(int i=0;i<enuDigitNum;i++){
00186                 digit[i]=i;
00187             }}
00188             {for(int i=0;i<enuDigit16Num;i++){
00189                 digit16[i]=10+i;
00190             }}
00191         }
00192         int ctoi(char c){
00193 #       ifdef _DEBUG
00194             char *str="へんな引数を入れるな!";
00195             if(c < enuCTOI_CHECK){
00196                 throw std::invalid_argument(str);
00197             }else if(c > enuCTOI_CHECK + 10){
00198                 throw std::invalid_argument(str);
00199             }
00200 #       endif
00201             return digit[c-48];
00202         }
00203         int ctoi16(char c){
00204             if(isAlpha(c)){
00205                 if(islower(c)){
00206                     return digit16[c - enuCTOI16_LOWER];
00207                 }else
00208                 {
00209 #       ifdef _DEBUG
00210                     if(iswupper(c)){
00211                         return digit16[c - enuCTOI16_WUPPER];
00212                     }else{
00213                         throw std::invalid_argument("引数が間違ってます");
00214                     }
00215 #       else
00216                     return digit16[c - enuCTOI16_WUPPER];
00217 #       endif
00218                 }
00219             }else{
00220                 return ctoi(c);
00221             }
00222         }
00223     };
00224     datatable &GetDataTable(){
00225         static datatable tbl;
00226         return tbl;
00227     }
00228 #   endif
00229 
00230         
00231             
00232 
00233 
00234 #if 0
00235     inline int textcmp(char *
00236 #endif
00237 }//end of dkutil namespace
00238 
00239 #endif //end of include once

dkutil 1.02リリース前 d金魚専用マニュアルバージョンに対してSun Dec 28 21:23:08 2003に生成されました。 doxygen 1.3.5