diff --git a/DDAlign/include/DDAlign/DetectorAlignment.h b/DDAlign/include/DDAlign/DetectorAlignment.h index 66ad04f5eca58446da93c1b5f6789bd6c0afe7ae..dad90f60aa95cfb2b4f55b38aad968ea9d71d769 100644 --- a/DDAlign/include/DDAlign/DetectorAlignment.h +++ b/DDAlign/include/DDAlign/DetectorAlignment.h @@ -27,9 +27,6 @@ namespace DD4hep { /// Namespace for the geometry part of the AIDA detector description toolkit namespace Alignments { - // Forward declarations - class DetElement; - /// DetectorAlignment. DetElement Handle supporting alignment operations. /** * \author M.Frank diff --git a/DDCond/src/ConditionsInterna.cpp b/DDCond/src/ConditionsInterna.cpp index afbec6cbf0e4afbf01d6b0f080e8552a14df062f..0575f30e5ada844160e569a574a33bf40d56a71c 100644 --- a/DDCond/src/ConditionsInterna.cpp +++ b/DDCond/src/ConditionsInterna.cpp @@ -121,13 +121,6 @@ namespace { return false; } - void __print(const char* prefix, Condition c) { - if ( s_debug > INFO ) { - printout(INFO,"ConditionsManager","+++ %s %s [%s] = %s", - prefix, c.name().c_str(), c->iov->str().c_str(), c->value.c_str()); - } - } - template <typename PMF> void __callListeners(const ConditionsManagerObject::Listeners& listeners, PMF pmf, Condition& cond) { for(ConditionsManagerObject::Listeners::const_iterator i=listeners.begin(); i!=listeners.end(); ++i) { diff --git a/DDCore/include/DD4hep/Alignments.h b/DDCore/include/DD4hep/Alignments.h index efe10d2c4926dcba2f865c4c8e9e017c59b40b21..db96f00e64bc86aea3e936bd35cd684fe30f924b 100644 --- a/DDCore/include/DD4hep/Alignments.h +++ b/DDCore/include/DD4hep/Alignments.h @@ -33,7 +33,6 @@ namespace DD4hep { namespace Interna { /// Forward declarations class AlignmentContainer; - class AlignmentObject; } class AlignmentsManagerObject; class AlignmentsLoader; diff --git a/DDCore/include/DD4hep/Dictionary.h b/DDCore/include/DD4hep/Dictionary.h index b71153ac9acb6e15ed5591e1dbbd8b5f57293b5e..1317d38782f7630d96930a363267b270176d70e0 100644 --- a/DDCore/include/DD4hep/Dictionary.h +++ b/DDCore/include/DD4hep/Dictionary.h @@ -19,6 +19,13 @@ #ifndef DD4HEP_GEOMETRY_DICTIONARY_H #define DD4HEP_GEOMETRY_DICTIONARY_H +// Disable some diagnostics for ROOT dictionaries +#ifdef __GNUC__ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#pragma GCC diagnostic ignored "-Wdeprecated" +#pragma GCC diagnostic ignored "-Wunused" +#endif + #include "XML/Evaluator.h" #include "DD4hep/DetAlign.h" #include "DD4hep/DD4hepRootPersistency.h" diff --git a/DDCore/include/DD4hep/Memory.h b/DDCore/include/DD4hep/Memory.h index 6650983eba723bff395eb44fe1acbb1515eac739..076724308218744582a4b6d6c45767df598ae3d0 100644 --- a/DDCore/include/DD4hep/Memory.h +++ b/DDCore/include/DD4hep/Memory.h @@ -18,6 +18,11 @@ // Framework include files #include "RVersion.h" +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" // Code that causes warning goes here +#endif + // C/C++ include files #include <memory> @@ -75,4 +80,8 @@ namespace DD4hep { }; } +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif + #endif // DD4HEP_MEMORY_H diff --git a/DDCore/include/DD4hep/Primitives.h b/DDCore/include/DD4hep/Primitives.h index 86ab8d2aa9d1e49d9b7b395de4f874d46153db47..1dc02eb4c36baf876e2ec252d46e24d54a17ed17 100644 --- a/DDCore/include/DD4hep/Primitives.h +++ b/DDCore/include/DD4hep/Primitives.h @@ -58,24 +58,24 @@ namespace DD4hep { /// Generic copy constructor invalid_handle_exception(const std::exception& e) : std::runtime_error(e.what()) {} /// Default destructor of specialized exception - virtual ~invalid_handle_exception() throw(); + virtual ~invalid_handle_exception(); }; /// ABI information about type names std::string typeName(const std::type_info& type); - void typeinfoCheck(const std::type_info& typ1, const std::type_info& typ2, const std::string& text = "") throw(std::exception); + void typeinfoCheck(const std::type_info& typ1, const std::type_info& typ2, const std::string& text = ""); /// Throw exception when handles are check for validity - void invalidHandleError(const std::type_info& type) throw(std::exception); + void invalidHandleError(const std::type_info& type); /// Throw exception when handles are badly assigned - void invalidHandleAssignmentError(const std::type_info& from, const std::type_info& to) throw(std::exception); + void invalidHandleAssignmentError(const std::type_info& from, const std::type_info& to); /// Throw exception when handles are check for validity - template <typename T> void invalidHandleError() throw(std::exception) { + template <typename T> void invalidHandleError() { invalidHandleError(typeid(T)); } /// Throw exception when handles are check for validity - void notImplemented(const std::string& msg) throw(std::exception); + void notImplemented(const std::string& msg); /// A bit of support for printing primitives @@ -186,11 +186,11 @@ namespace DD4hep { } /// Apply cast using typeinfo instead of dynamic_cast - void* apply_dynCast(const ComponentCast& to, const void* ptr) const throw(std::exception); + void* apply_dynCast(const ComponentCast& to, const void* ptr) const; /// Apply cast using typeinfo instead of dynamic_cast - void* apply_upCast(const ComponentCast& to, const void* ptr) const throw(std::exception); + void* apply_upCast(const ComponentCast& to, const void* ptr) const; /// Apply cast using typeinfo instead of dynamic_cast - void* apply_downCast(const ComponentCast& to, const void* ptr) const throw(std::exception); + void* apply_downCast(const ComponentCast& to, const void* ptr) const; }; diff --git a/DDCore/include/DD4hep/Volumes.h b/DDCore/include/DD4hep/Volumes.h index 0cb30e36ab05ef9fa81332ca1bfe27944c945545..33414d7bdfa155b4bcd55fbdc5f58ec028653183 100644 --- a/DDCore/include/DD4hep/Volumes.h +++ b/DDCore/include/DD4hep/Volumes.h @@ -82,11 +82,20 @@ namespace DD4hep { class VolIDs: public std::vector<VolID> { public: typedef std::vector<VolID> Base; - VolIDs() : std::vector<VolID>() { - } - ~VolIDs() { + /// Default constructor + VolIDs() : std::vector<VolID>() {} + /// Copy constructor + VolIDs(const VolIDs& c) : std::vector<VolID>(c) {} + /// Destructor + ~VolIDs() {} + /// Assignment operator + VolIDs& operator=(const VolIDs& c) { + if ( &c != this ) this->std::vector<VolID>::operator=(c); + return *this; } + /// Find entry std::vector<VolID>::const_iterator find(const std::string& name) const; + /// Inert new entry std::pair<std::vector<VolID>::iterator, bool> insert(const std::string& name, int value); }; /// Magic word to detect memory corruptions diff --git a/DDCore/src/GlobalAlignment.cpp b/DDCore/src/GlobalAlignment.cpp index 44595a456190634dec7b24db3b7af8f1cdf0fa41..048f73ac263bc3d830e23c06c555cf131622ad3c 100644 --- a/DDCore/src/GlobalAlignment.cpp +++ b/DDCore/src/GlobalAlignment.cpp @@ -28,36 +28,6 @@ using namespace DD4hep; using namespace DD4hep::Alignments; namespace { - int _align(const GlobalAlignment& a, TGeoHMatrix* transform, bool check, double overlap) { - TGeoPhysicalNode* n = a.ptr(); - if ( n ) { - TGeoMatrix* mm = n->GetNode()->GetMatrix(); - transform->MultiplyLeft(mm); // orig * delta - n->Align(transform, 0, check, overlap); - /* - printout(INFO,"GlobalAlignment","OLD matrix...."); - mm->Print(); - printout(INFO,"GlobalAlignment","Apply new relative matrix mother to daughter:"); - transform->Print(); - transform->MultiplyLeft(mm); // orig * delta - printout(INFO,"GlobalAlignment","With deltas...."); - transform->Print(); - n->Align(transform, 0, check, overlap); - printout(INFO,"GlobalAlignment","NEW matrix...."); - n->GetNode()->GetMatrix()->Print(); - */ - /* - */ - printout(INFO,"GlobalAlignment","NEW matrix...."); - n->GetNode()->GetMatrix()->Print(); - Position local, global = a.toGlobal(local); - cout << "Local:" << local << " Global: " << global - << " and back:" << a.globalToLocal(global) << endl; - - return 1; - } - throw runtime_error("DD4hep: Cannot align non existing physical node. [Invalid Handle]"); - } struct CheckHandle { CheckHandle(const GlobalAlignment& a) { if ( a.isValid() ) return; diff --git a/DDCore/src/Primitives.cpp b/DDCore/src/Primitives.cpp index 62e7614c4aaad7e67276cd4be7cc84e1132d9054..4f595606c5a2542075717b093a2f49b0b10410cf 100644 --- a/DDCore/src/Primitives.cpp +++ b/DDCore/src/Primitives.cpp @@ -153,18 +153,16 @@ std::string DD4hep::typeName(const std::type_info& typ) { } /// Default destructor of specialized exception -DD4hep::invalid_handle_exception::~invalid_handle_exception() throw() { +DD4hep::invalid_handle_exception::~invalid_handle_exception() { } void DD4hep::invalidHandleError(const std::type_info& type) - throw(std::exception) { throw invalid_handle_exception("Attempt to access invalid object of type "+typeName(type)+" [Invalid Handle]"); } void DD4hep::invalidHandleAssignmentError(const std::type_info& from, const std::type_info& to) - throw(std::exception) { std::string msg = "Wrong assingment from "; msg += typeName(from); @@ -176,14 +174,12 @@ void DD4hep::invalidHandleAssignmentError(const std::type_info& from, /// Throw exception when handles are check for validity void DD4hep::notImplemented(const std::string& msg) - throw(std::exception) { std::string m = "The requested feature " + msg + " is not implemented!"; throw std::runtime_error(m); } void DD4hep::typeinfoCheck(const std::type_info& typ1, const std::type_info& typ2, const std::string& text) - throw(std::exception) { if (typ1 != typ2) { throw unrelated_type_error(typ1, typ2, text); @@ -289,7 +285,6 @@ static inline void* cast_wrap(const void* p, /// Apply cast using typeinfo instead of dynamic_cast void* DD4hep::ComponentCast::apply_dynCast(const ComponentCast& to, const void* ptr) const - throw(std::exception) { if (&to == this) { return (void*) ptr; @@ -330,7 +325,6 @@ void* DD4hep::ComponentCast::apply_dynCast(const ComponentCast& to, const void* /// Apply cast using typeinfo instead of dynamic_cast void* DD4hep::ComponentCast::apply_upCast(const ComponentCast& to, const void* ptr) const - throw(std::exception) { if (&to == this) { return (void*) ptr; @@ -340,7 +334,6 @@ void* DD4hep::ComponentCast::apply_upCast(const ComponentCast& to, const void* p /// Apply cast using typeinfo instead of dynamic_cast void* DD4hep::ComponentCast::apply_downCast(const ComponentCast& to, const void* ptr) const - throw(std::exception) { if (&to == this) { return (void*) ptr; diff --git a/DDCore/src/parsers/Grammars.h b/DDCore/src/parsers/Grammars.h deleted file mode 100644 index 1bccc8653d713ea44d32dcf1aaafd84e7c358a09..0000000000000000000000000000000000000000 --- a/DDCore/src/parsers/Grammars.h +++ /dev/null @@ -1,541 +0,0 @@ -// $Id: $ -//========================================================================== -// AIDA Detector description implementation for LCD -//-------------------------------------------------------------------------- -// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) -// All rights reserved. -// -// For the licensing terms see $DD4hepINSTALL/LICENSE. -// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. -// -//========================================================================== - -#ifndef DD4HEPKERNEL_GRAMMARS_H -#define DD4HEPKERNEL_GRAMMARS_H 1 -#ifdef __GNUC__ -#warning \ - The headers Grammars.h and Parsers.icpp are deprecated \ - and will be removed from the next release of Gaudi. You should migrate your \ - code the new pasers based on Boost.Spirit 2. -#endif -// ============================================================================ -// Include files -// ============================================================================ -// STD & STL -// ============================================================================ -#include <cctype> -// ============================================================================ -// Boost.Spirit -// ============================================================================ -#include <boost/version.hpp> -#if BOOST_VERSION >= 103800 -// FIXME: Move to the new boost::spirit::classic namespace -#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE) -#define BOOST_SPIRIT_USE_OLD_NAMESPACE -#endif -#include <boost/spirit/include/classic.hpp> -#include <boost/spirit/include/phoenix1.hpp> -#else -#include <boost/spirit.hpp> -#include <boost/spirit/phoenix.hpp> -#endif -#include <boost/bind.hpp> - -// ============================================================================ -/** @file - * Collection of grammars for property types - * - * @see Dd4hep::Parsers::parse - * @see Property - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-12 - */ -// ============================================================================ -namespace DD4hep -{ - namespace Parsers - { - // ======================================================================== - using namespace boost::spirit ; - // ======================================================================== - using namespace phoenix ; - // ======================================================================== - /** @struct ClosureGrammar - * Grammar or grammar rule which derive from this struct will have - * attribute of type <c>T</c> and name <c>val</c> - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-14 - */ - template <typename T> - struct ClosureGrammar : public boost::spirit::closure < ClosureGrammar<T>,T > - { - typedef boost::spirit::closure<ClosureGrammar, T> closure; - typename closure::member1 val; - }; - // ======================================================================== - /** @struct AttributesClosureGrammar - * - * Grammar or grammar rule which derive from this struct will have - * two attributes: type <c>T1</c> and name <c>val</c>, type <c>T2</c> - * and name <c>attrs</c> - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-14 - */ - template <typename T1,typename T2> - struct AttributesClosureGrammar - : public boost::spirit::closure<AttributesClosureGrammar<T1,T2>,T1,T2> - { - typedef boost::spirit::closure<AttributesClosureGrammar, T1,T2> closure; - typename closure::member1 val; - typename closure::member2 attrs; - }; - // ======================================================================== - /** @class BoolGrammar - * - * The valid represenation of boolean values are: - * - * - true , True , TRUE or 1 - * - false , False , FALSE or 0 - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-14 - */ - class BoolGrammar : public grammar - < - BoolGrammar, - ClosureGrammar<bool>::context_t - > - { - public: - typedef bool ResultT; - public: - template <typename ScannerT> - struct definition - { - definition( BoolGrammar const &self) - { - boolean_literal - = true_literal[self.val = true] | false_literal[self.val = false]; - true_literal - = str_p("true" ) | str_p("True" ) | str_p("TRUE" ) | str_p("1"); - false_literal - = str_p("false") | str_p("False") | str_p("FALSE") | str_p("0"); - } - rule<ScannerT> const& start() const - { return boolean_literal;} - rule<ScannerT> boolean_literal,true_literal,false_literal; - }; - }; - // ======================================================================== - /** @class CharGrammar - * - * The valid represenation of char values are: - * - * - 'a', 'b','\'' - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-14 - */ - template<typename RT=char> - class CharGrammar : public grammar - < - CharGrammar<RT> , typename ClosureGrammar<RT>::context_t - > - { - public: - typedef RT ResultT; - public: - template <typename ScannerT> - struct definition - { - definition( CharGrammar<RT> const &self) - { - char_literal - = int_parser<RT>()[self.val=arg1] - | ('\'' - >> ( str_p("\\'")[self.val='\''] - | (anychar_p[self.val=arg1]-'\'') )>>'\''); - } - rule<ScannerT> const& start() const - { return char_literal; } - rule<ScannerT> char_literal; - }; - }; - // ======================================================================== - /** @class IntGrammar - * - * The valid representation of integers values are: - * - * - 1, 100, 123 - * - * @todo implement suffixes u U l L - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-14 - */ - template<typename RT=int> - class IntGrammar : public grammar - < - IntGrammar<RT>, - typename ClosureGrammar<RT>::context_t - > - { - public: - typedef RT ResultT; - public: - template <typename ScannerT> - struct definition - { - definition( IntGrammar<RT> const &self) - { - int_literal = lexeme_d[int_parser<RT>()[self.val=arg1] - >> !(ch_p('u') | ch_p('U') | ch_p('l') | ch_p('L'))]; - } - rule<ScannerT> const& start() const { return int_literal; } - rule<ScannerT> int_literal; - }; - }; - // ======================================================================== - /** @class RealGrammar - * - * The valid represenation of real values are: - * - * - 1, 1.0 ,1.123, 1E+2, 0.5e-2 - * - * @todo implement suffixes f l F L - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-14 - */ - template<typename RT=double> - class RealGrammar : public grammar - < - RealGrammar<RT>,typename ClosureGrammar<RT>::context_t - > - { - public: - typedef RT ResultT; - public: - template <typename ScannerT> - struct definition - { - definition( RealGrammar const &self) - { - real_literal - = lexeme_d[real_parser<RT, - real_parser_policies<RT> >()[self.val = arg1] - >> !(ch_p('f') | ch_p('F') | ch_p('l') | ch_p('L'))]; - } - rule<ScannerT> const& start() const - { return real_literal; } - rule<ScannerT> real_literal; - }; - }; - // ======================================================================== - /** @class StringGrammar - * - * The valid represenation of string values are: - * - * - "abc" , "\"abc\"" - * - 'abs' , '\'abc\'' - * - * @todo implement not ASCII chars in strings - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-14 - */ - - class StringGrammar : public grammar - < - StringGrammar, ClosureGrammar<std::string>::context_t - > - { - public: - typedef std::string ResultT; - /** remove CR/LF symbols form the parsed strings - * @attention it is a bit dangerous operation - * The operation allows to write "very long" input strings - * for opts-files (it is actual e.g. for DataOnDemandSvc configuration) - * by splitting the strings into few lines - * All new-line symbols (as well as '\n', '\t', CR/LF etc - * are substituted by ordinary blanks. - */ - void matchString() const - { - for ( std::string::iterator cur=this->val().begin(); - cur!=this->val().end();cur++) - { if(std::isspace(*cur) ) { *cur = ' '; } } - } - public: - template <typename ScannerT> - struct definition - { - definition( StringGrammar const &self ) - { - string_literal = (lexeme_d - [ - ('"' >> (*( str_p("\\\"") - | - (anychar_p-'"') )) - [self.val = construct_<std::string> - (arg1,arg2)] >> - '"') - | - ('\'' >> (*( str_p("\\'") - | - (anychar_p-'\'') )) - [self.val = construct_<std::string> - (arg1,arg2)]>> - '\'')])[boost::bind(&StringGrammar::matchString,&self)]; - } - rule<ScannerT> const& start() const { return string_literal; } - rule<ScannerT> string_literal; - }; - }; - // ======================================================================== - /** @class SkipperGrammar - * - * Skipping spaces and comments. Comments can be - * - * - // ... - one line - * - \/\* ... \*\/ - multiline - * - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-14 - */ - class SkipperGrammar : public grammar<SkipperGrammar> - { - public: - /** Constructor - * @param skipnewline Skip new line symbols or not - */ - SkipperGrammar ( const bool skipnewline = true ) - : m_skipnewline(skipnewline){} - public: - /// @return true - skip new line symbols, false - not skip - bool skipnewline() const{return m_skipnewline;} - public: - template <typename ScannerT> - struct definition - { - definition( SkipperGrammar const& self) - { - if ( self.skipnewline() ) - { - skip - = space_p - | comment_p("//") // C++ comment - | comment_p("/*", "*/") // C comment - ; - } - else - { - skip - = (space_p-eol_p) - | comment_p("//") // C++ comment - | comment_p("/*", "*/") // C comment - ; - } - } - rule<ScannerT> skip; - rule<ScannerT> const& start() const { return skip; } - }; - private: - bool m_skipnewline; - }; - // ======================================================================== - /** @class PairGrammar - * - * The valid represenation of pairs are: - * ("abc",123) or ("abc","def") - * Inner types of pair depends on KeyGrammarT and ValueGrammarT grammars - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-14 - */ - template <typename KeyGrammarT, typename ValueGrammarT> - class PairGrammar : public grammar - < - PairGrammar<KeyGrammarT,ValueGrammarT>, - typename ClosureGrammar< - std::pair<typename KeyGrammarT::ResultT, - typename ValueGrammarT::ResultT> >::context_t - > - { - public: - typedef typename KeyGrammarT::ResultT KeyT; - typedef typename ValueGrammarT::ResultT ValueT; - typedef std::pair<KeyT,ValueT> ResultT; - public: - /** Constructor - * @param delim Delimiter for pair values - */ - PairGrammar ( const std::string& delim = "," ) - : m_delim(delim) {} - public: - /// callback. Action when we match first value - void matchFirst ( const KeyT& first ) const { this->val().first = first; } - /// callback. Action when we match second value - void matchSecond ( const ValueT& second ) const { this->val().second = second; } - public: - template <typename ScannerT> - struct definition - { - definition( PairGrammar const &self) - { - para - = ( - str_p("(") - >> (grkey[boost::bind(&PairGrammar::matchFirst,&self,_1)]) - >> self.delim().c_str() - >> (grvalue[boost::bind(&PairGrammar::matchSecond,&self,_1)]) - >> str_p(")") - ) ; - } - rule<ScannerT> const& start() const { return para; } - rule<ScannerT> para; - KeyGrammarT grkey; - ValueGrammarT grvalue; - }; - public: - /// @return Delimiter for pair values - const std::string& delim() const { return m_delim ; } - /** Set delimiters for pair values - * @param delim Delimiter - */ - void setDelim ( const std::string& delim ) { m_delim = delim;} - private: - std::string m_delim; - }; - // ======================================================================== - /** @class VectorGrammar - * - * The valid represenation of vector are: - * - {"abc","defj","i"} or {1,2,3,4,5} - * - ["abc","defj","i"] or [1,2,3,4,5] - * Inner type depends on GrammarT grammar - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-14 - */ - template <typename GrammarT> - class VectorGrammar : public grammar - < - VectorGrammar<GrammarT> , - typename ClosureGrammar<std::vector<typename GrammarT::ResultT> >::context_t - > - { - public: - typedef typename GrammarT::ResultT ValueT; - typedef std::vector<ValueT> ResultT; - typedef VectorGrammar<GrammarT> SelfT; - public: - /// callback. Action when we match inner value - void matchItem(const ValueT& value) const { this->val().push_back(value); } - public: - template <typename ScannerT> - struct definition - { - definition(SelfT const &self) - { - inner = - !(gr[boost::bind(&VectorGrammar::matchItem,&self,_1)] - >> *(','>>gr[boost::bind(&VectorGrammar::matchItem,&self,_1)])); - vec = - '[' >> inner >> ']' | // a'la python list - '(' >> inner >> ')' | // a'la python tuple - '{' >> inner >> '}' ; // like obsolete list from opts-grammar - } - rule<ScannerT> const& start() const { return vec; } - rule<ScannerT> vec,inner; - GrammarT gr; - }; - }; - // ======================================================================== - /** @class MapGrammar - * - * The valid represenation of map are: - * - {"file1":"path1","something":"nothing"} - * - {"file1"="path1","something"="nothing"} - * - ["file1":10,"something":20] - * - ["file1"=30,"something"=40] - * Inner key type depends on KeyGrammarT grammar - * Inner value type depends on ValueGrammarT grammar - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-14 - */ - template <typename KeyGrammarT, typename ValueGrammarT> - class MapGrammar : public grammar - < - MapGrammar<KeyGrammarT,ValueGrammarT>, - typename AttributesClosureGrammar - < std::map<typename KeyGrammarT::ResultT, - typename ValueGrammarT::ResultT>, - std::pair<typename KeyGrammarT::ResultT, - typename ValueGrammarT::ResultT> >::context_t - > - { - public: - typedef typename KeyGrammarT::ResultT KeyT; - typedef typename ValueGrammarT::ResultT ValueT; - typedef std::map<KeyT,ValueT> ResultT; - public: - /// call backs. Action when we match pair in map - void matchItem () const - { - //this->val().insert(this->attrs()); - this->val()[this->attrs().first] = this->attrs().second ; - } - /// call backs. Action when we match key of pair - void matchFirst ( const KeyT& value ) const { this->attrs().first = value ; } - /// call backs. Action when we match value pf pair - void matchSecond( const ValueT& value ) const { this->attrs().second = value ; } - public: - template <typename ScannerT> - struct definition - { - definition( MapGrammar const &self) - { - vec - = ('{'>> inner_list >> '}') | ('['>>inner_list>>']'); - inner_list - = - !( inner[boost::bind(&MapGrammar::matchItem,&self)] - >> *( ch_p(',') >> - inner[boost::bind(&MapGrammar::matchItem,&self)] ) - ); - inner - = - grKey[boost ::bind(&MapGrammar::matchFirst,&self,_1)] - >> ( ch_p('=') | ch_p(':')) - >> grValue[boost::bind(&MapGrammar::matchSecond,&self,_1)] ; - } - KeyGrammarT grKey; - ValueGrammarT grValue; - rule<ScannerT> const& start() const { return vec; } - rule<ScannerT> vec,inner, inner_list ; - }; - }; - // ======================================================================== - } // end of namespace Dd4hep::Parsers -} // end of namespace Dd4hep -// ============================================================================ -// The END -// ============================================================================ -#endif // DD4HEPKERNEL_GRAMMARS_H -// ============================================================================ diff --git a/DDCore/src/parsers/Parsers.icpp b/DDCore/src/parsers/Parsers.icpp deleted file mode 100644 index 55eaf8bf3122ea4f2fe7bad32ec480aaec6b8f70..0000000000000000000000000000000000000000 --- a/DDCore/src/parsers/Parsers.icpp +++ /dev/null @@ -1,241 +0,0 @@ -// $Id: $ -//========================================================================== -// AIDA Detector description implementation for LCD -//-------------------------------------------------------------------------- -// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) -// All rights reserved. -// -// For the licensing terms see $DD4hepINSTALL/LICENSE. -// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. -// -//========================================================================== -#ifndef DD4HEP_PARSERS_ICPP -#define DD4HEP_PARSERS_ICPP 1 -// ============================================================================ -// Include files -// ============================================================================ -// STD&STL -// ============================================================================ -#include <vector> -#include <map> -#include <string> -// ============================================================================ -// Boost.Bind -// ============================================================================ -#include "boost/bind.hpp" -// ============================================================================ -// Boost.Spirit, Boost.Spirit.Phoenix -// ============================================================================ -#include <boost/version.hpp> -#if BOOST_VERSION >= 103800 -// FIXME: Move to the new boost::spirit::classic namespace -#if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE) -#define BOOST_SPIRIT_USE_OLD_NAMESPACE -#endif -#include <boost/spirit/include/classic.hpp> -#include <boost/spirit/include/phoenix1.hpp> -#else -#include <boost/spirit.hpp> -#include <boost/spirit/phoenix.hpp> -#endif -// ============================================================================ -// DD4hepKernel -// ============================================================================ -#include "DD4hep/Parsers.h" -#include "Grammars.h" -// ============================================================================ -/** @file - * - * Helper inline functions for implementation of real parsing function - * from the namespace DD4hep::Parsers - * - * For adding new type you should have only grammar class which recognize - * this type. Then by combining this grammar with such already implemented - * grammars like VectorGrammar, MapGrammar, PairGrammar you can very simply - * implement container types which will work with your type. - * - * If you want your type can be handled in property file - see ValueGrammar - * in JobOptionsSvc which lays in DD4hepCoreSvc. - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-12 - */ -// ============================================================================ -namespace DD4hep { - namespace Parsers { - using namespace std; - using namespace boost::spirit ; - - /// the actual type of position iterator - typedef boost::spirit::position_iterator<string::const_iterator> IteratorT; - - /// create the position iterator from the input - inline IteratorT createIterator( const std::string& input) - { return IteratorT ( input.begin(), input.end() ) ; } - - // ======================================================================== - /** helper function to "merge" the implementation of all parsers - * for integer-like quantities into one templated grammar - * @see DD4hep::Parsers::IntGrammar - * - * @param result (output) parsing result - * @param input (input) string to be parsed - * @return status code - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-12 - */ - // ======================================================================== - template<typename IntegerT> - inline StatusCode parse_integer - (IntegerT& result,const string& input) - { - IntGrammar<IntegerT> g; - return parse - ( createIterator(input), - IteratorT(), - g[var(result)=arg1]).full; - } - // ======================================================================== - /** helper function to "merge" the implementation of all parsers - * for vector of integer-like quantities - * into the combination of templated grammars - * @see DD4hep::Parsers::VectorGrammar - * @see DD4hep::Parsers::IntGrammar - * @see DD4hep::Parsers::SkipperGrammar - * - * @param result (output) parsing result - * @param input (input) string to be parsed - * @return status code - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-12 - */ - // ======================================================================== - template<typename IntegerT> - inline StatusCode parse_integer_vector - ( std::vector<IntegerT>& result,const string& input) - { - VectorGrammar<IntGrammar<IntegerT> > g; - return parse - ( createIterator(input), - IteratorT(), - g[var(result)=arg1], - SkipperGrammar()).full; - } - // ======================================================================== - /** helper function to "merge" the implementation of all parsers - * for "char-like" quantities into one templated grammar - * @see DD4hep::Parsers::CharGrammar - * - * @param result (output) parsing result - * @param input (input) string to be parsed - * @return status code - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-12 - */ - // ======================================================================== - template<typename CharT> - inline StatusCode parse_char - ( CharT& result , const string& input ) - { - CharGrammar<CharT> g; - return parse - ( createIterator(input), - IteratorT(), - g[var(result)=arg1]).full; - } - // ======================================================================== - /** helper function to "merge" the implementation of all parsers - * for vector of 'char-like' quantities - * into the combination of templated grammars - * @see DD4hep::Parsers::VectorGrammar - * @see DD4hep::Parsers::CharGrammar - * @see DD4hep::Parsers::SkipperGrammar - * - * @param result (output) parsing result - * @param input (input) string to be parsed - * @return status code - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-12 - */ - // ======================================================================== - template<typename CharT> - inline StatusCode parse_char_vector - (std::vector<CharT>& result,const string& input) - { - VectorGrammar<CharGrammar<CharT> > g; - return parse - ( createIterator(input), - IteratorT(), - g[var(result)=arg1], - SkipperGrammar()).full; - } - // ======================================================================== - /** helper function to "merge" the implementation of all parsers - * for "float-like" quantities into one templated grammar - * @see DD4hep::Parsers::RealGrammar - * - * @param result (output) parsing result - * @param input (input) string to be parsed - * @return status code - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-12 - */ - template<typename RealT> - inline StatusCode parse_real - ( RealT& result , const string& input) - { - RealGrammar<RealT> g; - return parse - ( createIterator(input), - IteratorT(), - g[var(result)=arg1], - SkipperGrammar()).full; - } - // ======================================================================== - /** helper function to "merge" the implementation of all parsers - * for vector of 'char-like' quantities - * into the combination of templated grammars - * @see DD4hep::Parsers::VectorGrammar - * @see DD4hep::Parsers::RealGrammar - * @see DD4hep::Parsers::SkipperGrammar - * - * @param result (output) parsing result - * @param input (input) string to be parsed - * @return status code - * - * @author Alexander MAZUROV Alexander.Mazurov@gmail.com - * @author Vanya BELYAEV ibelyaev@physics.syr.edu - * @date 2006-05-12 - */ - // ======================================================================== - template<typename RealT> - StatusCode parse_real_vector - ( std::vector<RealT>& result,const string& input) - { - VectorGrammar< RealGrammar<RealT> > g; - return parse - ( createIterator(input), - IteratorT(), - g[var(result)=arg1], - SkipperGrammar()).full; - } - } // end of namespace Parsers -} // end of namespace DD4hep -// ============================================================================ -#endif -// ============================================================================ -// The END -// ============================================================================ - - diff --git a/DDG4/include/DDG4/DDG4Dict.h b/DDG4/include/DDG4/DDG4Dict.h index 0acbe9301ae39a4a5fc5c7a6aa3e23f64078f04a..7e4619e9bb827e87db64a6b26cf5578525bd69e1 100644 --- a/DDG4/include/DDG4/DDG4Dict.h +++ b/DDG4/include/DDG4/DDG4Dict.h @@ -19,6 +19,13 @@ #ifndef DD4HEP_DDG4_DDG4DICT_H #define DD4HEP_DDG4_DDG4DICT_H +// Disable some diagnostics for ROOT dictionaries +#ifdef __GNUC__ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#pragma GCC diagnostic ignored "-Wdeprecated" +#pragma GCC diagnostic ignored "-Wunused" +#endif + // FRamework include files #include "DDG4/Geant4Data.h" #include "DDG4/Geant4Particle.h" diff --git a/DDG4/python/DDG4Dict.C b/DDG4/python/DDG4Dict.C index e72c310ff1e8bf8d67475fcf83179af9fa99b212..bcba966b2e3062f06e07a9a88de2477f918eb59a 100644 --- a/DDG4/python/DDG4Dict.C +++ b/DDG4/python/DDG4Dict.C @@ -16,7 +16,15 @@ // Author : M.Frank // //==================================================================== -// FRamework include files + +// Disable some diagnostics for ROOT dictionaries +#ifdef __GNUC__ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#pragma GCC diagnostic ignored "-Wdeprecated" +#pragma GCC diagnostic ignored "-Wunused" +#endif + +// Framework include files #include "DDG4/Geant4Config.h" #include "DDG4/Geant4Primary.h" #include "DDG4/Geant4Random.h" diff --git a/UtilityApps/src/converter.cpp b/UtilityApps/src/converter.cpp index 9b28e4790a3bbfb88573785582f157dc27294e6e..52b85870044be554bb1cb747e4df5cc6202b5ee9 100644 --- a/UtilityApps/src/converter.cpp +++ b/UtilityApps/src/converter.cpp @@ -11,6 +11,9 @@ // Author : M.Frank // //========================================================================== +#ifdef __GNUC__ +#pragma GCC diagnostic ignored "-Wunused-function" +#endif // Framework include files #include "run_plugin.h" @@ -103,3 +106,4 @@ int main(int argc,char** argv) { if ( destroy ) delete &lcdd; return 0; } + diff --git a/UtilityApps/src/plugin_runner.cpp b/UtilityApps/src/plugin_runner.cpp index 698f8f99ac924ebf88b876627a2eda0e354fd4c5..447f92a7d2be605a422a8f5a5bbcff786e1e1f95 100644 --- a/UtilityApps/src/plugin_runner.cpp +++ b/UtilityApps/src/plugin_runner.cpp @@ -11,6 +11,9 @@ // Author : M.Frank // //========================================================================== +#ifdef __GNUC__ +#pragma GCC diagnostic ignored "-Wunused-function" +#endif // Framework include files #include "run_plugin.h" @@ -19,8 +22,11 @@ namespace { void usage() { cout << "geoPluginRun -opt [-opt] \n" - " -plugin <name> [REQUIRED] Plugin to be executed and applied. \n" - " -input <file> [OPTIONAL] Specify geometry input file. \n"; + " -input <file> [OPTIONAL] Specify geometry input file. \n" + " -plugin <name> <args> [args] \n" + " [REQUIRED] Plugin to be executed and applied. \n" + " -plugin <name> <args> [args] \n" + " [OPTIONAL] Next plugin with arguments. \n"; print_default_args() << endl; exit(EINVAL); } diff --git a/cmake/DD4hepBuild.cmake b/cmake/DD4hepBuild.cmake index 504dd7eac403e3a38ac6ca698ac13f97d15ce8c0..3876dbb130529c0505cb8e0ca81fa2b6450e54d2 100644 --- a/cmake/DD4hepBuild.cmake +++ b/cmake/DD4hepBuild.cmake @@ -25,17 +25,18 @@ endmacro(dd4hep_to_parent_scope) macro(dd4hep_set_compiler_flags) if ( DD4HEP_USE_CXX14 ) - set ( CMAKE_CXX_FLAGS "-std=c++14 -ftls-model=global-dynamic -Wall -Wextra -pedantic -Wshadow -Wformat-security -Wno-long-long -Wdeprecated") + set ( CMAKE_CXX_FLAGS "-std=c++14 -ftls-model=global-dynamic") set ( DD4HEP_USE_CXX11 OFF ) set ( DD4HEP_USE_STDCXX 14 ) add_definitions(-DDD4HEP_USE_STDCXX=14) elseif ( DD4HEP_USE_CXX11 ) - set ( CMAKE_CXX_FLAGS "-std=c++11 -ftls-model=global-dynamic -Wall -Wextra -pedantic -Wshadow -Wformat-security -Wno-long-long -Wdeprecated") + set ( CMAKE_CXX_FLAGS "-std=c++11 -ftls-model=global-dynamic") set ( DD4HEP_USE_STDCXX 11 ) add_definitions(-DDD4HEP_USE_STDCXX=11) else() - set( CMAKE_CXX_FLAGS "-Wall -Wextra -pedantic -Wshadow -Wformat-security -Wno-long-long -Wdeprecated") + set( CMAKE_CXX_FLAGS ) endif() + set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wformat-security -Wno-long-long -Wdeprecated") if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9)