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 132746042 : FileLineInfo::FileLineInfo() : _line(-1) {}
13 :
14 132741009 : FileLineInfo::FileLineInfo(const std::string & f, int l) : _line(l), _file(f) {}
15 :
16 : bool
17 133234558 : FileLineInfo::isValid() const
18 : {
19 133234558 : return !_file.empty() && _line >= 0;
20 : }
21 :
22 : int
23 489481 : FileLineInfo::line() const
24 : {
25 489481 : return _line;
26 : }
27 :
28 : std::string
29 489481 : FileLineInfo::file() const
30 : {
31 489481 : return _file;
32 : }
33 :
34 : void
35 132741009 : FileLineInfoMap::addInfo(const std::string & key0, const std::string & file, int line)
36 : {
37 132741009 : FileLineInfo f(file, line);
38 132741009 : if (f.isValid())
39 132740983 : _map[key0] = f;
40 132741009 : }
41 :
42 : void
43 15023684 : FileLineInfoMap::addInfo(const std::string & key0,
44 : const std::string & key1,
45 : const std::string & file,
46 : int line)
47 : {
48 15023684 : addInfo(makeKey(key0, key1), file, line);
49 15023684 : }
50 :
51 : void
52 8592586 : 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 8592586 : addInfo(makeKey(key0, key1, key2), file, line);
59 8592586 : }
60 :
61 : std::string
62 15054829 : FileLineInfoMap::makeKey(const std::string & key0, const std::string & key1) const
63 : {
64 15054829 : return key0 + "%" + key1;
65 : }
66 :
67 : std::string
68 8614864 : FileLineInfoMap::makeKey(const std::string & key0,
69 : const std::string & key1,
70 : const std::string & key2) const
71 : {
72 8614864 : return key0 + "%" + key1 + "%" + key2;
73 : }
74 :
75 : FileLineInfo
76 544229 : FileLineInfoMap::getInfo(const std::string & key0) const
77 : {
78 544229 : auto it = _map.find(key0);
79 544229 : if (it == _map.end())
80 5059 : return FileLineInfo();
81 539170 : return it->second;
82 : }
83 :
84 : FileLineInfo
85 31145 : FileLineInfoMap::getInfo(const std::string & key0, const std::string & key1) const
86 : {
87 31145 : return getInfo(makeKey(key0, key1));
88 : }
89 :
90 : FileLineInfo
91 22278 : FileLineInfoMap::getInfo(const std::string & key0,
92 : const std::string & key1,
93 : const std::string & key2) const
94 : {
95 22278 : return getInfo(makeKey(key0, key1, key2));
96 : }
|