All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Analyzer.cpp File Reference
#include <iostream>
#include <boost/foreach.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/format.hpp>
#include "Analyzer.h"
#include "Parser.h"
#include "Messages.h"
#include "Catalog.h"
#include "Units.h"
#include "PragmaOptions.h"
#include "Node.h"
#include "IncludedFiles.h"
#include "PropertyName.h"
#include "PropertyValue.h"
#include "GaudiKernel/Environment.h"
Include dependency graph for Analyzer.cpp:

Go to the source code of this file.

Functions

bool Unreference (gp::Catalog &catalog, gp::Messages *messages)
 

Function Documentation

bool Unreference ( gp::Catalog &  catalog,
gp::Messages *  messages 
)

Definition at line 413 of file Analyzer.cpp.

{
bool unreference_result = true;
BOOST_FOREACH(gp::Catalog::value_type& client, catalog) {
for (gp::Catalog::CatalogSet::mapped_type::iterator current
= client.second.begin(); current != client.second.end();
++current) {
if (current->IsReference()) {
gp::PropertyValue& value = current->property_value();
std::vector<std::string> names = value.Vector();
gp::Property* property = catalog.Find(names[0], names[1]);
if (NULL == property) {
messages->AddError(value.position(),
"Could not unreference " + current->ValueAsString());
unreference_result = false;
}else{
value = property->property_value();
}
}
}
}
return unreference_result;
}