本文整理汇总了C++中PropertyDescription::getFlags方法的典型用法代码示例。如果您正苦于以下问题:C++ PropertyDescription::getFlags方法的具体用法?C++ PropertyDescription::getFlags怎么用?C++ PropertyDescription::getFlags使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PropertyDescription
的用法示例。
在下文中一共展示了PropertyDescription::getFlags方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addPersistentsDataToStream
//-------------------------------------------------------------------------------------
void Base::addPersistentsDataToStream(uint32 flags, MemoryStream* s)
{
std::vector<ENTITY_PROPERTY_UID> log;
// 再将base中存储属性取出
PyObject* pydict = PyObject_GetAttrString(this, "__dict__");
// 先将celldata中的存储属性取出
ScriptDefModule::PROPERTYDESCRIPTION_MAP& propertyDescrs = scriptModule_->getPersistentPropertyDescriptions();
ScriptDefModule::PROPERTYDESCRIPTION_MAP::const_iterator iter = propertyDescrs.begin();
for(; iter != propertyDescrs.end(); iter++)
{
PropertyDescription* propertyDescription = iter->second;
std::vector<ENTITY_PROPERTY_UID>::const_iterator finditer = std::find(log.begin(), log.end(), propertyDescription->getUType());
if(finditer != log.end())
continue;
const char* attrname = propertyDescription->getName();
if(propertyDescription->isPersistent() && (flags & propertyDescription->getFlags()) > 0)
{
PyObject *key = PyUnicode_FromString(attrname);
if(PyDict_Contains(cellDataDict_, key) > 0)
{
PyObject* pyVal = PyDict_GetItemString(cellDataDict_, attrname);
(*s) << propertyDescription->getUType();
log.push_back(propertyDescription->getUType());
propertyDescription->getDataType()->addToStream(s, pyVal);
DEBUG_PERSISTENT_PROPERTY("addCellPersistentsDataToStream", attrname);
}
else if(PyDict_Contains(pydict, key) > 0)
{
(*s) << propertyDescription->getUType();
log.push_back(propertyDescription->getUType());
propertyDescription->getDataType()->addToStream(s, PyDict_GetItem(pydict, key));
DEBUG_PERSISTENT_PROPERTY("addBasePersistentsDataToStream", attrname);
}
else
{
CRITICAL_MSG("%s::addPersistentsDataToStream: %d not found Persistent[%s].\n",
this->getScriptName(), this->getID(), attrname);
}
Py_DECREF(key);
}
}
Py_XDECREF(pydict);
}
示例2: addCellDataToStream
//-------------------------------------------------------------------------------------
void Base::addCellDataToStream(uint32 flags, MemoryStream* s, bool useAliasID)
{
addPositionAndDirectionToStream(*s, useAliasID);
if (!cellDataDict_)
return;
ScriptDefModule::PROPERTYDESCRIPTION_MAP& propertyDescrs = pScriptModule_->getCellPropertyDescriptions();
ScriptDefModule::PROPERTYDESCRIPTION_MAP::const_iterator iter = propertyDescrs.begin();
for(; iter != propertyDescrs.end(); ++iter)
{
PropertyDescription* propertyDescription = iter->second;
if(flags == 0 || (flags & propertyDescription->getFlags()) > 0)
{
PyObject* pyVal = PyDict_GetItemString(cellDataDict_, propertyDescription->getName());
if(useAliasID && pScriptModule_->usePropertyDescrAlias())
{
(*s) << propertyDescription->aliasIDAsUint8();
}
else
{
(*s) << propertyDescription->getUType();
}
if(!propertyDescription->getDataType()->isSameType(pyVal))
{
ERROR_MSG(fmt::format("{}::addCellDataToStream: {}({}) not is ({})!\n", this->scriptName(),
propertyDescription->getName(), (pyVal ? pyVal->ob_type->tp_name : "unknown"), propertyDescription->getDataType()->getName()));
PyObject* pydefval = propertyDescription->getDataType()->parseDefaultStr("");
propertyDescription->getDataType()->addToStream(s, pydefval);
Py_DECREF(pydefval);
}
else
{
propertyDescription->getDataType()->addToStream(s, pyVal);
}
if (PyErr_Occurred())
{
PyErr_PrintEx(0);
DEBUG_MSG(fmt::format("{}::addCellDataToStream: {} error!\n", this->scriptName(),
propertyDescription->getName()));
}
}
}
}
示例3: addCellDataToStream
//-------------------------------------------------------------------------------------
void Base::addCellDataToStream(uint32 flags, MemoryStream* s)
{
ScriptDefModule::PROPERTYDESCRIPTION_MAP& propertyDescrs = scriptModule_->getCellPropertyDescriptions();
ScriptDefModule::PROPERTYDESCRIPTION_MAP::const_iterator iter = propertyDescrs.begin();
for(; iter != propertyDescrs.end(); iter++)
{
PropertyDescription* propertyDescription = iter->second;
if((flags & propertyDescription->getFlags()) > 0)
{
PyObject* pyVal = PyDict_GetItemString(cellDataDict_, propertyDescription->getName());
(*s) << propertyDescription->getUType();
propertyDescription->getDataType()->addToStream(s, pyVal);
}
}
}
示例4: createCellDataDict
//-------------------------------------------------------------------------------------
PyObject* Base::createCellDataDict(uint32 flags)
{
PyObject* cellData = PyDict_New();
ScriptDefModule::PROPERTYDESCRIPTION_MAP& propertyDescrs = scriptModule_->getCellPropertyDescriptions();
ScriptDefModule::PROPERTYDESCRIPTION_MAP::const_iterator iter = propertyDescrs.begin();
for(; iter != propertyDescrs.end(); iter++)
{
PropertyDescription* propertyDescription = iter->second;
if((flags & propertyDescription->getFlags()) > 0)
{
PyObject* pyVal = PyDict_GetItemString(cellDataDict_, propertyDescription->getName());
PyDict_SetItemString(cellData, propertyDescription->getName(), pyVal);
}
}
return cellData;
}
示例5: addCellDataToStream
//-------------------------------------------------------------------------------------
void Entity::addCellDataToStream(uint32 flags, MemoryStream* mstream)
{
PyObject* cellData = PyObject_GetAttrString(this, "__dict__");
ScriptDefModule::PROPERTYDESCRIPTION_MAP& propertyDescrs =
scriptModule_->getCellPropertyDescriptions();
ScriptDefModule::PROPERTYDESCRIPTION_MAP::const_iterator iter = propertyDescrs.begin();
for(; iter != propertyDescrs.end(); iter++)
{
PropertyDescription* propertyDescription = iter->second;
if((flags & propertyDescription->getFlags()) > 0)
{
PyObject* pyVal = PyDict_GetItemString(cellData, propertyDescription->getName());
(*mstream) << propertyDescription->getUType();
propertyDescription->getDataType()->addToStream(mstream, pyVal);
}
}
Py_XDECREF(cellData);
SCRIPT_ERROR_CHECK();
}
示例6: addPersistentsDataToStream
//-------------------------------------------------------------------------------------
void Base::addPersistentsDataToStream(uint32 flags, MemoryStream* s)
{
std::vector<ENTITY_PROPERTY_UID> log;
// 再将base中存储属性取出
PyObject* pydict = PyObject_GetAttrString(this, "__dict__");
// 先将celldata中的存储属性取出
ScriptDefModule::PROPERTYDESCRIPTION_MAP& propertyDescrs = scriptModule_->getPersistentPropertyDescriptions();
ScriptDefModule::PROPERTYDESCRIPTION_MAP::const_iterator iter = propertyDescrs.begin();
if(scriptModule_->hasCell())
{
addPositionAndDirectionToStream(*s);
}
for(; iter != propertyDescrs.end(); ++iter)
{
PropertyDescription* propertyDescription = iter->second;
std::vector<ENTITY_PROPERTY_UID>::const_iterator finditer =
std::find(log.begin(), log.end(), propertyDescription->getUType());
if(finditer != log.end())
continue;
const char* attrname = propertyDescription->getName();
if(propertyDescription->isPersistent() && (flags & propertyDescription->getFlags()) > 0)
{
PyObject *key = PyUnicode_FromString(attrname);
if(cellDataDict_ != NULL && PyDict_Contains(cellDataDict_, key) > 0)
{
PyObject* pyVal = PyDict_GetItemString(cellDataDict_, attrname);
if(!propertyDescription->getDataType()->isSameType(pyVal))
{
CRITICAL_MSG(fmt::format("{}::addPersistentsDataToStream: {} persistent[{}] type(curr_py: {} != {}) is error.\n",
this->scriptName(), this->id(), attrname, (pyVal ? pyVal->ob_type->tp_name : "unknown"), propertyDescription->getDataType()->getName()));
}
else
{
(*s) << propertyDescription->getUType();
log.push_back(propertyDescription->getUType());
propertyDescription->addPersistentToStream(s, pyVal);
DEBUG_PERSISTENT_PROPERTY("addCellPersistentsDataToStream", attrname);
}
}
else if(PyDict_Contains(pydict, key) > 0)
{
PyObject* pyVal = PyDict_GetItem(pydict, key);
if(!propertyDescription->getDataType()->isSameType(pyVal))
{
CRITICAL_MSG(fmt::format("{}::addPersistentsDataToStream: {} persistent[{}] type(curr_py: {} != {}) is error.\n",
this->scriptName(), this->id(), attrname, (pyVal ? pyVal->ob_type->tp_name : "unknown"), propertyDescription->getDataType()->getName()));
}
else
{
(*s) << propertyDescription->getUType();
log.push_back(propertyDescription->getUType());
propertyDescription->addPersistentToStream(s, pyVal);
DEBUG_PERSISTENT_PROPERTY("addBasePersistentsDataToStream", attrname);
}
}
else
{
CRITICAL_MSG(fmt::format("{}::addPersistentsDataToStream: {} not found Persistent[{}].\n",
this->scriptName(), this->id(), attrname));
}
Py_DECREF(key);
}
SCRIPT_ERROR_CHECK();
}
Py_XDECREF(pydict);
SCRIPT_ERROR_CHECK();
}