GSF Reference Manual: metadata

## metadata metadata |

## Functions

GsfDocMetaData * | gsf_doc_meta_data_new ()
GsfDocProp * | gsf_doc_meta_data_lookup ()
void | gsf_doc_meta_data_insert ()
void | gsf_doc_meta_data_remove ()
GsfDocProp * | gsf_doc_meta_data_steal ()
void | gsf_doc_meta_data_store ()
void | gsf_doc_meta_data_foreach ()
gsize | gsf_doc_meta_data_size ()
void | gsf_doc_meta_dump ()
void | gsf_doc_meta_data_odf_subtree ()
GError * | gsf_doc_meta_data_read_from_odf ()
gboolean | gsf_doc_meta_data_write_to_odf ()
GError * | gsf_doc_meta_data_read_from_msole ()
gboolean | gsf_doc_meta_data_write_to_msole ()
GsfDocProp * | gsf_doc_prop_new ()
void | gsf_doc_prop_free ()
char const * | gsf_doc_prop_get_name ()
GValue const * | gsf_doc_prop_get_val ()
void | gsf_doc_prop_set_val ()
char const * | gsf_doc_prop_get_link ()
void | gsf_doc_prop_set_link ()
void | gsf_doc_prop_dump ()
GsfDocPropVector * | gsf_docprop_vector_new ()
void | gsf_docprop_vector_append ()
gchar * | gsf_docprop_vector_as_string ()
GValueArray * | gsf_value_get_docprop_varray ()
GsfDocPropVector * | gsf_value_get_docprop_vector ()

## Types and Values

| GsfDocMetaData
| GsfDocProp
| GsfDocPropVector
#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
        ╰── GsfDocPropVector

## Description

## Functions

### gsf_doc_meta_data_new ()

    GsfDocMetaData *
    gsf_doc_meta_data_new (void);

#### Returns

a new metadata property collection.

[transfer full]

### gsf_doc_meta_data_lookup ()

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

#### Parameters

meta | GsfDocMetaData |

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

#### Parameters

meta | GsfDocMetaData |
name | the id. |
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

#### Parameters

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

#### Parameters

meta | GsfDocMetaData |

#### Returns

### gsf_doc_meta_data_store ()

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

#### Parameters

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

#### Parameters

meta | the collection |
func | the function called once for each element in the collection. | [scope call]
user_data | any supplied user data or `NULL` |

### gsf_doc_meta_data_size ()

    gsize
    gsf_doc_meta_data_size (GsfDocMetaData const *meta);

#### Parameters

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

#### Parameters

meta | GsfDocMetaData |

### gsf_doc_meta_data_odf_subtree ()

    void
    gsf_doc_meta_data_odf_subtree (GsfDocMetaData *md,
                                   GsfXMLIn *doc);

Extend `xin` so that it can parse a subtree in OpenDoc metadata format

#### Parameters

md | GsfDocMetaData |
doc | GsfXMLInDoc |

Since 1.14.24

### gsf_doc_meta_data_read_from_odf ()

    GError *
    gsf_doc_meta_data_read_from_odf (GsfDocMetaData *md,
                                     GsfInput *input);

Read an OpenDocument metadata stream from `input` and store the properties into `md` . Overwrite any existing properties with the same id.

#### Parameters

md | GsfDocMetaData |
input | GsfInput |

#### Returns

a GError if there is a problem.

[transfer full]

Since 1.14.24

### gsf_doc_meta_data_write_to_odf ()

    gboolean
    gsf_doc_meta_data_write_to_odf (GsfDocMetaData const *md,
                                    gpointer output);

#### Parameters

md | GsfDocMetaData |
output | a pointer to a GsfOutput. |

#### Returns

`TRUE` if no error occured.

Since 1.14.24

### gsf_doc_meta_data_read_from_msole ()

    GError *
    gsf_doc_meta_data_read_from_msole (GsfDocMetaData *accum,
                                       GsfInput *in);

Read a stream formated as a set of MS OLE properties from `in` and store the results in `accum` .

#### Parameters

accum | GsfDocMetaData |
in | GsfInput |

#### Returns

A GError if there was an error.

[transfer full]

Since 1.14.24

### gsf_doc_meta_data_write_to_msole ()

    gboolean
    gsf_doc_meta_data_write_to_msole (GsfDocMetaData const *meta_data,
                                      GsfOutput *out,
                                      gboolean doc_not_component);

#### Parameters

