1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
5 <!ENTITY GsfInput SYSTEM "xml/input.xml">
6 <!ENTITY GsfOutput SYSTEM "xml/output.xml">
7 <!ENTITY GsfInfile SYSTEM "xml/infile.xml">
8 <!ENTITY GsfOutfile SYSTEM "xml/outfile.xml">
10 <!ENTITY GsfStdio SYSTEM "xml/stdio.xml">
11 <!ENTITY GsfMemory SYSTEM "xml/memory.xml">
12 <!ENTITY GsfIOChannel SYSTEM "xml/iochannel.xml">
13 <!ENTITY GsfGnomevfs SYSTEM "xml/gnome-vfs.xml">
14 <!ENTITY GsfGIO SYSTEM "xml/gio.xml">
15 <!ENTITY GsfBonobo SYSTEM "xml/bonobo.xml">
17 <!ENTITY GsfMetadata SYSTEM "xml/metadata.xml">
18 <!ENTITY GsfMsole SYSTEM "xml/msole.xml">
19 <!ENTITY GsfBlobs SYSTEM "xml/blobs.xml">
20 <!ENTITY GsfClipData SYSTEM "xml/clip-data.xml">
21 <!ENTITY GsfCompression SYSTEM "xml/compression.xml">
22 <!ENTITY GsfZip SYSTEM "xml/zip.xml">
23 <!ENTITY GsfXml SYSTEM "xml/xml.xml">
24 <!ENTITY GsfText SYSTEM "xml/text.xml">
25 <!ENTITY GsfOpenDocument SYSTEM "xml/opendoc.xml">
27 <!ENTITY GsfUtils SYSTEM "xml/utils.xml">
28 <!ENTITY TreeIndex SYSTEM "xml/tree_index.sgml">
33 <title>GSF Reference Manual</title>
37 <title>GSF: Introduction</title>
38 <partintro id="gsf-into">
40 The GNOME Structured File Library (GSF) is an I/O abstraction for
41 reading/writing compound files. GSF is released under the GNU <ulink
42 url="http://www.fsf.org/licensing/licenses/lgpl.html">Lesser General Public
43 License</ulink> (GNU LGPL), which allows for flexible licensing of client
50 <title>GSF: History</title>
51 <partintro id="gsf-history">
53 GSF was written as part of the Gnumeric project. It started in 2002 as a
54 replacement for libole2 which Gnumeric was using to handle the Microsoft
55 <trademark class='registered'>Excel</trademark> file format, as libole2's
56 code had become difficult to maintain and was difficult to generalize. GSF
57 was designed to be a more general library for dealing with a number of
58 different types of structured data files and streams.
61 With the release of Gnumeric 1.1.6 (July 2002), Gnumeric used GSF and
67 <part id="dependencies">
68 <title>GSF: Dependencies</title>
70 GSF depends on the following libraries:
74 <term><link linkend="glib" title="GLib">GLib</link></term>
76 A general-purpose utility library, not specific to graphical user interfaces.
77 GLib provides many useful data types, macros, type conversions,
78 string utilities, file utilities, a main loop abstraction, and so on.
85 A library that provides a parser and toolkit for XML, the <ulink
86 url="http://en.wikipedia.org/wiki/XML">Extensible Markup Language</ulink>.
87 XML is a metalanguage used to define markup languages (text languages where
88 structure and semantics are added to the content using extra "markup"
95 The core GSF library can be built to also utilize the following libraries:
99 <term><ulink url="http://en.wikipedia.org/wiki/Zlib">zlib</ulink></term>
102 compression library that implements the DEFLATE algorithm used in gzip.
107 <term><ulink url="http://en.wikipedia.org/wiki/Bzip2">libbz2</ulink></term>
109 A data compression library that implements the algorithm used in bzip2.
115 A separate GSF library can be built that offers additional functionality for
116 use in the GNOME desktop environment. That library has the following
117 additional requirements:
121 <term>libbonobo-2.0</term>
124 url="http://developer.gnome.org/arch/component/bonobo.html">Bonobo</ulink>
125 is the GNOME architecture for creating reusable software components and
131 <term>gnome-vfs-2.0</term>
134 url="http://developer.gnome.org/doc/API/2.0/gnome-vfs-2.0/">GnomeVFS</ulink>
135 is a filesystem abstraction library that allows applications plugable
136 transparent access to a variety of "real" filesystems, including networked
137 filesystems like WebDAV, storage on devices like digital cameras, to the
146 url="http://library.gnome.org/devel/gio/2.16/ch01.html">GIO</ulink>
147 is striving to provide a modern, easy-to-use VFS API that sits at the right
148 level in the library stack. The goal is to overcome the shortcomings of
149 GnomeVFS and provide an API that is so good that developers prefer it over
150 raw POSIX calls. Among other things that means using GObject. It also means
151 not cloning the POSIX API, but providing higher-level, document-centric interfaces.
160 <part id="gsf-users">
161 <title>Projects using GSF</title>
162 <partintro id="gsf-projects">
164 GSF is now also being used by other projects than Gnumeric, including
167 <term><ulink url="http://www.koffice.org/kword/">KWord</ulink></term>
169 The word processor application of <ulink
170 url="http://www.koffice.org">KOffice</ulink>, the integrated office suite for
171 <ulink url="http://www.kde.org">KDE</ulink>, the K Desktop Environment.
176 <term><ulink url="http://librsvg.sourceforge.net/">librsvg</ulink></term>
178 A library to support the <ulink
179 url="http://www.w3.org/Graphics/SVG/">SVG</ulink> scalable vector graphics
185 <term><ulink url="http://libwpd.sourceforge.net">libwpd</ulink></term>
187 A library for importing <trademark
188 class='registered'>WordPerfect</trademark> documents.
193 <term><ulink url="http://planner.imendio.org/">planner</ulink></term>
195 A project management application.
206 <title>API Reference</title>
207 <partintro id="gsf-api-ref">
209 The core of GSF's API deals with basic I/O, an abstraction layer that
210 provides a uniform interface to several mechanisms that provide streams of
211 data and a set of parsers for various structured types of data streams.
215 <title>Basic Input/Output</title>
219 <chapter id="sources">
220 <title>Stream Sources</title>
230 <chapter id="parsers">
231 <title>Stream Parsers</title>
243 <title>Miscellaneous</title>
247 <index id="gsf-index">