tstrlist.h
4.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/**
@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_