isomatch
wireManager.h
Go to the documentation of this file.
1 
8 #pragma once
9 
10 #include <string>
11 #include <exception>
12 #include <vector>
13 #include <unordered_map>
14 
15 #include "wireId.h"
16 
17 class WireManager {
18  public:
22  class WireException : public std::exception {
23  public:
24  WireException(const char* wire) : wire(wire) {}
25  const char* what() const throw () {
26  return wire;
27  }
28  private:
29  const char* wire;
30  };
31 
32  class AlreadyDefined : public WireException {
34  };
35  class NotDefined : public WireException {
37  };
38 
42  WireManager();
43 
44  ~WireManager();
45 
51  WireId* fresh(const std::string& name);
52 
56  bool hasWire(const std::string& name);
60  bool hasWire(size_t id);
61 
63  const std::vector<WireId*>& allWires() const { return wireById; }
64 
66  std::vector<WireId*> wires() const;
67 
76  WireId* wire(const std::string& name, bool dontCreate=false);
77 
83  WireId* wire(size_t id);
84 
89  void rename(const std::string& curName, const std::string& newName);
90 
95  void rename(size_t id, const std::string& newName);
96 
98  size_t id() const { return id_; }
99 
100  private:
101  std::vector<WireId*> wireById;
102  std::unordered_map<std::string, WireId*> wireByName;
103 
104  static size_t nextId;
105  size_t id_;
106 };
107 
~WireManager()
Definition: wireManager.cpp:9
const std::vector< WireId * > & allWires() const
Returns all wires, including the merged ones.
Definition: wireManager.h:63
const char * what() const
Definition: wireManager.h:25
void rename(const std::string &curName, const std::string &newName)
Definition: wireManager.cpp:62
Definition: wireId.h:21
WireException(const char *wire)
Definition: wireManager.h:24
Definition: wireManager.h:17
Definition: wireManager.h:32
bool hasWire(const std::string &name)
Definition: wireManager.cpp:22
Definition: wireManager.h:22
size_t id() const
Definition: wireManager.h:98
Definition: wireManager.h:35
WireManager()
Definition: wireManager.cpp:6
WireId * fresh(const std::string &name)
Definition: wireManager.cpp:14
std::vector< WireId * > wires() const
Returns a vector of unique wires.
Definition: wireManager.cpp:30