void MemberClass::AddDatum(DATUM_TYPE type, struct namelist *nameInfo, sint32 minSize, sint32 maxSize, char *subType) { Datum *dat = new Datum(nameInfo->name, type); dat->m_akaName = nameInfo->akaName; dat->m_defaultName = nameInfo->defaultName; dat->m_minSize = minSize; dat->m_maxSize = maxSize; dat->m_subType = subType; //Added by Martin Gühmann to allow struct members to have default values if(!(nameInfo->flags & k_NAMEVALUE_HAS_VALUE) && maxSize <= 0 ){ switch(type) { default: break; case DATUM_INT: case DATUM_FLOAT: case DATUM_STRUCT: case DATUM_STRING: case DATUM_FILE: case DATUM_STRINGID: dat->m_required = true; break; } } else { dat->SetValue(nameInfo->v); } m_datumList.AddTail(dat); if (dat->m_type == DATUM_BIT) { dat->m_bitNum = m_numBits; m_numBits++; } }
//Added by Martin Gühmann void MemberClass::AddBitPair(struct namelist *nameInfo, sint32 minSize, sint32 maxSize, struct bitpairtype *pairtype) { Datum *dat = new Datum(nameInfo->name, DATUM_BIT_PAIR); dat->m_minSize = minSize; dat->m_maxSize = maxSize; // Added by Martin Gühmann for adding default values if((nameInfo->flags & k_NAMEVALUE_HAS_VALUE) || (maxSize > 0) ){ dat->SetValue(nameInfo->v); } dat->m_bitNum = m_numBits; m_numBits++; char * l_Name = (char *) malloc(strlen(nameInfo->name) + strlen("Value") + 1); strcpy(l_Name, nameInfo->name); strcat(l_Name, "Value"); Datum * pairDat = new Datum(l_Name, (DATUM_TYPE) pairtype->type); pairDat->m_subType = (char *) pairtype->extraData; dat->m_bitPairDatum = pairDat; m_datumList.AddTail(dat); }