本文整理汇总了C++中GetFieldHandlePtr::isValid方法的典型用法代码示例。如果您正苦于以下问题:C++ GetFieldHandlePtr::isValid方法的具体用法?C++ GetFieldHandlePtr::isValid怎么用?C++ GetFieldHandlePtr::isValid使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GetFieldHandlePtr
的用法示例。
在下文中一共展示了GetFieldHandlePtr::isValid方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: deepClone
FieldContainerTransitPtr deepClone(
OSG::FieldContainer const *src,
const std::vector<const OSG::ReflexiveContainerType *> &shareTypes,
const std::vector<const OSG::ReflexiveContainerType *> &ignoreTypes,
const std::vector<OSG::UInt16> &shareGroupIds,
const std::vector<OSG::UInt16> &ignoreGroupIds)
{
if(src == NULL)
return FieldContainerTransitPtr(NULL);
const FieldContainerType &fcType = src->getType();
FieldContainerTransitPtr fcClone = fcType.createContainer();
UInt32 fCount = osgMin(fcType .getNumFieldDescs(),
fcClone->getType().getNumFieldDescs() );
for(UInt32 i = 1; i <= fCount; ++i)
{
const FieldDescriptionBase *fDesc = fcType.getFieldDesc(i);
if(fDesc->isInternal())
continue;
GetFieldHandlePtr srcField = src ->getField (i);
EditFieldHandlePtr dstField = fcClone->editField(i);
if(dstField == NULL || dstField->isValid() == false ||
srcField == NULL || srcField->isValid() == false)
{
continue;
}
if(srcField->isPointerField() == false)
{
dstField->copyValues(srcField);
}
else
{
dstField->cloneValues(srcField,
shareTypes,
ignoreTypes,
shareGroupIds,
ignoreGroupIds);
}
}
return fcClone;
}
示例2: visitField
void OSGWriter::visitField(GetFieldHandlePtr hF)
{
if(hF->isValid() == false)
{
return;
}
// const FieldType &fType = hF->getType();
GetMapFieldHandlePtr sfMap =
boost::dynamic_pointer_cast<
GetMapFieldHandle>(hF);
if(sfMap != NULL && sfMap->isValid() == true)
{
sfMap->traverse(boost::bind(&OSGWriter::visitContainer, this, _1));
}
else
{
FieldContainerPtrSFieldBase::GetHandlePtr sfFCPtr =
boost::dynamic_pointer_cast<
FieldContainerPtrSFieldBase::GetHandle>(hF);
FieldContainerPtrMFieldBase::GetHandlePtr mfFCPtr =
boost::dynamic_pointer_cast<
FieldContainerPtrMFieldBase::GetHandle>(hF);
if(sfFCPtr != NULL && sfFCPtr->isValid() == true)
{
visitContainer((*sfFCPtr)->getValue());
}
else if(mfFCPtr != NULL && mfFCPtr->isValid() == true)
{
SizeT mfSize = (*mfFCPtr)->size();
for(SizeT i = 0; i < mfSize; i++)
{
visitContainer((**mfFCPtr)[i]);
}
}
}
}
示例3: doLog
void CSMLogger::doLog(FieldContainer *pContainer,
BitVector bvFlags ,
UInt32 origin ,
UInt32 uiRefFieldId,
BitVector uiRefFieldMask)
{
if(0x0000 != (bvFlags & uiRefFieldMask) && _sfEnabled.getValue() == true)
{
GetFieldHandlePtr pFH = pContainer->getField(uiRefFieldId);
if(pFH && pFH->isValid() == true)
{
static CErrOutStream cerrStream;
const FieldDescriptionBase *pDesc =
pContainer->getFieldDescription(uiRefFieldId);
AttachmentContainer *pAtt =
dynamic_cast<AttachmentContainer *>(pContainer);
if(pAtt != NULL)
{
const Char8 *szName = getName(pAtt);
if(szName != NULL)
{
cerrStream << "[" << szName << "]:";
}
}
cerrStream << pContainer->getType().getName()
<< "."
<< pDesc->getName()
<< " : ";
pFH->pushValueToStream(cerrStream);
cerrStream << std::endl;
}
}
}
示例4: addConnection
OSG_BEGIN_NAMESPACE
/*---------------------------------------------------------------------*/
/*! \name Connection handling */
/*! \{ */
/*! \ingroup GrpBaseFieldContainerConnector
\relatesalso AttachmentContainer
*/
bool addConnection( OSG::AttachmentContainer *pSrcContainer,
const OSG::Char8 *szSrcName,
OSG::FieldContainer *pDstContainer,
const OSG::Char8 *szDstName )
{
if(pSrcContainer == NULL || szSrcName == NULL ||
pDstContainer == NULL || szDstName == NULL )
{
return false;
}
const FieldDescriptionBase *pSrcDesc = NULL;
const FieldDescriptionBase *pDstDesc = NULL;
GetFieldHandlePtr pSrcHnd = pSrcContainer->getField(szSrcName);
GetFieldHandlePtr pDstHnd = pDstContainer->getField(szDstName);
if(pSrcHnd != NULL && pSrcHnd->isValid() == true)
{
pSrcDesc = pSrcHnd->getDescription();
}
if(pDstHnd != NULL && pDstHnd->isValid() == true)
{
pDstDesc = pDstHnd->getDescription();
}
// check core for node
if(pSrcDesc == NULL)
{
Node *pNode = dynamic_cast<Node *>(pSrcContainer);
if(pNode != NULL && pNode->getCore() != NULL)
{
pSrcHnd = pNode->getCore()->getField(szSrcName);
if(pSrcHnd != NULL && pSrcHnd->isValid() == true)
{
pSrcDesc = pSrcHnd->getDescription();
}
}
}
// same here
if(pDstDesc == NULL)
{
Node *pNode = dynamic_cast<Node *>(pDstContainer);
if(pNode != NULL && pNode->getCore() != NULL)
{
pDstHnd = pNode->getCore()->getField(szDstName);
if(pDstHnd != NULL && pDstHnd->isValid() == true)
{
pDstDesc = pDstHnd->getDescription();
}
}
}
if(pSrcDesc == NULL || pDstDesc == NULL)
{
FWARNING(("addConnection: Failed to obtain field descriptions for "
"source container [%p] field [%s] desc [%p] - "
"destination container [%p] field [%s] desc [%p]\n",
static_cast<void *>(pSrcContainer),
szSrcName,
static_cast<const void *>(pSrcDesc),
static_cast<void *>(pDstContainer),
szDstName,
static_cast<const void *>(pDstDesc) ));
return false;
}
const Field *pSrcField = pSrcHnd->getField();
Field *pDstField = const_cast<Field *>(pDstHnd->getField());
pSrcContainer =
dynamic_cast<AttachmentContainer *>(pSrcHnd->getContainer());
pDstContainer =
dynamic_cast<FieldContainer *>(pDstHnd->getContainer());
if(pSrcContainer == NULL || pDstContainer == NULL)
{
FWARNING(("addConnection: Failed to obtain field handles for "
"source container [%p] - destination container [%p]\n",
static_cast<void *>(pSrcContainer),
static_cast<void *>(pDstContainer)));
//.........这里部分代码省略.........
示例5: subConnection
bool subConnection( OSG::AttachmentContainer *pSrcContainer,
const OSG::Char8 *szSrcName,
OSG::FieldContainer *pDstContainer,
const OSG::Char8 *szDstName )
{
if(pSrcContainer == NULL)
{
return false;
}
const FieldDescriptionBase *pSrcDesc = NULL;
GetFieldHandlePtr pSrcHnd;
if(szSrcName != NULL)
{
pSrcHnd = pSrcContainer->getField(szSrcName);
if(pSrcHnd != NULL && pSrcHnd->isValid() == true)
{
pSrcDesc = pSrcHnd->getDescription();
}
// check core for node
if(pSrcDesc == NULL)
{
Node *pNode = dynamic_cast<Node *>(pSrcContainer);
if(pNode != NULL && pNode->getCore() != NULL)
{
pSrcHnd = pNode->getCore()->getField(szSrcName);
if(pSrcHnd != NULL && pSrcHnd->isValid() == true)
{
pSrcDesc = pSrcHnd->getDescription();
}
}
}
}
const FieldDescriptionBase *pDstDesc = NULL;
GetFieldHandlePtr pDstHnd;
if(pDstContainer != NULL && szDstName != NULL)
{
pDstHnd = pDstContainer->getField(szDstName);
if(pDstHnd != NULL && pDstHnd->isValid() == true)
{
pDstDesc = pDstHnd->getDescription();
}
// same here
if(pDstDesc == NULL)
{
Node *pNode = dynamic_cast<Node *>(pDstContainer);
if(pNode != NULL && pNode->getCore() != NULL)
{
pDstHnd = pNode->getCore()->getField(szDstName);
if(pDstHnd != NULL && pDstHnd->isValid() == true)
{
pDstDesc = pDstHnd->getDescription();
}
}
}
}
#if 0
if(pSrcDesc == NULL)
{
FWARNING(("subConnection: Failed to obtain field description for: "
"source container [%p] field [%s]\n",
pSrcContainer, szSrcName));
return false;
}
#endif
BitVector bSrcMask = TypeTraits<BitVector>::BitsClear;
BitVector bDstMask = TypeTraits<BitVector>::BitsClear;
if(pSrcDesc != NULL)
{
bSrcMask = pSrcDesc->getFieldMask();
pSrcContainer =
dynamic_cast<AttachmentContainer *>(pSrcHnd->getContainer());
}
else if(szSrcName == NULL)
{
bSrcMask = TypeTraits<BitVector>::BitsSet;
}
if(pDstDesc != NULL)
//.........这里部分代码省略.........
示例6: execute
void SetFieldValueCommand::execute(void)
{
//Check for a valid Field Container
if(_FC == NULL)
{
SWARNING << "FieldContainer is NULL." << std::endl;
return;
}
//Check for valid Field
GetFieldHandlePtr TheFieldHandle = _FC->getField(_FieldId);
if(!TheFieldHandle->isValid())
{
SWARNING << "No Field with Id: " << _FieldId << " in FieldContainers of type " << _FC->getType().getName() << std::endl;
return;
}
//Check for valid indexing
if(TheFieldHandle->getCardinality() == FieldType::SingleField && _Index != 0)
{
SWARNING << "Cannot reference index " << _Index << ", on field " << TheFieldHandle->getDescription()->getName()
<< ", on FieldContianer of type " << _FC->getType().getName()
<< " because that field is a SingleField." << std::endl;
return;
}
else if(TheFieldHandle->getCardinality() == FieldType::MultiField && _Index >= TheFieldHandle->size())
{
SWARNING << "Cannot set the value of index " << _Index << ", on field " << TheFieldHandle->getDescription()->getName()
<< ", on FieldContianer of type " << _FC->getType().getName()
<< " because that field has size " << TheFieldHandle->size() << std::endl;
return;
}
//Get the previous value
if(_PrevValue.empty())
{
std::ostringstream StrStream;
OutStream TheOutStream(StrStream);
if(TheFieldHandle->getCardinality() == FieldType::SingleField)
{
if(TheFieldHandle->isPointerField())
{
_PrevPtrValue = dynamic_cast<GetSFieldHandle<FieldContainerPtrSFieldBase>*>(TheFieldHandle.get())->get();
if(dynamic_cast<GetSFieldHandle<FieldContainerPtrSFieldBase>*>(TheFieldHandle.get())->get())
{
_PrevValue = boost::lexical_cast<std::string>(dynamic_cast<GetSFieldHandle<FieldContainerPtrSFieldBase>*>(TheFieldHandle.get())->get()->getId());
}
else
{
_PrevValue = "0";
}
}
else
{
TheFieldHandle->pushValueToStream(TheOutStream);
_PrevValue = StrStream.str();
}
}
else
{
if(TheFieldHandle->isPointerField())
{
_PrevPtrValue = dynamic_cast<GetMFieldHandle<FieldContainerPtrMFieldBase>*>(TheFieldHandle.get())->get(_Index);
if(_PrevPtrValue)
{
_PrevValue = boost::lexical_cast<std::string>(dynamic_cast<GetMFieldHandle<FieldContainerPtrMFieldBase>*>(TheFieldHandle.get())->get(_Index)->getId());
}
else
{
_PrevValue = "0";
}
}
else
{
TheFieldHandle->pushIndexedValueToStream(TheOutStream, _Index);
_PrevValue = StrStream.str();
}
}
//Remove quotes from strings
if(TheFieldHandle->getType().getContentType() == FieldTraits<std::string>::getType())
{
_PrevValue = _PrevValue.substr(1,StrStream.str().size()-2);
}
}
//Set the value
if(TheFieldHandle->getCardinality() == FieldType::SingleField)
{
if(TheFieldHandle->isPointerField())
{
_PtrValue = FieldContainerFactory::the()->getContainer(boost::lexical_cast<UInt32>(_Value));
//Check the pointer types match
if(_PtrValue != NULL &&
!isFieldContentDerivedFrom(TheFieldHandle->getType(),&_PtrValue->getType()))
{
SWARNING << "Cannot set the value of field " << TheFieldHandle->getDescription()->getName()
<< ", on FieldContianer of type " << _FC->getType().getName()
//.........这里部分代码省略.........
示例7: beginFieldDecl
void OSGLoader::beginFieldDecl(const Char8 *szFieldType,
const UInt32 uiFieldTypeId,
const Char8 *szFieldName )
{
UInt32 uiOSGFieldTypeId = mapIntExtFieldType(szFieldName, uiFieldTypeId);
DynFieldContainerInterface *pIf =
dynamic_cast<DynFieldContainerInterface *>(_pCurrentFC.get());
if(pIf != NULL)
{
GetFieldHandlePtr pField = _pCurrentFC->getField(szFieldName);
if(pField == NULL || pField->isValid() == false)
{
if(uiFieldTypeId == 0)
{
pIf->addField(szFieldType, szFieldName);
}
else
{
pIf->addField(uiOSGFieldTypeId, szFieldName);
}
}
_pCurrentField = _pCurrentFC->editField(szFieldName);
_pCurrentFieldDesc =
_pCurrentFC->getType().getFieldDesc(szFieldName);
}
else
{
AttachmentContainer *pAttCnt =
dynamic_cast<AttachmentContainer *>(_pCurrentFC.get());
if(pAttCnt != NULL)
{
OSGGenericAttUnrecPtr pGenAtt =
dynamic_cast<OSGGenericAtt *>(
pAttCnt->findAttachment(OSGGenericAtt::getClassGroupId()));
if(pGenAtt == NULL)
{
pGenAtt = OSGGenericAtt::create();
pAttCnt->addAttachment(pGenAtt);
}
GetFieldHandlePtr pField = pGenAtt->getField(szFieldName);
if(pField == NULL || pField->isValid() == false)
{
if(uiFieldTypeId == 0)
{
// pGenAtt->addField(szFieldType, szFieldName);
}
else
{
pGenAtt->addField(uiOSGFieldTypeId, szFieldName);
}
}
_pCurrentField = pGenAtt->editField(szFieldName);
_pCurrentFieldDesc =
pGenAtt->getType().getFieldDesc(szFieldName);
}
}
_fStack.push (_pCurrentField);
_fdStack.push(_pCurrentFieldDesc);
}
示例8: writeField
void OSGWriter::writeField(GetFieldHandlePtr hF)
{
if(hF->isValid() == false)
{
return;
}
// const FieldType& fType = hF->getType();
GetMapFieldHandlePtr sfMap =
boost::dynamic_pointer_cast<
GetMapFieldHandle>(hF);
FieldContainerPtrSFieldBase::GetHandlePtr sfFCPtr =
boost::dynamic_pointer_cast<FieldContainerPtrSFieldBase::GetHandle>(hF);
FieldContainerPtrMFieldBase::GetHandlePtr mfFCPtr =
boost::dynamic_pointer_cast<FieldContainerPtrMFieldBase::GetHandle>(hF);
if(sfMap != NULL && sfMap->isValid() == true)
{
_outStream << BeginElem
<< hF->getName();
//if the Attachment Map is empty write [] as its content
if(sfMap->empty() == true)
{
_outStream << " [ ] " << EndElemNL;
}
else
{
_outStream << EndElemNL
<< BeginElem
<< "["
<< EndElemNL;
_outStream << IncIndent;
EditMapFieldHandle::MapList fcList;
sfMap->flatten(fcList);
EditMapFieldHandle::MapList::iterator iter = fcList.begin();
EditMapFieldHandle::MapList::iterator end = fcList.end ();
for(; iter!=end; ++iter)
{
_outStream << BeginElem
<< "MapHelper"
<< EndElemNL
<< BeginElem
<< "{"
<< EndElemNL;
_outStream << IncIndent;
_outStream << BeginElem
<< "keys"
<< EndElemNL
<< BeginElem
<< "["
<< EndElemNL;
_outStream << IncIndent;
std::vector<std::string>::const_iterator kIt =
iter->first.begin();
std::vector<std::string>::const_iterator kEnd =
iter->first.end();
for(; kIt != kEnd; ++kIt)
{
_outStream << BeginElem
<< "\""
<< *kIt
<< "\""
<< EndElemNL;
}
_outStream << DecIndent;
_outStream << BeginElem
<< "]"
<< EndElemNL;
_outStream << BeginElem
<< "container ";
if(iter->second == NULL)
{
_outStream << "NULL"
<< EndElemNL;
}
else
{
writeContainer(iter->second, false);
_outStream << EndElemNL;
}
//.........这里部分代码省略.........