Line data Source code
1 : //* This file is part of the MOOSE framework
2 : //* https://mooseframework.inl.gov
3 : //*
4 : //* All rights reserved, see COPYRIGHT for full restrictions
5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 : //*
7 : //* Licensed under LGPL 2.1, please see LICENSE for details
8 : //* https://www.gnu.org/licenses/lgpl-2.1.html
9 :
10 : #include "FileLineInfo.h"
11 :
12 132255845 : FileLineInfo::FileLineInfo() : _line(-1) {}
13 :
14 132250920 : FileLineInfo::FileLineInfo(const std::string & f, int l) : _line(l), _file(f) {}
15 :
16 : bool
17 132728201 : FileLineInfo::isValid() const
18 : {
19 132728201 : return !_file.empty() && _line >= 0;
20 : }
21 :
22 : int
23 473311 : FileLineInfo::line() const
24 : {
25 473311 : return _line;
26 : }
27 :
28 : std::string
29 473311 : FileLineInfo::file() const
30 : {
31 473311 : return _file;
32 : }
33 :
34 : void
35 132250920 : FileLineInfoMap::addInfo(const std::string & key0, const std::string & file, int line)
36 : {
37 132250920 : FileLineInfo f(file, line);
38 132250920 : if (f.isValid())
39 132250894 : _map[key0] = f;
40 132250920 : }
41 :
42 : void
43 15004826 : FileLineInfoMap::addInfo(const std::string & key0,
44 : const std::string & key1,
45 : const std::string & file,
46 : int line)
47 : {
48 15004826 : addInfo(makeKey(key0, key1), file, line);
49 15004826 : }
50 :
51 : void
52 8535632 : FileLineInfoMap::addInfo(const std::string & key0,
53 : const std::string & key1,
54 : const std::string & key2,
55 : const std::string & file,
56 : int line)
57 : {
58 8535632 : addInfo(makeKey(key0, key1, key2), file, line);
59 8535632 : }
60 :
61 : std::string
62 15035873 : FileLineInfoMap::makeKey(const std::string & key0, const std::string & key1) const
63 : {
64 15035873 : return key0 + "%" + key1;
65 : }
66 :
67 : std::string
68 8557802 : FileLineInfoMap::makeKey(const std::string & key0,
69 : const std::string & key1,
70 : const std::string & key2) const
71 : {
72 8557802 : return key0 + "%" + key1 + "%" + key2;
73 : }
74 :
75 : FileLineInfo
76 526311 : FileLineInfoMap::getInfo(const std::string & key0) const
77 : {
78 526311 : auto it = _map.find(key0);
79 526311 : if (it == _map.end())
80 4951 : return FileLineInfo();
81 521360 : return it->second;
82 : }
83 :
84 : FileLineInfo
85 31047 : FileLineInfoMap::getInfo(const std::string & key0, const std::string & key1) const
86 : {
87 31047 : return getInfo(makeKey(key0, key1));
88 : }
89 :
90 : FileLineInfo
91 22170 : FileLineInfoMap::getInfo(const std::string & key0,
92 : const std::string & key1,
93 : const std::string & key2) const
94 : {
95 22170 : return getInfo(makeKey(key0, key1, key2));
96 : }
|