OSDN Git Service

Merge UnkoTim222
[timidity41/timidity41.git] / kbtim / kbstr.h
1 #ifndef kbstrH
2 #define kbstrH
3
4 extern BYTE g_byLeadByteTable[256];
5 extern BYTE g_byToLowerTable[256];
6 extern BYTE g_byToUpperTable[256];
7
8 #define kbIsLeadByte(X) g_byLeadByteTable[(BYTE)(X)]
9 #define kbToLower(X)    g_byToLowerTable[(BYTE)(X)]
10 #define kbToUpper(X)    g_byToUpperTable[(BYTE)(X)]
11
12 //\83e\81[\83u\83\8b\8f\89\8aú\89»
13 //\8eg\97p\91O\82É\95K\82¸\82P\93x\82¾\82¯\8cÄ\82Ñ\8fo\82·
14 void __fastcall kbStr_Initialize(void);
15 //
16 //\95\8e\9a\97ñ\8aÖ\8cW
17
18 int __fastcall kbStrLen(const char *cszString);
19 //
20 // cszSrc \82ð szDest \82É nBufSize \83o\83C\83g\95ª\83R\83s\81[
21 // \95\8e\9a\97ñ\82Ì\92·\82³\82ª\91«\82è\82È\82¢\8fê\8d\87\82Í nBufSize-1 \83o\83C\83g\83R\83s\81[\82µ\82Ä\8fI\92[\82É \0 \82ð\95t\89Á
22 // \8fI\92[\95\8e\9a\82ª\93r\90Ø\82ê\82Ä\82¢\82é\82æ\82¤\82È\8fê\8d\87\82É\82à\91Î\89\9e
23 // cszSrc \82Ì\92·\82³(strlen(cszSrc)\82ð\95Ô\82·
24 // \96ß\82è\92l >= nBufSize \82Ì\8fê\8d\87\81A\95\8e\9a\97ñ\82ð\90Ø\82è\8eÌ\82Ä\82½\82±\82Æ\82ð\88Ó\96¡\82·\82é
25 int __fastcall kbStrLCpy(char *szDest, const char *cszSrc, int nBufSize);
26
27 // cszSrc \82ð szDest \82É\98A\8c\8b
28 // nBufSize \82Í szDest \82Ì\83T\83C\83Y\81i\8fI\92[\82Ì '\0' \82ð\8aÜ\82Þ\81j
29 // \8fI\92[\95\8e\9a\82ª\93r\90Ø\82ê\82Ä\82¢\82é\82æ\82¤\82È\8fê\8d\87\82É\82à\91Î\89\9e
30 // strlen(cszSrc) + min(strlen(szDest) + nBufSize) \82ð\95Ô\82·
31 // \96ß\82è\92l >= nBufSize \82Ì\8fê\8d\87\81A\98A\8c\8b\95\8e\9a\97ñ\82ð\90Ø\82è\8eÌ\82Ä\82½\82±\82Æ\82ð\88Ó\96¡\82·\82é
32 int __fastcall kbStrLCat(char *szDest, const char *cszSrc, int nBufSize);
33
34 char* __fastcall kbStrTrimRight(char* szString);//\8fI\92[\82Ì\8bó\94\92\95\8e\9a\82ð\8f\9c\8b\8e
35 char* __fastcall kbStrTrimLeft(char* szString); //\90æ\93ª\82Ì\8bó\94\92\95\8e\9a\82ð\8f\9c\8b\8e
36 char* __fastcall kbStrTrim(char* szString);     //\90æ\93ª\82Æ\8fI\92[\82Ì\8bó\94\92\95\8e\9a\82ð\8f\9c\8b\8e
37 char* __fastcall kbCRLFtoSpace(char* szString); //\89ü\8ds\95\8e\9a\82Æ\83^\83u\95\8e\9a\82ð\83X\83y\81[\83X\82É\95Ï\8a·
38
39 int __fastcall kbStrCmp(const char *cszStr1, const char *cszStr2);
40 int __fastcall kbStrCmpI(const char *cszStr1, const char *cszStr2);
41 int __fastcall kbStrNCmp(const char *cszStr1, const char *cszStr2, int nLen);
42 int __fastcall kbStrNCmpI(const char *cszStr1, const char *cszStr2, int nLen);
43
44 //\95\8e\9a\97ñ cszString \82©\82ç \95\8e\9a cFind \82ð\8c\9f\8dõ\82µ\81A\8dÅ\8f\89\82É\8c©\82Â\82©\82Á\82½\95\8e\9a\82Ö\82Ì\83|\83C\83\93\83^\82ð\95Ô\82·
45 //\8c©\82Â\82©\82ç\82È\82¢\8fê\8d\87\82Í NULL \82ð\95Ô\82·
46 const char* __fastcall kbStrChr(const char *cszString, char cFind);
47 inline char *__fastcall kbStrChr(char *szString, char cFind)
48 {
49     return (char*) kbStrChr((const char*) szString, cFind);
50 }
51 //\95\8e\9a\97ñ cszString \82©\82ç \95\8e\9a cFind \82ð\8c\9f\8dõ\82µ\81A\8dÅ\8cã\82É\8c©\82Â\82©\82Á\82½\95\8e\9a\82Ö\82Ì\83|\83C\83\93\83^\82ð\95Ô\82·
52 //\8c©\82Â\82©\82ç\82È\82¢\8fê\8d\87\82Í NULL \82ð\95Ô\82·
53 const char* __fastcall kbStrRChr(const char *cszString, char cFind);
54 inline char *__fastcall kbStrRChr(char *szString, char cFind)
55 {
56     return (char*) kbStrRChr((const char*) szString, cFind);
57 }
58
59 const char* __fastcall kbStrStr(const char *cszString, const char *cszSearch);
60 inline char *__fastcall kbStrStr(char *szString, const char *cszSearch)
61 {
62     return (char*) kbStrStr((const char*) szString, cszSearch);
63 }
64 const char* __fastcall kbStrStrI(const char *cszString, const char *cszSearch);
65 inline char *__fastcall kbStrStrI(char *szString, const char *cszSearch)
66 {
67     return (char*) kbStrStrI((const char*) szString, cszSearch);
68 }
69
70 char* __fastcall kbStrUpr(char *pszString);
71 char* __fastcall kbStrLwr(char *pszString);
72
73 char* __fastcall kbStrTok(char *pszString, const char *cszDelimiter, char **ppszNext);
74
75 int  __fastcall  kbStrToIntDef(const char* cszStr, int nDefault);
76 double __fastcall kbStrToDoubleDef(const char* cszStr, double nDefault);
77
78 //\95\8e\9a\97ñ src \82Ì old_pattern \82ð new_pattern \82É\92u\8a·\82·\82é
79 //size \82Í dst \82Ì\83o\83b\83t\83@\83T\83C\83Y
80 //old_pattern == "" \81i\8bó\95\8e\9a\97ñ\81j\82Ì\8fê\8d\87\81AkbStrLCat(dst, size, new_pattern) \82Æ\93¯\82
81 //\83o\83b\83t\83@\83T\83C\83Y\82ª\91«\82è\82È\82¢\8fê\8d\87\82Í\81Asize-1 \83o\83C\83g\82Ü\82Å\92u\8a·\82·\82é
82 //\8a®\91S\92u\8a·\82³\82ê\82½\82Æ\82µ\82½\82Æ\82«\82Ì\95\8e\9a\97ñ\82Ì\92·\82³\82ð\95Ô\82·
83 //\96ß\82è\92l >= size \82Ì\8fê\8d\87\81A\92u\8a·\8cã\82Ì\95\8e\9a\97ñ\82ª\88ê\95\94\90Ø\82è\8eÌ\82Ä\82ç\82ê\82½\82±\82Æ\82ð\88Ó\96¡\82·\82é
84 int __fastcall kbStringReplace(char *dst,
85                                int size,
86                                const char *src,
87                                const char *old_pattern,
88                                const char *new_pattern);
89
90 int __fastcall kbMultiByteToWideChar(const char *cszMultiByte,
91                                      wchar_t* wszWideChar,
92                                      int cchWideChar);
93 int __fastcall kbWideCharToMultiByte(const wchar_t *wcszWideChar,
94                                      char *szMultiByte,
95                                      int cchMultiByte);
96 //
97 //\83t\83@\83C\83\8b\96¼\8aÖ\8cW
98 //
99 //cszSrc \93à\82Ì\8ag\92£\8eq\95\94\95ª\82Ö\82Ì\83|\83C\83\93\83^\82ð\95Ô\82·
100 //\8ag\92£\8eq\82ª\82È\82¢\8fê\8d\87\82Í\8bó\95\8e\9a\97ñ\82ð\95Ô\82·
101 //\81i\96ß\82è\92l\82Í NULL \82Å\82È\82¢\82±\82Æ\82ª\95Û\8fØ\82³\82ê\82é\81j
102 const char* __fastcall kbExtractFileExt(const char* cszSrc);
103
104 //cszFileName \82©\82ç\83p\83X\82ð\8eæ\82è\8f\9c\82¢\82½\82à\82Ì\81i\83t\83@\83C\83\8b\96¼\95\94\95ª\81j\82Ì\83|\83C\83\93\83^\82ð\95Ô\82·
105 const char* __fastcall kbExtractFileName(const char* cszFileName);
106
107 //cszFileName \82©\82ç\83p\83X\82ð\8eæ\93¾\82µ\82Ä\83|\83C\83\93\83^\82ð\95Ô\82·
108 char* __fastcall kbExtractFilePath(char *szDest, const char* cszFileName, int nSize);
109
110 //\8f\91\8cÉ\83t\83@\83C\83\8b\93à\82Ì\83t\83@\83C\83\8b\96¼\82©\82ç\83p\83X\82ð\8eæ\82è\8f\9c\82¢\82½\82à\82Ì\82ð\95Ô\82·
111 //\97á\82P\81FC:\hoge\hoge.lzh>test.mid \82Ì\96ß\82è\92l = test.mid
112 //\97á\82Q\81FC:\hoge\hoge.lzh>test/test2.mid \82Ì\96ß\82è\92l\81\81test2.mid
113 //\97á\82R\81FC:\hoge\hoge.lzh>test/testzip.zip>test3.mid \82Ì\96ß\82è\92l = test3.mid
114 //\97á\82S\81FC:\hoge\hoge.lzh>test/testzip.zip>test/test4.mid \82Ì\96ß\82è\92l = test4.mid
115 const char* __fastcall kbExtractFileNameInArc(const char *cszFileName);
116
117 //\8f\91\8cÉ\83t\83@\83C\83\8b\93à\82Ì\83t\83@\83C\83\8b\96¼\82©\82ç\83t\83@\83C\83\8b\96¼\82ð\8eæ\82è\8f\9c\82¢\82½\82à\82Ì\82ð\95Ô\82·
118 //\97á\82P\81FC:\hoge\hoge.lzh>test.mid \82Ì\96ß\82è\92l = C:\hoge\hoge.lzh>
119 //\97á\82Q\81FC:\hoge\hoge.lzh>test/test2.mid \82Ì\96ß\82è\92l = C:\hoge\hoge.lzh>test/
120 //\97á\82R\81FC:\hoge\hoge.lzh>test/testzip.zip>test3.mid \82Ì\96ß\82è\92l = C:\hoge\hoge.lzh>test/testzip.zip>
121 //\97á\82S\81FC:\hoge\hoge.lzh>test/testzip.zip>test/test4.mid \82Ì\96ß\82è\92l = C:\hoge\hoge.lzh>test/testzip.zip>test/
122 const char* __fastcall kbExtractFilePathInArc(char *szDest, const char *cszFileName);
123
124 //cszFileName \82Ì\8ag\92£\8eq\82ð cszExt \82É\92u\82«\8a·\82¦\82Ä szDest \82É\83R\83s\81[\82·\82é
125 char* __fastcall kbExtractReplacedFileExt(char *szDest,
126                                           const char *cszFileName,
127                                           const char *cszExt);
128
129 void __fastcall  kbAddPathDelimiter(char *szPath);
130 void __fastcall  kbRemovePathDelimiter(char *szPath);
131 void __fastcall  kbCombinePath(char *szDest, const char *cszSrc,
132                                const char *cszAdd, int nDestSize);
133
134 #endif
135