#include "dkcDefined.h"
#include "dkcOSIndependent.h"
#include "dkcMemoryStream.h"
dkcString.hのインクルード依存関係図

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

構成 | |
| struct | dkc_String |
マクロ定義 | |
| #define | UCHAR_MAX_STR "255" |
| #define | UCHAR_MAX_STR_LEN 3 |
| unsigned char のMAX時の文字列の長さ(NULL文字無し) | |
| #define | USHRT_MAX_STR "65535" |
| #define | USHRT_MAX_STR_LEN 5 |
| #define | SHRT_MAX_STR "32767" |
| (signed) short の最大値 の文字列 | |
| #define | SHRT_MAX_STR_LEN 5 |
| #define | SHRT_MIN_STR "-32768" |
| (signed) short の最小値 の文字列 | |
| #define | SHRT_MIN_STR_LEN 6 |
| #define | INT_MAX_STR "2147483647" |
| (signed) int の最大値の文字列 | |
| #define | INT_MAX_STR_LEN 10 |
| #define | UINT_MAX_STR "4294967295" |
| (0xffffffff) unsigned int の最大値の文字列 | |
| #define | UINT_MAX_STR_LEN 10 |
| #define | INT_MIN_STR "-2147483648" |
| INT_MINの文字列. | |
| #define | INT_MIN_STR_LEN 11 |
| #define | ULONG_MAX_STR "4294967295" |
| (0xffffffff) unsigned int の最大値 の文字列 | |
| #define | ULONG_MAX_STR_LEN 10 |
| #define | LONGLONG_MAX_STR "9223372036854775807" |
| #define | LONGLONG_MAX_STR_LEN 19 |
| #define | LONGLONG_MIN_STR "-9223372036854775808" |
| #define | LONGLONG_MIN_STR_LEN 20 |
| #define | ULONGLONG_MAX_STR "18446744073709551615" |
| #define | ULONGLONG_MAX_STR_LEN 20 |
| #define | DBL_MAX_STR "179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000" |
| doubleが最大のときの文字列 | |
| #define | DBL_MAX_STR_LEN 316 |
| doubleが最大のときの桁数(文字列の) | |
| #define | DBL_MIN_STR "0.000000" |
| doubleが最小のときの文字列 | |
| #define | DBL_MIN_STR_LEN 8 |
| doubleが最小のときも桁数(文字列の) | |
| #define | dkcmIsSJIS1(c) dkcIsSJIS1(c)/*((c ^= 0x20) && (c >= (SJIS1_S1 ^ 0x20) && c <= (SJIS1_E2 ^ 0x20)))*/ |
| dkcIsSJIS1() | |
| #define | dkcmIsSJIS2(c) dkcIsSJIS2(c)/*(c >= SJIS2_S1 && c <= SJIS2_E1) || (c >= SJIS2_S2 && c <= SJIS2_E2)*/ |
| dkcIsSJIS2() | |
型定義 | |
| typedef dkc_String | DKC_STRING |
列挙型 | |
| enum | edkcString { edkcCHARString = 1, edkcWCHARString } |
関数 | |
| DKC_EXTERN BOOL | dkcIsSJIS1 (BYTE c) |
| cがSJISの1バイト目の時TRUE(1) | |
| DKC_EXTERN BOOL | dkcIsSJIS2 (BYTE c) |
| cがSJISの2バイト目の時TRUE(1) | |
| DKC_EXTERN BOOL | dkcIsSpace (BYTE c) |
| 半角全角を区別なしにSpace系の文字だったらTRUE | |
| DKC_EXTERN const char * | dkcGetSpaceSeparator () |
| 可視できる文字定数だったらTRUE | |
| DKC_EXTERN int WINAPI | dkcSJIS_StrChrSearch (const char *s, char c) |
| SJIS文字を除外して文字を検索 最初に見つかった位置を返す -1なら見つからない. | |
| DKC_EXTERN int WINAPI | dkcSJIS_StrChrSearchLast (const char *s, char c) |
| SJIS文字を除外して文字を検索 最後に見つかった位置を返す -1なら見つからない. | |
| DKC_EXTERN int WINAPI | dkcSJIS_StrChrSearchTail (const char *s, size_t len, char c) |
| DKC_EXTERN int WINAPI | dkcSJIS_StrChrSearchInStr (const char *s, const char *c) |
| DKC_EXTERN int WINAPI | dkcSJIS_StrChrSearchInStrLast (const char *s, const char *c) |
| It has not tested. | |
| DKC_EXTERN int WINAPI | dkcSJIS_SearchPathSep (const char *s) |
| パスセパレータが最初に見つかった位置を返す。 -1は見つからない | |
| DKC_EXTERN int WINAPI | dkcSJIS_SearchPathSepLast (const char *s) |
| パスセパレータが最期に見つかった位置を返す。 -1は見つからない | |
| DKC_EXTERN int WINAPI | dkcStrStr (const char *dest, const char *src) |
| DKC_EXTERN int WINAPI | dkcBMStrStr (const char *dest, const char *src) |
| DKC_EXTERN DKC_STRING *WINAPI | dkcAllocString (size_t size) |
| DKC_EXTERN int WINAPI | dkcFreeString (DKC_STRING **ptr) |
| DKC_EXTERN int WINAPI | dkcStringCopy (DKC_STRING *ptr, const char *str, size_t size) |
| DKC_EXTERN int WINAPI | dkcStringConcatenate (DKC_STRING *ptr, const char *str, size_t size) |
| http://www.google.com/search?num=50&hl=ja&lr=lang_ja&q=strcat+cat%82%c6%82%cd | |
| DKC_EXTERN int WINAPI | dkcStringInsert (DKC_STRING *ptr, size_t point, const char *str, size_t size) |
| DKC_EXTERN int WINAPI | dkcStringErase (DKC_STRING *ptr, size_t point, size_t len) |
| DKC_EXTERN int WINAPI | dkcStringReplace (DKC_STRING *ptr, size_t begin_, size_t end_, const char *str, size_t size) |
| DKC_EXTERN size_t | dkcStringNum (const DKC_STRING *ptr) |
| 文字列の文字数を返す。内部streamをstrlenにかけたものを保存しておいたものを取得。 | |
| DKC_EXTERN size_t | dkcStringSize (const DKC_STRING *ptr) |
| DKC_EXTERN const char *WINAPI | dkcStringPointer (const DKC_STRING *ptr) |
| DKC_EXTERN int WINAPI | dkcStringGetBuffer (const DKC_STRING *ptr, char *buffer, size_t buffsize) |
| DKC_STRINGの内部文字列をバッファにぶち込む. | |
| DKC_EXTERN int WINAPI | dkcStringSerialize (const DKC_STRING *ptr, DKC_SERIALIZE *) |
| It has not tested. | |
| DKC_EXTERN DKC_STRING *WINAPI | dkcAllocStringDeserialize (DKC_DESERIALIZE *se) |
| it has not tested. | |
d金魚
dkcString.h で定義されています。
|
|
doubleが最大のときの文字列
dkcString.h の 75 行で定義されています。 |
|
|
doubleが最大のときの桁数(文字列の)
dkcString.h の 77 行で定義されています。 |
|
|
doubleが最小のときの文字列
dkcString.h の 80 行で定義されています。 |
|
|
doubleが最小のときも桁数(文字列の)
dkcString.h の 82 行で定義されています。 |
|
|
dkcString.h の 97 行で定義されています。 参照元 dkcCreateDirectory(), dkcSJIS_StrChrSearch(), dkcSJIS_StrChrSearchInStr(), dkcSJIS_StrChrSearchInStrLast(), dkcSJIS_StrChrSearchLast(), と dkcSJIS_StrChrSearchTail(). |
|
|
dkcString.h の 100 行で定義されています。 参照元 dkcCreateDirectory(), dkcSJIS_StrChrSearch(), dkcSJIS_StrChrSearchInStr(), dkcSJIS_StrChrSearchInStrLast(), dkcSJIS_StrChrSearchLast(), と dkcSJIS_StrChrSearchTail(). |
|
|
(signed) int の最大値の文字列
dkcString.h の 42 行で定義されています。 |
|
|
dkcString.h の 44 行で定義されています。 |
|
|
INT_MINの文字列.
dkcString.h の 52 行で定義されています。 |
|
|
dkcString.h の 55 行で定義されています。 |
|
|
dkcString.h の 62 行で定義されています。 |
|
|
dkcString.h の 64 行で定義されています。 |
|
|
dkcString.h の 66 行で定義されています。 |
|
|
dkcString.h の 68 行で定義されています。 |
|
|
(signed) short の最大値 の文字列
dkcString.h の 32 行で定義されています。 |
|
|
dkcString.h の 34 行で定義されています。 |
|
|
(signed) short の最小値 の文字列
dkcString.h の 37 行で定義されています。 |
|
|
dkcString.h の 39 行で定義されています。 |
|
|
dkcString.h の 22 行で定義されています。 |
|
|
unsigned char のMAX時の文字列の長さ(NULL文字無し)
dkcString.h の 24 行で定義されています。 |
|
|
(0xffffffff) unsigned int の最大値の文字列
dkcString.h の 47 行で定義されています。 |
|
|
dkcString.h の 49 行で定義されています。 |
|
|
(0xffffffff) unsigned int の最大値 の文字列
dkcString.h の 58 行で定義されています。 |
|
|
dkcString.h の 60 行で定義されています。 |
|
|
dkcString.h の 70 行で定義されています。 |
|
|
dkcString.h の 72 行で定義されています。 |
|
|
dkcString.h の 27 行で定義されています。 |
|
|
dkcString.h の 29 行で定義されています。 |
|
|
文字列を格納する構造体(C++のSTLのstd::stringみたいなもの) 参照元 dkcAllocString(), dkcAllocStringDeserialize(), dkcFreeString(), dkcPathStringNormalizeCopyLogic(), dkcStringConcatenate(), dkcStringCopy(), dkcStringErase(), dkcStringGetBuffer(), dkcStringInsert(), dkcStringNum(), dkcStringPointer(), dkcStringReplace(), dkcStringSerialize(), と dkcStringSize(). |
|
|
dkcString.h の 104 行で定義されています。
00109 {
|
|
|
dkcString.c の 222 行で定義されています。 参照先 DKC_STRING, dkcAllocate(), dkcAllocMemoryStream(), dkcFree(), dkc_String::mByteSize, dkc_String::mStream, と NULL. 参照元 dkcAllocDeserialize(), dkcAllocPathString(), dkcAllocSerialize(), と dkcAllocStringDeserialize().
00222 {
00223 DKC_STRING *p;
00224 //へんな引数は除外
00225 //if(dkcErrorFlagCheck(flag)) return edk_ArgumentException;
00226
00227 p = (DKC_STRING *)dkcAllocate(sizeof(DKC_STRING));
00228 if(NULL==p) return NULL;
00229
00230 p->mStream = dkcAllocMemoryStream(size + 1);
00231 if(NULL==p->mStream) goto Error;
00232
00233 p->mByteSize = 0;
00234
00235 return p;
00236 Error:
00237 dkcFree((void **)&p);
00238 return NULL;
00239 }
|
|
|
it has not tested.
dkcString.c の 405 行で定義されています。 参照先 DKC_DESERIALIZE, DKC_MEMORYSTREAM, DKC_STRING, dkcAllocMemoryStreamDeserialize(), dkcAllocString(), dkcDeserializeRead(), dkcFreeMemoryStream(), edkcSerializeIDString, dkc_String::mByteSize, dkc_String::mStream, と NULL.
00406 {
00407 DKC_STRING *p;
00408 DKC_STRING t;
00409 DKC_MEMORYSTREAM *mem;
00410 size_t read;
00411 int id;
00412
00413 dkcDeserializeRead(se,&id,sizeof(id),&read);
00414 if(id != edkcSerializeIDString)
00415 {
00416 return NULL;
00417 }
00418
00419 mem = dkcAllocMemoryStreamDeserialize(se);
00420 if(NULL==mem){
00421 return NULL;
00422 }
00423
00424 dkcDeserializeRead(se,&t,sizeof(t),&read);
00425
00426 p = dkcAllocString(0);
00427 if(NULL==p){
00428 return NULL;
00429 }
00430
00431 dkcFreeMemoryStream(&p->mStream);
00432 p->mByteSize = t.mByteSize;
00433 p->mStream = mem;
00434
00435 //dkcmNOT_ASSERT(read != p->mSize);
00436
00437 return p;
00438
00439 }
|
|
||||||||||||
|
strstrをBM法でやってみたもの
dkcString.c の 213 行で定義されています。 参照先 dkcBMStrStrLogic().
00214 {
00215 return dkcBMStrStrLogic(dest,src);
00216 }
|
|
|
dkcString.c の 241 行で定義されています。 参照先 DKC_STRING, dkcFree(), dkcFreeMemoryStream(), edk_ArgumentException, と NULL. 参照元 dkcAllocDeserialize(), dkcAllocPathString(), dkcAllocSerialize(), dkcFreeDeserialize(), dkcFreePathString(), と dkcFreeSerialize().
00241 {
00242 //変な引数入れるな!
00243 if(NULL==ptr || NULL==*ptr || NULL==(*ptr)->mStream){return edk_ArgumentException;}
00244 dkcFreeMemoryStream(&(*ptr)->mStream);
00245 return dkcFree(ptr);
00246 }
|
|
|
可視できる文字定数だったらTRUE
dkcString.c の 65 行で定義されています。
00065 {
00066 static const char temp[]={
00067 '\0',0x0a,0x0d,' ','\t'
00068 };
00069 return temp;
00070 }
|
|
|
cがSJISの1バイト目の時TRUE(1)
dkcString.c の 40 行で定義されています。 参照先 BOOL, BYTE, SJIS1_E2, と SJIS1_S1.
00041 {
00042 // 普通に書けばこのような感じだが、高速化する
00043 // if((c >= SJIS1_S1 && c <= SJIS1_E1) || (c >= SJIS1_S2 && c <= SJIS1_E2)) return TRUE;
00044 /*
00045 c ^= 0x20;
00046 if(c >= (SJIS1_S1 ^ 0x20) && c <= (SJIS1_E2 ^ 0x20)) return TRUE;
00047 return FALSE;
00048 */
00049 return ((c ^= 0x20) && (c >= (SJIS1_S1 ^ 0x20) && c <= (SJIS1_E2 ^ 0x20)));
00050 }
|
|
|
cがSJISの2バイト目の時TRUE(1)
dkcString.c の 52 行で定義されています。 参照先 BOOL, BYTE, SJIS2_E2, SJIS2_S1, と SJIS2_S2.
|
|
|
半角全角を区別なしにSpace系の文字だったらTRUE
dkcString.c の 60 行で定義されています。
00061 {
00062 return (c=='\0' || c==0x0a || c==0x0d || c==' ' || c=='\t');
00063 }
|
|
|
パスセパレータが最初に見つかった位置を返す。 -1は見つからない
dkcString.c の 155 行で定義されています。 参照先 dkcGetPathSep(), と dkcSJIS_StrChrSearchInStr(). 参照元 dkcPathStringElementErase_Logic(), dkcPathStringElementReplace_Logic(), と dkcPathStringGetFileExtension().
00156 {
00157 const char *target = dkcGetPathSep();
00158 return dkcSJIS_StrChrSearchInStr(s,target);
00159 }
|
|
|
パスセパレータが最期に見つかった位置を返す。 -1は見つからない
dkcString.c の 161 行で定義されています。 参照先 dkcGetPathSep(), と dkcSJIS_StrChrSearchInStrLast(). 参照元 dkcIsTailPathSep().
00162 {
00163 const char *target = dkcGetPathSep();
00164 return dkcSJIS_StrChrSearchInStrLast(s,target);
00165 }
|
|
||||||||||||
|
SJIS文字を除外して文字を検索 最初に見つかった位置を返す -1なら見つからない.
dkcString.c の 73 行で定義されています。 参照先 dkcmIsSJIS1, と dkcmIsSJIS2. 参照元 dkcIsRelativityPath(), dkcPathStringDevideBegin_Logic(), dkcPathStringDevideNext_Logic(), と dkcPathStringGetDrive().
00074 {
00075 // c == 0 も考慮している
00076 int i;
00077 for(i = 0; ; i++){
00078 if(s[i] == c) return i;
00079 if(s[i] == '\0') break;
00080 if(dkcmIsSJIS1(s[i]) && dkcmIsSJIS2(s[i + 1])) i++;
00081 }
00082 return -1;
00083 }
|
|
||||||||||||
|
複数の文字定数を検索指定できるdkcSJIS_StrChrSearch() /
dkcString.c の 118 行で定義されています。 参照先 dkcmIsSJIS1, と dkcmIsSJIS2.
00119 {
00120 // c == 0 も考慮している
00121 size_t i,j;
00122 size_t len = strlen(c);
00123 for(i = 0; ; i++){
00124 if(s[i] == '\0') break;
00125 if(dkcmIsSJIS1(s[i]) && dkcmIsSJIS2(s[i + 1])){
00126 i++;
00127 continue;
00128 }
00129 for(j=0;j<len;j++){
00130 if(s[i] == c[j]) return i;
00131 }
00132 }
00133 return -1;
00134 }
|
|
||||||||||||
|
It has not tested.
dkcString.c の 136 行で定義されています。 参照先 dkcmIsSJIS1, と dkcmIsSJIS2. 参照元 dkcSJIS_SearchPathSepLast().
00137 {
00138 int nLast = -1;
00139 size_t i,j;
00140 size_t len = strlen(c);
00141 // c == 0 も考慮している
00142 for(i = 0; ; i++){
00143 if(s[i] == '\0') break;
00144 if(dkcmIsSJIS1(s[i]) && dkcmIsSJIS2(s[i + 1])){
00145 i++;
00146 continue;
00147 }
00148 for(j=0;j<len;j++){
00149 if(s[i] == c[j]) nLast = i;
00150 }
00151 }
00152 return nLast;
00153 }
|
|
||||||||||||
|
SJIS文字を除外して文字を検索 最後に見つかった位置を返す -1なら見つからない.
dkcString.c の 86 行で定義されています。 参照先 dkcmIsSJIS1, と dkcmIsSJIS2. 参照元 dkcPathStringGetFileExtension(), と dkcPathStringGetFileName().
00087 {
00088 int nLast = -1,i;
00089 // c == 0 も考慮している
00090 for(i = 0; ; i++){
00091 if(s[i] == c) nLast = i;
00092 if(s[i] == '\0') break;
00093 if(dkcmIsSJIS1(s[i]) && dkcmIsSJIS2(s[i + 1])) i++;
00094 }
00095 return nLast;
00096 }
|
|
||||||||||||||||
|
SJIS文字を除外して文字を後ろから検索
dkcString.c の 98 行で定義されています。 参照先 dkcmIsSJIS1, と dkcmIsSJIS2. 参照元 dkcPathStringGetDirectory().
00098 {
00099 int i;
00100 for(i=len;i > 0;i--){//sjisを調べるためi > 0 iが0になったら終了。
00101 if(dkcmIsSJIS1(s[i - 1]) && dkcmIsSJIS2(s[i]) )
00102 {
00103 i--;
00104 continue;
00105 }
00106 if(s[i] == c) return i;
00107 }
00108 //iが0の時。
00109 if(! (dkcmIsSJIS1(s[i]) && dkcmIsSJIS2(s[i + 1]) ))
00110 {
00111 if(c==s[i]){
00112 return 0;
00113 }
00114 }
00115 return -1;
00116 }
|
|
||||||||||||||||
|
http://www.google.com/search?num=50&hl=ja&lr=lang_ja&q=strcat+cat%82%c6%82%cd
dkcString.c の 270 行で定義されています。 参照先 DKC_STRING, dkcMemoryStreamDynamicWrite(), dkcmNOT_ASSERT, DKUTIL_FAILED, edk_FAILED, edk_SUCCEEDED, dkc_String::mByteSize, dkc_MemoryStream::mNowOffset, dkc_String::mStream, と NULL. 参照元 dkcPathStringNormalizeConcatenateLogic(), と dkcStringInsert().
00270 {
00271 dkcmNOT_ASSERT(NULL==ptr || NULL==ptr->mStream || 0==size);
00272
00273 if(0 != ptr->mByteSize){
00274 ptr->mStream->mNowOffset --;//一つ減らしてNULL文字分を潰す。
00275 }
00276 if(DKUTIL_FAILED(dkcMemoryStreamDynamicWrite(ptr->mStream,str,size + 1)))//+1してNULL文字もコピー
00277 {
00278 return edk_FAILED;
00279 }
00280
00281 ptr->mByteSize += size;
00282
00283 return edk_SUCCEEDED;
00284 }
|
|
||||||||||||||||
|
dkcString.c の 249 行で定義されています。 参照先 DKC_STRING, dkcMemoryStreamClear(), dkcMemoryStreamDynamicWrite(), dkcMemoryStreamSeek(), dkcmNOT_ASSERT, DKUTIL_FAILED, edk_FAILED, edk_SUCCEEDED, edkcMemoryStreamSeekSet, dkc_String::mByteSize, dkc_String::mStream, と NULL. 参照元 dkcAllocDeserialize(), dkcAllocSerialize(), と dkcPathStringCopy().
00250 {
00251 dkcmNOT_ASSERT(NULL==ptr || NULL==ptr->mStream || 0==size);
00252
00253 if(DKUTIL_FAILED(dkcMemoryStreamSeek(ptr->mStream,0,edkcMemoryStreamSeekSet))){
00254 return edk_FAILED;
00255 }
00256
00257 dkcMemoryStreamClear(ptr->mStream);
00258
00259 if(DKUTIL_FAILED(dkcMemoryStreamDynamicWrite(ptr->mStream,str,
00260 size + 1/* + 1してNULL文字分もコピー*/)))
00261 {
00262 return edk_FAILED;
00263 }
00264
00265 ptr->mByteSize = size;
00266
00267 return edk_SUCCEEDED;
00268 }
|
|
||||||||||||||||
|
dkcString.c の 331 行で定義されています。 参照先 dkc_stream_swap(), DKC_STRING, dkcMemoryStreamSeek(), edk_Not_Satisfactory, edkcMemoryStreamSeekSet, dkc_MemoryStream::mBuffer, dkc_String::mByteSize, dkc_MemoryStream::mNowOffset, と dkc_String::mStream. 参照元 dkcPathStringElementErase_Logic(), と dkcStringReplace().
00332 {
00333 char *tp;
00334 size_t size;
00335 int r;
00336
00337 tp = (char *)ptr->mStream->mBuffer;
00338 size = ptr->mStream->mNowOffset;
00339 if(point + len >= size){
00340 len = size - len;
00341 dkcMemoryStreamSeek(ptr->mStream,len,edkcMemoryStreamSeekSet);
00342
00343 return edk_Not_Satisfactory;
00344 }
00345 else
00346 {
00347 dkc_stream_swap(&tp[point],size - point - 1,len);//要らない領域を後ろに持ってくる。
00348
00349 ptr->mByteSize -= len;//少なくする。
00350 //多分バッファオーバーフローしないと思うけど・・・。
00351 ptr->mStream->mBuffer[ptr->mByteSize] = '\0';
00352
00353
00354 r = dkcMemoryStreamSeek(ptr->mStream,size - len,edkcMemoryStreamSeekSet);
00355 }
00356 return r;
00357 }
|
|
||||||||||||||||
|
DKC_STRINGの内部文字列をバッファにぶち込む.
dkcString.c の 382 行で定義されています。 参照先 dkc_memcpy(), DKC_STRING, dkcStringNum(), DKUTIL_FAILED, edk_FAILED, dkc_MemoryStream::mBuffer, dkc_MemoryStream::mNowOffset, dkc_String::mStream, と NULL.
00383 {
00384 int r;
00385 size_t num;
00386 if(NULL==ptr) return edk_FAILED;
00387 num = dkcStringNum(ptr);
00388 r = dkc_memcpy(buffer,buffsize,ptr->mStream->mBuffer,ptr->mStream->mNowOffset);
00389 if(DKUTIL_FAILED(r)) return r;
00390
00391 return r;
00392 //return dkcStreamToBuffer(ptr->mStream,edkcStreamSeekSet,0,num,buffer,buffsize);
00393 }
|
|
||||||||||||||||||||
|
dkcString.c の 286 行で定義されています。 参照先 dkc_stream_swap(), DKC_STRING, dkcMemoryStreamGetSeekPoint(), dkcmNOT_ASSERT, dkcStringConcatenate(), edk_ArgumentException, edk_Not_Satisfactory, edk_SUCCEEDED, dkc_MemoryStream::mBuffer, dkc_String::mStream, と NULL. 参照元 dkcPathStringElementInsert_Logic(), と dkcStringReplace().
00287 {
00288 size_t tpo;//一時オフセット保存
00289 char *tp;//bufferのtemp
00290 //char *mlctp;//mallocで確保したバッファのtemp
00291 //size_t len;//tpo - point
00292 //size_t maxbuffsize;//ptr->mStream->mSize - len
00293
00294 dkcmNOT_ASSERT(NULL==ptr || NULL==ptr->mStream);
00295 if(0==size){
00296 return edk_Not_Satisfactory;
00297 }
00298 //lock thread
00299
00300 //ここらへんがステートマシンだから嫌^^;
00301
00302
00303
00304 //エラーチェック
00305 {
00306 tpo = dkcMemoryStreamGetSeekPoint(ptr->mStream);
00307 if(point > tpo)
00308 {//pointがはみ出ている。
00309 return edk_ArgumentException;
00310 }
00311 //とりあえず、push!!
00312 dkcStringConcatenate(ptr,str,size);//これでmByteSizeは+=されている。
00313
00314 tp = (char *)ptr->mStream->mBuffer;
00315
00316 //一度、Concatenateしたので再取得
00317 tpo = dkcMemoryStreamGetSeekPoint(ptr->mStream);
00318
00319 //入れ替えしてやる。
00320 dkc_stream_swap(&tp[point],tpo - point - 1,tpo - point - size - 1);
00321
00322 }
00323 return edk_SUCCEEDED;
00324
00325 //unlock thread
00326
00327
00328
00329 }
|
|
|
文字列の文字数を返す。内部streamをstrlenにかけたものを保存しておいたものを取得。
dkcString.c の 373 行で定義されています。 参照先 DKC_STRING, と dkc_String::mByteSize. 参照元 dkcStringGetBuffer().
00373 {
00374 return ptr->mByteSize;
00375 }
|
|
|
||||||||||||||||||||||||
|
dkcString.c の 359 行で定義されています。 参照先 DKC_STRING, dkcStringErase(), と dkcStringInsert(). 参照元 dkcPathStringElementReplace_Logic().
00361 {
00362 //非効率だけどこれで^^;;;;
00363 dkcStringErase(ptr,begin_,end_ - begin_);
00364 return dkcStringInsert(ptr,begin_,str,size);
00365 }
|
|
||||||||||||
|
It has not tested.
dkcString.c の 396 行で定義されています。 参照先 DKC_SERIALIZE, DKC_STRING, dkcMemoryStreamSerialize(), dkcmNOT_ASSERT, dkcSerializeWrite(), edkcSerializeIDString, と NULL.
00397 {
00398 int id = edkcSerializeIDString;
00399 dkcmNOT_ASSERT(NULL==ptr);
00400 dkcSerializeWrite(se,&id,sizeof(id));
00401 dkcMemoryStreamSerialize(ptr->mStream,se);
00402 return dkcSerializeWrite(se,ptr,sizeof(DKC_STRING));
00403 }
|
|
|
dkcString.c の 369 行で定義されています。 参照先 DKC_STRING, と dkc_String::mByteSize. 参照元 dkcPathStringDevideNext_Logic(), dkcPathStringGetDirectory(), dkcPathStringGetFileExtension(), dkcPathStringGetFileName(), と dkcPathStringSize().
00369 {
00370 return ptr->mByteSize;
00371 }
|
|
||||||||||||
|
strstrのWrapper
dkcString.c の 168 行で定義されています。 参照先 NULL.
00169 {
00170 char *p = strstr(dest,src);
00171 if(NULL==p) return -1;
00172 return (int)(p - dest);
00173 /*int offset = p - dest;//overflowすると危ない
00174 if(offset < 0) return -1;
00175 return offset;
00176 */
00177 }
|
1.3.6