From c7cd15bf07ef85cdf5ed1dd6c4a3193b608455ae Mon Sep 17 00:00:00 2001 From: Mathisonz Date: Sun, 16 Oct 2016 14:50:30 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E6=88=9064=E4=BD=8D?= =?UTF-8?q?=E9=80=82=E7=94=A8=E7=9A=84NSInteger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 8196 bytes SearchCore/Array.h | 55 ++-- SearchCore/Array.mm | 64 ++--- SearchCore/SearchCore.h | 42 +-- SearchCore/SearchCore.mm | 249 +++++++++--------- SearchCore/SearchCoreManager.mm | 28 +- SearchCoreTest.xcodeproj/project.pbxproj | 6 +- .../UserInterfaceState.xcuserstate | Bin 0 -> 13980 bytes .../xcschemes/SearchCoreTest.xcscheme | 91 +++++++ .../xcschemes/xcschememanagement.plist | 22 ++ SearchCoreTest/SearchCoreTest-Info.plist | 2 +- SearchCoreTest/ViewController.m | 2 +- 12 files changed, 339 insertions(+), 222 deletions(-) create mode 100644 SearchCoreTest.xcodeproj/project.xcworkspace/xcuserdata/Mathisonz.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 SearchCoreTest.xcodeproj/xcuserdata/Mathisonz.xcuserdatad/xcschemes/SearchCoreTest.xcscheme create mode 100644 SearchCoreTest.xcodeproj/xcuserdata/Mathisonz.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/.DS_Store b/.DS_Store index e60488f68d1852f4372d6f502fc34eef8c37b60d..e13eb4578365cdb6ce7cf5ff23fd85fa22449fbb 100644 GIT binary patch delta 476 zcmZoMXmOBWU|?W$DortDU;r^WfEYvza8E20o2aMA$h$FMH}hr%jz7$c**Q2SHn1@A zPUd0RSpPGrASbi9#K7PtBNH%}XhcsSk!2 z7@nC@k`XT;8c>v42Gkpnn3o!sS)7@anUh&k$q57;obdt@)z#(}hB^vHh6c4d3f1Q3 z2098RrY5zu0`oaIq%}<)eIpBMyA~~8vUJ(<6^D-ky$=M8j1ZbZ7)ryaV?YMi<^tBO zjEoYKFR;o?{=_CCl9O&2oSdIq08w;K4@e^ML6%IxDal`u wfn+SB!sZ&DNz7al+(08-L2 #include @@ -25,62 +24,62 @@ -#define MallocIndexByte (INDEX_NUM_MAX*sizeof(int)) -#define MallocByte (MALLOC_SIZE*sizeof(int)) +#define MallocIndexByte (INDEX_NUM_MAX*sizeof(NSInteger)) +#define MallocByte (MALLOC_SIZE*sizeof(NSInteger)) typedef struct ArrayData { - int* pData; + NSInteger* pData; struct ArrayData* next; }ArrayData; typedef struct Array { - int size; - int mallocsize; //数据域个数 + NSInteger size; + NSInteger mallocsize; //数据域个数 - int** pIndexData; //索引空间首地址 - int pIndexNum; //索引空间个数 + NSInteger** pIndexData; //索引空间首地址 + NSInteger pIndexNum; //索引空间个数 - int* pDataEnd; + NSInteger* pDataEnd; - void (*Append)(struct Array* A,int value); - void (*Insert)(struct Array* A,int value,int pos); - void (*Remove)(struct Array* A,int index); + void (*Append)(struct Array* A,NSInteger value); + void (*Insert)(struct Array* A,NSInteger value,NSInteger pos); + void (*Remove)(struct Array* A,NSInteger index); void (*Reset)(struct Array* A); - int (*GetValue)(struct Array* A,int index); + NSInteger (*GetValue)(struct Array* A,NSInteger index); }Array; void ArrayInit(struct Array* A); -void ArrayAppend(Array* A,int value); -void ArrayInsert(Array* A,int value,int pos); -void ArrayRemove(Array* A,int index); +void ArrayAppend(Array* A,NSInteger value); +void ArrayInsert(Array* A,NSInteger value,NSInteger pos); +void ArrayRemove(Array* A,NSInteger index); void ArrayReset(Array* A); -int ArrayReSize(Array* A); -int ArrayGetValue(Array* A,int index); +NSInteger ArrayReSize(Array* A); +NSInteger ArrayGetValue(Array* A,NSInteger index); typedef struct ArrayC { - int size; - int pDataSize; //数据域个数 - int *pData; //空间首地址 + NSInteger size; + NSInteger pDataSize; //数据域个数 + NSInteger *pData; //空间首地址 - int* pDataEnd; + NSInteger* pDataEnd; - void (*Append)(struct ArrayC* A,int value); + void (*Append)(struct ArrayC* A,NSInteger value); void (*Reset)(struct ArrayC* A); - void (*SetSize)(struct ArrayC* A,int size); - int (*GetValue)(struct ArrayC* A,int index); + void (*SetSize)(struct ArrayC* A,NSInteger size); + NSInteger (*GetValue)(struct ArrayC* A,NSInteger index); }ArrayC; void ArrayCInit(struct ArrayC* A); -void ArrayCAppend(ArrayC* A,int value); +void ArrayCAppend(ArrayC* A,NSInteger value); void ArrayCReset(ArrayC* A); -int ArrayCGetValue(ArrayC* A,int index); -void ArrayCSetSize(struct ArrayC* A,int size); +NSInteger ArrayCGetValue(ArrayC* A,NSInteger index); +void ArrayCSetSize(struct ArrayC* A,NSInteger size); #endif diff --git a/SearchCore/Array.mm b/SearchCore/Array.mm index 0d4f492..04703f2 100644 --- a/SearchCore/Array.mm +++ b/SearchCore/Array.mm @@ -1,6 +1,6 @@ #include "Array.h" -int sizeof_int = sizeof(int); +NSInteger sizeof_int = sizeof(NSInteger); void ArrayInit(struct Array* A) { @@ -20,7 +20,7 @@ void ArrayInit(struct Array* A) return; } -void ArrayAppend(Array* A,int value) +void ArrayAppend(Array* A,NSInteger value) { if( A->size < A->mallocsize || ArrayReSize( A ) > 0 ) { @@ -33,13 +33,13 @@ void ArrayAppend(Array* A,int value) return; } -void ArrayInsert(Array* A,int value,int pos) +void ArrayInsert(Array* A,NSInteger value,NSInteger pos) { - int size = A->size; - int i = 0; - int* ptr = 0; - int* ptr0 = 0; - int** ptr_index = 0; + NSInteger size = A->size; + NSInteger i = 0; + NSInteger* ptr = 0; + NSInteger* ptr0 = 0; + NSInteger** ptr_index = 0; if(pos >= 0 && pos <= size) { @@ -77,15 +77,15 @@ void ArrayInsert(Array* A,int value,int pos) return; } -void ArrayRemove(Array* A,int index) +void ArrayRemove(Array* A,NSInteger index) { - int size = A->size; - int i; - int* ptr0 = 0; - int* ptr = 0; - int* ptr_temp = 0; - int** ptr_index = 0; - int pIndex = 0; + NSInteger size = A->size; + NSInteger i; + NSInteger* ptr0 = 0; + NSInteger* ptr = 0; + NSInteger* ptr_temp = 0; + NSInteger** ptr_index = 0; + NSInteger pIndex = 0; if(index >= 0 && index < size) { @@ -124,7 +124,7 @@ void ArrayRemove(Array* A,int index) } void ArrayReset(Array* A) { - int i = 0; + NSInteger i = 0; for(i = 0;i < A->pIndexNum;i ++) free(*(A->pIndexData+i)); @@ -136,22 +136,22 @@ void ArrayReset(Array* A) ArrayInit(A); } -int ArrayReSize(Array* A) +NSInteger ArrayReSize(Array* A) { - int newsize; - int* desData; - int mallocsize = MallocByte; - int mallocindexsize = MallocIndexByte; + NSInteger newsize; + NSInteger* desData; + NSInteger mallocsize = MallocByte; + NSInteger mallocindexsize = MallocIndexByte; //内存不够 if(A->pIndexNum + 1 >= INDEX_NUM_MAX ) return 0; if( !A->pIndexData ) - A->pIndexData = (int**)malloc(mallocindexsize); + A->pIndexData = (NSInteger**)malloc(mallocindexsize); newsize = A->mallocsize + MALLOC_SIZE; - desData = (int*)malloc(mallocsize); + desData = (NSInteger*)malloc(mallocsize); *(A->pIndexData+A->pIndexNum) = desData; A->pIndexNum ++; @@ -162,11 +162,11 @@ int ArrayReSize(Array* A) return 1; } -int ArrayGetValue(Array* A,int index) +NSInteger ArrayGetValue(Array* A,NSInteger index) { - int* ptr = 0; - int* ptr_index = 0; - int pIndex = 0; + NSInteger* ptr = 0; + NSInteger* ptr_index = 0; + NSInteger pIndex = 0; if(index >= 0 && index < A->size) { @@ -193,7 +193,7 @@ void ArrayCInit(struct ArrayC* A) A->SetSize = &ArrayCSetSize; return; } -void ArrayCAppend(ArrayC* A,int value) +void ArrayCAppend(ArrayC* A,NSInteger value) { if( A->size < A->pDataSize ) { @@ -214,7 +214,7 @@ void ArrayCReset(ArrayC* A) ArrayCInit(A); } -int ArrayCGetValue(ArrayC* A,int index) +NSInteger ArrayCGetValue(ArrayC* A,NSInteger index) { if( index >= 0 && index < A->size ) return *(A->pData + index); @@ -222,12 +222,12 @@ int ArrayCGetValue(ArrayC* A,int index) return -1; } -void ArrayCSetSize(struct ArrayC* A,int size) +void ArrayCSetSize(struct ArrayC* A,NSInteger size) { if( A->pDataSize > 0 ) return; A->pDataSize = size; - A->pData = (int*)malloc(size*sizeof_int); + A->pData = (NSInteger*)malloc(size*sizeof_int); A->pDataEnd = A->pData; } diff --git a/SearchCore/SearchCore.h b/SearchCore/SearchCore.h index 8c18792..8059bfe 100644 --- a/SearchCore/SearchCore.h +++ b/SearchCore/SearchCore.h @@ -28,7 +28,7 @@ BOOL Tree_GetPhoneNum #include "string.h" -//typedef int BOOL; +//typedef NSInteger BOOL; typedef unsigned short u2char; #define TRUE 1 #define FALSE 0 @@ -50,24 +50,24 @@ typedef unsigned short u2char; typedef struct WordCode { u2char Word; //原始unicode码 -int PyCodeNum; // 拼音码个数 -int* PyCodeIndex; // 拼音码值(支持多拼音) +NSInteger PyCodeNum; // 拼音码个数 +NSInteger* PyCodeIndex; // 拼音码值(支持多拼音) }WordCode; typedef struct SearchData { - int id; //唯一标志ID + NSInteger id; //唯一标志ID u2char* iPhoneNum; //电话号码,用于号码匹配 - int WordCodeNum; + NSInteger WordCodeNum; u2char *WordCodeArray; }SearchData; typedef struct SearchPos { - int pos; //(第几个字:18bit) + (第几个拼音码:3bit) + (第几个字母:3bit) - int step; //步长:当前匹配到第几个字 + NSInteger pos; //(第几个字:18bit) + (第几个拼音码:3bit) + (第几个字母:3bit) + NSInteger step; //步长:当前匹配到第几个字 struct SearchPos * iFather; //father }SearchPos; @@ -95,7 +95,7 @@ typedef struct SearchSort }SearchSort; //============================================== BEGIN ================================================ //供外部调用的函数 -int u2slen(const u2char* str); +NSInteger u2slen(const u2char* str); void u2scpy(u2char* des,const u2char* src); int u2scmp(const u2char* str1,const u2char* str2); @@ -122,7 +122,7 @@ void ReleaseMultiPYinWords(); * aText: 名字 * aPhoneNum:号码 */ -void Tree_AddData(SearchTree* tree, int aID, const u2char* aText,const u2char* aPhoneNum); +void Tree_AddData(SearchTree* tree, NSInteger aID, const u2char* aText,const u2char* aPhoneNum); /* * 修改数据源信息 @@ -130,13 +130,13 @@ void Tree_AddData(SearchTree* tree, int aID, const u2char* aText,const u2char* a * aText: 名字 * aPhoneNum:号码 */ -void Tree_ReplaceData(SearchTree* tree, int aID, const u2char* aText,const u2char* aPhoneNum ); +void Tree_ReplaceData(SearchTree* tree, NSInteger aID, const u2char* aText,const u2char* aPhoneNum ); /* * 删除数据源信息 * aID: 数据索引ID */ -void Tree_DeleteData(SearchTree* tree, int aID ); +void Tree_DeleteData(SearchTree* tree, NSInteger aID ); /* * 搜索数据 @@ -157,12 +157,12 @@ void Tree_SetMatchFunction(SearchTree* tree,const u2char* aMatchFunc); * aText 拼音 * iMatchPosInPinYin 匹配位置 */ -BOOL Tree_GetPinYin(SearchTree* tree,int aID, u2char* aText, Array* iMatchPosInPinYin); +BOOL Tree_GetPinYin(SearchTree* tree,NSInteger aID, u2char* aText, Array* iMatchPosInPinYin); /* * 获取号码匹配的号码、匹配位置 */ -BOOL Tree_GetPhoneNum(SearchTree* tree,int aID, u2char* aText, Array* iMatchPosInPhoneNum); +BOOL Tree_GetPhoneNum(SearchTree* tree,NSInteger aID, u2char* aText, Array* iMatchPosInPhoneNum); //================================================ END ============================================== @@ -189,13 +189,13 @@ void AddToCachedHitSingle(SearchTree* tree,SearchData *aData, Array* aCacheArray BOOL IsMatchByKmp(const u2char* aText,const u2char* wordInput,Array* iMatchPosInPinYin); //aID 的索引index < 0为不存在 -int FindSearchDataIndex(Array* ptr,int aID,SearchData** data); +NSInteger FindSearchDataIndex(Array* ptr,NSInteger aID,SearchData** data); /* * < 0 已存在 * > 0 需插入位置 */ -int FindSearchDataInsertIndex(Array* ptr,int aID); +NSInteger FindSearchDataInsertIndex(Array* ptr,NSInteger aID); /* * aText GBK编码 @@ -209,20 +209,20 @@ BOOL SearchCachedHit(SearchTree* tree, u2char word, Array **aHits); /* * 确定某一搜索集是否匹配搜索串 return匹配的权值,<0为不匹配 */ -int IsHit(SearchTree* tree,SearchData* aData, SearchData* aSearchWordData,BOOL iIsLogTrace); +NSInteger IsHit(SearchTree* tree,SearchData* aData, SearchData* aSearchWordData,BOOL iIsLogTrace); /* * 确定aWordCode串的aPos位置,是否和aWord相匹配 */ -BOOL IsMatch(SearchTree* tree,WordCode* aWordCode,int nPyCode,int nchar, unsigned int aWord ); +BOOL IsMatch(SearchTree* tree,WordCode* aWordCode,NSInteger nPyCode,NSInteger nchar, NSUInteger aWord ); -unsigned int ChangeWordToDigit(SearchTree* tree,unsigned int Word); +NSUInteger ChangeWordToDigit(SearchTree* tree,NSUInteger Word); -BOOL CompareWord(SearchTree* tree,unsigned int Word,unsigned int WordInput); +BOOL CompareWord(SearchTree* tree,NSUInteger Word,NSUInteger WordInput); -int FindIndexInMultiPYin(unsigned int key); +NSInteger FindIndexInMultiPYin(NSUInteger key); -SearchPos* GetSearchPos(int index); +SearchPos* GetSearchPos(NSInteger index); void FreeWordCode(WordCode* word); void FreeSearchData(SearchData* data); diff --git a/SearchCore/SearchCore.mm b/SearchCore/SearchCore.mm index 7402f1b..05f1eee 100644 --- a/SearchCore/SearchCore.mm +++ b/SearchCore/SearchCore.mm @@ -1,31 +1,32 @@ #include "SearchCore.h" #include +#include "stdio.h" //#include "MrUtilDebug.h" Array iMultiPyCodeSorted; BOOL iIsMultiPYinWordsLoaded = FALSE; -int SIZEOF_INT = sizeof(int); -int SIZEOF_U2Char = sizeof(u2char); -int SIZEOF_WordCode = sizeof(WordCode); -int SIZEOF_SearchData = sizeof(SearchData); -int SIZEOF_SearchPos = sizeof(SearchPos); -int SIZEOF_SearchSort = sizeof(SearchSort); +NSInteger SIZEOF_INT = sizeof(NSInteger); +NSInteger SIZEOF_U2Char = sizeof(u2char); +NSInteger SIZEOF_WordCode = sizeof(WordCode); +NSInteger SIZEOF_SearchData = sizeof(SearchData); +NSInteger SIZEOF_SearchPos = sizeof(SearchPos); +NSInteger SIZEOF_SearchSort = sizeof(SearchSort); //kmp比较需缓存 -int iKmpBuf[128]; +NSInteger iKmpBuf[128]; -int searchPosMallocSize = 0; +NSInteger searchPosMallocSize = 0; SearchPos *searchPosMalloc = NULL; -int searchPosPtrMallocSize = 0; +NSInteger searchPosPtrMallocSize = 0; SearchPos **searchPosPtrArray = NULL; Array searchPosMallocArray; //enum {ID_Ascii = 0,ID_PinYinCode = 1,ID_CharIndex = 2,ID_CharIndex2 = 3,ID_CannotSpell = 4}; BOOL isPinYinCodeIndexSorted = FALSE; -int PinYinCodeIndexSort[KPyCodeNum]; -int PinYinNum[KPyCodeNum]; +NSInteger PinYinCodeIndexSort[KPyCodeNum]; +NSInteger PinYinNum[KPyCodeNum]; //汉字基本发音表 const char *PinYinCode[KPyCodeNum] = @@ -178,9 +179,9 @@ }; -int u2slen(const u2char* str) { +NSInteger u2slen(const u2char* str) { const u2char* ptr = str; - int len = 0; + NSInteger len = 0; while (ptr && *ptr) { ptr ++; @@ -230,9 +231,9 @@ int u2scmp(const u2char* str1,const u2char* str2) { void getSortString(SearchSort *node) { u2char sortString[256]; - int pos = 0; - int lenmax = 127; - int i; + NSInteger pos = 0; + NSInteger lenmax = 127; + NSInteger i; WordCode code; // 提取字符码部分组成字符串,用于排序比较 @@ -287,15 +288,15 @@ int SearchSortCmp(void const* item1,void const* item2) //PinYinCode 按拼音排序后存入PinYinCodeIndexSort void SortPinYinCodeIndex(){ - int low = 0; - int mid = 0; - int high = 0; - int i = 0; - int j = 0; - int val = 0; + NSInteger low = 0; + NSInteger mid = 0; + NSInteger high = 0; + NSInteger i = 0; + NSInteger j = 0; + NSInteger val = 0; BOOL exist = FALSE; - int midIndex = 0; - int sort[KPyCodeNum]; + NSInteger midIndex = 0; + NSInteger sort[KPyCodeNum]; for (i = 0; i < KPyCodeNum ; i ++) { low = 0; @@ -321,14 +322,14 @@ void SortPinYinCodeIndex(){ sort[j] = i; } - for (int i = 0; i < KPyCodeNum; i ++) + for (NSInteger i = 0; i < KPyCodeNum; i ++) PinYinCodeIndexSort[sort[i]] = i; } void SearchTreeInit(SearchTree* tree) { - int i = 0; + NSInteger i = 0; ArrayInit(&tree->SearchDataArray); for(i = 0;i < KCachedHitNum;i ++) @@ -346,18 +347,18 @@ void SearchTreeInit(SearchTree* tree) ArrayInit(&searchPosMallocArray); - for (int i = 0; i < KPyCodeNum; i ++) { + for (NSInteger i = 0; i < KPyCodeNum; i ++) { PinYinNum[i] = i; } } -void Tree_AddData(SearchTree* tree, int aID, const u2char* aText,const u2char* aPhoneNum) +void Tree_AddData(SearchTree* tree, NSInteger aID, const u2char* aText,const u2char* aPhoneNum) { SearchData* data = 0; - int len = 0; - int size = 0; + NSInteger len = 0; + NSInteger size = 0; - int pos = FindSearchDataInsertIndex(&tree->SearchDataArray,aID); + NSInteger pos = FindSearchDataInsertIndex(&tree->SearchDataArray,aID); if( pos < 0 ) //已存在 return; @@ -368,7 +369,7 @@ void Tree_AddData(SearchTree* tree, int aID, const u2char* aText,const u2char* a data->WordCodeArray = NULL; Text2SearchData( aText, data ); - tree->SearchDataArray.Insert(&tree->SearchDataArray,(int)data,pos); + tree->SearchDataArray.Insert(&tree->SearchDataArray,(NSInteger)data,pos); //首字母预处理 AddToCachedHit(tree,data); @@ -386,7 +387,7 @@ void Tree_AddData(SearchTree* tree, int aID, const u2char* aText,const u2char* a return; } -void Tree_ReplaceData(SearchTree* tree, int aID, const u2char* aText,const u2char* aPhoneNum ) +void Tree_ReplaceData(SearchTree* tree, NSInteger aID, const u2char* aText,const u2char* aPhoneNum ) { Tree_DeleteData(tree,aID); @@ -395,10 +396,10 @@ void Tree_ReplaceData(SearchTree* tree, int aID, const u2char* aText,const u2cha return; } -void Tree_DeleteData(SearchTree* tree, int aID ) +void Tree_DeleteData(SearchTree* tree, NSInteger aID ) { - int i = 0; - int pos = 0; + NSInteger i = 0; + NSInteger pos = 0; Array* cache = NULL; SearchData *data = NULL; @@ -427,8 +428,8 @@ void Tree_DeleteData(SearchTree* tree, int aID ) void Tree_SetMatchFunction(SearchTree* tree,const u2char* aMatchFunc) { - int len = 0; - int size = 0; + NSInteger len = 0; + NSInteger size = 0; if (tree->iMatchFunc) { free(tree->iMatchFunc); tree->iMatchFunc = NULL; @@ -453,11 +454,11 @@ void LoadMultiPYinWords(const char* multiPYinPath) FILE* file = NULL; FILE* fp = NULL; - int size = 0; - int i = 0; + NSInteger size = 0; + NSInteger i = 0; unsigned digital_10 = 0; unsigned digital_16 = 0; - int index = 0; + NSInteger index = 0; char* buf = NULL; unsigned char word = 0; unsigned char word1 = 0; @@ -506,7 +507,7 @@ void LoadMultiPYinWords(const char* multiPYinPath) cur = (WordCode*)malloc(SIZEOF_WordCode); cur->Word = digital_16; cur->PyCodeNum = 0; - cur->PyCodeIndex = (int*)malloc(SIZEOF_INT*KMaxPyCode); + cur->PyCodeIndex = (NSInteger*)malloc(SIZEOF_INT*KMaxPyCode); //DP1("cur->Word %d",cur->Word) index = FindIndexInMultiPYin(cur->Word); if( index >= 0 ) @@ -515,7 +516,7 @@ void LoadMultiPYinWords(const char* multiPYinPath) cur = NULL; } else - iMultiPyCodeSorted.Insert(&iMultiPyCodeSorted,(int)cur,-index-1); + iMultiPyCodeSorted.Insert(&iMultiPyCodeSorted,(NSInteger)cur,-index-1); } else if( digital_10 > 0 && cur ) { @@ -538,12 +539,12 @@ void LoadMultiPYinWords(const char* multiPYinPath) BOOL IsMatchByKmp(const u2char* aText,const u2char* wordInput,Array* iMatchPosInPinYin) { - int i,j; - int len1 = 0; - int len2 = 0; - int p1 = 0; - int p2 = 0; - int k = 0; + NSInteger i,j; + NSInteger len1 = 0; + NSInteger len2 = 0; + NSInteger p1 = 0; + NSInteger p2 = 0; + NSInteger k = 0; iKmpBuf[0] = 0; j = 0; @@ -587,11 +588,11 @@ BOOL IsMatchByKmp(const u2char* aText,const u2char* wordInput,Array* iMatchPosIn return FALSE; } -int FindSearchDataIndex(Array* ptr,int aID,SearchData** data) +NSInteger FindSearchDataIndex(Array* ptr,NSInteger aID,SearchData** data) { - int low = 0; - int high = ptr->size - 1; - int mid; + NSInteger low = 0; + NSInteger high = ptr->size - 1; + NSInteger mid; SearchData* temp; while (low <= high) { @@ -613,10 +614,10 @@ int FindSearchDataIndex(Array* ptr,int aID,SearchData** data) return -(low+1); } -int FindSearchDataInsertIndex(Array* ptr,int aID) +NSInteger FindSearchDataInsertIndex(Array* ptr,NSInteger aID) { SearchData* data = 0; - int pos = FindSearchDataIndex(ptr,aID,&data); + NSInteger pos = FindSearchDataIndex(ptr,aID,&data); if( pos < 0 ) return - pos - 1; else @@ -627,7 +628,7 @@ void Text2SearchData(const u2char* aText,SearchData *data) { const u2char* ptr = aText; u2char character; - int count = u2slen(aText); + NSInteger count = u2slen(aText); // 遍历各个字符,转换为WordCode数组后保存 data->WordCodeArray = NULL; @@ -653,9 +654,9 @@ BOOL Word2Code( u2char aWord, WordCode *code ) { unsigned char t1 = (aWord >> 8) & 0xFF; unsigned char t2 = aWord & 0xFF; - int PyIndex; + NSInteger PyIndex; u2char word = 0; - int index; + NSInteger index; code->Word = aWord; code->PyCodeNum = 0; @@ -689,7 +690,7 @@ BOOL Word2Code( u2char aWord, WordCode *code ) // 添加到WordCode code->PyCodeNum = 1; index = PyCodeIndex[t1-78][t2] - 1; - code->PyCodeIndex = (int*)&PinYinNum[index]; + code->PyCodeIndex = (NSInteger*)&PinYinNum[index]; } } } @@ -698,16 +699,16 @@ BOOL Word2Code( u2char aWord, WordCode *code ) return TRUE; } -int FindIndexInMultiPYin(unsigned int key) +NSInteger FindIndexInMultiPYin(NSUInteger key) { // 二分法查找确定 - int low = 0; - int high = iMultiPyCodeSorted.size - 1; + NSInteger low = 0; + NSInteger high = iMultiPyCodeSorted.size - 1; WordCode *midVal; while(low <= high) { - int mid = (low + high) >> 1; + NSInteger mid = (low + high) >> 1; midVal = (WordCode *)iMultiPyCodeSorted.GetValue(&iMultiPyCodeSorted,mid); if( midVal->Word < key ) @@ -724,9 +725,9 @@ int FindIndexInMultiPYin(unsigned int key) void AddToCachedHit(SearchTree* tree, SearchData *aData) { - int i = 0; - int j = 0; - int capticalIndex = 0; + NSInteger i = 0; + NSInteger j = 0; + NSInteger capticalIndex = 0; WordCode code; u2char word; @@ -773,12 +774,12 @@ void AddToCachedHit(SearchTree* tree, SearchData *aData) void AddToCachedHitSingle(SearchTree* tree,SearchData *aData, Array* aCacheArray) { - int pos = FindSearchDataInsertIndex(aCacheArray, aData->id); + NSInteger pos = FindSearchDataInsertIndex(aCacheArray, aData->id); if( pos >= 0 ) { // 不存在 //NSLog(@"pos %d",pos); - aCacheArray->Insert(aCacheArray,(int)aData, pos); + aCacheArray->Insert(aCacheArray,(NSInteger)aData, pos); } return; } @@ -787,23 +788,23 @@ void AddToCachedHitSingle(SearchTree* tree,SearchData *aData, Array* aCacheArray void Tree_Search(SearchTree* tree, u2char* aText, Array* aSearchedArray,Array* aNameMatchArray, Array* aPhoneMatchArray) { - int i = 0; - int value = 0; - int count = 0; - int len = 0; - int temp = 0; + NSInteger i = 0; + NSInteger value = 0; + NSInteger count = 0; + NSInteger len = 0; + NSInteger temp = 0; u2char* textPtr = 0; u2char* buf = 0; u2char* bufPtr = 0; - int pos = 0; - int curSearchWordNum = 0; + NSInteger pos = 0; + NSInteger curSearchWordNum = 0; // NSLog(@"Tree_Search begin 0"); SearchData* iCurSeachData = tree->iCurSeachData; SearchData *dataToSearch = 0; Array* cache = 0; SearchSort *searchSortPtr = 0; - int matchCount = 0; + NSInteger matchCount = 0; Array aNameMatchHits; Array aPhoneMatchHits; @@ -859,7 +860,7 @@ void Tree_Search(SearchTree* tree, u2char* aText, Array* aSearchedArray,Array* a node->matchAllInWord = value & 1; node->iSortString = NULL; - aNameMatchHits.Append(&aNameMatchHits, (int)dataToSearch); + aNameMatchHits.Append(&aNameMatchHits, (NSInteger)dataToSearch); //NSLog(@"%d %d %d %d %d %d",aID,node->matchStart,node->matchEnd,node->pos,node->matchAllInPy,node->matchAllInWord); } } @@ -923,7 +924,7 @@ void Tree_Search(SearchTree* tree, u2char* aText, Array* aSearchedArray,Array* a BOOL SearchCachedHit(SearchTree* tree, u2char word, Array **aHits) { BOOL isMakeSure = TRUE; - int capticalIndex; + NSInteger capticalIndex; WordCode code; // NSLog(@"SearchCachedHit 0"); @@ -995,7 +996,7 @@ BOOL SearchCachedHit(SearchTree* tree, u2char word, Array **aHits) if( pos >= 0 ) { //不存在 - aHits->Insert(aHits,(int)data,pos); + aHits->Insert(aHits,(NSInteger)data,pos); } } } @@ -1010,22 +1011,22 @@ BOOL SearchCachedHit(SearchTree* tree, u2char word, Array **aHits) /* * 确定某一搜索集是否匹配搜索串 return匹配的权值:初位置8bit+末位置8bit+全拼匹配8bit+全汉字匹配8bit,<0为不匹配 */ -int IsHit(SearchTree* tree,SearchData* aData, SearchData* aSearchWordData,BOOL iIsLogTrace) +NSInteger IsHit(SearchTree* tree,SearchData* aData, SearchData* aSearchWordData,BOOL iIsLogTrace) { - int j = 0; - int k = 0; - int count = 0; - int aSearchCount = aSearchWordData->WordCodeNum; - int aPYinNum = 0; - - int aPos = 0; - int nWord = 0; - int nPyCode = 0; - int nchar = 0; - int nextword = 0; - int value = -1; - int temp1 = 0; - int temp2 = 0; + NSInteger j = 0; + NSInteger k = 0; + NSInteger count = 0; + NSInteger aSearchCount = aSearchWordData->WordCodeNum; + NSInteger aPYinNum = 0; + + NSInteger aPos = 0; + NSInteger nWord = 0; + NSInteger nPyCode = 0; + NSInteger nchar = 0; + NSInteger nextword = 0; + NSInteger value = -1; + NSInteger temp1 = 0; + NSInteger temp2 = 0; bool isMatchAllPinYin = true; bool isMatchAllWord = true; @@ -1038,7 +1039,7 @@ int IsHit(SearchTree* tree,SearchData* aData, SearchData* aSearchWordData,BOOL i Array* iMatchTrace = &tree->iMatchTrace; - int searchPosUseCount = 0; + NSInteger searchPosUseCount = 0; if (aData->WordCodeNum<<2 > searchPosPtrMallocSize || searchPosPtrMallocSize== 0) { if (searchPosPtrArray) { free(searchPosPtrArray); @@ -1069,7 +1070,7 @@ int IsHit(SearchTree* tree,SearchData* aData, SearchData* aSearchWordData,BOOL i pos->iFather = NULL; pos->step = 1; searchPosPtrArray[count ++] = pos; - //printf("pos %d\n",pos->pos); + //prNSIntegerf("pos %d\n",pos->pos); if( aSearchCount <= 1 ) { @@ -1175,7 +1176,7 @@ int IsHit(SearchTree* tree,SearchData* aData, SearchData* aSearchWordData,BOOL i nextPos = (SearchPos*)malloc(SIZEOF_SearchPos); nextPos->pos = pos->pos; - iMatchTrace->Append(iMatchTrace,(int)nextPos); + iMatchTrace->Append(iMatchTrace,(NSInteger)nextPos); } temp1 = pos->pos; @@ -1219,7 +1220,7 @@ int IsHit(SearchTree* tree,SearchData* aData, SearchData* aSearchWordData,BOOL i /* * 确定aWordCode串的aPos位置,是否和aWord相匹配 */ -BOOL IsMatch(SearchTree* tree,WordCode* aWordCode,int nPyCode,int nchar, unsigned int aWord ) +BOOL IsMatch(SearchTree* tree,WordCode* aWordCode,NSInteger nPyCode,NSInteger nchar, NSUInteger aWord ) { WordCode* word = aWordCode; const char *pyCode = 0; @@ -1256,9 +1257,9 @@ BOOL IsMatch(SearchTree* tree,WordCode* aWordCode,int nPyCode,int nchar, unsigne } -unsigned int ChangeWordToDigit(SearchTree* tree,unsigned int Word) +NSUInteger ChangeWordToDigit(SearchTree* tree,NSUInteger Word) { - int index = 0; + NSInteger index = 0; ; if( Word >= 'A' && Word <= 'Z' ) Word = Word - 'A' + 'a'; @@ -1272,29 +1273,29 @@ unsigned int ChangeWordToDigit(SearchTree* tree,unsigned int Word) return Word; } -BOOL CompareWord(SearchTree* tree,unsigned int Word,unsigned int WordInput) +BOOL CompareWord(SearchTree* tree,NSUInteger Word,NSUInteger WordInput) { Word = ChangeWordToDigit(tree,Word); WordInput = ChangeWordToDigit(tree,WordInput); return Word == WordInput; } -BOOL Tree_GetPinYin(SearchTree* tree,int aID, u2char* aText, Array* iMatchPosInPinYin) +BOOL Tree_GetPinYin(SearchTree* tree,NSInteger aID, u2char* aText, Array* iMatchPosInPinYin) { - int i = 0; - int aPos = 0; - int nWord = 0; - int nPyCode = 0; - int nchar = 0; - int aPyCodeNum = 0; - int index = 0; - int k = 0; - - int len = 0; - int temp = 0; - int iMatchNum = 0; - int iMatchIndex = 0; - int count = 0; + NSInteger i = 0; + NSInteger aPos = 0; + NSInteger nWord = 0; + NSInteger nPyCode = 0; + NSInteger nchar = 0; + NSInteger aPyCodeNum = 0; + NSInteger index = 0; + NSInteger k = 0; + + NSInteger len = 0; + NSInteger temp = 0; + NSInteger iMatchNum = 0; + NSInteger iMatchIndex = 0; + NSInteger count = 0; WordCode code; const char *pyCode = NULL; @@ -1390,13 +1391,13 @@ BOOL Tree_GetPinYin(SearchTree* tree,int aID, u2char* aText, Array* iMatchPosInP return TRUE; } -BOOL Tree_GetPhoneNum(SearchTree* tree,int aID, u2char* aText, Array* iMatchPosInPhoneNum) +BOOL Tree_GetPhoneNum(SearchTree* tree,NSInteger aID, u2char* aText, Array* iMatchPosInPhoneNum) { - int i = 0; - int len = 0; + NSInteger i = 0; + NSInteger len = 0; u2char* buf = 0; u2char* ptr = 0; - unsigned int temp = 0; + NSUInteger temp = 0; SearchData *data = NULL; SearchData *iCurSeachData = tree->iCurSeachData; u2char word; @@ -1426,12 +1427,12 @@ BOOL Tree_GetPhoneNum(SearchTree* tree,int aID, u2char* aText, Array* iMatchPosI return TRUE; } -SearchPos* GetSearchPos(int index) +SearchPos* GetSearchPos(NSInteger index) { SearchPos *ptr = NULL; if (index > searchPosMallocSize || searchPosMallocSize == 0) { searchPosMalloc = (SearchPos*)malloc(SIZEOF_SearchPos*KSearchPosMalloc); - searchPosMallocArray.Append(&searchPosMallocArray,(int)searchPosMalloc); + searchPosMallocArray.Append(&searchPosMallocArray,(NSInteger)searchPosMalloc); searchPosMallocSize += KSearchPosMalloc; } @@ -1471,7 +1472,7 @@ void FreeSearchPos(SearchPos* data) void FreeSearchTree(SearchTree* tree) { - int i = 0; + NSInteger i = 0; Array* cache = 0; if( tree->iMatchFunc ) { free(tree->iMatchFunc); @@ -1518,7 +1519,7 @@ void ReleaseMultiPYinWords() //释放多音字 if( iIsMultiPYinWordsLoaded ) { - int i = 0; + NSInteger i = 0; for( i = 0;i < iMultiPyCodeSorted.size;i ++) FreeWordCode((WordCode*)iMultiPyCodeSorted.GetValue(&iMultiPyCodeSorted,i)); diff --git a/SearchCore/SearchCoreManager.mm b/SearchCore/SearchCoreManager.mm index c6adb94..fb44ad8 100644 --- a/SearchCore/SearchCoreManager.mm +++ b/SearchCore/SearchCoreManager.mm @@ -50,7 +50,7 @@ - (void)SetMatchFunction:(NSString*) matchFunc { //string 转 u2char - (void)string_u2char:(NSString*)src u2char:(u2char*)des { u2char* ptr = des; - for (int i = 0; i < [src length]; i ++) { + for (NSInteger i = 0; i < [src length]; i ++) { unichar word = [src characterAtIndex:i]; *ptr = word; ptr ++; @@ -62,16 +62,16 @@ - (void)string_u2char:(NSString*)src u2char:(u2char*)des { - (void)ArrayToNSArray:(Array*)array NSArray:(NSMutableArray*)arrayDes { [arrayDes removeAllObjects]; - for (int i = 0; i < array->size; i ++) { - int aID = array->GetValue(array,i); - [arrayDes addObject:[NSNumber numberWithInt:aID]]; + for (NSInteger i = 0; i < array->size; i ++) { + NSInteger aID = array->GetValue(array,i); + [arrayDes addObject:[NSNumber numberWithInteger:aID]]; } } - (void)AddContact:(NSNumber*)localID name:(NSString*)name phone:(NSArray*)phoneArray { //将联系人的号码用分隔符拼接添加到搜索,不直接用Array,为了优化号码搜索(KMP复杂度M+N) NSMutableString *phoneStr = [[NSMutableString alloc] init]; - for (int i = 0; i < [phoneArray count]; i ++) { + for (NSInteger i = 0; i < [phoneArray count]; i ++) { NSString *phone = [phoneArray objectAtIndex:i]; [phoneStr appendString:phone]; [phoneStr appendString:separateWord]; @@ -91,7 +91,7 @@ - (void)AddContact:(NSNumber*)localID name:(NSString*)name phone:(NSArray*)phone - (void)ReplaceContact:(NSNumber*)localID name:(NSString*)name phone:(NSArray*)phoneArray { NSMutableString *phoneStr = [[NSMutableString alloc] init]; - for (int i = 0; i < [phoneArray count]; i ++) { + for (NSInteger i = 0; i < [phoneArray count]; i ++) { NSString *phone = [phoneArray objectAtIndex:i]; [phoneStr appendString:phone]; [phoneStr appendString:separateWord]; @@ -124,7 +124,7 @@ - (void)SearchDefault:(NSString*)searchText searchArray:(NSArray*)aSearchedArray searchedArray = new Array; ArrayInit(searchedArray); - for (int i = 0; i < [aSearchedArray count]; i ++) { + for (NSInteger i = 0; i < [aSearchedArray count]; i ++) { NSNumber *number = [aSearchedArray objectAtIndex:i]; searchedArray->Append(searchedArray,[number intValue]); } @@ -189,7 +189,7 @@ - (BOOL)GetPinYin:(NSNumber*)localID pinYin:(NSMutableString*)pinyinDes matchPos BOOL result = Tree_GetPinYin(&iSearchTree,[localID intValue],pinyinBuf,aMatchPosInPinYin); - int length = u2slen(pinyinBuf); + NSInteger length = u2slen(pinyinBuf); [pinyinDes appendString:[NSString stringWithCharacters:(unichar*)pinyinBuf length:length]]; if (aMatchPosInPinYin) { @@ -204,7 +204,7 @@ - (BOOL)GetPinYin:(NSNumber*)localID pinYin:(NSMutableString*)pinyinDes matchPos //用分隔符拼接的号码,转换到原有的样式,提取匹配的号码及匹配位置 - (void) ChangeToOranagePhones:(NSString*)phones matchPos:(NSArray*)matchPos phoneArray:(NSMutableArray*)phoneArray matchPosArray:(NSMutableArray*)matchPosArray { - int start = [[matchPos objectAtIndex:0] intValue]; + NSInteger start = [[matchPos objectAtIndex:0] intValue]; while (start >= 0) { unichar word = [phones characterAtIndex:start]; if (word == KSeparateWord) { @@ -214,7 +214,7 @@ - (void) ChangeToOranagePhones:(NSString*)phones matchPos:(NSArray*)matchPos pho } start ++; - int end = [[matchPos objectAtIndex:matchPos.count-1] intValue]; + NSInteger end = [[matchPos objectAtIndex:matchPos.count-1] intValue]; while (end < [phones length]) { unichar word = [phones characterAtIndex:end]; if (word == KSeparateWord) { @@ -226,10 +226,10 @@ - (void) ChangeToOranagePhones:(NSString*)phones matchPos:(NSArray*)matchPos pho NSString *phone = [phones substringWithRange:range]; NSMutableArray *matchPosDes = [[NSMutableArray alloc] init]; - for (int i = 0; i < [matchPos count]; i ++) { - int pos = [[matchPos objectAtIndex:i] intValue]; + for (NSInteger i = 0; i < [matchPos count]; i ++) { + NSInteger pos = [[matchPos objectAtIndex:i] intValue]; pos -= start; - [matchPosDes addObject:[NSNumber numberWithInt:pos]]; + [matchPosDes addObject:[NSNumber numberWithInteger:pos]]; } [phoneArray addObject:phone]; [matchPosArray addObject:matchPosDes]; @@ -251,7 +251,7 @@ - (BOOL)GetPhoneNum:(NSNumber*)localID phone:(NSMutableArray*)phoneArray matchPo NSMutableString *phoneDes = [[NSMutableString alloc] init]; NSMutableArray *matchPos = [[NSMutableArray alloc] init]; BOOL result = Tree_GetPhoneNum(&iSearchTree,[localID intValue],(u2char*)phoneBuf,aMatchPosInPhoneNum); - int length = u2slen(phoneBuf); + NSInteger length = u2slen(phoneBuf); [phoneDes appendString:[NSString stringWithCharacters:(unichar*)phoneBuf length:length]]; if (aMatchPosInPhoneNum) { [self ArrayToNSArray:aMatchPosInPhoneNum NSArray:matchPos]; diff --git a/SearchCoreTest.xcodeproj/project.pbxproj b/SearchCoreTest.xcodeproj/project.pbxproj index 11aa1a2..655b98c 100644 --- a/SearchCoreTest.xcodeproj/project.pbxproj +++ b/SearchCoreTest.xcodeproj/project.pbxproj @@ -164,7 +164,7 @@ 9AF539F516B65398008510DF /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0450; + LastUpgradeCheck = 0730; ORGANIZATIONNAME = kewenya; }; buildConfigurationList = 9AF539F816B65398008510DF /* Build configuration list for PBXProject "SearchCoreTest" */; @@ -247,6 +247,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -259,6 +260,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 6.0; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; @@ -290,6 +292,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "SearchCoreTest/SearchCoreTest-Prefix.pch"; INFOPLIST_FILE = "SearchCoreTest/SearchCoreTest-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "kewenya.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -301,6 +304,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "SearchCoreTest/SearchCoreTest-Prefix.pch"; INFOPLIST_FILE = "SearchCoreTest/SearchCoreTest-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "kewenya.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; diff --git a/SearchCoreTest.xcodeproj/project.xcworkspace/xcuserdata/Mathisonz.xcuserdatad/UserInterfaceState.xcuserstate b/SearchCoreTest.xcodeproj/project.xcworkspace/xcuserdata/Mathisonz.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..c12eacea69ce3a1f0f1ac2febc8db4ba7d2e545f GIT binary patch literal 13980 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 literal 0 HcmV?d00001 diff --git a/SearchCoreTest.xcodeproj/xcuserdata/Mathisonz.xcuserdatad/xcschemes/SearchCoreTest.xcscheme b/SearchCoreTest.xcodeproj/xcuserdata/Mathisonz.xcuserdatad/xcschemes/SearchCoreTest.xcscheme new file mode 100644 index 0000000..a013875 --- /dev/null +++ b/SearchCoreTest.xcodeproj/xcuserdata/Mathisonz.xcuserdatad/xcschemes/SearchCoreTest.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SearchCoreTest.xcodeproj/xcuserdata/Mathisonz.xcuserdatad/xcschemes/xcschememanagement.plist b/SearchCoreTest.xcodeproj/xcuserdata/Mathisonz.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..6cdc761 --- /dev/null +++ b/SearchCoreTest.xcodeproj/xcuserdata/Mathisonz.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + SearchCoreTest.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 9AF539FD16B65398008510DF + + primary + + + + + diff --git a/SearchCoreTest/SearchCoreTest-Info.plist b/SearchCoreTest/SearchCoreTest-Info.plist index a4fc633..5860c3f 100644 --- a/SearchCoreTest/SearchCoreTest-Info.plist +++ b/SearchCoreTest/SearchCoreTest-Info.plist @@ -9,7 +9,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - kewenya.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/SearchCoreTest/ViewController.m b/SearchCoreTest/ViewController.m index 4700565..c8ec398 100644 --- a/SearchCoreTest/ViewController.m +++ b/SearchCoreTest/ViewController.m @@ -67,7 +67,7 @@ - (void)viewDidLoad ContactPeople *contact = [[ContactPeople alloc] init]; contact.localID = [NSNumber numberWithInt:0]; - contact.name = @"西藏"; + contact.name = @"长江"; NSMutableArray *phoneArray = [[NSMutableArray alloc] init]; [phoneArray addObject:@"13800138000"]; From 33addb0e5dfceb88485e3b2234458c24ce91b2c3 Mon Sep 17 00:00:00 2001 From: Mathisonz Date: Sun, 16 Oct 2016 15:02:47 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 8196 -> 8196 bytes README | 2 ++ .../UserInterfaceState.xcuserstate | Bin 13980 -> 14026 bytes 3 files changed, 2 insertions(+) diff --git a/.DS_Store b/.DS_Store index e13eb4578365cdb6ce7cf5ff23fd85fa22449fbb..68d8dadc1f9a8c8b6419e6a7682dbdcbe024fe2d 100644 GIT binary patch delta 21 ccmZp1XmQw(Ey!VNYM`TFXlb~)Sa2dA07nD{6aWAK delta 21 ccmZp1XmQw(Ey!VRVW^{EWN5ItSa2dA07n-F5&!@I diff --git a/README b/README index 462854e..6dc56e5 100644 --- a/README +++ b/README @@ -1,3 +1,5 @@ +对原来的SearchCoreTest进行修改,将部分int换成NSIntger,以支持64位 +****************************华丽丽的分隔线************************************* SearchCoreTest ============== Author: kewenya diff --git a/SearchCoreTest.xcodeproj/project.xcworkspace/xcuserdata/Mathisonz.xcuserdatad/UserInterfaceState.xcuserstate b/SearchCoreTest.xcodeproj/project.xcworkspace/xcuserdata/Mathisonz.xcuserdatad/UserInterfaceState.xcuserstate index c12eacea69ce3a1f0f1ac2febc8db4ba7d2e545f..fcacef545ed51bb2c97ce4d1b4d4dc5fa2e7130f 100644 GIT binary patch delta 2985 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 brCCaslpZPBre`N9>F*4t{+<7cDSiG2*iT@b From a514d8be0c65a06c6d60eed0bd16207b78774e02 Mon Sep 17 00:00:00 2001 From: Mathisonz Date: Wed, 9 Nov 2016 15:53:47 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=85=B3=E9=97=ADMRC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关闭MRC,注释MRC相关代码,方便移植 --- .DS_Store | Bin 8196 -> 8196 bytes SearchCore/SearchCoreManager.mm | 45 +++++++++--------- SearchCoreTest.xcodeproj/project.pbxproj | 2 + .../UserInterfaceState.xcuserstate | Bin 14026 -> 16866 bytes SearchCoreTest/AppDelegate.m | 21 ++++---- SearchCoreTest/ContactPeople.m | 16 +++---- SearchCoreTest/ViewController.m | 21 ++++---- 7 files changed, 58 insertions(+), 47 deletions(-) diff --git a/.DS_Store b/.DS_Store index 68d8dadc1f9a8c8b6419e6a7682dbdcbe024fe2d..2bc8c575b1003a9cb3da8dcbca4446a65a4f838c 100644 GIT binary patch delta 49 wcmZp1XmQxEUYO~z#pI2`_N*FbG8q_vEVIelBAjrZ$>dxSK1PSlH6k6{0Hn_ko&W#< delta 49 wcmZp1XmQxEUYO~e-sFwK_N=NO#TXcXEVIelBAjrZ$>dxSK1PMjH6k6{0F}-T{Qv*} diff --git a/SearchCore/SearchCoreManager.mm b/SearchCore/SearchCoreManager.mm index fb44ad8..447f393 100644 --- a/SearchCore/SearchCoreManager.mm +++ b/SearchCore/SearchCoreManager.mm @@ -26,7 +26,8 @@ - (id)init { SearchTreeInit(&iSearchTree); NSString *multiPYinpath = [[NSBundle mainBundle] pathForResource:@"multipy_unicode" ofType:@"dat"]; LoadMultiPYinWords([multiPYinpath UTF8String]); - separateWord = [[NSString stringWithFormat:@"%c",KSeparateWord] retain]; +// separateWord = [[NSString stringWithFormat:@"%c",KSeparateWord] retain]; + separateWord = [NSString stringWithFormat:@"%c",KSeparateWord]; } return self; } @@ -35,11 +36,11 @@ - (void)SetMatchFunction:(NSString*) matchFunc { if (matchFunction==matchFunc || [matchFunction isEqualToString:matchFunc]) { return; } - if (matchFunction) { - [matchFunction release]; - } - matchFunction = [matchFunc retain]; - +// if (matchFunction) { +// [matchFunction release]; +// } +// matchFunction = [matchFunc retain]; + matchFunction = matchFunc; u2char buf[256]; [self string_u2char:matchFunc u2char:buf]; @@ -85,7 +86,7 @@ - (void)AddContact:(NSNumber*)localID name:(NSString*)name phone:(NSArray*)phone Tree_AddData(&iSearchTree,[localID intValue],nameBuf,phoneBuf); - [phoneStr release]; +// [phoneStr release]; } - (void)ReplaceContact:(NSNumber*)localID name:(NSString*)name phone:(NSArray*)phoneArray { @@ -105,7 +106,7 @@ - (void)ReplaceContact:(NSNumber*)localID name:(NSString*)name phone:(NSArray*)p Tree_ReplaceData(&iSearchTree,[localID intValue],nameBuf,phoneBuf); - [phoneStr release]; +// [phoneStr release]; } - (void)DeleteContact:(NSNumber*)localID { @@ -233,7 +234,7 @@ - (void) ChangeToOranagePhones:(NSString*)phones matchPos:(NSArray*)matchPos pho } [phoneArray addObject:phone]; [matchPosArray addObject:matchPosDes]; - [matchPosDes release]; +// [matchPosDes release]; } - (BOOL)GetPhoneNum:(NSNumber*)localID phone:(NSMutableArray*)phoneArray matchPos:(NSMutableArray*)matchPosArray { @@ -261,15 +262,15 @@ - (BOOL)GetPhoneNum:(NSNumber*)localID phone:(NSMutableArray*)phoneArray matchPo [self ChangeToOranagePhones:phoneDes matchPos:matchPos phoneArray:phoneArray matchPosArray:matchPosArray]; - [phoneDes release]; - [matchPos release]; +// [phoneDes release]; +// [matchPos release]; return result; } - (void)Reset { - if (matchFunction) { - [matchFunction release]; - } +// if (matchFunction) { +// [matchFunction release]; +// } FreeSearchTree(&iSearchTree); SearchTreeInit(&iSearchTree); @@ -281,13 +282,13 @@ - (void)dealloc { //释放搜索库 FreeSearchTree(&iSearchTree); - if (separateWord) { - [separateWord release]; - } - if (matchFunction) { - [matchFunction release]; - } +// if (separateWord) { +// [separateWord release]; +// } +// if (matchFunction) { +// [matchFunction release]; +// } - [super dealloc]; +// [super dealloc]; } -@end \ No newline at end of file +@end diff --git a/SearchCoreTest.xcodeproj/project.pbxproj b/SearchCoreTest.xcodeproj/project.pbxproj index 655b98c..24c6540 100644 --- a/SearchCoreTest.xcodeproj/project.pbxproj +++ b/SearchCoreTest.xcodeproj/project.pbxproj @@ -289,6 +289,7 @@ 9AF53A2316B65398008510DF /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_ARC = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "SearchCoreTest/SearchCoreTest-Prefix.pch"; INFOPLIST_FILE = "SearchCoreTest/SearchCoreTest-Info.plist"; @@ -301,6 +302,7 @@ 9AF53A2416B65398008510DF /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_ARC = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "SearchCoreTest/SearchCoreTest-Prefix.pch"; INFOPLIST_FILE = "SearchCoreTest/SearchCoreTest-Info.plist"; diff --git a/SearchCoreTest.xcodeproj/project.xcworkspace/xcuserdata/Mathisonz.xcuserdatad/UserInterfaceState.xcuserstate b/SearchCoreTest.xcodeproj/project.xcworkspace/xcuserdata/Mathisonz.xcuserdatad/UserInterfaceState.xcuserstate index fcacef545ed51bb2c97ce4d1b4d4dc5fa2e7130f..6ab015f83b6f474030d8f3618ae9ce1be4e0ec7c 100644 GIT binary patch literal 16866 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 gwRRLcvGCU(TYF;dDdA2CVO)LZg4Oq$Ywc