本文整理汇总了C++中Mapping::getIfAvailable方法的典型用法代码示例。如果您正苦于以下问题:C++ Mapping::getIfAvailable方法的具体用法?C++ Mapping::getIfAvailable怎么用?C++ Mapping::getIfAvailable使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mapping
的用法示例。
在下文中一共展示了Mapping::getIfAvailable方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: resContext
/*
loads and configures components
in a SysContext
@param doc the DOMDocument
@return SysContext the system context where all components are loaded into
*/
RefCountedPtr<SysContext>
SysComponentLoader::createComponentContext(
const DOMDocument* doc )
{
RefCountedPtr<SysContext> resContext(new SysContext);
std::vector<DOMProcessingInstruction*> pis;
DomUtils::findProcessingInstructions( doc, TARGET_NAME, pis );
// map of components to their configuration
std::map< RefCountedPtr<iSysComponent>, DOMElement* > luckyComponents;
for ( std::vector<DOMProcessingInstruction*>::const_iterator it = pis.begin();
it != pis.end(); it++ )
{
// check to see if the processing instruction has the
// following attributes:
// "component-name" - name of the class to create
// "component-config" - path of the config tree for the component
//
Mapping attrs;
if ( DomUtils::getAttributes( (*it), attrs ) )
{
String cmpName;
attrs.getIfAvailable(CMP_NAME_ATTR, cmpName);
RefCountedPtr<iSysComponent> cmp( SysComponentFactory::createObject( cmpName ) );
if ( cmp != NULL )
{
// locate it's configuration and call it to initialize
DOMElement* xmlNode = NULL;
String xmlIsland;
attrs.getIfAvailable(CMP_CFG_ATTR, xmlIsland);
if ( xmlIsland.length() > 0 )
{
const DOMNode* theNode = (const DOMNode*)doc->getDocumentElement();
DomUtils::selectSingleNode( theNode, xmlIsland, (DOMNode**)&xmlNode );
}
int initRes = cmp->init( xmlNode, resContext );
if ( initRes == 0 )
{
resContext->addComponent( cmp );
luckyComponents[ cmp ] = xmlNode;
}
}
}
}
// now post initialize the components that were successfully initialized
for ( std::map< RefCountedPtr<iSysComponent>, DOMElement* >::iterator lit = luckyComponents.begin();
lit != luckyComponents.end(); lit++ )
{
(*lit).first->postInit( (*lit).second, resContext );
}
return resContext;
}
示例2:
void
SysComponentLoader::updateComponentContext(
RefCountedPtr<SysContext> &ctx,
const DOMDocument* doc )
{
std::vector<DOMProcessingInstruction*> pis;
DomUtils::findProcessingInstructions( doc, TARGET_NAME, pis );
for ( std::vector<DOMProcessingInstruction*>::const_iterator it = pis.begin();
it != pis.end(); it++ )
{
// check to see if the processing instruction has the
// following attributes:
// "component-name" - name of the class to create
// "component-config" - path of the config tree for the component
//
Mapping attrs;
if ( DomUtils::getAttributes( (*it), attrs ) )
{
String cmpName;
attrs.getIfAvailable(CMP_NAME_ATTR, cmpName);
RefCountedPtr<iSysComponent> cmp = ctx->getComponent( cmpName );
if ( cmp != NULL )
{
// locate it's configuration and call it to initialize
String xmlIsland;
attrs.getIfAvailable(CMP_CFG_ATTR, xmlIsland);
if ( xmlIsland.length() > 0 )
{
const DOMNode* theNode = (const DOMNode*)doc->getDocumentElement();
DOMElement* xmlNode = NULL;
DomUtils::selectSingleNode( theNode, xmlIsland, (DOMNode**)&xmlNode );
cmp->update( xmlNode );
}
}
}
}
}
示例3: root
int
SysPathMgr::init(
const DOMNode* config,
RefCountedPtr<SysContext>& ctx )
{
int res = -1;
REFCOUNTED_CAST(iSysComponent, StdLogger, ctx->getComponent( StdLogger::getRegistryName()), _logger);
// I expect the config node to be an element node
if ( ( config != NULL ) && ( config->getNodeType() == DOMNode::ELEMENT_NODE ) )
{
// set the root to be the current directory by default
String root(NTEXT("."));
Mapping rootAttrs;
if ( DomUtils::getNodeValue( (const DOMElement*)config, NULL, &rootAttrs ) )
{
rootAttrs.getIfAvailable(SYS_PATH_ROOTATTR, root);
}
// resolve whatever we have in the root and then verify a file does not exist
// in place of the intended directory
_root = FileUtils::resolve( root );
FileAttributes fattrs;
if ( !FileUtils::getAttributes( _root, fattrs ) )
{
if (!FileUtils::mkdirs( _root ))
{
CBLOGERR(_logger, NTEXT("SysPathMgr::init: could not create directory '") + _root + NTEXT("'"));
return -1;
}
// update the file attributes with another call to get info in the directory
FileUtils::getAttributes( _root, fattrs );
}
if (!fattrs.isDirectory())
{
CBLOGERR(_logger, NTEXT("SysPathMgr::init: found a file where a directory '") + _root + NTEXT("' was expected"));
return -1;
}
// put a special key with the root attribute in the map
_paths[ SYS_PATH_IND + SYS_PATH_ROOTATTR ] = _root;
// ok to this point, no errors
res = 0;
// iterate through the list of child elements whose tag is SYS_PATH_ENTRY
// and get the name attribute and value. If all is found properly, then
// construct a counter whose value is retrieved from the config node
DOMNodeList* children = DomUtils::getNodeList( (const DOMElement*)config, SYS_PATH_ENTRY );
if ( children != NULL )
{
for ( XMLSize_t i = 0, sz = children->getLength() ;
i < sz; i++ )
{
DOMNode* child = children->item(i);
if ( (child != NULL) && (child->getNodeType() == DOMNode::ELEMENT_NODE) )
{
String value;
Mapping attrs;
bool found = DomUtils::getNodeValue( (const DOMElement*)child, &value, &attrs );
if ( found )
{
res = 0;
String tagName;
attrs.getIfAvailable(SYS_PATH_TAGATTR, tagName);
if ( tagName.length() > 0 )
{
add( tagName, value );
}
}
}
}
}
}
return res;
}