Obj.h 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*****************************************************************************/
  2. /* Obj.h - A library for object list. */
  3. /* */
  4. /* Obj.h Copyright (c) 2000 Sakai Hiroaki. */
  5. /* All Rights Reserved. */
  6. /*****************************************************************************/
  7. #ifndef _SAKAILIB_OBJ_H_INCLUDED_
  8. #define _SAKAILIB_OBJ_H_INCLUDED_
  9. typedef void * Obj;
  10. typedef struct _ObjListData * ObjListData;
  11. typedef struct _ObjList * ObjList;
  12. typedef Obj (*ObjDestructor)(Obj);
  13. #include <stdio.h>
  14. #include <stdlib.h>
  15. /*****************************************************************************/
  16. /* ObjList 型オブジェクトの操作 */
  17. /*****************************************************************************/
  18. Obj ObjListData_GetObj(ObjListData data);
  19. ObjListData ObjListData_GetPrev(ObjListData data);
  20. ObjListData ObjListData_GetNext(ObjListData data);
  21. int ObjList_GetLength(ObjList list);
  22. ObjListData ObjList_GetStartEdge(ObjList list);
  23. ObjListData ObjList_GetEndEdge(ObjList list);
  24. ObjListData ObjList_GetStart(ObjList list);
  25. ObjListData ObjList_GetEnd(ObjList list);
  26. int ObjList_IsEmpty(ObjList list);
  27. int ObjList_IsStartEdge(ObjList list, ObjListData data);
  28. int ObjList_IsEndEdge(ObjList list, ObjListData data);
  29. int ObjList_IsStart(ObjList list, ObjListData data);
  30. int ObjList_IsEnd(ObjList list, ObjListData data);
  31. ObjListData ObjList_InsertObjToPrev(ObjList list, ObjListData current,
  32. Obj obj, Obj (*destructor)());
  33. ObjListData ObjList_InsertObjToNext(ObjList list, ObjListData current,
  34. Obj obj, Obj (*destructor)());
  35. ObjListData ObjList_InsertObjToStart(ObjList list, Obj obj,
  36. Obj (*destructor)());
  37. ObjListData ObjList_InsertObjToEnd(ObjList list, Obj obj,
  38. Obj (*destructor)());
  39. ObjListData ObjList_DeleteObjToPrev(ObjList list, ObjListData current);
  40. ObjListData ObjList_DeleteObjToNext(ObjList list, ObjListData current);
  41. ObjListData ObjList_DeleteObjFromStart(ObjList list);
  42. ObjListData ObjList_DeleteObjFromEnd(ObjList list);
  43. ObjListData ObjList_MoveObjToPrev(ObjList list,
  44. ObjListData current,
  45. ObjListData to);
  46. ObjListData ObjList_MoveObjToNext(ObjList list,
  47. ObjListData current,
  48. ObjListData to);
  49. ObjListData ObjList_MoveObjToStart(ObjList list, ObjListData current);
  50. ObjListData ObjList_MoveObjToEnd(ObjList list, ObjListData current);
  51. ObjList ObjList_Create(); /* ObjList 型オブジェクトを作成する */
  52. ObjList ObjList_Destroy(ObjList list); /* */
  53. /*===========================================================================*/
  54. /* 複数のリスト間での操作 */
  55. /*===========================================================================*/
  56. ObjListData ObjList_MoveObjToPrevOfOtherList(ObjList list, ObjListData current,
  57. ObjList to_list, ObjListData to);
  58. ObjListData ObjList_MoveObjToNextOfOtherList(ObjList list, ObjListData current,
  59. ObjList to_list, ObjListData to);
  60. ObjListData ObjList_MoveObjToStartOfOtherList(ObjList list,
  61. ObjListData current,
  62. ObjList to_list);
  63. ObjListData ObjList_MoveObjToEndOfOtherList(ObjList list,
  64. ObjListData current,
  65. ObjList to_list);
  66. ObjList ObjList_Concatenate(ObjList list1, ObjList list2);
  67. #endif