/** @file tlist.h @date 1997/10/7 @author 유영창 frog@falinux.com FALinux.Co.,Ltd. @brief Delphi 형식의 리스트 객체이다. @todo @bug @remark @warning */ // // 저작권 에프에이리눅스(주) // 외부공개 금지 // //---------------------------------------------------------------------------- #ifndef _TLIST_API_HEADER_ #define _TLIST_API_HEADER_ #define MAXLISTSIZE 0x7FFFFFF /// 객체를 관리할 구조체 typedef struct { void **flist; // 주소의 배열이 있는곳 int fcount; // 아이템의 수 int fcapacity; // 메모리 할당 수 } tlist; #ifdef __cplusplus extern "C" { #endif /// @{ /// @brief 내부함수리스트 void tlist_error ( tlist *that ); /// 에러함수 void tlist_error_index ( tlist *that, int index ); /// 인덱스 범위에러 void tlist_grow ( tlist *that ); /// 아이템이 들어갈 메모리를 증가시킨다. void tlist_setcapacity ( tlist *that, int newcapacity ); /// 관리할 수 있는 아이템 풀의 용량을 설정하고 메모리를 재 할당한다. void tlist_setcount ( tlist *that, int newcount ); /// 관리할 수 있는 아이템의 개수를 설정하며 아이템의 개수를 설정된 값으로 변경한다. tlist *tlist_expand ( tlist *that ); /// 아이템 풀의 용량을 확장한다. int tlist_getcapacity ( tlist *that ); /// 아이템풀의 크기를 얻는다. /// @} /// @{ /// @brief 사용자가 사용할수 있는 함수 리스트 extern tlist* tlist_create ( void ); /// tlist 객체를 생성한다. extern void tlist_free ( tlist *that ); /// tlist 객체를 소멸시킨다. extern int tlist_getcount ( tlist *that ); /// 아이템의 개수를 얻는다. extern void* tlist_get ( tlist *that, int index ); /// 인덱스에 해당하는 아이템 포인터를 돌려준다. extern void tlist_put ( tlist *that, int index, void *item ); /// 특정아이템의 포인터를 변경한다. extern int tlist_add ( tlist *that, void *item ); /// 아이템을 추가한다. extern void tlist_clear ( tlist *that ); /// 모든 아이템을 제거한다. extern void tlist_delete ( tlist *that, int index ); /// 하나의 아이템을 제거한다. extern void tlist_exchange ( tlist *that, int index1, int index2 ); /// 2개의 아이템 위치를 교환한다. extern void *tlist_first ( tlist *that ); /// 첫번째 아이템 포인터를 돌려준다. extern int tlist_indexof ( tlist *that, void *item ); /// 아이템 포인터가 동일한 포인터의 인덱스를 구한다. extern void tlist_insert ( tlist *that, int index, void *item ); /// 아이템을 특정 위치에 추가한다. extern void *tlist_last ( tlist *that ); /// 마지막 아이템 포인터를 구한다. extern void tlist_move ( tlist *that, int curindex, int newindex ); /// 특정 아이템의 위치(인덱스)를 변경한다. extern int tlist_remove ( tlist *that, void *item ); /// 인자로 전해준 동일한 아이템 포인터를 찾아 삭제한다. extern void tlist_pack ( tlist *that ); /// 메모리 관리를 위해 사용하지 않는 메모리를 반환한다. extern void tlist_sort ( tlist *that,int (*tlistsortcompare)(const void *, const void *) ); /// 아이템을 사용자 비교함수를 통해 정렬한다 /// @} #ifdef __cplusplus } #endif #endif // _TLIST_API_HEADER_