LCOV - code coverage report
Current view: top level - oksdalgen/apps - class_info.hpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 27 0
Test Date: 2026-07-12 15:23:06 Functions: 0.0 % 8 0

            Line data    Source code
       1              : //
       2              : // DUNE DAQ modification notice:
       3              : // This file has been modified from the original ATLAS genconfig source for the DUNE DAQ project.
       4              : // Fork baseline commit: genconfig-03-10-00 (2021-04-26).
       5              : // Renamed since fork: yes (from src/class_info.h to apps/class_info.hpp).
       6              : //
       7              : 
       8              : #ifndef __OKSDALGEN_CLASS_INFO__
       9              : #define __OKSDALGEN_CLASS_INFO__
      10              : 
      11              : #include "oks/class.hpp"
      12              : 
      13              : #include <map>
      14              : #include <ostream>
      15              : #include <set>
      16              : #include <string>
      17              : 
      18              : namespace dunedaq {
      19              : namespace oksdalgen {
      20              : 
      21              : class ClassInfo {
      22              : 
      23              :   public:
      24              : 
      25              :     struct SortByName {
      26            0 :       bool operator() (const oks::OksClass * c1, const oks::OksClass * c2) const {
      27            0 :         return c1->get_name() < c2->get_name();
      28              :       }
      29              :     };
      30              : 
      31              :   typedef std::map<const oks::OksClass *, ClassInfo, SortByName> Map;
      32              : 
      33            0 :     ClassInfo() {};
      34              : 
      35            0 :     ClassInfo(const std::string& cpp_ns_name, const std::string& dir_prefix) :
      36            0 :       p_namespace (cpp_ns_name), p_include_prefix (dir_prefix) {};
      37              : 
      38            0 :     const std::string& get_namespace() const {return p_namespace;}
      39            0 :     const std::string& get_include_prefix() const {return p_include_prefix;}
      40              : 
      41              : 
      42              :   private:
      43              : 
      44              :     std::string p_namespace;
      45              :     std::string p_include_prefix;
      46              : 
      47              : };
      48              : 
      49              : struct NameSpaceInfo
      50              : {
      51              :   std::set<std::string> m_classes;
      52              :   std::map<std::string, NameSpaceInfo> m_nested;
      53              : 
      54              :   bool
      55            0 :   empty() const
      56              :   {
      57            0 :     return (m_classes.empty() && m_nested.empty());
      58              :   }
      59              : 
      60              :   void
      61            0 :   add(const std::string &ns_name, const std::string &class_name)
      62              :   {
      63            0 :     if (!ns_name.empty())
      64              :       {
      65            0 :         std::string::size_type idx = ns_name.find_first_of(':');
      66            0 :         NameSpaceInfo &ns = m_nested[ns_name.substr(0, idx)];
      67            0 :         if (idx != std::string::npos)
      68            0 :           ns.add(ns_name.substr(ns_name.find_first_not_of(':', idx)), class_name);
      69              :         else
      70            0 :           ns.add("", class_name);
      71              :       }
      72              :     else
      73            0 :       m_classes.insert(class_name);
      74            0 :   }
      75              : 
      76              :   void
      77            0 :   print(std::ostream &s, int level) const
      78              :   {
      79            0 :     std::string dx(level * 2, ' ');
      80              : 
      81            0 :     for (const auto &x : m_nested)
      82              :       {
      83            0 :         s << dx << "namespace " << x.first << " {\n";
      84            0 :         x.second.print(s, level + 1);
      85            0 :         s << dx << "}\n";
      86              :       }
      87              : 
      88            0 :     for (const auto &x : m_classes)
      89            0 :       s << dx << "class " << x << ";\n";
      90            0 :   }
      91              : };
      92              : 
      93              : } // namespace oksdalgen
      94              : } // namespace dunedaq
      95              : #endif
        

Generated by: LCOV version 2.0-1