/** @file tstrlist.c @date 2009/1/14 @author 오재경 freefrug@falinux.com FALinux.Co.,Ltd. @brief Delphi 형식의 스트링리스트 객체이다. @modify @todo @bug @remark @warning */ // // 저작권 에프에이리눅스(주) // 외부공개 금지 // //---------------------------------------------------------------------------- #ifndef _TSTRLIST_API_HEADER_ #define _TSTRLIST_API_HEADER_ #define MIN_STR_LEN 64 #define COMMA_TEXT_DELIM " ,\f\n\r\t\v" /// 객체를 관리할 구조체 typedef struct { tlist *ftlst; // tlist 객체 포인터 } tstrlist; /// 문자열 아이템 구조체 typedef struct { void *fdata; // 사용자 포인터 int ftag; // 임의의 정수형값 저장 변수 int fstrcap; // 문자열 메모리 할당 개수 char *fstr; // 문자열 포인터 } tstritem; #ifdef __cplusplus extern "C" { #endif /// @{ /// @brief 외부에서 사용할수 있는 객체함수 리스트 extern tstrlist* tstrlist_create ( void ); /// tstrlist 객체를 생성한다. extern void tstrlist_free ( tstrlist *that ); /// tstrlist 객체를 소멸시킨다. extern void tstrlist_clear ( tstrlist *that ); /// 모든 아이템을 제거한다. extern int tstrlist_add ( tstrlist *that, const char *str ); /// 문자열 아이템을 추가한다. extern int tstrlist_add_object ( tstrlist *that, const char *str, void *obj ); /// 문자열과 사용자 포인터를 추가한다. extern void tstrlist_delete ( tstrlist *that, int index ); /// 하나의 아이템을 제거한다. extern char *tstrlist_get_string ( tstrlist *that, int index ); /// 인덱스에 해당하는 문자열 포인터를 반환한다. extern void *tstrlist_get_object ( tstrlist *that, int index ); /// 인덱스에 해당하는 사용자 포인터를 반환한다. extern int tstrlist_get_tag ( tstrlist *that, int index ); /// 인덱스에 해당하는 정수형 태그변수를 반환한다. extern void tstrlist_exchange ( tstrlist *that, int index1, int index2 ); /// 2개의 아이템 위치를 교환한다. extern int tstrlist_indexof ( tstrlist *that, const char *str ); /// 문자열이 동일한 인덱스를 구한다. extern void tstrlist_insert ( tstrlist *that, int index, char *str ); /// 아이템을 특정 위치에 추가한다. extern char *tstrlist_first ( tstrlist *that ); /// 첫번째 문자열 포인터를 돌려준다. extern char *tstrlist_last ( tstrlist *that ); /// 마지막 문자열 포인터를 구한다. extern void tstrlist_move ( tstrlist *that, int curindex, int newindex ); /// 특정 아이템의 위치(인덱스)를 변경한다. extern void tstrlist_put_string ( tstrlist *that, int index, char *str ); /// 특정아이템의 문자열을 변경한다. extern void tstrlist_put_object ( tstrlist *that, int index, void *obj ); /// 특정아이템의 사용자 메모리 변수를 변경한다. extern void tstrlist_put_tag ( tstrlist *that, int index, int tag ); /// 특정아이템의 태그변수를 변경한다. extern int tstrlist_remove ( tstrlist *that, char *str ); /// 인자로 전해준 동일한 문자열을 찾아 삭제한다. extern void tstrlist_pack ( tstrlist *that ); /// 메모리 관리를 위해 사용하지 않는 메모리를 반환한다. extern int tstrlist_getcount ( tstrlist *that ); /// 아이템의 개수를 얻는다. extern void tstrlist_sort ( tstrlist *that ); /// 아이템을 사용자 비교함수를 통해 정렬한다. extern int tstrlist_commatext ( tstrlist *that, char *str ); /// 인자로 전해준 문자열을 분리하여 아이템으로 추가한다. extern int tstrlist_load_from_file ( tstrlist *that, char *fname ); /// 텍스트파일에서 라인별로 아이템에 등록한다. extern int tstrlist_save_to_file ( tstrlist *that, char *fname ); /// 아이템들을 라인별로 파일로 저장한다. /// @} #ifdef __cplusplus } #endif #endif // _TSTRLIST_API_HEADER_