diff options
Diffstat (limited to 'src/3rdparty/assimp/code/FBXProperties.h')
-rw-r--r-- | src/3rdparty/assimp/code/FBXProperties.h | 170 |
1 files changed, 81 insertions, 89 deletions
diff --git a/src/3rdparty/assimp/code/FBXProperties.h b/src/3rdparty/assimp/code/FBXProperties.h index 9219c3eea..60cdfe2c6 100644 --- a/src/3rdparty/assimp/code/FBXProperties.h +++ b/src/3rdparty/assimp/code/FBXProperties.h @@ -2,11 +2,11 @@ Open Asset Import Library (assimp) ---------------------------------------------------------------------- -Copyright (c) 2006-2012, assimp team +Copyright (c) 2006-2016, assimp team All rights reserved. -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above @@ -23,34 +23,35 @@ following conditions are met: derived from this software without specific prior written permission of the assimp team. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ /** @file FBXProperties.h - * @brief FBX dynamic properties + * @brief FBX dynamic properties */ #ifndef INCLUDED_AI_FBX_PROPERTIES_H #define INCLUDED_AI_FBX_PROPERTIES_H #include <map> -#include <string> +#include "FBXCompileConfig.h" +#include <memory> namespace Assimp { namespace FBX { - class Element; + class Element; /** Represents a dynamic property. Type info added by deriving classes, @@ -64,19 +65,16 @@ namespace FBX { class Property { protected: - - Property(); + Property(); public: - - virtual ~Property(); + virtual ~Property(); public: - - template <typename T> - const T* As() const { - return dynamic_cast<const T*>(this); - } + template <typename T> + const T* As() const { + return dynamic_cast<const T*>(this); + } }; @@ -84,108 +82,102 @@ template<typename T> class TypedProperty : public Property { public: - - TypedProperty(const T& value) - : value(value) - { - } + explicit TypedProperty(const T& value) + : value(value) + { + } public: - - const T& Value() const { - return value; - } + const T& Value() const { + return value; + } private: - T value; + T value; }; -typedef std::fbx_unordered_map<std::string,boost::shared_ptr<Property> > DirectPropertyMap; +typedef std::fbx_unordered_map<std::string,std::shared_ptr<Property> > DirectPropertyMap; typedef std::fbx_unordered_map<std::string,const Property*> PropertyMap; typedef std::fbx_unordered_map<std::string,const Element*> LazyPropertyMap; -/** Represents a property table as can be found in the newer FBX files (Properties60, Properties70)*/ +/** + * Represents a property table as can be found in the newer FBX files (Properties60, Properties70) + */ class PropertyTable { public: - - // in-memory property table with no source element - PropertyTable(); - - PropertyTable(const Element& element, boost::shared_ptr<const PropertyTable> templateProps); - ~PropertyTable(); + // in-memory property table with no source element + PropertyTable(); + PropertyTable(const Element& element, std::shared_ptr<const PropertyTable> templateProps); + ~PropertyTable(); public: + const Property* Get(const std::string& name) const; - const Property* Get(const std::string& name) const; + // PropertyTable's need not be coupled with FBX elements so this can be NULL + const Element* GetElement() const { + return element; + } - // PropertyTable's need not be coupled with FBX elements so this can be NULL - const Element* GetElement() const { - return element; - } + const PropertyTable* TemplateProps() const { + return templateProps.get(); + } - const PropertyTable* TemplateProps() const { - return templateProps.get(); - } - - DirectPropertyMap GetUnparsedProperties() const; + DirectPropertyMap GetUnparsedProperties() const; private: - - LazyPropertyMap lazyProps; - mutable PropertyMap props; - const boost::shared_ptr<const PropertyTable> templateProps; - const Element* const element; + LazyPropertyMap lazyProps; + mutable PropertyMap props; + const std::shared_ptr<const PropertyTable> templateProps; + const Element* const element; }; // ------------------------------------------------------------------------------------------------ template <typename T> -inline T PropertyGet(const PropertyTable& in, const std::string& name, - const T& defaultValue, - bool ignoreTemplate = false) +inline T PropertyGet(const PropertyTable& in, const std::string& name, + const T& defaultValue) { - const Property* const prop = in.Get(name); - if(!prop) { - return defaultValue; - } - - // strong typing, no need to be lenient - const TypedProperty<T>* const tprop = prop->As< TypedProperty<T> >(); - if(!tprop) { - return defaultValue; - } - - return tprop->Value(); + const Property* const prop = in.Get(name); + if(!prop) { + return defaultValue; + } + + // strong typing, no need to be lenient + const TypedProperty<T>* const tprop = prop->As< TypedProperty<T> >(); + if(!tprop) { + return defaultValue; + } + + return tprop->Value(); } // ------------------------------------------------------------------------------------------------ template <typename T> -inline T PropertyGet(const PropertyTable& in, const std::string& name, - bool& result, - bool ignoreTemplate = false) +inline T PropertyGet(const PropertyTable& in, const std::string& name, + bool& result) { - const Property* const prop = in.Get(name); - if(!prop) { - result = false; - return T(); - } - - // strong typing, no need to be lenient - const TypedProperty<T>* const tprop = prop->As< TypedProperty<T> >(); - if(!tprop) { - result = false; - return T(); - } - - result = true; - return tprop->Value(); + const Property* const prop = in.Get(name); + if(!prop) { + result = false; + return T(); + } + + // strong typing, no need to be lenient + const TypedProperty<T>* const tprop = prop->As< TypedProperty<T> >(); + if(!tprop) { + result = false; + return T(); + } + + result = true; + return tprop->Value(); } } //! FBX } //! Assimp -#endif // +#endif // INCLUDED_AI_FBX_PROPERTIES_H |