meta_data | GsfDocMetaData |
out | GsfOutput |
doc_not_component | a kludge to differentiate DocumentSummary from Summary |

#### Returns

`TRUE` on success;

Since 1.14.24

### gsf_doc_prop_new ()

    GsfDocProp *
    gsf_doc_prop_new (char *name);

#### Parameters

name | The name of the property. | [transfer full]

#### Returns

a new GsfDocProp.

[transfer full]

### gsf_doc_prop_free ()

    void
    gsf_doc_prop_free (GsfDocProp *prop);

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

#### Parameters

prop | GsfDocProp. | [allow-none]

### gsf_doc_prop_get_name ()

    char const   *
    gsf_doc_prop_get_name (GsfDocProp const *prop);

#### Parameters

prop | GsfDocProp |

#### Returns

the name of the property.

[transfer none]

### gsf_doc_prop_get_val ()

    GValue const *
    gsf_doc_prop_get_val (GsfDocProp const *prop);

#### Parameters

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.

#### Parameters

prop | GsfDocProp |
val | GValue. | [transfer full]

### gsf_doc_prop_get_link ()

    char const   *
    gsf_doc_prop_get_link (GsfDocProp const *prop);

#### Parameters

prop | GsfDocProp |

#### Returns

the current link descriptor of `prop` .

[transfer none]

### gsf_doc_prop_set_link ()

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

Sets `prop` 's link to `link`

#### Parameters

prop | GsfDocProp |
link | optionally `NULL`. | [transfer full]

### gsf_doc_prop_dump ()

    void
    gsf_doc_prop_dump (GsfDocProp const *prop);

A debugging utility to dump `prop` as text via g_print New in 1.14.2

#### Parameters

prop | GsfDocProp |

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

#### Parameters

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.

#### Parameters

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

#### Returns

### gsf_value_get_docprop_vector ()

    GsfDocPropVector *
    gsf_value_get_docprop_vector (GValue const *value);

This function returns a pointer to the GsfDocPropVector structure in `value` . No additional references are created.

#### Parameters

value | A GValue of type GsfDocPropVector. |

#### Returns

A pointer to the GsfDocPropVector structure in `value` .

[transfer none]

## Types and Values

### GsfDocMetaData

    typedef struct _GsfDocMetaData GsfDocMetaData;

Class representing information about a document, such as creator and time of last modification.

### GsfDocProp

    typedef struct _GsfDocProp GsfDocProp;

Class representing a properties of a document.

### GsfDocPropVector

    typedef struct _GsfDocPropVector GsfDocPropVector;

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

(String) The entity that made the last change to the document, typically a person, organization, or service.

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

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"

(Boolean) ?????

### GSF_META_NAME_HEADING_PAIRS

    #define GSF_META_NAME_HEADING_PAIRS			"gsf:heading-pairs"

(Vector of string value pairs stored in alternating elements) Store the counts of objects in the document as names 'worksheet' and count '4' From MSOLE

### GSF_META_NAME_DOCUMENT_PARTS

    #define GSF_META_NAME_DOCUMENT_PARTS			"gsf:document-parts"

(Vector of strings) Names of the 'interesting' parts of the document. In spreadsheets this is a list of the sheet names, and the named expressions. From MSOLE

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

(Boolean) ???????

### GSF_META_NAME_DICTIONARY

    #define GSF_META_NAME_DICTIONARY			"gsf:dictionary"

(None) Reserved name (PID) for Dictionary

### GSF_META_NAME_MSOLE_UNKNOWN_17

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

(Unknown) User-defined name

### GSF_META_NAME_MSOLE_UNKNOWN_18

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

(Unknown) User-defined name

### GSF_META_NAME_MSOLE_UNKNOWN_19

    #define GSF_META_NAME_MSOLE_UNKNOWN_19			"msole:unknown-doc-19"

(Boolean) User-defined name

### GSF_META_NAME_MSOLE_UNKNOWN_20

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

(Unknown) User-defined name

### GSF_META_NAME_MSOLE_UNKNOWN_21

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

(Unknown) User-defined name

### GSF_META_NAME_MSOLE_UNKNOWN_22

    #define GSF_META_NAME_MSOLE_UNKNOWN_22			"msole:unknown-doc-22"

(Boolean) User-defined name

### GSF_META_NAME_MSOLE_UNKNOWN_23

    #define GSF_META_NAME_MSOLE_UNKNOWN_23			"msole:unknown-doc-23"

(i4) User-defined name

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

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