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);
    void        gsf_doc_meta_dump               (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 const *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_CODEPAGE
    #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_PRINT_DATE
    #define     GSF_META_NAME_PRINTED_BY
    #define     GSF_META_NAME_KEYWORD
    #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
    #define     GSF_META_NAME_INITIAL_CREATOR

## Object Hierarchy

      GObject
       +----GsfDocMetaData

      GObject
       +----GsfDocPropVector

## 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

### gsf_doc_meta_dump ()

    void        gsf_doc_meta_dump               (GsfDocMetaData const *meta);

A debugging utility to dump the content of `meta` via g_print

`meta` : | GsfDocMetaData

### 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);

Sets `prop`'s link to `link`

`prop` : | GsfDocProp
`link` : | optionally NULL

### 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 const *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"

(String) A formal name given to the resource.

### GSF_META_NAME_DESCRIPTION

    #define GSF_META_NAME_DESCRIPTION			"dc:description"

(String) An account of the content of the resource.

### GSF_META_NAME_SUBJECT

    #define GSF_META_NAME_SUBJECT				"dc:subject"

(String) The topic of the content of the resource, typically including keywords.

### GSF_META_NAME_DATE_MODIFIED

    #define GSF_META_NAME_DATE_MODIFIED			"dc:date"

(GsfTimestamp) The last time this document was saved.

1.14.0 Moved from dc:date-modified to dc:date.

### GSF_META_NAME_DATE_CREATED

    #define GSF_META_NAME_DATE_CREATED			"meta:creation-date"

(Date as ISO String) A date associated with an event in the life cycle of the resource (creation/publication date). Moved from gsf:date-created to meta:creation-date. This way can be used correctly by OpenDocument and Gnumeric.

### GSF_META_NAME_KEYWORDS

    #define GSF_META_NAME_KEYWORDS				"dc:keywords"

(GsfDocPropVector of String) Searchable, indexable keywords. Similar to PDF keywords or HTML's meta block.

### GSF_META_NAME_LANGUAGE

    #define GSF_META_NAME_LANGUAGE				"dc:language"

(String) The locale language of the intellectual content of the resource (basically xx_YY form for us). 1.14.0 Clarified that this is unique from _NAME_CODEPAGE in msole

### GSF_META_NAME_CODEPAGE

    #define	GSF_META_NAME_CODEPAGE				"msole:codepage"

(UnsignedShort) The MS codepage to encode strings for metadata 1.14.0 Clarified that this is unique from _NAME_CODEPAGE in msole

### GSF_META_NAME_REVISION_COUNT

    #define GSF_META_NAME_REVISION_COUNT			"meta:editing-cycles"

(Integer) Count of revision on the document, if appropriate. Moved from gsf:revision-count to meta:editing-cycles. This way can be used correctly by OpenDocument and Gnumeric.

### GSF_META_NAME_EDITING_DURATION

    #define GSF_META_NAME_EDITING_DURATION			"meta:editing-duration"

(Date as ISO String) The total-time taken until the last modification. Moved from "gsf" to "meta". This way can be used correctly by OpenDocument and Gnumeric.

### GSF_META_NAME_TABLE_COUNT

    #define GSF_META_NAME_TABLE_COUNT			"gsf:table-count"

(Integer) Count of tables in the document, if appropriate.

### GSF_META_NAME_IMAGE_COUNT

    #define GSF_META_NAME_IMAGE_COUNT           		"gsf:image-count"

(Integer) Count of images in the document, if appropriate.

### GSF_META_NAME_OBJECT_COUNT

    #define GSF_META_NAME_OBJECT_COUNT			"gsf:object-count"

(Integer) Count of objects (OLE and other graphics) in the document, if appropriate.

### GSF_META_NAME_PAGE_COUNT

    #define GSF_META_NAME_PAGE_COUNT			"gsf:page-count"

(Integer) Count of pages in the document, if appropriate.

### GSF_META_NAME_PARAGRAPH_COUNT

    #define GSF_META_NAME_PARAGRAPH_COUNT			"gsf:paragraph-count"

(Integer) Count of paragraphs in the document, if appropriate.

### GSF_META_NAME_WORD_COUNT

    #define GSF_META_NAME_WORD_COUNT			"gsf:word-count"

(Integer) Count of words in the document.

### GSF_META_NAME_CHARACTER_COUNT

    #define GSF_META_NAME_CHARACTER_COUNT			"gsf:character-count"

(Integer) Count of characters in the document.

TODO See how to sync this with ODF's document-statistic

### GSF_META_NAME_CELL_COUNT

    #define GSF_META_NAME_CELL_COUNT			"gsf:cell-count"

(Integer) Count of cells in the spread-sheet document, if appropriate.

### GSF_META_NAME_SPREADSHEET_COUNT

    #define GSF_META_NAME_SPREADSHEET_COUNT			"gsf:spreadsheet-count"

(Integer) Count of pages in the document, if appropriate.

### GSF_META_NAME_CREATOR

    #define GSF_META_NAME_CREATOR				"dc:creator"

(String) An entity primarily responsible for making the content of the resource typically a person, organization, or service.

1.14.0 Moved from "gsf" to "dc".

### GSF_META_NAME_TEMPLATE

    #define GSF_META_NAME_TEMPLATE				"meta:template"

(String) The template file that is been used to generate this document.

1.14.0 Moved from "gsf" to "meta"

### 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_HEADING_PAIRS) The last time this document was printed.

1.14.0 Moved from "gsf" to "dc". 1.14.1 Moved back to "gsf" from "dc".

### GSF_META_NAME_PRINT_DATE

    #define GSF_META_NAME_PRINT_DATE			"meta:print-date"

(GsfTimestamp) Specifies the date and time when the document was last printed.

### GSF_META_NAME_PRINTED_BY

    #define GSF_META_NAME_PRINTED_BY			"meta:printed-by"

(String) Specifies the name of the last person who printed the document.

1.14.0 Moved from "gsf" to "meta".

### GSF_META_NAME_KEYWORD

    #define GSF_META_NAME_KEYWORD				"meta:keyword"

(String) Searchable, indexable keywords. Similar to PDF keywords or HTML's meta block.

### GSF_META_NAME_SECURITY

    #define GSF_META_NAME_SECURITY				"gsf:security"

(Integer) Level of security.

Level | Value
--- | ---
None | 0
Password protected | 1
Read-only recommended | 2
Read-only enforced | 3
Locked for annotations | 4

### GSF_META_NAME_CATEGORY

    #define GSF_META_NAME_CATEGORY				"gsf:category"

(String) Category of the document.

### Note

example???

### GSF_META_NAME_PRESENTATION_FORMAT

    #define GSF_META_NAME_PRESENTATION_FORMAT		"gsf:presentation-format"

(String) Type of presentation, like "On-screen Show", "SlideView" etc.

### GSF_META_NAME_THUMBNAIL

    #define GSF_META_NAME_THUMBNAIL				"gsf:thumbnail"

(GsfClipData) Thumbnail data of the document, typically a preview image of the document.

### GSF_META_NAME_GENERATOR

    #define GSF_META_NAME_GENERATOR				"meta:generator"

(String) The application that generated this document. AbiWord, Gnumeric, etc...

1.14.0 Moved from "gsf" to "meta".

### GSF_META_NAME_LINE_COUNT

    #define GSF_META_NAME_LINE_COUNT			"gsf:line-count"

(Integer) Count of liness in the document.

### GSF_META_NAME_SLIDE_COUNT

    #define GSF_META_NAME_SLIDE_COUNT			"gsf:slide-count"

(Integer) Count of slides in the presentation document.

### GSF_META_NAME_NOTE_COUNT

    #define GSF_META_NAME_NOTE_COUNT			"gsf:note-count"

(Integer) Count of "notes" in the document.

### GSF_META_NAME_HIDDEN_SLIDE_COUNT

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

(Integer) Count of hidden-slides in the presentation document.

### GSF_META_NAME_MM_CLIP_COUNT

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

(Integer) Count of "multi-media" clips in the document.

### GSF_META_NAME_BYTE_COUNT

    #define GSF_META_NAME_BYTE_COUNT			"gsf:byte-count"

(Integer) Count of bytes in the document.

### 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"

(String) Name of the manager of "CREATOR" entity.

### GSF_META_NAME_COMPANY

    #define GSF_META_NAME_COMPANY				"dc:publisher"

(String) Name of the company/organization that the "CREATOR" entity is associated with.

1.14.1 Moved from "gsf:company" to "dc:publisher".

### 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"

(Unsigned Integer) Identifier representing the default system locale.

### GSF_META_NAME_CASE_SENSITIVE

    #define GSF_META_NAME_CASE_SENSITIVE			"gsf:case-sensitivity"

(Unsigned Integer) Identifier representing the case-sensitiveness.

### Note

of what ?? why is it an integer ??

### GSF_META_NAME_INITIAL_CREATOR

    #define GSF_META_NAME_INITIAL_CREATOR			"meta:initial-creator"

(String) Specifies the name of the person who created the document initially. 1.14.0 Moved from "gsf" to "meta".