Adding optional to differentiate between empty sets and unset attributes

Signed-off-by: Ethan Mahintorabi <[email protected]>
This commit is contained in:
Ethan Mahintorabi
2024-03-10 01:56:33 +00:00
parent 36c1bade14
commit 8aef4d549e
8 changed files with 48 additions and 23 deletions
+2 -1
View File
@@ -17,6 +17,7 @@
#pragma once
#include <functional>
#include <optional>
#include "Vector.hh"
#include "Map.hh"
@@ -108,7 +109,7 @@ public:
void setIsLeaf(bool is_leaf);
void setAttribute(const std::string &key,
const std::string &value);
std::string getAttribute(const std::string &key) const;
std::optional<std::string> getAttribute(const std::string &key) const;
// Cell acts as port factory.
ConcretePort *makePort(const char *name);
+6 -5
View File
@@ -17,6 +17,7 @@
#pragma once
#include <functional>
#include <optional>
#include "Map.hh"
#include "Set.hh"
@@ -75,8 +76,8 @@ public:
const PatternMatch *pattern) const override;
const char *name(const Cell *cell) const override;
std::string getAttribute(const Cell *cell,
const std::string &key) const override;
std::optional<std::string> getAttribute(const Cell *cell,
const std::string &key) const override;
ObjectId id(const Cell *cell) const override;
Library *library(const Cell *cell) const override;
LibertyCell *libertyCell(Cell *cell) const override;
@@ -111,8 +112,8 @@ public:
PortMemberIterator *memberIterator(const Port *port) const override;
const char *name(const Instance *instance) const override;
std::string getAttribute(const Instance *inst,
const std::string &key) const override;
std::optional<std::string> getAttribute(const Instance *inst,
const std::string &key) const override;
ObjectId id(const Instance *instance) const override;
Cell *cell(const Instance *instance) const override;
Instance *parent(const Instance *instance) const override;
@@ -298,7 +299,7 @@ public:
InstanceChildIterator *childIterator() const;
void setAttribute(const std::string &key,
const std::string &value);
std::string getAttribute(const std::string &key) const;
std::optional<std::string> getAttribute(const std::string &key) const;
void addChild(ConcreteInstance *child);
void deleteChild(ConcreteInstance *child);
void addPin(ConcretePin *pin);
+5 -4
View File
@@ -17,6 +17,7 @@
#pragma once
#include <functional>
#include <optional>
#include "Map.hh"
#include "StringUtil.hh"
@@ -145,8 +146,8 @@ public:
// Filename may return null.
virtual const char *filename(const Cell *cell) = 0;
// Attributes can be null
virtual std::string getAttribute(const Cell *cell,
const std::string &key) const = 0;
virtual std::optional<std::string> getAttribute(const Cell *cell,
const std::string &key) const = 0;
// Name can be a simple, bundle, bus, or bus bit name.
virtual Port *findPort(const Cell *cell,
const char *name) const = 0;
@@ -209,8 +210,8 @@ public:
const PatternMatch *pattern) const;
virtual InstanceSeq findInstancesHierMatching(const Instance *instance,
const PatternMatch *pattern) const;
virtual std::string getAttribute(const Instance *inst,
const std::string &key) const = 0;
virtual std::optional<std::string> getAttribute(const Instance *inst,
const std::string &key) const = 0;
// Hierarchical path name.
virtual const char *pathName(const Instance *instance) const;
bool pathNameLess(const Instance *inst1,
+5 -4
View File
@@ -17,6 +17,7 @@
#pragma once
#include <functional>
#include <optional>
#include "Network.hh"
@@ -45,8 +46,8 @@ public:
const PatternMatch *pattern) const override;
const char *name(const Cell *cell) const override;
std::string getAttribute(const Cell *cell,
const std::string &key) const override;
std::optional<std::string> getAttribute(const Cell *cell,
const std::string &key) const override;
ObjectId id(const Cell *cell) const override;
Library *library(const Cell *cell) const override;
LibertyCell *libertyCell(Cell *cell) const override;
@@ -82,8 +83,8 @@ public:
bool hasMembers(const Port *port) const override;
ObjectId id(const Instance *instance) const override;
std::string getAttribute(const Instance *inst,
const std::string &key) const override;
std::optional<std::string> getAttribute(const Instance *inst,
const std::string &key) const override;
Instance *topInstance() const override;
Cell *cell(const Instance *instance) const override;
Instance *parent(const Instance *instance) const override;