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