The Gaudi Framework  v40r0 (475e45c1)
SVectorAsProperty.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2025 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 #pragma once
12 
14 #include <Math/SVector.h>
15 #include <algorithm>
16 #include <vector>
17 
28 namespace Gaudi {
29  namespace Parsers {
37  template <class SCALAR, unsigned int N>
38  StatusCode parse( ROOT::Math::SVector<SCALAR, N>& result, std::string_view input ) {
39  std::vector<double> tmp;
40  StatusCode sc = parse( tmp, input );
41  if ( sc.isFailure() ) { return sc; }
42  if ( N != tmp.size() ) { return StatusCode::FAILURE; }
43 #ifdef WIN32
44 // Disable warning
45 // C4996: 'std::copy': Function call with parameters that may be unsafe
46 // The parameters are checked
47 # pragma warning( push )
48 # pragma warning( disable : 4996 )
49 #endif
50  std::copy( tmp.begin(), tmp.end(), result.begin() );
51 #ifdef WIN32
52 # pragma warning( pop )
53 #endif
54  return StatusCode::SUCCESS;
55  }
56  } // namespace Parsers
57 
58  namespace Utils {
59  template <class SCALAR>
60  std::ostream& toStream( const SCALAR&, std::ostream& );
65  template <class SCALAR, unsigned int N>
66  std::ostream& toStream( const ROOT::Math::SVector<SCALAR, N>& obj, std::ostream& s ) {
67  s << "( ";
68  for ( auto cur = obj.begin(); obj.end() != cur; ++cur ) {
69  if ( obj.begin() != cur ) { s << " , "; }
70  toStream( *cur, s );
71  }
72  return s << " )";
73  }
74  } // namespace Utils
75 } // namespace Gaudi
IOTest.N
N
Definition: IOTest.py:112
Gaudi::Parsers::parse
StatusCode parse(GaudiUtils::HashMap< K, V > &result, std::string_view input)
Basic parser for the types of HashMap used in DODBasicMapper.
Definition: DODBasicMapper.cpp:21
gaudirun.s
string s
Definition: gaudirun.py:346
StatusCode
Definition: StatusCode.h:64
Gaudi
This file provides a Grammar for the type Gaudi::Accumulators::Axis It allows to use that type from p...
Definition: __init__.py:1
StatusCode::isFailure
bool isFailure() const
Definition: StatusCode.h:129
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:99
CommonParsers.h
Gaudi::Utils::toStream
std::ostream & toStream(ITERATOR first, ITERATOR last, std::ostream &s, const std::string &open, const std::string &close, const std::string &delim)
the helper function to print the sequence
Definition: ToStream.h:304
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:100