metadata

## metadata metadata — |

## Synopsis

                GsfDocMetaData;
    GsfDocMetaData* gsf_doc_meta_data_new       (void);
    GsfDocProp* gsf_doc_meta_data_lookup        (GsfDocMetaData const *meta,
                                                 char const *name);
    void        gsf_doc_meta_data_insert        (GsfDocMetaData *meta,
                                                 char *name,
                                                 GValue *value);
    void        gsf_doc_meta_data_remove        (GsfDocMetaData *meta,
                                                 char const *name);
    GsfDocProp* gsf_doc_meta_data_steal         (GsfDocMetaData *meta,
                                                 char const *name);
    void        gsf_doc_meta_data_store         (GsfDocMetaData *meta,
                                                 GsfDocProp *prop);
    void        gsf_doc_meta_data_foreach       (GsfDocMetaData const *meta,
                                                 GHFunc func,
                                                 gpointer user_data);
    gsize       gsf_doc_meta_data_size          (GsfDocMetaData const *meta);
                GsfDocProp;
    GsfDocProp* gsf_doc_prop_new                (char *name);
    void        gsf_doc_prop_free               (GsfDocProp *prop);
    charconst   * gsf_doc_prop_get_name         (GsfDocProp const *prop);
    GValueconst * gsf_doc_prop_get_val          (GsfDocProp const *prop);
    void        gsf_doc_prop_set_val            (GsfDocProp *prop,
                                                 GValue *val);
    charconst   * gsf_doc_prop_get_link         (GsfDocProp const *prop);
    void        gsf_doc_prop_set_link           (GsfDocProp *prop,
                                                 char *link);
                GsfDocPropVector;
    GsfDocPropVector* gsf_docprop_vector_new    (void);
    void        gsf_docprop_vector_append       (GsfDocPropVector *vector,
                                                 GValue *value);
    gchar*      gsf_docprop_vector_as_string    (GsfDocPropVector *vector);
    GValueArray* gsf_value_get_docprop_varray   (GValue const *value);
    GsfDocPropVector* gsf_value_get_docprop_vector
                                                (GValue const *value);

    #define     GSF_META_NAME_TITLE
    #define     GSF_META_NAME_DESCRIPTION
    #define     GSF_META_NAME_SUBJECT
    #define     GSF_META_NAME_DATE_MODIFIED
    #define     GSF_META_NAME_DATE_CREATED
    #define     GSF_META_NAME_KEYWORDS
    #define     GSF_META_NAME_LANGUAGE
    #define     GSF_META_NAME_REVISION_COUNT
    #define     GSF_META_NAME_EDITING_DURATION
    #define     GSF_META_NAME_TABLE_COUNT
    #define     GSF_META_NAME_IMAGE_COUNT
    #define     GSF_META_NAME_OBJECT_COUNT
    #define     GSF_META_NAME_PAGE_COUNT
    #define     GSF_META_NAME_PARAGRAPH_COUNT
    #define     GSF_META_NAME_WORD_COUNT
    #define     GSF_META_NAME_CHARACTER_COUNT
    #define     GSF_META_NAME_CELL_COUNT
    #define     GSF_META_NAME_SPREADSHEET_COUNT
    #define     GSF_META_NAME_CREATOR
    #define     GSF_META_NAME_TEMPLATE
    #define     GSF_META_NAME_LAST_SAVED_BY
    #define     GSF_META_NAME_LAST_PRINTED
    #define     GSF_META_NAME_SECURITY
    #define     GSF_META_NAME_CATEGORY
    #define     GSF_META_NAME_PRESENTATION_FORMAT
    #define     GSF_META_NAME_THUMBNAIL
    #define     GSF_META_NAME_GENERATOR
    #define     GSF_META_NAME_LINE_COUNT
    #define     GSF_META_NAME_SLIDE_COUNT
    #define     GSF_META_NAME_NOTE_COUNT
    #define     GSF_META_NAME_HIDDEN_SLIDE_COUNT
    #define     GSF_META_NAME_MM_CLIP_COUNT
    #define     GSF_META_NAME_BYTE_COUNT
    #define     GSF_META_NAME_SCALE
    #define     GSF_META_NAME_HEADING_PAIRS
    #define     GSF_META_NAME_DOCUMENT_PARTS
    #define     GSF_META_NAME_MANAGER
    #define     GSF_META_NAME_COMPANY
    #define     GSF_META_NAME_LINKS_DIRTY
    #define     GSF_META_NAME_DICTIONARY
    #define     GSF_META_NAME_MSOLE_UNKNOWN_17
    #define     GSF_META_NAME_MSOLE_UNKNOWN_18
    #define     GSF_META_NAME_MSOLE_UNKNOWN_19
    #define     GSF_META_NAME_MSOLE_UNKNOWN_20
    #define     GSF_META_NAME_MSOLE_UNKNOWN_21
    #define     GSF_META_NAME_MSOLE_UNKNOWN_22
    #define     GSF_META_NAME_MSOLE_UNKNOWN_23
    #define     GSF_META_NAME_LOCALE_SYSTEM_DEFAULT
    #define     GSF_META_NAME_CASE_SENSITIVE

