updated COLLADA-DOM to the latest bleeding-edge (1.4.1) SVN version of today

This commit is contained in:
ejcoumans
2006-07-26 18:58:09 +00:00
parent 750af5c197
commit 7038e5c736
353 changed files with 21354 additions and 6259 deletions

View File

@@ -13,36 +13,24 @@
#include <dae/daeMetaAttribute.h>
#include <dae/daeMetaElement.h>
daeStringRefArrayArray daeMetaAttribute::_NameBindings;
daeMetaAttributeRefArray daeMetaAttribute::_FactoryTemplates;
#include <dae/daeErrorHandler.h>
void
daeMetaAttribute::set(daeElement* e, daeString s)
{
if( _type->getTypeEnum() == daeAtomicType::FloatType || _type->getTypeEnum() == daeAtomicType::DoubleType ) {
if ( strcmp(s, "NaN") == 0 ) {
fprintf(stderr, "NaN encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
fflush(stderr);
char msg[256];
sprintf(msg, "NaN encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
daeErrorHandler::get()->handleWarning(msg);
}
else if ( strcmp(s, "INF") == 0 ) {
fprintf(stderr, "INF encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
fflush(stderr);
char msg[256];
sprintf(msg, "INF encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
daeErrorHandler::get()->handleWarning( msg );
}
}
_type->stringToMemory((char*)s, getWritableMemory(e));
_isValid=true;
}
void daeMetaElementAttribute::set(daeElement* e, daeString s)
{
//_type->stringToMemory((char*)s, getWritableMemory(e));
daeElementRef *ref = (daeElementRef*)(getWritableMemory(e));
if ((*ref) == NULL) {
(*ref) = _elementType->create();
}
(*ref)->getMeta()->getValueAttribute()->set((*ref), s);
_isValid=true;
}
void daeMetaAttribute::copy(daeElement* to, daeElement *from) {
@@ -50,7 +38,6 @@ void daeMetaAttribute::copy(daeElement* to, daeElement *from) {
_type->memoryToString( getWritableMemory(from), str, 2048 );
_type->stringToMemory( str, getWritableMemory( to ) );
//memcpy( getWritableMemory( to ), getWritableMemory( from ), getSize() );
_isValid=true;
}
void
@@ -58,12 +45,14 @@ daeMetaArrayAttribute::set(daeElement* e, daeString s)
{
if( _type->getTypeEnum() == daeAtomicType::FloatType || _type->getTypeEnum() == daeAtomicType::DoubleType ) {
if ( strcmp(s, "NaN") == 0 ) {
fprintf(stderr, "NaN encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
fflush(stderr);
char msg[256];
sprintf(msg, "NaN encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
daeErrorHandler::get()->handleWarning(msg);
}
else if ( strcmp(s, "INF") == 0 ) {
fprintf(stderr, "INF encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
fflush(stderr);
char msg[256];
sprintf(msg, "INF encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
daeErrorHandler::get()->handleWarning( msg );
}
}
daeArray* array = (daeArray*)getWritableMemory(e);
@@ -71,7 +60,6 @@ daeMetaArrayAttribute::set(daeElement* e, daeString s)
daeInt cnt = (daeInt)array->getCount();
array->setRawCount(++cnt);
_type->stringToMemory((char*)s, array->getRawData()+(cnt-1)*typeSize);
_isValid=true;
}
void daeMetaArrayAttribute::copy(daeElement* to, daeElement *from) {
@@ -90,208 +78,6 @@ void daeMetaArrayAttribute::copy(daeElement* to, daeElement *from) {
}
}
void daeMetaElementAttribute::copy(daeElement* to, daeElement *from) {
daeElement *cpy = (*(daeElementRef*)(getWritableMemory(from)))->clone();
(*(daeElementRef*)(getWritableMemory(to))) = cpy;
}
void daeMetaElementArrayAttribute::copy(daeElement* to, daeElement *from) {
(void)to;
(void)from;
}
daeMetaElementArrayAttribute::daeMetaElementArrayAttribute()
{
}
void
daeMetaElementAttribute::placeElement(daeElement* parent, daeElement* child)
{
if (parent == NULL)
return;
daeElementRef* er = (daeElementRef*)getWritableMemory(parent);
*er = child;
}
void
daeMetaElementArrayAttribute::placeElement(daeElement* parent,
daeElement* child)
{
if ((parent == NULL)||(child == NULL))
return;
daeElementRefArray* era = (daeElementRefArray*)getWritableMemory(parent);
era->append(child);
}
// !!!GAC added for testing 7/8/05
// These are the opposite of the placeElement functions above
void
daeMetaElementAttribute::removeElement(daeElement* parent, daeElement* child)
{
(void)child; // silence unused variable warning
if (parent == NULL)
return;
daeElementRef* er = (daeElementRef*)getWritableMemory(parent);
*er = NULL;
}
void
daeMetaElementArrayAttribute::removeElement(daeElement* parent,
daeElement* child)
{
if ((parent == NULL)||(child == NULL))
return;
daeElementRefArray* era = (daeElementRefArray*)getWritableMemory(parent);
era->remove(child);
}
void
daeMetaElementAttribute::setDocument( daeElement * parent, daeDocument* c )
{
daeElementRef* er = (daeElementRef*)getWritableMemory( parent );
if ( ((daeElement*)(*er)) != NULL ) {
(*er)->setDocument( c );
}
}
void
daeMetaElementArrayAttribute::setDocument( daeElement * parent, daeDocument* c )
{
daeElementRefArray* era = (daeElementRefArray*)getWritableMemory( parent );
for ( unsigned int i = 0; i < era->getCount(); i++ ) {
era->get(i)->setDocument( c );
}
}
daeInt
daeMetaElementAttribute::getCount(daeElement* e)
{
if (e == NULL)
return 0;
return ((*((daeElementRef*)getWritableMemory(e))) != NULL);
}
daeMemoryRef
daeMetaElementAttribute::get(daeElement *e, daeInt index)
{
(void)index;
return getWritableMemory(e);
}
daeInt
daeMetaElementArrayAttribute::getCount(daeElement *e)
{
if (e == NULL)
return 0;
daeElementRefArray* era = (daeElementRefArray*)getWritableMemory(e);
if (era == NULL)
return 0;
return (daeInt)era->getCount();
}
daeMemoryRef
daeMetaElementArrayAttribute::get(daeElement* e, daeInt index)
{
if (e == NULL)
return NULL;
daeElementRefArray* era = (daeElementRefArray*)getWritableMemory(e);
if (era == NULL || index >= (daeInt)era->getCount() )
return NULL;
return (daeMemoryRef)&(era->get(index));
}
void
daeMetaAttribute::InitializeKnownTypes()
{
daeInt index;
index = (daeInt)_FactoryTemplates.append(new daeMetaAttribute);
_NameBindings[index].append("int");
_NameBindings[index].append("float");
_NameBindings[index].append("string");
_NameBindings[index].append("enum");
index = (daeInt)_FactoryTemplates.append(new daeMetaArrayAttribute);
_NameBindings[index].append("ListOfFloats");
_NameBindings[index].append("ListOfInts");
_NameBindings[index].append("ListOfTokens");
index = (daeInt)_FactoryTemplates.append(new daeMetaElementAttribute);
_NameBindings[index].append("xs:element");
index = (daeInt)_FactoryTemplates.append(new daeMetaElementArrayAttribute);
_NameBindings[index].append("element");
//index = (daeInt)_FactoryTemplates.append(new daeMetaEnumAttribute);
//_NameBindings[index].append("__enum");
}
daeMetaAttributeRef
daeMetaAttribute::Factory(daeStringRef xmlTypeName)
{
unsigned int i;
for(i=0;i<_FactoryTemplates.getCount();i++) {
daeStringRefArray& nameBindings = _NameBindings[i];
int count = (int)nameBindings.getCount();
int j;
for(j=0;j<count;j++)
if (!strcmp(nameBindings[j],xmlTypeName))
break;
if (j!=count)
return _FactoryTemplates[i]->clone();
}
return NULL;
}
daeMetaAttributeRef
daeMetaAttribute::clone()
{
return new daeMetaAttribute;
}
daeMetaAttributeRef
daeMetaArrayAttribute::clone()
{
return new daeMetaArrayAttribute;
}
//daeMetaAttributeRef
//daeMetaEnumAttribute::clone()
//{
// return new daeMetaEnumAttribute;
//}
daeMetaElementAttribute::daeMetaElementAttribute()
{
_minOccurs = 1;
_maxOccurs = 1;
_isInChoice = false;
_isInSequence = false;
//_ref = "noref";
_previousInSequence = NULL;
_elementType = NULL;
}
daeMetaAttributeRef
daeMetaElementAttribute::clone()
{
return new daeMetaElementAttribute;
}
daeMetaAttributeRef
daeMetaElementArrayAttribute::clone()
{
return new daeMetaElementArrayAttribute;
}
//daeMetaEnumAttribute::daeMetaEnumAttribute()
//{
//}
daeMetaAttribute::daeMetaAttribute()
{
_name = "noname";
@@ -299,7 +85,6 @@ daeMetaAttribute::daeMetaAttribute()
_type = NULL;
_container = NULL;
_default = NULL;
_isValid = false;
_isRequired = false;
}
@@ -321,7 +106,6 @@ daeMetaAttribute::getAlignment()
return _type->getAlignment();
}
//!!!ACL 10-18
daeInt
daeMetaAttribute::getCount(daeElement* e)
{
@@ -358,4 +142,4 @@ daeMetaArrayAttribute::get(daeElement* e, daeInt index)
return NULL;
return era->getRawData()+(index*era->getElementSize());
}
//******************************************************