The Gaudi Framework  v36r9p1 (5c15b2bb)
HbookName.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 #ifndef GAUDIALG_HBOOKNAME_H
12 #define GAUDIALG_HBOOKNAME_H 1
13 // Include files
14 #include <algorithm>
15 #include <string>
16 
26 namespace {
41  inline std::string dirHbookName( const std::string& addr, const int maxLen = 16 ) {
42  // ignore empty locations
43  if ( addr.empty() ) { return std::string(); }
44  //
45  std::string old( addr );
46  // remove long names
47  if ( 0 < maxLen && maxLen < (int)old.size() ) {
48  auto p1 = old.begin();
49  const char sep( '/' );
50  while ( old.end() != p1 ) {
51  p1 = std::find_if( p1, old.end(), [&]( const char& c ) { return c != sep; } );
52  auto p2 = std::find( p1, old.end(), sep );
53  if ( ( p2 - p1 ) <= (int)maxLen ) {
54  p1 = p2;
55  continue;
56  }
57  old.insert( p1 + maxLen, sep );
58  p1 = old.begin();
59  }
60  }
62  return old;
63  }
64 
65 } // end of anonymous namespace
66 
67 // ============================================================================
68 // The END
69 // ============================================================================
70 #endif // GAUDIALG_HBOOKNAME_H
std::string
STL class.
AlgSequencer.p2
p2
Definition: AlgSequencer.py:31
std::find_if
T find_if(T... args)
gaudirun.c
c
Definition: gaudirun.py:525
AlgSequencer.p1
p1
Definition: AlgSequencer.py:30
std::string::empty
T empty(T... args)