LCOV - code coverage report
Current view: top level - src/esys/repo/manifest - depends_manifest.cpp (source / functions) Hit Total Coverage
Test: esysrepo_coverage.info Lines: 33 63 52.4 %
Date: 2026-11-07 22:18:26 Functions: 12 17 70.6 %

          Line data    Source code
       1             : /*!
       2             :  * \file esys/repo/manifest/depends_manifest.cpp
       3             :  * \brief Repository depends edge (ADR-0022)
       4             :  *
       5             :  * \cond
       6             :  * __legal_b__
       7             :  *
       8             :  * Copyright (c) 2026 Michel Gillet
       9             :  * Distributed under the MIT License.
      10             :  * (See accompanying file LICENSE.txt or
      11             :  * copy at https://opensource.org/licenses/MIT)
      12             :  *
      13             :  * __legal_e__
      14             :  * \endcond
      15             :  *
      16             :  */
      17             : 
      18             : #include "esys/repo/esysrepo_prec.h"
      19             : #include "esys/repo/manifest/depends.h"
      20             : 
      21             : #include <sstream>
      22             : 
      23             : namespace esys::repo::manifest
      24             : {
      25             : 
      26           7 : Depends::Depends() = default;
      27             : 
      28           7 : Depends::~Depends() = default;
      29             : 
      30           7 : void Depends::set_selector(DependsSelector selector)
      31             : {
      32           7 :     m_selector = selector;
      33           7 : }
      34             : 
      35          26 : DependsSelector Depends::get_selector() const
      36             : {
      37          26 :     return m_selector;
      38             : }
      39             : 
      40           7 : void Depends::set_value(const std::string &value)
      41             : {
      42           7 :     m_value = value;
      43           7 : }
      44             : 
      45          25 : const std::string &Depends::get_value() const
      46             : {
      47          25 :     return m_value;
      48             : }
      49             : 
      50           6 : void Depends::set_resolved_path(const std::string &path)
      51             : {
      52           6 :     m_resolved_path = path;
      53           6 : }
      54             : 
      55          26 : const std::string &Depends::get_resolved_path() const
      56             : {
      57          26 :     return m_resolved_path;
      58             : }
      59             : 
      60           7 : void Depends::set_line_number(int line_number)
      61             : {
      62           7 :     m_line_number = line_number;
      63           7 : }
      64             : 
      65           1 : int Depends::get_line_number() const
      66             : {
      67           1 :     return m_line_number;
      68             : }
      69             : 
      70           0 : void Depends::clear()
      71             : {
      72           0 :     m_selector = DependsSelector::NOT_SET;
      73           0 :     m_value.clear();
      74           0 :     m_resolved_path.clear();
      75           0 :     m_line_number = -1;
      76           0 : }
      77             : 
      78           0 : bool Depends::operator==(const Depends &other) const
      79             : {
      80           0 :     return get_selector() == other.get_selector() && get_value() == other.get_value()
      81           0 :            && get_resolved_path() == other.get_resolved_path();
      82             : }
      83             : 
      84           0 : bool Depends::operator!=(const Depends &other) const
      85             : {
      86           0 :     return !operator==(other);
      87             : }
      88             : 
      89          10 : std::string to_string(DependsSelector selector)
      90             : {
      91          10 :     switch (selector)
      92             :     {
      93          10 :         case DependsSelector::PATH: return "path";
      94           0 :         case DependsSelector::NAME: return "name";
      95           0 :         case DependsSelector::PROJECT: return "project";
      96           0 :         case DependsSelector::URL: return "url";
      97           0 :         default: return "";
      98             :     }
      99             : }
     100             : 
     101           0 : bool depends_selector_from_string(const std::string &text, DependsSelector &selector)
     102             : {
     103           0 :     if (text == "path")
     104             :     {
     105           0 :         selector = DependsSelector::PATH;
     106           0 :         return true;
     107             :     }
     108           0 :     if (text == "name")
     109             :     {
     110           0 :         selector = DependsSelector::NAME;
     111           0 :         return true;
     112             :     }
     113           0 :     if (text == "project")
     114             :     {
     115           0 :         selector = DependsSelector::PROJECT;
     116           0 :         return true;
     117             :     }
     118           0 :     if (text == "url")
     119             :     {
     120           0 :         selector = DependsSelector::URL;
     121           0 :         return true;
     122             :     }
     123           0 :     selector = DependsSelector::NOT_SET;
     124           0 :     return false;
     125             : }
     126             : 
     127           7 : std::string format_depends_element(const Depends &edge)
     128             : {
     129           7 :     std::ostringstream oss;
     130           7 :     oss << "<depends";
     131           7 :     const std::string sel = to_string(edge.get_selector());
     132           7 :     if (!sel.empty()) oss << " " << sel << "=\"" << edge.get_value() << "\"";
     133           7 :     oss << ">";
     134          14 :     return oss.str();
     135           7 : }
     136             : 
     137             : } // namespace esys::repo::manifest

Generated by: LCOV version 1.14