Import Geant4 11.0.0.beta source tree
This commit is contained in:
+72
@@ -0,0 +1,72 @@
|
||||
// Copyright (C) 2010, Guy Barrand. All rights reserved.
|
||||
// See the file tools.license for terms.
|
||||
|
||||
#ifndef tools_raxml
|
||||
#define tools_raxml
|
||||
|
||||
#include <tools/xml/aidas>
|
||||
|
||||
#include "xml/loader"
|
||||
|
||||
namespace tools {
|
||||
|
||||
class raxml : public tools::xml::aidas, public xml::loader {
|
||||
typedef tools::xml::aidas parent_aidas;
|
||||
typedef xml::loader parent;
|
||||
public:
|
||||
raxml(tools::xml::factory& a_fac,std::ostream& a_out,bool a_verbose = false)
|
||||
:parent_aidas()
|
||||
,parent(a_fac,a_out,a_verbose)
|
||||
,m_read_tag(0)
|
||||
{
|
||||
set_default_tags(parent::m_tags);
|
||||
}
|
||||
virtual ~raxml() {}
|
||||
public:
|
||||
void set_read_tag(void* a_tag) {m_read_tag = a_tag;}
|
||||
protected:
|
||||
raxml(const raxml& a_from)
|
||||
:parent_aidas(a_from)
|
||||
,parent(a_from)
|
||||
{}
|
||||
raxml& operator=(const raxml& a_from){
|
||||
parent_aidas::operator=(a_from);
|
||||
parent::operator=(a_from);
|
||||
return *this;
|
||||
}
|
||||
public:
|
||||
bool load_file(const std::string& a_file,bool a_compressed){
|
||||
m_objects.clear();
|
||||
if(!parent::load_file(a_file,a_compressed)) return false;
|
||||
tools::xml::tree* top = top_item();
|
||||
if(!top) return false;
|
||||
const std::string& tag_name = top->tag_name();
|
||||
if(tag_name!=s_aida()) return false;
|
||||
|
||||
{tools::xml::looper _for(*top);
|
||||
while(tools::xml::tree* _tree = _for.next_tree()) {
|
||||
|
||||
const std::string& _tag_name = _tree->tag_name();
|
||||
reader rder = find_reader(_tag_name);
|
||||
if(!rder) {
|
||||
m_out << "tools::raxml::load_file :"
|
||||
<< " reader not found for " << tools::sout(_tag_name)
|
||||
<< std::endl;
|
||||
//m_objects.clear(); //keep already loaded objects.
|
||||
return false;
|
||||
} else {
|
||||
tools::raxml_out ro = rder(*_tree,m_out,m_verbose,m_read_tag);
|
||||
if(ro.object()) m_objects.push_back(ro);
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
return true;
|
||||
}
|
||||
protected:
|
||||
void* m_read_tag;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user