123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- /*
- * 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__
|