LCOV - code coverage report
Current view: top level - src/esys/repo - resultcode.cpp (source / functions) Hit Total Coverage
Test: esysrepo_coverage.info Lines: 32 43 74.4 %
Date: 2026-08-01 10:43:40 Functions: 10 15 66.7 %

          Line data    Source code
       1             : /*!
       2             :  * \file esys/repo/resultcode.cpp
       3             :  * \brief
       4             :  *
       5             :  * \cond
       6             :  * __legal_b__
       7             :  *
       8             :  * Copyright (c) 2022 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/resultcode.h"
      20             : 
      21             : #include <cassert>
      22             : 
      23             : namespace esys::repo
      24             : {
      25             : 
      26             : int ResultCode::s_cur_id = -1;
      27             : std::map<int, std::string> ResultCode::s_map;
      28             : std::vector<int> ResultCode::s_ints;
      29             : 
      30           0 : int ResultCode::s_get_cur_id()
      31             : {
      32           0 :     return s_cur_id;
      33             : }
      34             : 
      35         122 : std::string ResultCode::s_find_name(int id)
      36             : {
      37         122 :     auto it = s_map.find(id);
      38         122 :     if (it == s_map.end()) return "";
      39             : 
      40         122 :     return it->second;
      41             : }
      42             : 
      43           0 : bool ResultCode::s_is_id(int id)
      44             : {
      45           0 :     return s_map.find(id) != s_map.end();
      46             : }
      47             : 
      48           2 : const std::vector<int> &ResultCode::s_get_ints()
      49             : {
      50           2 :     return s_ints;
      51             : }
      52             : 
      53          85 : ResultCode::ResultCode(const std::string &name)
      54             : {
      55          85 :     assert(s_is_id(s_cur_id) == false);
      56             : 
      57          85 :     m_id = s_cur_id--;
      58             : 
      59          85 :     s_map[m_id] = name;
      60          85 :     s_ints.push_back(m_id);
      61          85 : }
      62             : 
      63          12 : ResultCode::ResultCode(const std::string &name, int id)
      64          12 :     : m_id(id)
      65             : {
      66          12 :     assert(s_is_id(id) == false);
      67             : 
      68          12 :     s_cur_id = id - 1;
      69             : 
      70          12 :     s_map[m_id] = name;
      71          12 :     s_ints.push_back(m_id);
      72          12 : }
      73             : 
      74       42668 : ResultCode::~ResultCode() = default;
      75             : 
      76           0 : std::string ResultCode::get_name() const
      77             : {
      78           0 :     return s_find_name(get_id());
      79             : }
      80             : 
      81           0 : void ResultCode::set_id(int id)
      82             : {
      83           0 :     m_id = id;
      84           0 : }
      85             : 
      86       24452 : int ResultCode::get_id() const
      87             : {
      88       24452 :     return m_id;
      89             : }
      90             : 
      91         135 : ResultCode::operator int() const
      92             : {
      93         135 :     return m_id;
      94             : }
      95             : 
      96       11484 : ResultCode &ResultCode::operator=(const ResultCode &other)
      97             : {
      98       11484 :     if (&other == this) return *this;
      99             : 
     100       11484 :     m_id = other.get_id();
     101       11484 :     return *this;
     102             : }
     103             : 
     104        1665 : bool ResultCode::operator==(const ResultCode &result_code) const
     105             : {
     106        1665 :     return m_id == result_code.get_id();
     107             : }
     108             : 
     109       11303 : bool ResultCode::operator!=(const ResultCode &result_code) const
     110             : {
     111       11303 :     return m_id != result_code.get_id();
     112             : }
     113             : 
     114             : DEFINE_RESULT_CODE(OK, 0);
     115             : DEFINE_RESULT_CODE(GENERIC_ERROR);
     116             : DEFINE_RESULT_CODE(ERROR_OPENING_FILE);
     117             : DEFINE_RESULT_CODE(PATH_NOT_EXISTING);
     118             : DEFINE_RESULT_CODE(EMPTY_PATH);
     119             : DEFINE_RESULT_CODE(FILE_NOT_EXISTING);
     120             : DEFINE_RESULT_CODE(INTERNAL_ERROR);
     121             : DEFINE_RESULT_CODE(NOT_IMPLEMENTED);
     122             : DEFINE_RESULT_CODE(FOLDER_CREATION_ERROR);
     123             : DEFINE_RESULT_CODE(FAILED_TO_COPY);
     124             : DEFINE_RESULT_CODE(FAILED_TO_REMOVE_ALL);
     125             : DEFINE_RESULT_CODE(RAW_INT_ERROR);
     126             : DEFINE_RESULT_CODE(FOLDER_ALREADY_EXISTS);
     127             : DEFINE_RESULT_CODE(MANIFEST_IS_NULLPTR);
     128             : DEFINE_RESULT_CODE(CONFIG_FOLDER_IS_NULLPTR);
     129             : DEFINE_RESULT_CODE(GIT_IS_NULLPTR);
     130             : DEFINE_RESULT_CODE(JOB_COUNT_NEGATIVE);
     131             : DEFINE_RESULT_CODE(ERROR_VECTOR);
     132             : DEFINE_RESULT_CODE(NO_AUTHOR_GIVEN);
     133             : 
     134             : DEFINE_RESULT_CODE(CFGFILE_ERROR_PARSING_FILE, -100);
     135             : DEFINE_RESULT_CODE(CFGFILE_NO_MANIFEST_TYPE);
     136             : DEFINE_RESULT_CODE(CFGFILE_UNKNOWN_MANIFEST_TYPE);
     137             : DEFINE_RESULT_CODE(CFGFILE_NO_MANIFEST_URL);
     138             : DEFINE_RESULT_CODE(CFGFILE_UNKNOWN_MANIFEST_KIND);
     139             : DEFINE_RESULT_CODE(CFGFILE_UNKNOWN_MANIFEST_FORMAT);
     140             : 
     141             : DEFINE_RESULT_CODE(MANIFEST_ERROR_PARSING_FILE, -200);
     142             : DEFINE_RESULT_CODE(MANIFEST_NO_LOCATIONS_DEFINED);
     143             : DEFINE_RESULT_CODE(MANIFEST_ELEMENT_UNKNOWN);
     144             : DEFINE_RESULT_CODE(MANIFEST_ATTRIBUTE_UNKNOWN);
     145             : DEFINE_RESULT_CODE(MANIFEST_INCORRECT_ATTRIBUTE_VALUE);
     146             : DEFINE_RESULT_CODE(MANIFEST_NO_DEFAULT_LOCATION);
     147             : DEFINE_RESULT_CODE(MANIFEST_TYPE_UNKNOWN);
     148             : DEFINE_RESULT_CODE(MANIFEST_KIND_UNKNOWN);
     149             : DEFINE_RESULT_CODE(MANIFEST_FORMAT_UNKNOWN);
     150             : DEFINE_RESULT_CODE(MANIFEST_LOCATION_WITHOUT_NAME);
     151             : DEFINE_RESULT_CODE(MANIFEST_LOCATION_WITHOUT_ADDRESS);
     152             : DEFINE_RESULT_CODE(MANIFEST_REPOSITORY_WITHOUT_NAME);
     153             : DEFINE_RESULT_CODE(MANIFEST_REPOSITORY_WITHOUT_PATH);
     154             : DEFINE_RESULT_CODE(MANIFEST_GROUP_WITHOUT_NAME);
     155             : DEFINE_RESULT_CODE(MANIFEST_GROUP_REPO_WITHOUT_NAME);
     156             : DEFINE_RESULT_CODE(MANIFEST_GROUP_REPO_WITHOUT_PATH);
     157             : DEFINE_RESULT_CODE(MANIFEST_REPO_UNKNOWN);
     158             : DEFINE_RESULT_CODE(MANIFEST_FILE_EXT_UNKNOWN);
     159             : DEFINE_RESULT_CODE(MANIFEST_FAILED_TO_DETECT);
     160             : DEFINE_RESULT_CODE(MANIFEST_XML_DATA_NULLPTR);
     161             : DEFINE_RESULT_CODE(MANIFEST_REPOSITORY_WITHOUT_LOCATION);
     162             : DEFINE_RESULT_CODE(MANIFEST_FORMAT_NOT_SET);
     163             : 
     164             : DEFINE_RESULT_CODE(GREPO_FOLDER_NO_INCLUDE, -300);
     165             : 
     166             : DEFINE_RESULT_CODE(CMDINIT_NO_URL, -400);
     167             : DEFINE_RESULT_CODE(CMDINIT_FAILED_FETCH_UNKNOWN_MANIFEST);
     168             : 
     169             : DEFINE_RESULT_CODE(GIT_GENERIC_ERROR, -500);
     170             : DEFINE_RESULT_CODE(GIT_UNKNOWN_PROTOCOL);
     171             : DEFINE_RESULT_CODE(GIT_RAW_INT_ERROR);
     172             : DEFINE_RESULT_CODE(GIT_ERROR_OPENING_REPO);
     173             : DEFINE_RESULT_CODE(GIT_RESET_TYPE_NOT_SET);
     174             : DEFINE_RESULT_CODE(GIT_RESET_TYPE_UNKNOWN);
     175             : DEFINE_RESULT_CODE(GIT_NO_BRANCH_FOUND);
     176             : DEFINE_RESULT_CODE(GIT_REPO_NOT_OPEN);
     177             : DEFINE_RESULT_CODE(GIT_FIND_REF_FAILED);
     178             : DEFINE_RESULT_CODE(GIT_GET_HASH_FAILED);
     179             : DEFINE_RESULT_CODE(GIT_NO_PARENT);
     180             : DEFINE_RESULT_CODE(GIT_ALREADY_OPENED);
     181             : DEFINE_RESULT_CODE(GIT_SSH_BACKEND_NOT_SUPPORTED);
     182             : 
     183             : DEFINE_RESULT_CODE(CMD_INCORRECT_PARAMETERS_IN_CONTEXT, -600);
     184             : DEFINE_RESULT_CODE(CMD_INCORRECT_PARAMETERS_COMBINATION);
     185             : DEFINE_RESULT_CODE(CMD_MISSING_PARAMETERS);
     186             : DEFINE_RESULT_CODE(CMD_GENERIC_RAW_ERROR);
     187             : DEFINE_RESULT_CODE(CMD_NO_ESYSREPO_FOLDER_FOUND);
     188             : DEFINE_RESULT_CODE(CMD_CONFIG_FOLDER_NULLPTR);
     189             : DEFINE_RESULT_CODE(CMD_GIT_IS_NULLPTR);
     190             : DEFINE_RESULT_CODE(CMD_GIT_IS_NOT_OPENED);
     191             : DEFINE_RESULT_CODE(CMD_GIT_OPEN_FAILED);
     192             : DEFINE_RESULT_CODE(CMD_GIT_IS_DIRTY_FAILED);
     193             : DEFINE_RESULT_CODE(CMD_GIT_FETCH_FAILED);
     194             : DEFINE_RESULT_CODE(CMD_GIT_GET_HEAD_FAILED);
     195             : DEFINE_RESULT_CODE(CMD_GIT_MORE_THAN_ONE_COMMIT);
     196             : DEFINE_RESULT_CODE(CMD_WORKSPACE_PATH_IS_EMPTY);
     197             : 
     198             : DEFINE_RESULT_CODE(CMDSYNC_ABORTED_FOUND_CHANGES, -700);
     199             : DEFINE_RESULT_CODE(CMDSYNC_GIT_CAN_NOT_BE_FAST_FORWARDED);
     200             : 
     201             : DEFINE_RESULT_CODE(RUNTASKS_NO_TASK, -800);
     202             : 
     203             : DEFINE_RESULT_CODE(DIRECTORY_XML_DATA_NULLPTR, -900);
     204             : DEFINE_RESULT_CODE(DIRECTORY_XML_ERROR_PARSING_STREAM);
     205             : DEFINE_RESULT_CODE(DIRECTORY_XML_ERROR_PARSING_FILE);
     206             : DEFINE_RESULT_CODE(DIRECTORY_XML_ELEMENT_UNKNOWN);
     207             : DEFINE_RESULT_CODE(DIRECTORY_XML_MISSING_ATTR);
     208             : DEFINE_RESULT_CODE(DIRECTORY_XML_UNKNOWN_URL_TYPE);
     209             : 
     210             : DEFINE_RESULT_CODE(MULTI_XML_CAPTURE_NULLPTR, -1000);
     211             : DEFINE_RESULT_CODE(MULTI_ELEMENT_UNKNOWN);
     212             : DEFINE_RESULT_CODE(MULTI_REPOSITORY_WITHOUT_PATH);
     213             : DEFINE_RESULT_CODE(MULTI_REPOSITORY_WITHOUT_REV);
     214             : DEFINE_RESULT_CODE(MULTI_ERROR_PARSING_FILE);
     215             : DEFINE_RESULT_CODE(MULTI_ERROR_PARSING_STREAM);
     216             : 
     217             : DEFINE_RESULT_CODE(USERCONFIG_XML_DATA_NULLPTR, -1100);
     218             : DEFINE_RESULT_CODE(USERCONFIG_XML_ELEMENT_UNKNOWN);
     219             : DEFINE_RESULT_CODE(USERCONFIG_XML_MISSING_ELEMENT);
     220             : DEFINE_RESULT_CODE(USERCONFIG_XML_MISSING_ATTR);
     221             : DEFINE_RESULT_CODE(USERCONFIG_XML_UNKNOWN_ATTR_VALUE);
     222             : 
     223             : } // namespace esys::repo
     224             : 
     225             : namespace std
     226             : {
     227             : 
     228           0 : ESYSREPO_API ostream &operator<<(ostream &os, const esys::repo::ResultCode &result)
     229             : {
     230           0 :     return os;
     231             : }
     232             : 
     233             : } // namespace std

Generated by: LCOV version 1.14