1 /*****************************************************************************/
2 /* Obj.h - A library for object list.                                        */
3 /*                                                                           */
4 /* Obj.h Copyright (c) 2000 Sakai Hiroaki.                                   */
5 /* All Rights Reserved.                                                      */
6 /*****************************************************************************/
7 
8 #ifndef _SAKAILIB_OBJ_H_INCLUDED_
9 #define _SAKAILIB_OBJ_H_INCLUDED_
10 
11 typedef void * Obj;
12 typedef struct _ObjListData * ObjListData;
13 typedef struct _ObjList * ObjList;
14 typedef Obj (*ObjDestructor)(Obj);
15 
16 #include <stdio.h>
17 #include <stdlib.h>
18 
19 /*****************************************************************************/
20 /* ObjList �����֥������Ȥ����                                              */
21 /*****************************************************************************/
22 
23 Obj ObjListData_GetObj(ObjListData data);
24 Obj ObjListData_GetPrev(ObjListData data);
25 Obj ObjListData_GetNext(ObjListData data);
26 int ObjList_GetLength(ObjList list);
27 ObjListData ObjList_GetStartEdge(ObjList list);
28 ObjListData ObjList_GetEndEdge(ObjList list);
29 ObjListData ObjList_GetStart(ObjList list);
30 ObjListData ObjList_GetEnd(ObjList list);
31 int ObjList_IsEmpty(ObjList list);
32 int ObjList_IsStartEdge(ObjList list, ObjListData data);
33 int ObjList_IsEndEdge(ObjList list, ObjListData data);
34 int ObjList_IsStart(ObjList list, ObjListData data);
35 int ObjList_IsEnd(ObjList list, ObjListData data);
36 ObjListData ObjList_InsertObjToPrev(ObjList list, ObjListData current,
37 				    Obj obj, Obj (*destructor)());
38 ObjListData ObjList_InsertObjToNext(ObjList list, ObjListData current,
39 				    Obj obj, Obj (*destructor)());
40 ObjListData ObjList_InsertObjToStart(ObjList list, Obj obj,
41 				     Obj (*destructor)());
42 ObjListData ObjList_InsertObjToEnd(ObjList list, Obj obj,
43 				   Obj (*destructor)());
44 ObjListData ObjList_DeleteObjToPrev(ObjList list, ObjListData current);
45 ObjListData ObjList_DeleteObjToNext(ObjList list, ObjListData current);
46 ObjListData ObjList_DeleteObjFromStart(ObjList list);
47 ObjListData ObjList_DeleteObjFromEnd(ObjList list);
48 ObjListData ObjList_MoveObjToPrev(ObjList list,
49 				  ObjListData current,
50 				  ObjListData to);
51 ObjListData ObjList_MoveObjToNext(ObjList list,
52 				  ObjListData current,
53 				  ObjListData to);
54 ObjListData ObjList_MoveObjToStart(ObjList list, ObjListData current);
55 ObjListData ObjList_MoveObjToEnd(ObjList list, ObjListData current);
56 ObjList ObjList_Create(); /* ObjList �����֥������Ȥ�������� */
57 ObjList ObjList_Destroy(ObjList list); /*  */
58 
59 /*===========================================================================*/
60 /* ʣ���Υꥹ�ȴ֤Ǥ����                                                    */
61 /*===========================================================================*/
62 
63 ObjListData ObjList_MoveObjToPrevOfOtherList(ObjList list, ObjListData current,
64 					     ObjList to_list, ObjListData to);
65 ObjListData ObjList_MoveObjToNextOfOtherList(ObjList list, ObjListData current,
66 					     ObjList to_list, ObjListData to);
67 ObjListData ObjList_MoveObjToStartOfOtherList(ObjList list,
68 					      ObjListData current,
69 					      ObjList to_list);
70 ObjListData ObjList_MoveObjToEndOfOtherList(ObjList list,
71 					    ObjListData current,
72 					    ObjList to_list);
73 ObjList ObjList_Concatenate(ObjList list1, ObjList list2);
74 
75 #endif
76 
77