## Description

## Details

### GsfDocMetaData

    typedef struct _GsfDocMetaData GsfDocMetaData;

### gsf_doc_meta_data_new ()

    GsfDocMetaData* gsf_doc_meta_data_new       (void);

Returns : | a new metadata property collection

### gsf_doc_meta_data_lookup ()

    GsfDocProp* gsf_doc_meta_data_lookup        (GsfDocMetaData const *meta,
                                                 char const *name);

`meta` : | GsfDocMetaData
`name` : |
Returns : | the property with name `id` in `meta`. The caller can modify the property value and link but not the name.

### gsf_doc_meta_data_insert ()

    void        gsf_doc_meta_data_insert        (GsfDocMetaData *meta,
                                                 char *name,
                                                 GValue *value);

Take ownership of `name` and `value` and insert a property into `meta`. If a property exists with `name`, it is replaced (The link is lost)

`meta` : | GsfDocMetaData
`name` : |
`value` : | GValue

### gsf_doc_meta_data_remove ()

    void        gsf_doc_meta_data_remove        (GsfDocMetaData *meta,
                                                 char const *name);

If `name` does not exist in the collection, do nothing. If `name` does exist, remove it and its value from the collection

`meta` : | the collection
`name` : | the non-null string name of the property

### gsf_doc_meta_data_steal ()

    GsfDocProp* gsf_doc_meta_data_steal         (GsfDocMetaData *meta,
                                                 char const *name);

`meta` : |
`name` : |
Returns : |

### gsf_doc_meta_data_store ()

    void        gsf_doc_meta_data_store         (GsfDocMetaData *meta,
                                                 GsfDocProp *prop);

`meta` : | GsfDocMetaData
`prop` : | GsfDocProp

### gsf_doc_meta_data_foreach ()

    void        gsf_doc_meta_data_foreach       (GsfDocMetaData const *meta,
                                                 GHFunc func,
                                                 gpointer user_data);

Iterate through each (key, value) pair in this collection

`meta` : | the collection
`func` : | the function called once for each element in the collection
`user_data` : | any supplied user data or NULL

### gsf_doc_meta_data_size ()

    gsize       gsf_doc_meta_data_size          (GsfDocMetaData const *meta);

`meta` : | the collection
Returns : | the number of items in this collection

### GsfDocProp

    typedef struct _GsfDocProp GsfDocProp;

### gsf_doc_prop_new ()

    GsfDocProp* gsf_doc_prop_new                (char *name);

`name` : |
Returns : | a new GsfDocProp which the caller is responsible for freeing. Takes ownership of `name`.

### gsf_doc_prop_free ()

    void        gsf_doc_prop_free               (GsfDocProp *prop);

If `prop` is non NULL free the memory assosociated with it

`prop` : | GsfDocProp

### gsf_doc_prop_get_name ()

    charconst   * gsf_doc_prop_get_name         (GsfDocProp const *prop);

`prop` : | GsfDocProp
Returns : | the name of the property, the caller should not modify the result.

### gsf_doc_prop_get_val ()

    GValueconst * gsf_doc_prop_get_val          (GsfDocProp const *prop);

`prop` : | the property
Returns : | the value of the property, the caller should not modify the result.

### gsf_doc_prop_set_val ()

    void        gsf_doc_prop_set_val            (GsfDocProp *prop,
                                                 GValue *val);

Assigns `val` to `prop`, and unsets and frees the current value.

`prop` : | GsfDocProp
`val` : | GValue

