1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /*
- * 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_LIBXMLPLUGIN__
- #define __DAE_LIBXMLPLUGIN__
- #include <vector>
- #include <dae/daeElement.h>
- #include <dae/daeURI.h>
- #include <dae/daeIOPluginCommon.h>
- struct _xmlTextReader;
- struct _xmlTextWriter;
- class DAE;
- /**
- * The @c daeLIBXMLPlugin class derives from @c daeIOPluginCommon and implements an XML
- * input/output backend using libxml2 as a parser. When using this plugin, DAE::load() expects
- * an rfc 2396 compliant URI, any URI supported by libxml2 should be properly
- * handled including ones with network schemes and authority. If the URI contains a fragment it will be ignored
- * and the entire referenced document will be loaded. DAE::saveAs will only
- * handle a filename path at present (ie: no scheme or authority).
- */
- class DLLSPEC daeLIBXMLPlugin : public daeIOPluginCommon
- {
- public:
- // Constructor / destructor
- /**
- * Constructor.
- */
- daeLIBXMLPlugin(DAE& dae);
- /**
- * Destructor.
- */
- virtual ~daeLIBXMLPlugin();
- // Operations
- virtual daeInt write(const daeURI& name, daeDocument *document, daeBool replace);
- /**
- * 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. daeLibXML2Plugin supports only one option, "saveRawBinary". Set to
- * "true" to save float_array data as a .raw binary file. The daeRawResolver will convert the
- * data back into COLLADA domFloat_array elements upon load.
- * @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 );
- /**
- * 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 );
- private:
- DAE& dae;
-
- _xmlTextWriter *writer;
- FILE *rawFile;
- unsigned long rawByteCount;
- daeURI rawRelPath;
- bool saveRawFile;
- virtual daeElementRef readFromFile(const daeURI& uri);
- virtual daeElementRef readFromMemory(daeString buffer, const daeURI& baseUri);
- daeElementRef read(_xmlTextReader* reader);
- daeElementRef readElement(_xmlTextReader* reader,
- daeElement* parentElement,
- /* out */ int& readRetVal);
- void writeElement( daeElement* element );
- void writeAttribute( daeMetaAttribute* attr, daeElement* element);
- void writeValue(daeElement* element);
- void writeRawSource( daeElement* src );
- };
- #endif //__DAE_LIBXMLPLUGIN__
|