https://mooseframework.inl.gov
FileLineInfo.C
Go to the documentation of this file.
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 
13 
14 FileLineInfo::FileLineInfo(const std::string & f, int l) : _line(l), _file(f) {}
15 
16 bool
18 {
19  return !_file.empty() && _line >= 0;
20 }
21 
22 int
24 {
25  return _line;
26 }
27 
28 std::string
30 {
31  return _file;
32 }
33 
34 void
35 FileLineInfoMap::addInfo(const std::string & key0, const std::string & file, int line)
36 {
37  FileLineInfo f(file, line);
38  if (f.isValid())
39  _map[key0] = f;
40 }
41 
42 void
43 FileLineInfoMap::addInfo(const std::string & key0,
44  const std::string & key1,
45  const std::string & file,
46  int line)
47 {
48  addInfo(makeKey(key0, key1), file, line);
49 }
50 
51 void
52 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  addInfo(makeKey(key0, key1, key2), file, line);
59 }
60 
61 std::string
62 FileLineInfoMap::makeKey(const std::string & key0, const std::string & key1) const
63 {
64  return key0 + "%" + key1;
65 }
66 
67 std::string
68 FileLineInfoMap::makeKey(const std::string & key0,
69  const std::string & key1,
70  const std::string & key2) const
71 {
72  return key0 + "%" + key1 + "%" + key2;
73 }
74 
76 FileLineInfoMap::getInfo(const std::string & key0) const
77 {
78  auto it = _map.find(key0);
79  if (it == _map.end())
80  return FileLineInfo();
81  return it->second;
82 }
83 
85 FileLineInfoMap::getInfo(const std::string & key0, const std::string & key1) const
86 {
87  return getInfo(makeKey(key0, key1));
88 }
89 
91 FileLineInfoMap::getInfo(const std::string & key0,
92  const std::string & key1,
93  const std::string & key2) const
94 {
95  return getInfo(makeKey(key0, key1, key2));
96 }
std::map< std::string, FileLineInfo > _map
Definition: FileLineInfo.h:111
std::string makeKey(const std::string &key0, const std::string &key1) const
Makes a unique key for the map given two strings.
Definition: FileLineInfo.C:62
int line() const
Definition: FileLineInfo.C:23
FileLineInfo getInfo(const std::string &key0) const
Get file/line info for a key.
Definition: FileLineInfo.C:76
void addInfo(const std::string &key0, const std::string &file, int line)
Associate a key with file/line info.
Definition: FileLineInfo.C:35
std::string _file
Definition: FileLineInfo.h:32
Holds file and line information.
Definition: FileLineInfo.h:18
std::string file() const
Definition: FileLineInfo.C:29
bool isValid() const
Definition: FileLineInfo.C:17