LCOV - code coverage report
Current view: top level - base - EnumSelection.cxx (source / functions) Coverage Total Hit
Test: coverage.info Lines: 93.5 % 31 29
Test Date: 2025-06-29 01:25:44 Functions: 88.9 % 9 8

            Line data    Source code
       1              : // Copyright 2024, UChicago Argonne, LLC
       2              : // All Rights Reserved
       3              : // Software Name: NEML2 -- the New Engineering material Model Library, version 2
       4              : // By: Argonne National Laboratory
       5              : // OPEN SOURCE LICENSE (MIT)
       6              : //
       7              : // Permission is hereby granted, free of charge, to any person obtaining a copy
       8              : // of this software and associated documentation files (the "Software"), to deal
       9              : // in the Software without restriction, including without limitation the rights
      10              : // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      11              : // copies of the Software, and to permit persons to whom the Software is
      12              : // furnished to do so, subject to the following conditions:
      13              : //
      14              : // The above copyright notice and this permission notice shall be included in
      15              : // all copies or substantial portions of the Software.
      16              : //
      17              : // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      18              : // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      19              : // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      20              : // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      21              : // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      22              : // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
      23              : // THE SOFTWARE.
      24              : 
      25              : #include "neml2/base/EnumSelection.h"
      26              : #include "neml2/misc/assertions.h"
      27              : 
      28              : namespace neml2
      29              : {
      30              : std::ostream &
      31            1 : operator<<(std::ostream & os, const EnumSelection & es)
      32              : {
      33            1 :   os << std::string(es);
      34            1 :   return os;
      35              : }
      36              : 
      37              : std::stringstream &
      38           27 : operator>>(std::stringstream & ss, EnumSelection & es)
      39              : {
      40           27 :   es.select(ss.str());
      41           26 :   return ss;
      42              : }
      43              : 
      44           25 : EnumSelection::EnumSelection(const std::vector<std::string> & candidates,
      45           25 :                              const std::string & selection)
      46           49 :   : EnumSelectionBase(candidates)
      47              : {
      48           24 :   select(selection);
      49           25 : }
      50              : 
      51           16 : EnumSelection::EnumSelection(const std::vector<std::string> & candidates,
      52              :                              const std::vector<int> & values,
      53           16 :                              const std::string & selection)
      54           30 :   : EnumSelectionBase(candidates, values)
      55              : {
      56           14 :   select(selection);
      57           15 : }
      58              : 
      59              : bool
      60            7 : EnumSelection::operator==(const EnumSelection & other) const
      61              : {
      62            9 :   return _candidate_map == other._candidate_map && _selection == other._selection &&
      63            9 :          _value == other._value;
      64              : }
      65              : 
      66              : bool
      67            5 : EnumSelection::operator!=(const EnumSelection & other) const
      68              : {
      69            5 :   return !(*this == other);
      70              : }
      71              : 
      72              : bool
      73          363 : EnumSelection::operator==(const std::string & other) const
      74              : {
      75          363 :   return _selection == other;
      76              : }
      77              : 
      78              : bool
      79            0 : EnumSelection::operator!=(const std::string & other) const
      80              : {
      81            0 :   return !(*this == other);
      82              : }
      83              : 
      84              : void
      85           65 : EnumSelection::select(const std::string & selection)
      86              : {
      87           65 :   neml_assert(_candidate_map.count(selection),
      88              :               "Invalid selection for EnumSelection. Candidates are ",
      89          130 :               candidates_str());
      90           62 :   _selection = selection;
      91           62 :   _value = _candidate_map[selection];
      92           62 : }
      93              : } // namesace neml2
        

Generated by: LCOV version 2.0-1