summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/assimp/contrib/openddlparser/code/OpenDDLCommon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/assimp/contrib/openddlparser/code/OpenDDLCommon.cpp')
-rw-r--r--src/3rdparty/assimp/contrib/openddlparser/code/OpenDDLCommon.cpp44
1 files changed, 35 insertions, 9 deletions
diff --git a/src/3rdparty/assimp/contrib/openddlparser/code/OpenDDLCommon.cpp b/src/3rdparty/assimp/contrib/openddlparser/code/OpenDDLCommon.cpp
index 13a96f7a8..5c341a780 100644
--- a/src/3rdparty/assimp/contrib/openddlparser/code/OpenDDLCommon.cpp
+++ b/src/3rdparty/assimp/contrib/openddlparser/code/OpenDDLCommon.cpp
@@ -22,6 +22,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-----------------------------------------------------------------------------------------------*/
#include <openddlparser/OpenDDLCommon.h>
#include <openddlparser/DDLNode.h>
+#include <openddlparser/Value.h>
BEGIN_ODDLPARSER_NS
@@ -84,7 +85,14 @@ Name::~Name() {
m_id = ddl_nullptr;
}
-Reference::Reference()
+Name::Name( const Name &name ){
+ m_type=name.m_type;
+ m_id=new Text(name.m_id->m_buffer,name.m_id->m_len);
+}
+
+
+
+ Reference::Reference()
: m_numRefs( 0 )
, m_referencedName( ddl_nullptr ) {
// empty
@@ -96,8 +104,16 @@ Reference::Reference( size_t numrefs, Name **names )
if ( numrefs > 0 ) {
m_referencedName = new Name *[ numrefs ];
for ( size_t i = 0; i < numrefs; i++ ) {
- Name *name = new Name( names[ i ]->m_type, names[ i ]->m_id );
- m_referencedName[ i ] = name;
+ m_referencedName[ i ] = names[i];
+ }
+ }
+}
+Reference::Reference(const Reference &ref) {
+ m_numRefs=ref.m_numRefs;
+ if(m_numRefs!=0){
+ m_referencedName = new Name*[m_numRefs];
+ for ( size_t i = 0; i < m_numRefs; i++ ) {
+ m_referencedName[i] = new Name(*ref.m_referencedName[i]);
}
}
}
@@ -107,6 +123,7 @@ Reference::~Reference() {
delete m_referencedName[ i ];
}
m_numRefs = 0;
+ delete [] m_referencedName;
m_referencedName = ddl_nullptr;
}
@@ -135,21 +152,30 @@ Property::Property( Text *id )
}
Property::~Property() {
- m_key = ddl_nullptr;
- m_value = ddl_nullptr;
- m_ref = ddl_nullptr;;
- m_next = ddl_nullptr;;
+ delete m_key;
+ if(m_value!=ddl_nullptr)
+ delete m_value;
+ if(m_ref!=ddl_nullptr)
+ delete(m_ref);
+ if(m_next!=ddl_nullptr)
+ delete m_next;
}
DataArrayList::DataArrayList()
: m_numItems( 0 )
, m_dataList( ddl_nullptr )
-, m_next( ddl_nullptr ) {
+, m_next( ddl_nullptr )
+, m_refs(ddl_nullptr)
+, m_numRefs(0){
// empty
}
DataArrayList::~DataArrayList() {
- // empty
+ delete m_dataList;
+ if(m_next!=ddl_nullptr)
+ delete m_next;
+ if(m_refs!=ddl_nullptr)
+ delete m_refs;
}
size_t DataArrayList::size() {