diff options
Diffstat (limited to 'include/dae/daeIOPlugin.h')
-rwxr-xr-x | include/dae/daeIOPlugin.h | 128 |
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__ |