00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef INC_MI32_LONGLIST_H
00031 #define INC_MI32_LONGLIST_H
00032
00033 #ifndef INC_MI32_STDDEFNS_H
00034 #include <mi32/stddefns.h>
00035 #endif
00036
00037
00038
00039
00040
00041 struct LONGLIST {
00042 INT32 NumAlloc;
00043 INT32 num;
00044 INT32 *List;
00045 UINT8 *flags;
00046 unsigned sorted:1,
00047 UseBits:1,
00048 SpareBits:30;
00049 INT32 UserData;
00050 };
00051
00052
00053
00054
00055
00056
00057 #if defined(__cplusplus)
00058 extern "C" {
00059 #endif
00060
00061
00062
00063
00064 void LongListFree (
00065 LONGLIST *list
00066 );
00067
00068
00069 void LongListClear (
00070 LONGLIST *list
00071 );
00072
00073
00074
00075
00076 int LongListAdd (
00077 LONGLIST *list,
00078 INT32 val
00079 );
00080
00081
00082 int LongListCheckIn (
00083 LONGLIST *list,
00084 INT32 val
00085 );
00086
00087
00088 int LongListAddUnique (
00089 LONGLIST *list,
00090 INT32 val
00091 );
00092
00093
00094
00095
00096 int LongListAddWithFlag (
00097 LONGLIST *list,
00098 INT32 val,
00099 UINT8 flag
00100 );
00101
00102
00103 int LongListAddUniqueWithFlag (
00104 LONGLIST *list,
00105 INT32 val,
00106 UINT8 flag
00107 );
00108
00109
00110 int LongListRemove (
00111 LONGLIST *list,
00112 INT32 val
00113 );
00114
00115
00116 int LongListGetFirst (
00117 LONGLIST *list,
00118 INT32 *ip,
00119 INT32 *valp
00120 );
00121
00122
00123 int LongListGetNext (
00124 LONGLIST *list,
00125 INT32 *ip,
00126 INT32 *valp
00127 );
00128
00129
00130 int LongListGetLast (
00131 LONGLIST *list,
00132 INT32 *valp
00133 );
00134
00135
00136 int LongListGetBits (
00137 LONGLIST *list,
00138 UINT8 **bits,
00139 INT32 *num
00140 );
00141
00142
00143 int LongListSetBits (
00144 LONGLIST *list,
00145 UINT8 *bits,
00146 INT32 num
00147 );
00148
00149
00150 int LongListGetList (
00151 LONGLIST *list,
00152 INT32 **vals
00153 );
00154
00155 #if defined(__cplusplus)
00156 }
00157 #endif
00158
00159 #endif