### gsf_doc_prop_get_link ()

    charconst   * gsf_doc_prop_get_link         (GsfDocProp const *prop);

`prop` : | GsfDocProp
Returns : | the current link descriptor of `prop`. The result should not be freed or modified.

### gsf_doc_prop_set_link ()

    void        gsf_doc_prop_set_link           (GsfDocProp *prop,
                                                 char *link);

`prop` : | GsfDocProp
`link` : |

### GsfDocPropVector

    typedef struct _GsfDocPropVector GsfDocPropVector;

### gsf_docprop_vector_new ()

    GsfDocPropVector* gsf_docprop_vector_new    (void);

This function creates a new gsf_docprop_vector object.

Returns : | GsfDocPropVector*

### gsf_docprop_vector_append ()

    void        gsf_docprop_vector_append       (GsfDocPropVector *vector,
                                                 GValue *value);

Insert a copy of `value` as the last element of `vector`.

`vector` : | The vector to which the GValue will be added
`value` : | The GValue to add to `vector`

### gsf_docprop_vector_as_string ()

    gchar*      gsf_docprop_vector_as_string    (GsfDocPropVector *vector);

This function returns a string which represents all the GValues in `vector`. The caller is responsible for freeing the result.

`vector` : | The GsfDocPropVector from which GValues will be extracted.
Returns : | a string of comma-separated values

### gsf_value_get_docprop_varray ()

    GValueArray* gsf_value_get_docprop_varray   (GValue const *value);

`value` : |
Returns : |

### gsf_value_get_docprop_vector ()

    GsfDocPropVector* gsf_value_get_docprop_vector
                                                (GValue const *value);

`value` : |
Returns : |

### GSF_META_NAME_TITLE

    #define GSF_META_NAME_TITLE                 "dc:title"

### GSF_META_NAME_DESCRIPTION

    #define GSF_META_NAME_DESCRIPTION           "dc:description"

### GSF_META_NAME_SUBJECT

    #define GSF_META_NAME_SUBJECT               "dc:subject"

### GSF_META_NAME_DATE_MODIFIED

    #define GSF_META_NAME_DATE_MODIFIED         "dc:date-modified"

### GSF_META_NAME_DATE_CREATED

    #define GSF_META_NAME_DATE_CREATED          "gsf:date-created"

### GSF_META_NAME_KEYWORDS

    #define GSF_META_NAME_KEYWORDS              "dc:keywords"

### GSF_META_NAME_LANGUAGE

    #define GSF_META_NAME_LANGUAGE              "dc:language"

### GSF_META_NAME_REVISION_COUNT

    #define GSF_META_NAME_REVISION_COUNT        "gsf:revision-count"

### GSF_META_NAME_EDITING_DURATION

    #define GSF_META_NAME_EDITING_DURATION      "gsf:editing-duration"

### GSF_META_NAME_TABLE_COUNT

    #define GSF_META_NAME_TABLE_COUNT           "gsf:table-count"

### GSF_META_NAME_IMAGE_COUNT

    #define GSF_META_NAME_IMAGE_COUNT           "gsf:image-count"

### GSF_META_NAME_OBJECT_COUNT

    #define GSF_META_NAME_OBJECT_COUNT          "gsf:object-count"

### GSF_META_NAME_PAGE_COUNT

    #define GSF_META_NAME_PAGE_COUNT            "gsf:page-count"

### GSF_META_NAME_PARAGRAPH_COUNT

    #define GSF_META_NAME_PARAGRAPH_COUNT       "gsf:paragraph-count"

### GSF_META_NAME_WORD_COUNT

    #define GSF_META_NAME_WORD_COUNT            "gsf:word-count"

### GSF_META_NAME_CHARACTER_COUNT

    #define GSF_META_NAME_CHARACTER_COUNT       "gsf:character-count"

### GSF_META_NAME_CELL_COUNT

    #define GSF_META_NAME_CELL_COUNT            "gsf:cell-count"

### GSF_META_NAME_SPREADSHEET_COUNT

    #define GSF_META_NAME_SPREADSHEET_COUNT     "gsf:spreadsheet-count"

### GSF_META_NAME_CREATOR

    #define GSF_META_NAME_CREATOR               "gsf:creator"

### GSF_META_NAME_TEMPLATE

    #define GSF_META_NAME_TEMPLATE              "gsf:template"

