X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=include%2Fgom.h;h=12352734604c2e07dee5b4e1bc8d50b44704ac78;hb=a32bee3a7c3792af75f2772dd6501fb9429ca749;hp=763009431eb01e8d41aa76f69dc49f2d89b2f38f;hpb=9e9c197ced7786257eb74a2e40c9ade48cc85230;p=gedcom-parse.git diff --git a/include/gom.h b/include/gom.h index 7630094..1235273 100644 --- a/include/gom.h +++ b/include/gom.h @@ -24,9 +24,12 @@ #ifndef __GEDCOM_GOM_H #define __GEDCOM_GOM_H -#include +#include "gedcom.h" +#include -__BEGIN_DECLS +#ifdef __cplusplus +extern "C" { +#endif /* Sub-structures */ @@ -39,33 +42,33 @@ struct user_data { struct user_data *previous; }; -struct address { - char *full_label; - char *line1; - char *line2; - char *city; - char *state; - char *postal; - char *country; +struct address { /* ADDRESS_STRUCTURE */ + char *full_label; /* ADDRESS_LINE */ + char *line1; /* ADDRESS_LINE1 */ + char *line2; /* ADDRESS_LINE2 */ + char *city; /* ADDRESS_CITY */ + char *state; /* ADDRESS_STATE */ + char *postal; /* ADDRESS_POSTAL_CODE */ + char *country; /* ADDRESS_COUNTRY */ struct user_data *extra; }; struct text { - char *text; + char *text; /* TEXT_FROM_SOURCE */ struct user_data *extra; struct text *next; struct text *previous; }; -struct source_citation { - char *description; +struct source_citation { /* SOURCE_CITATION */ + char *description; /* SOURCE_DESCRIPTION */ struct xref_value *reference; - char *page; - char *event; - char *role; - struct date_value *date; + char *page; /* WHERE_WITHIN_SOURCE */ + char *event; /* EVENT_TYPE_CITED_FROM */ + char *role; /* ROLE_IN_EVENT */ + struct date_value *date; /* ENTRY_RECORDING_DATE */ struct text *text; - char *quality; + char *quality; /* CERTAINTY_ASSESSMENT */ struct multimedia_link *mm_link; struct note_sub *note; struct user_data *extra; @@ -73,8 +76,8 @@ struct source_citation { struct source_citation *previous; }; -struct note_sub { - char *text; +struct note_sub { /* NOTE_STRUCTURE */ + char *text; /* SUBMITTER_TEXT */ struct xref_value *reference; struct source_citation *citation; struct user_data *extra; @@ -82,30 +85,32 @@ struct note_sub { struct note_sub *previous; }; -struct place { - char *value; - char *place_hierarchy; - struct user_data *extra; +struct place { /* PLACE_STRUCTURE */ + char *value; /* PLACE_VALUE */ + char *place_hierarchy; /* PLACE_HIERARCHY */ struct source_citation *citation; struct note_sub *note; + struct user_data *extra; }; -struct multimedia_link { +struct multimedia_link { /* MULTIMEDIA_LINK */ struct xref_value *reference; - char *form; - char *title; - char *file; + char *form; /* MULTIMEDIA_FORMAT */ + char *title; /* DESCRIPTIVE_TITLE */ + char *file; /* MULTIMEDIA_FILE_REFERENCE */ struct note_sub *note; struct user_data *extra; struct multimedia_link *next; struct multimedia_link *previous; }; -struct lds_event { - char *date_status; - struct date_value *date; - char *temple_code; - char *place_living_ordinance; +struct lds_event { /* LDS_INDIVIDUAL_ORDINANCE */ + int event; + char *event_name; + char *date_status; /* LDS_BAPTISM_DATE_STATUS */ + struct date_value *date; /* DATE_LDS_ORD */ + char *temple_code; /* TEMPLE_CODE */ + char *place_living_ordinance; /* PLACE_LIVING_ORDINANCE */ struct xref_value *family; struct source_citation *citation; struct note_sub *note; @@ -115,39 +120,39 @@ struct lds_event { }; struct user_ref_number { - char *value; - char *type; + char *value; /* USER_REFERENCE_NUMBER */ + char *type; /* USER_REFERENCE_TYPE */ struct user_data *extra; struct user_ref_number *next; struct user_ref_number *previous; }; -struct change_date { - struct date_value *date; - char *time; +struct change_date { /* CHANGE_DATE_STRUCTURE */ + struct date_value *date; /* CHANGE_DATE */ + char *time; /* TIME_VALUE */ struct note_sub *note; struct user_data *extra; }; -struct event { +struct event { /* FAMILY_EVENT_STRUCTURE */ int event; char *event_name; char *val; - char *type; - struct date_value *date; + char *type; /* EVENT_DESCRIPTOR */ + struct date_value *date; /* DATE_VALUE */ struct place *place; struct address *address; - char *phone[3]; - struct age_value *age; - char *agency; - char *cause; + char *phone[3]; /* PHONE_NUMBER */ + struct age_value *age; /* AGE_AT_EVENT */ + char *agency; /* RESPONSIBLE_AGENCY */ + char *cause; /* CAUSE_OF_EVENT */ struct source_citation *citation; struct multimedia_link *mm_link; struct note_sub *note; struct age_value *husband_age; struct age_value *wife_age; struct xref_value *family; - char *adoption_parent; + char *adoption_parent; /* ADOPTED_BY_WHICH_PARENT */ struct user_data *extra; struct event *next; struct event *previous; @@ -160,14 +165,14 @@ struct xref_list { struct xref_list *previous; }; -struct personal_name { - char *name; - char *prefix; - char *given; - char *nickname; - char *surname_prefix; - char *surname; - char *suffix; +struct personal_name { /* PERSONAL_NAME_STRUCTURE */ + char *name; /* NAME_PERSONAL */ + char *prefix; /* NAME_PIECE_PREFIX */ + char *given; /* NAME_PIECE_GIVEN */ + char *nickname; /* NAME_PIECE_NICKNAME */ + char *surname_prefix; /* NAME_PIECE_SURNAME_PREFIX */ + char *surname; /* NAME_PIECE_SURNAME */ + char *suffix; /* NAME_PIECE_SUFFIX */ struct source_citation *citation; struct note_sub *note; struct user_data *extra; @@ -176,13 +181,13 @@ struct personal_name { }; struct pedigree { - char *pedigree; + char *pedigree; /* PEDIGREE_LINKAGE_TYPE */ struct user_data *extra; struct pedigree *next; struct pedigree *previous; }; -struct family_link { +struct family_link { /* CHILD_TO_FAMILY_LINK */ struct xref_value *family; struct pedigree *pedigree; struct note_sub *note; @@ -191,10 +196,10 @@ struct family_link { struct family_link *previous; }; -struct association { +struct association { /* ASSOCIATION_STRUCTURE */ struct xref_value *to; - char *type; - char *relation; + char *type; /* RECORD_TYPE */ + char *relation; /* RELATION_IS_DESCRIPTOR */ struct source_citation *citation; struct note_sub *note; struct user_data *extra; @@ -203,17 +208,17 @@ struct association { }; struct source_event { - char *recorded_events; - struct date_value *date_period; - char *jurisdiction; + char *recorded_events; /* EVENTS_RECORDED */ + struct date_value *date_period; /* DATE_PERIOD */ + char *jurisdiction; /* SOURCE_JURISDICTION_PLACE */ struct user_data *extra; struct source_event *next; struct source_event *previous; }; struct source_description { - char *call_number; - char *media; + char *call_number; /* SOURCE_CALL_NUMBER */ + char *media; /* SOURCE_MEDIA_TYPE */ struct user_data *extra; struct source_description *next; struct source_description *previous; @@ -221,80 +226,80 @@ struct source_description { /* Main structures */ -struct header { +struct header { /* HEADER */ struct header_source { - char *id; - char *name; - char *version; + char *id; /* APPROVED_SYSTEM_ID */ + char *name; /* NAME_OF_PRODUCT */ + char *version; /* VERSION_NUMBER */ struct header_corporation { - char *name; + char *name; /* NAME_OF_BUSINESS */ struct address *address; - char *phone[3]; + char *phone[3]; /* PHONE_NUMBER */ } corporation; struct header_data { - char *name; - struct date_value *date; - char *copyright; + char *name; /* NAME_OF_SOURCE_DATA */ + struct date_value *date; /* PUBLICATION_DATE */ + char *copyright; /* COPYRIGHT_SOURCE_DATA */ } data; } source; - char *destination; - struct date_value *date; - char *time; + char *destination; /* RECEIVING_SYSTEM_NAME */ + struct date_value *date; /* TRANSMISSION_DATE */ + char *time; /* TIME_VALUE */ struct xref_value *submitter; struct xref_value *submission; - char *filename; - char *copyright; + char *filename; /* FILE_NAME */ + char *copyright; /* COPYRIGHT_GEDCOM_FILE */ struct header_gedcom { - char *version; - char *form; + char *version; /* VERSION_NUMBER */ + char *form; /* GEDCOM_FORM */ } gedcom; struct header_charset { - char *name; - char *version; + char *name; /* CHARACTER_SET */ + char *version; /* VERSION_NUMBER */ } charset; - char *language; - char *place_hierarchy; - char *note; + char *language; /* LANGUAGE_OF_TEXT */ + char *place_hierarchy; /* PLACE_HIERARCHY */ + char *note; /* GEDCOM_CONTENT_DESCRIPTION */ struct user_data *extra; }; -struct submission { +struct submission { /* SUBMISSION_RECORD */ char *xrefstr; struct xref_value *submitter; - char *family_file; - char *temple_code; - char *nr_of_ancestor_gens; - char *nr_of_descendant_gens; - char *ordinance_process_flag; - char *record_id; + char *family_file; /* NAME_OF_FAMILY_FILE */ + char *temple_code; /* TEMPLE_CODE */ + char *nr_of_ancestor_gens; /* GENERATIONS_OF_ANCESTORS */ + char *nr_of_descendant_gens; /* GENERATIONS_OF_DESCENDANTS */ + char *ordinance_process_flag; /* ORDINANCE_PROCESS_FLAG */ + char *record_id; /* AUTOMATED_RECORD_ID */ struct user_data *extra; }; -struct family { +struct family { /* FAM_RECORD */ char *xrefstr; struct event *event; struct xref_value *husband; struct xref_value *wife; struct xref_list *children; - char *nr_of_children; + char *nr_of_children; /* COUNT_OF_CHILDREN */ struct xref_list *submitters; struct lds_event *lds_spouse_sealing; struct source_citation *citation; struct multimedia_link *mm_link; struct note_sub *note; struct user_ref_number *ref; - char *record_id; + char *record_id; /* AUTOMATED_RECORD_ID */ struct change_date *change_date; struct user_data *extra; struct family *next; struct family *previous; }; -struct individual { +struct individual { /* INDIVIDUAL_RECORD */ char *xrefstr; - char *restriction_notice; + char *restriction_notice; /* RESTRICTION_NOTICE */ struct personal_name *name; - char *sex; + char *sex; /* SEX_VALUE */ struct event *event; struct event *attribute; struct lds_event *lds_individual_ordinance; @@ -308,69 +313,69 @@ struct individual { struct source_citation *citation; struct multimedia_link *mm_link; struct note_sub *note; - char *record_file_nr; - char *ancestral_file_nr; + char *record_file_nr; /* PERMANENT_RECORD_FILE_NUMBER */ + char *ancestral_file_nr; /* ANCESTRAL_FILE_NUMBER */ struct user_ref_number *ref; - char *record_id; + char *record_id; /* AUTOMATED_RECORD_ID */ struct change_date *change_date; struct user_data *extra; struct individual *next; struct individual *previous; }; -struct multimedia { +struct multimedia { /* MULTIMEDIA_RECORD */ char *xrefstr; - char *form; - char *title; + char *form; /* MULTIMEDIA_FORMAT */ + char *title; /* DESCRIPTIVE_TITLE */ struct note_sub *note; - char *data; + char *data; /* ENCODED_MULTIMEDIA_LINE */ struct xref_value *continued; struct user_ref_number *ref; - char *record_id; + char *record_id; /* AUTOMATED_RECORD_ID */ struct change_date *change_date; struct user_data *extra; struct multimedia *next; struct multimedia *previous; }; -struct note { +struct note { /* NOTE_RECORD */ char *xrefstr; - char *text; + char *text; /* SUBMITTER_TEXT */ struct source_citation *citation; struct user_ref_number *ref; - char *record_id; + char *record_id; /* AUTOMATED_RECORD_ID */ struct change_date *change_date; struct user_data *extra; struct note *next; struct note *previous; }; -struct repository { +struct repository { /* REPOSITORY_RECORD */ char *xrefstr; - char *name; + char *name; /* NAME_OF_REPOSITORY */ struct address *address; - char *phone[3]; + char *phone[3]; /* PHONE_NUMBER */ struct note_sub *note; struct user_ref_number *ref; - char *record_id; + char *record_id; /* AUTOMATED_RECORD_ID */ struct change_date *change_date; struct user_data *extra; struct repository *next; struct repository *previous; }; -struct source { +struct source { /* SOURCE_RECORD */ char *xrefstr; struct source_data { struct source_event *event; - char *agency; + char *agency; /* RESPONSIBLE_AGENCY */ struct note_sub *note; } data; - char *author; - char *title; - char *abbreviation; - char *publication; - char *text; + char *author; /* SOURCE_ORIGINATOR */ + char *title; /* SOURCE_DESCRIPTIVE_TITLE */ + char *abbreviation; /* SOURCE_FILED_BY_ENTRY */ + char *publication; /* SOURCE_PUBLICATION_FACTS */ + char *text; /* TEXT_FROM_SOURCE */ struct repo_link { struct xref_value *link; struct note_sub *note; @@ -379,22 +384,22 @@ struct source { struct multimedia_link *mm_link; struct note_sub *note; struct user_ref_number *ref; - char *record_id; + char *record_id; /* AUTOMATED_RECORD_ID */ struct change_date *change_date; struct user_data *extra; struct source *next; struct source *previous; }; -struct submitter { +struct submitter { /* SUBMITTER_RECORD */ char *xrefstr; - char *name; + char *name; /* SUBMITTER_NAME */ struct address *address; - char *phone[3]; + char *phone[3]; /* PHONE_NUMBER */ struct multimedia_link *mm_link; - char *language[3]; - char *record_file_nr; - char *record_id; + char *language[3]; /* LANGUAGE_PREFERENCE */ + char *record_file_nr; /* SUBMITTER_REGISTERED_RFN */ + char *record_id; /* AUTOMATED_RECORD_ID */ struct change_date *change_date; struct user_data *extra; struct submitter *next; @@ -413,35 +418,80 @@ struct user_rec { /* Functions */ -int gom_parse_file(char *file_name); +int gom_parse_file(const char *file_name); +int gom_new_model(); +int gom_write_file(const char* file_name, int *total_conv_fails); struct header* gom_get_header(); +int gom_header_update_timestamp(time_t t); + struct submission* gom_get_submission(); +struct submission* gom_new_submission(const char* xrefstr); +int gom_delete_submission(); struct family* gom_get_first_family(); -struct family* gom_get_family_by_xref(char *xref); +struct family* gom_get_family_by_xref(const char *xref); +struct family* gom_new_family(const char* xrefstr); +int gom_delete_family(struct family* obj); struct individual* gom_get_first_individual(); -struct individual* gom_get_individual_by_xref(char *xref); +struct individual* gom_get_individual_by_xref(const char *xref); +struct individual* gom_new_individual(const char* xrefstr); +int gom_delete_individual(struct individual* obj); struct multimedia* gom_get_first_multimedia(); -struct multimedia* gom_get_multimedia_by_xref(char *xref); +struct multimedia* gom_get_multimedia_by_xref(const char *xref); +struct multimedia* gom_new_multimedia(const char* xrefstr); +int gom_delete_multimedia(struct multimedia* obj); struct note* gom_get_first_note(); -struct note* gom_get_note_by_xref(char *xref); +struct note* gom_get_note_by_xref(const char *xref); +struct note* gom_new_note(const char* xrefstr); +int gom_delete_note(struct note* obj); struct repository* gom_get_first_repository(); -struct repository* gom_get_repository_by_xref(char *xref); +struct repository* gom_get_repository_by_xref(const char *xref); +struct repository* gom_new_repository(const char* xrefstr); +int gom_delete_repository(struct repository* obj); struct source* gom_get_first_source(); -struct source* gom_get_source_by_xref(char *xref); +struct source* gom_get_source_by_xref(const char *xref); +struct source* gom_new_source(const char* xrefstr); +int gom_delete_source(struct source* obj); struct submitter* gom_get_first_submitter(); -struct submitter* gom_get_submitter_by_xref(char *xref); +struct submitter* gom_get_submitter_by_xref(const char *xref); +struct submitter* gom_new_submitter(const char* xrefstr); +int gom_delete_submitter(struct submitter* obj); struct user_rec* gom_get_first_user_rec(); -struct user_rec* gom_get_user_rec_by_xref(char *xref); - -__END_DECLS +struct user_rec* gom_get_user_rec_by_xref(const char *xref); +struct user_rec* gom_new_user_rec(const char* xrefstr, const char* tag); +int gom_delete_user_rec(struct user_rec* obj); + +char* gom_get_string(char* data); +char* gom_set_string(char** data, const char* utf8_str); + +char* gom_get_string_for_locale(char* data, int* conversion_failures); +char* gom_set_string_for_locale(char** data, const char* locale_str); +void gom_set_unknown(const char* unknown); + +struct xref_value* gom_set_xref(struct xref_value** data, const char* xref); +struct xref_list* gom_add_xref(struct xref_list** data, const char* xref); +int gom_remove_xref(struct xref_list** data, const char* xref); + +struct address* gom_set_new_address(struct address** obj); +int gom_delete_address(struct address** obj); + +struct place* gom_set_new_place(struct place** obj); +int gom_delete_place(struct place** obj); + +struct change_date* gom_set_new_change_date(struct change_date** obj); +int gom_delete_change_date(struct change_date** obj); +int gom_update_timestamp(struct change_date** obj, time_t t); + +#ifdef __cplusplus +} +#endif #endif /* __GEDCOM_GOM_H */