summaryrefslogtreecommitdiff
path: root/include/dae/daeIOPlugin.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/dae/daeIOPlugin.h')
-rwxr-xr-xinclude/dae/daeIOPlugin.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/include/dae/daeIOPlugin.h b/include/dae/daeIOPlugin.h
new file mode 100755
index 0000000..f8f1639
--- /dev/null
+++ b/include/dae/daeIOPlugin.h
@@ -0,0 +1,128 @@
+/*
+* Copyright 2006 Sony Computer Entertainment Inc.
+*
+* Licensed under the MIT Open Source License, for details please see license.txt or the website
+* http://www.opensource.org/licenses/mit-license.php
+*
+*/
+
+#ifndef __DAE_IOPLUGIN__
+#define __DAE_IOPLUGIN__
+
+#include <string>
+#include <vector>
+#include <dae/daeTypes.h>
+class daeDatabase;
+class daeMetaElement;
+class daeURI;
+class daeDocument;
+
+/**
+* The @c daeIOPlugin class provides the input/output plugin interface, which is
+* the interface between the COLLADA runtime and the backend storage. A native
+* COLLADA XML plugin implementation is provided along with this interface.
+*/
+class DLLSPEC daeIOPlugin
+{
+public:
+ /**
+ * Destructor
+ */
+ virtual ~daeIOPlugin() {}
+ /**
+ * Sets the top meta object.
+ * Called by @c dae::setIOPlugin() when the IO plugin changes. It passes to this function the
+ * top meta object, which is the root of a
+ * hierarchy of @c daeMetaElement objects. This top meta object is capable of creating
+ * any of the root objects in the DOM tree.
+ * @param topMeta Top meta object to use to create objects to fill the database.
+ * @return Returns DAE_OK if successful, otherwise returns a negative value defined in daeError.h.
+ */
+ virtual daeInt setMeta(daeMetaElement *topMeta) = 0;
+
+ /** @name Database setup */
+ //@{
+ /**
+ * Sets the database to use.
+ * All @c daeIOPlugins use the same interface to the @c daeDatabase,
+ * @c setDatabase() tells the @c daeIOPlugin which @c daeDatabase object it should use
+ * for storage and queries.
+ * @param database Database to set.
+ */
+ virtual void setDatabase(daeDatabase* database) = 0;
+ //@}
+
+
+ /** @name Operations */
+ //@{
+ /**
+ * Imports content into the database from an input.
+ * The input can be a file, a database or another runtime.
+ * @param uri the URI of the COLLADA document to load, not all plugins accept all types of URIs,
+ * check the documentation for the IO plugin you are using.
+ * @param docBuffer A string containing the text of the document to load. This is an optional attribute
+ * and should only be used if the document has already been loaded into memory.
+ * @return Returns DAE_OK if successfully loaded, otherwise returns a negative value defined in daeError.h.
+ * @see @c DAE::load().
+ */
+ virtual daeInt read(const daeURI& uri, daeString docBuffer) = 0;
+
+ /** @name Operations */
+ //@{
+ /**
+ * Writes a specific document to an output.
+ * @param name URI to write the document to, not all IO plugins support all types of URIs
+ * check the documentation for the IO plugin you are using.
+ * @param document Pointer to the document that we're going to write out.
+ * @param replace True if write should overwrite an existing file. False otherwise.
+ * @return Returns DAE_OK if success, a negative value defined in daeError.h otherwise.
+ * @see @c DAE::saveAs()
+ */
+ virtual daeInt write(const daeURI& name, daeDocument *document, daeBool replace) = 0;
+ //@}
+
+ /**
+ * Returns a list of the URI protocols that this plugin supports.
+ * @return Returns a daeArray containing the supported protocols.
+ */
+ virtual const std::vector<std::string>& getSupportedProtocols() {
+ return supportedProtocols;
+ }
+
+ /**
+ * setOption allows you to set options for this IOPlugin. Which options a plugin supports is
+ * dependent on the plugin itself. There is currently no list of options that plugins are
+ * suggested to implement.
+ * @param option The option to set.
+ * @param value The value to set the option.
+ * @return Returns DAE_OK upon success.
+ */
+ virtual daeInt setOption( daeString option, daeString value ) = 0;
+
+ /**
+ * getOption retrieves the value of an option from this IOPlugin. Which options a plugin supports is
+ * dependent on the plugin itself.
+ * @param option The option to get.
+ * @return Returns the string value of the option or NULL if option is not valid.
+ */
+ virtual daeString getOption( daeString option ) = 0;
+
+protected:
+ // This is an array of the URI protocols supported by this plugin, e.g. "http", "file",
+ // etc. Each plugin should initialize this variable in the constructor.
+ std::vector<std::string> supportedProtocols;
+};
+
+
+class DLLSPEC daeIOEmpty : public daeIOPlugin {
+public:
+ virtual daeInt setMeta(daeMetaElement *topMeta) { return DAE_ERROR; }
+ virtual void setDatabase(daeDatabase* database) { }
+ virtual daeInt read(const daeURI& uri, daeString docBuffer) { return DAE_ERROR; }
+ virtual daeInt write(const daeURI& name, daeDocument *document, daeBool replace) { return DAE_ERROR; }
+ virtual daeInt setOption( daeString option, daeString value ) { return DAE_ERROR; }
+ virtual daeString getOption( daeString option ) { return ""; }
+};
+
+
+#endif // __DAE_IOPLUGIN__