1 #ifndef _H_OVOneToOne
2 #define _H_OVOneToOne
3 
4 
5 /* OneToOne: A bidirectional associative array for ov_words
6  *
7  * associates a unique ov_word to a unique ov_word in both forward and
8  * reverse directions.
9  *
10 */
11 
12 #include "OVHeap.h"
13 #include "OVreturns.h"
14 
15 #ifndef OVONETOONE_DEFINED
16 typedef struct _OVOneToOne OVOneToOne;
17 #define OVONETOONE_DEFINED
18 #endif
19 
20 OVOneToOne *OVOneToOne_New(OVHeap * heap);
21 OVstatus OVOneToOne_Init(OVOneToOne * o2o, OVHeap * heap);
22 void OVOneToOne_Purge(OVOneToOne * o2o);
23 void OVOneToOne_Del(OVOneToOne * o2o);
24 void OVOneToOne_Reset(OVOneToOne * up);
25 
26 OVreturn_word OVOneToOne_IterateForward(OVOneToOne * o2o, ov_word * hidden);
27 
28 OVreturn_word OVOneToOne_GetForward(OVOneToOne * o2o, ov_word forward_value);
29 OVreturn_word OVOneToOne_GetReverse(OVOneToOne * o2o, ov_word reverse_value);
30 OVstatus OVOneToOne_Set(OVOneToOne * o2o, ov_word forward_value, ov_word reverse_value);
31 
32 OVstatus OVOneToOne_Pack(OVOneToOne * o2o);
33 OVreturn_size OVOneToOne_GetSize(OVOneToOne * o2o);
34 OVstatus OVOneToOne_DelReverse(OVOneToOne * o2o, ov_word reverse_value);
35 OVstatus OVOneToOne_DelForward(OVOneToOne * o2o, ov_word forward_value);
36 void OVOneToOne_Stats(OVOneToOne * o2o);
37 void OVOneToOne_Dump(OVOneToOne * o2o);
38 
39 #define OVOneToOne_DEL_AUTO_NULL(I) { if(I) { OVOneToOne_Del(I); I=OV_NULL; }}
40 
41 #endif
42