NFDATA_TYPE NFCClassModule::ComputerType(const char* pstrTypeName, NFData& var) { if (0 == strcmp(pstrTypeName, "int")) { var.SetInt(NULL_INT); return var.GetType(); } else if (0 == strcmp(pstrTypeName, "string")) { var.SetString(NULL_STR); return var.GetType(); } else if (0 == strcmp(pstrTypeName, "float")) { var.SetFloat(NULL_FLOAT); return var.GetType(); } else if (0 == strcmp(pstrTypeName, "object")) { var.SetObject(NULL_OBJECT); return var.GetType(); } else if (0 == strcmp(pstrTypeName, "vector2")) { var.SetVector2(NULL_VECTOR2); return var.GetType(); } else if (0 == strcmp(pstrTypeName, "vector3")) { var.SetVector3(NULL_VECTOR3); return var.GetType(); } return TDATA_UNKNOWN; }
int NFCRecord::FindRowByColValue(const int nCol, const NFData& var, NFDataList& varResult) { if (!ValidCol(nCol)) { return -1; } NFDATA_TYPE eType = var.GetType(); if (eType != mVarRecordType->Type(nCol)) { return -1; } switch (eType) { case TDATA_INT: return FindInt(nCol, var.GetInt(), varResult); break; case TDATA_FLOAT: return FindFloat(nCol, var.GetFloat(), varResult); break; case TDATA_STRING: return FindString(nCol, var.GetString(), varResult); break; case TDATA_OBJECT: return FindObject(nCol, var.GetObject(), varResult); break; case TDATA_VECTOR2: return FindVector2(nCol, var.GetVector2(), varResult); break; case TDATA_VECTOR3: return FindVector3(nCol, var.GetVector3(), varResult); break; default: break; } return -1; }
bool NFCClassModule::AddPropertys(rapidxml::xml_node<>* pPropertyRootNode, NF_SHARE_PTR<NFIClass> pClass) { for (rapidxml::xml_node<>* pPropertyNode = pPropertyRootNode->first_node(); pPropertyNode; pPropertyNode = pPropertyNode->next_sibling()) { if (pPropertyNode) { const char* strPropertyName = pPropertyNode->first_attribute("Id")->value(); if (pClass->GetPropertyManager()->GetElement(strPropertyName)) { //error NFASSERT(0, strPropertyName, __FILE__, __FUNCTION__); continue; } const char* pstrType = pPropertyNode->first_attribute("Type")->value(); const char* pstrPublic = pPropertyNode->first_attribute("Public")->value(); const char* pstrPrivate = pPropertyNode->first_attribute("Private")->value(); const char* pstrSave = pPropertyNode->first_attribute("Save")->value(); const char* pstrCache = pPropertyNode->first_attribute("Cache")->value(); const char* pstrRef = pPropertyNode->first_attribute("Ref")->value(); const char* pstrUpload = pPropertyNode->first_attribute("Upload")->value(); bool bPublic = lexical_cast<bool>(pstrPublic); bool bPrivate = lexical_cast<bool>(pstrPrivate); bool bSave = lexical_cast<bool>(pstrSave); bool bCache = lexical_cast<bool>(pstrCache); bool bRef = lexical_cast<bool>(pstrRef); bool bUpload = lexical_cast<bool>(pstrUpload); NFData varProperty; if (TDATA_UNKNOWN == ComputerType(pstrType, varProperty)) { //std::cout << "error:" << pClass->GetTypeName() << " " << pClass->GetInstancePath() << ": " << strPropertyName << " type error!!!" << std::endl; NFASSERT(0, strPropertyName, __FILE__, __FUNCTION__); } //printf( " Property:%s[%s]\n", pstrPropertyName, pstrType ); NF_SHARE_PTR<NFIProperty> xProperty = pClass->GetPropertyManager()->AddProperty(NFGUID(), strPropertyName, varProperty.GetType()); xProperty->SetPublic(bPublic); xProperty->SetPrivate(bPrivate); xProperty->SetSave(bSave); xProperty->SetCache(bCache); xProperty->SetRef(bRef); xProperty->SetUpload(bUpload); } } return true; }