32
32
#include "translat.h"
33
33
#include "gedcom.h"
34
34
#include "indiseq.h"
37
/*********************************************
38
* global/exported variables
39
*********************************************/
37
41
INDISEQ current_seq = NULL;
43
/*********************************************
45
*********************************************/
48
struct tag_vtable *vtable; /* generic object */
49
INT refcnt; /* ref-countable object */
53
typedef struct tag_blel *BLEL;
55
/*********************************************
56
* local function prototypes
57
*********************************************/
59
static void blel_destructor(VTABLE *obj);
60
static BLEL create_new_blel(void);
62
static void destroy_blel(BLEL blel);
65
/*********************************************
67
*********************************************/
69
static struct tag_vtable vtable_for_blel = {
74
, &refcountable_addref
75
, &refcountable_release
77
, &generic_get_type_name
79
static LIST browse_lists=0;
81
/*********************************************
82
* local & exported function definitions
84
*********************************************/
44
86
/*=====================================================
45
87
* init_browse_lists -- Initialize named browse lists.
50
92
browse_lists = create_list();
52
94
/*===========================================
95
* create_new_blel -- Create browse list entry
96
*=========================================*/
98
create_new_blel (void)
100
BLEL blel = (BLEL) stdalloc(sizeof(*blel));
101
memset(blel, 0, sizeof(*blel));
102
blel->vtable = &vtable_for_blel;
106
/*===========================================
53
107
* add_browse_list -- Add named browse list.
54
108
*=========================================*/
56
add_browse_list (STRING name,
110
add_browse_list (STRING name, INDISEQ seq)
60
113
BOOLEAN done = FALSE;
192
245
rename_indiseq(seq, key);
248
/*=================================================
249
* blel_destructor -- destructor for blel (browse list element)
250
* (destructor entry in vtable)
251
*===============================================*/
253
blel_destructor (VTABLE *obj)
255
BLEL blel = (BLEL)obj;
256
ASSERT(blel->vtable == &vtable_for_blel);
259
/*=================================================
260
* destroy_blel -- destroy and free blel (browse list element)
261
* All blels are destroyed in this function
262
*===============================================*/
265
destroy_blel (BLEL blel)
267
stdfree(blel->bl_name);
268
remove_indiseq(blel->bl_seq);