### GSF_META_NAME_LAST_SAVED_BY

    #define GSF_META_NAME_LAST_SAVED_BY         "gsf:last-saved-by"

### GSF_META_NAME_LAST_PRINTED

    #define GSF_META_NAME_LAST_PRINTED          "gsf:last-printed"

### GSF_META_NAME_SECURITY

    #define GSF_META_NAME_SECURITY              "gsf:security"

### GSF_META_NAME_CATEGORY

    #define GSF_META_NAME_CATEGORY              "gsf:category"

### GSF_META_NAME_PRESENTATION_FORMAT

    #define GSF_META_NAME_PRESENTATION_FORMAT   "gsf:presentation-format"

### GSF_META_NAME_THUMBNAIL

    #define GSF_META_NAME_THUMBNAIL             "gsf:thumbnail"

### GSF_META_NAME_GENERATOR

    #define GSF_META_NAME_GENERATOR             "gsf:generator"

### GSF_META_NAME_LINE_COUNT

    #define GSF_META_NAME_LINE_COUNT            "gsf:line-count"

### GSF_META_NAME_SLIDE_COUNT

    #define GSF_META_NAME_SLIDE_COUNT           "gsf:slide-count"

### GSF_META_NAME_NOTE_COUNT

    #define GSF_META_NAME_NOTE_COUNT            "gsf:note-count"

### GSF_META_NAME_HIDDEN_SLIDE_COUNT

    #define GSF_META_NAME_HIDDEN_SLIDE_COUNT    "gsf:hidden-slide-count"

### GSF_META_NAME_MM_CLIP_COUNT

    #define GSF_META_NAME_MM_CLIP_COUNT         "gsf:MM-clip-count"

### GSF_META_NAME_BYTE_COUNT

    #define GSF_META_NAME_BYTE_COUNT            "gsf:byte-count"

### GSF_META_NAME_SCALE

    #define GSF_META_NAME_SCALE                 "gsf:scale"

### GSF_META_NAME_HEADING_PAIRS

    #define GSF_META_NAME_HEADING_PAIRS         "gsf:heading-pairs"

### GSF_META_NAME_DOCUMENT_PARTS

    #define GSF_META_NAME_DOCUMENT_PARTS        "gsf:document-parts"

### GSF_META_NAME_MANAGER

    #define GSF_META_NAME_MANAGER               "gsf:manager"

### GSF_META_NAME_COMPANY

    #define GSF_META_NAME_COMPANY               "gsf:company"

### GSF_META_NAME_LINKS_DIRTY

    #define GSF_META_NAME_LINKS_DIRTY           "gsf:links-dirty"

### GSF_META_NAME_DICTIONARY

    #define GSF_META_NAME_DICTIONARY            "gsf:dictionary"

### GSF_META_NAME_MSOLE_UNKNOWN_17

    #define GSF_META_NAME_MSOLE_UNKNOWN_17		"msole:unknown-doc-17"

### GSF_META_NAME_MSOLE_UNKNOWN_18

    #define GSF_META_NAME_MSOLE_UNKNOWN_18		"msole:unknown-doc-18"

### GSF_META_NAME_MSOLE_UNKNOWN_19

    #define GSF_META_NAME_MSOLE_UNKNOWN_19		"msole:unknown-doc-19"	/* bool */

### GSF_META_NAME_MSOLE_UNKNOWN_20

    #define GSF_META_NAME_MSOLE_UNKNOWN_20		"msole:unknown-doc-20"

### GSF_META_NAME_MSOLE_UNKNOWN_21

    #define GSF_META_NAME_MSOLE_UNKNOWN_21		"msole:unknown-doc-21"

### GSF_META_NAME_MSOLE_UNKNOWN_22

    #define GSF_META_NAME_MSOLE_UNKNOWN_22		"msole:unknown-doc-22"	/* bool */

### GSF_META_NAME_MSOLE_UNKNOWN_23

    #define GSF_META_NAME_MSOLE_UNKNOWN_23		"msole:unknown-doc-23"	/* i4 */

### GSF_META_NAME_LOCALE_SYSTEM_DEFAULT

    #define GSF_META_NAME_LOCALE_SYSTEM_DEFAULT	"gsf:default-locale"

### GSF_META_NAME_CASE_SENSITIVE

    #define GSF_META_NAME_CASE_SENSITIVE        "gsf:case-sensitivity"