dlugolecki.net.pl
Dziennik
Polecane
Software
projects
/
gedcom-parse.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Change mandatory but empty values to "-".
[gedcom-parse.git]
/
gom
/
user_ref.c
diff --git
a/gom/user_ref.c
b/gom/user_ref.c
index 27f32bb88818c105892842ccdb06e7e7f3412adc..2c08e3afa8216a3db20cb753db22987673449a7e 100644
(file)
--- a/
gom/user_ref.c
+++ b/
gom/user_ref.c
@@
-43,13
+43,8
@@
Gedcom_ctxt sub_user_ref_start(_ELT_PARAMS_)
if (! ctxt)
NO_CONTEXT;
else {
if (! ctxt)
NO_CONTEXT;
else {
- struct user_ref_number *refn
- = (struct user_ref_number *)malloc(sizeof(struct user_ref_number));
-
- if (! refn)
- MEMORY_ERROR;
- else {
- memset (refn, 0, sizeof(struct user_ref_number));
+ struct user_ref_number *refn = SUB_MAKEFUNC(user_ref_number)();
+ if (refn) {
refn->value = strdup(GEDCOM_STRING(parsed_value));
if (! refn->value) {
MEMORY_ERROR;
refn->value = strdup(GEDCOM_STRING(parsed_value));
if (! refn->value) {
MEMORY_ERROR;
@@
-58,17
+53,17
@@
Gedcom_ctxt sub_user_ref_start(_ELT_PARAMS_)
else {
switch (ctxt->ctxt_type) {
case REC_FAM:
else {
switch (ctxt->ctxt_type) {
case REC_FAM:
-
family_add_user_ref
(ctxt, refn); break;
+
ADDFUNC2(family,user_ref_number)
(ctxt, refn); break;
case REC_INDI:
case REC_INDI:
-
individual_add_user_ref
(ctxt, refn); break;
+
ADDFUNC2(individual,user_ref_number)
(ctxt, refn); break;
case REC_OBJE:
case REC_OBJE:
-
multimedia_add_user_ref
(ctxt, refn); break;
+
ADDFUNC2(multimedia,user_ref_number)
(ctxt, refn); break;
case REC_NOTE:
case REC_NOTE:
-
note_add_user_ref
(ctxt, refn); break;
+
ADDFUNC2(note,user_ref_number)
(ctxt, refn); break;
case REC_REPO:
case REC_REPO:
-
repository_add_user_ref
(ctxt, refn); break;
+
ADDFUNC2(repository,user_ref_number)
(ctxt, refn); break;
case REC_SOUR:
case REC_SOUR:
-
source_add_user_ref
(ctxt, refn); break;
+
ADDFUNC2(source,user_ref_number)
(ctxt, refn); break;
default:
UNEXPECTED_CONTEXT(ctxt->ctxt_type);
}
default:
UNEXPECTED_CONTEXT(ctxt->ctxt_type);
}
@@
-81,7
+76,11
@@
Gedcom_ctxt sub_user_ref_start(_ELT_PARAMS_)
return (Gedcom_ctxt)result;
}
return (Gedcom_ctxt)result;
}
-STRING_CB(user_ref_number, sub_user_ref_type_start, type)
+DEFINE_SUB_MAKEFUNC(user_ref_number)
+
+DEFINE_STRING_CB(user_ref_number, sub_user_ref_type_start, type)
+
+DEFINE_ADDFUNC2(user_ref_number, user_data, extra)
Gedcom_ctxt sub_user_rin_start(_ELT_PARAMS_)
{
Gedcom_ctxt sub_user_rin_start(_ELT_PARAMS_)
{
@@
-95,17
+94,17
@@
Gedcom_ctxt sub_user_rin_start(_ELT_PARAMS_)
switch (ctxt->ctxt_type) {
case REC_FAM:
switch (ctxt->ctxt_type) {
case REC_FAM:
-
family_set_record_id
(ctxt, str); break;
+
ADDFUNC2_STR(family,record_id)
(ctxt, str); break;
case REC_INDI:
case REC_INDI:
-
individual_set_record_id
(ctxt, str); break;
+
ADDFUNC2_STR(individual,record_id)
(ctxt, str); break;
case REC_OBJE:
case REC_OBJE:
-
multimedia_set_record_id
(ctxt, str); break;
+
ADDFUNC2_STR(multimedia,record_id)
(ctxt, str); break;
case REC_NOTE:
case REC_NOTE:
-
note_set_record_id
(ctxt, str); break;
+
ADDFUNC2_STR(note,record_id)
(ctxt, str); break;
case REC_REPO:
case REC_REPO:
-
repository_set_record_id
(ctxt, str); break;
+
ADDFUNC2_STR(repository,record_id)
(ctxt, str); break;
case REC_SOUR:
case REC_SOUR:
-
source_set_record_id
(ctxt, str); break;
+
ADDFUNC2_STR(source,record_id)
(ctxt, str); break;
default:
UNEXPECTED_CONTEXT(ctxt->ctxt_type);
}
default:
UNEXPECTED_CONTEXT(ctxt->ctxt_type);
}
@@
-124,19
+123,21
@@
void user_ref_subscribe()
def_elt_end);
}
def_elt_end);
}
-void
user_ref_add_user_data(Gom_ctxt ctxt, struct user_data* data
)
+void
UNREFALLFUNC(user_ref_number)(struct user_ref_number* obj
)
{
{
- struct user_ref_number *obj = SAFE_CTXT_CAST(user_ref_number, ctxt);
- if (obj)
- LINK_CHAIN_ELT(user_data, obj->extra, data);
+ if (obj) {
+ struct user_ref_number* runner;
+ for (runner = obj; runner; runner = runner->next)
+ UNREFALLFUNC(user_data)(runner->extra);
+ }
}
}
-void
user_ref_cleanup
(struct user_ref_number* refn)
+void
CLEANFUNC(user_ref_number)
(struct user_ref_number* refn)
{
if (refn) {
SAFE_FREE(refn->value);
SAFE_FREE(refn->type);
{
if (refn) {
SAFE_FREE(refn->value);
SAFE_FREE(refn->type);
- DESTROY_CHAIN_ELTS(user_data, refn->extra
, user_data_cleanup
);
+ DESTROY_CHAIN_ELTS(user_data, refn->extra);
}
}
}
}