moving attribute types to std::string

Signed-off-by: Ethan Mahintorabi <ethanmoon@google.com>
This commit is contained in:
Ethan Mahintorabi 2024-03-09 21:56:58 +00:00
parent ad6f4cd3b1
commit 36c1bade14
No known key found for this signature in database
GPG Key ID: 824E41B920BEA252
10 changed files with 63 additions and 70 deletions

View File

@ -38,7 +38,7 @@ class LibertyCell;
class LibertyPort; class LibertyPort;
typedef Map<const char*, ConcreteCell*, CharPtrLess> ConcreteCellMap; typedef Map<const char*, ConcreteCell*, CharPtrLess> ConcreteCellMap;
typedef Map<std::string, const char*> AttributeMap; typedef Map<std::string, std::string> AttributeMap;
typedef Vector<ConcretePort*> ConcretePortSeq; typedef Vector<ConcretePort*> ConcretePortSeq;
typedef Map<const char*, ConcretePort*, CharPtrLess> ConcretePortMap; typedef Map<const char*, ConcretePort*, CharPtrLess> ConcretePortMap;
typedef ConcreteCellMap::ConstIterator ConcreteLibraryCellIterator; typedef ConcreteCellMap::ConstIterator ConcreteLibraryCellIterator;
@ -106,9 +106,9 @@ public:
ConcreteCellPortBitIterator *portBitIterator() const; ConcreteCellPortBitIterator *portBitIterator() const;
bool isLeaf() const { return is_leaf_; } bool isLeaf() const { return is_leaf_; }
void setIsLeaf(bool is_leaf); void setIsLeaf(bool is_leaf);
void setAttribute(const char *key, void setAttribute(const std::string &key,
const char *value); const std::string &value);
const char *getAttribute(const char *key) const; std::string getAttribute(const std::string &key) const;
// Cell acts as port factory. // Cell acts as port factory.
ConcretePort *makePort(const char *name); ConcretePort *makePort(const char *name);

View File

@ -38,7 +38,7 @@ class ConcreteBindingTbl;
class ConcreteLibertyLibraryIterator; class ConcreteLibertyLibraryIterator;
typedef Vector<ConcreteLibrary*> ConcreteLibrarySeq; typedef Vector<ConcreteLibrary*> ConcreteLibrarySeq;
typedef Map<std::string, const char*> AttributeMap; typedef Map<std::string, std::string> AttributeMap;
typedef Map<const char*, ConcreteLibrary*, CharPtrLess> ConcreteLibraryMap; typedef Map<const char*, ConcreteLibrary*, CharPtrLess> ConcreteLibraryMap;
typedef ConcreteLibrarySeq::ConstIterator ConcreteLibraryIterator; typedef ConcreteLibrarySeq::ConstIterator ConcreteLibraryIterator;
typedef Map<const char *, ConcreteInstance*, typedef Map<const char *, ConcreteInstance*,
@ -75,8 +75,8 @@ public:
const PatternMatch *pattern) const override; const PatternMatch *pattern) const override;
const char *name(const Cell *cell) const override; const char *name(const Cell *cell) const override;
const char *getAttribute(const Cell *cell, std::string getAttribute(const Cell *cell,
const char *key) const override; const std::string &key) const override;
ObjectId id(const Cell *cell) const override; ObjectId id(const Cell *cell) const override;
Library *library(const Cell *cell) const override; Library *library(const Cell *cell) const override;
LibertyCell *libertyCell(Cell *cell) const override; LibertyCell *libertyCell(Cell *cell) const override;
@ -111,8 +111,8 @@ public:
PortMemberIterator *memberIterator(const Port *port) const override; PortMemberIterator *memberIterator(const Port *port) const override;
const char *name(const Instance *instance) const override; const char *name(const Instance *instance) const override;
const char *getAttribute(const Instance *inst, std::string getAttribute(const Instance *inst,
const char *key) const override; const std::string &key) const override;
ObjectId id(const Instance *instance) const override; ObjectId id(const Instance *instance) const override;
Cell *cell(const Instance *instance) const override; Cell *cell(const Instance *instance) const override;
Instance *parent(const Instance *instance) const override; Instance *parent(const Instance *instance) const override;
@ -181,8 +181,8 @@ public:
void setIsLeaf(Cell *cell, void setIsLeaf(Cell *cell,
bool is_leaf) override; bool is_leaf) override;
void setAttribute(Cell *cell, void setAttribute(Cell *cell,
const char *key, const std::string &key,
const char *value) override; const std::string &value) override;
Port *makePort(Cell *cell, Port *makePort(Cell *cell,
const char *name) override; const char *name) override;
Port *makeBusPort(Cell *cell, Port *makeBusPort(Cell *cell,
@ -215,8 +215,8 @@ public:
LibertyPort *port, LibertyPort *port,
Net *net) override; Net *net) override;
void setAttribute(Instance *inst, void setAttribute(Instance *inst,
const char *key, const std::string &key,
const char *value) override; const std::string &value) override;
void disconnectPin(Pin *pin) override; void disconnectPin(Pin *pin) override;
void deletePin(Pin *pin) override; void deletePin(Pin *pin) override;
Net *makeNet(const char *name, Net *makeNet(const char *name,
@ -296,9 +296,9 @@ public:
InstanceNetIterator *netIterator() const; InstanceNetIterator *netIterator() const;
Instance *findChild(const char *name) const; Instance *findChild(const char *name) const;
InstanceChildIterator *childIterator() const; InstanceChildIterator *childIterator() const;
void setAttribute(const char *key, void setAttribute(const std::string &key,
const char *value); const std::string &value);
const char *getAttribute(const char *key) const; std::string getAttribute(const std::string &key) const;
void addChild(ConcreteInstance *child); void addChild(ConcreteInstance *child);
void deleteChild(ConcreteInstance *child); void deleteChild(ConcreteInstance *child);
void addPin(ConcretePin *pin); void addPin(ConcretePin *pin);

View File

@ -145,8 +145,8 @@ public:
// Filename may return null. // Filename may return null.
virtual const char *filename(const Cell *cell) = 0; virtual const char *filename(const Cell *cell) = 0;
// Attributes can be null // Attributes can be null
virtual const char *getAttribute(const Cell *cell, virtual std::string getAttribute(const Cell *cell,
const char *key) const = 0; const std::string &key) const = 0;
// Name can be a simple, bundle, bus, or bus bit name. // Name can be a simple, bundle, bus, or bus bit name.
virtual Port *findPort(const Cell *cell, virtual Port *findPort(const Cell *cell,
const char *name) const = 0; const char *name) const = 0;
@ -209,8 +209,8 @@ public:
const PatternMatch *pattern) const; const PatternMatch *pattern) const;
virtual InstanceSeq findInstancesHierMatching(const Instance *instance, virtual InstanceSeq findInstancesHierMatching(const Instance *instance,
const PatternMatch *pattern) const; const PatternMatch *pattern) const;
virtual const char *getAttribute(const Instance *inst, virtual std::string getAttribute(const Instance *inst,
const char *key) const = 0; const std::string &key) const = 0;
// Hierarchical path name. // Hierarchical path name.
virtual const char *pathName(const Instance *instance) const; virtual const char *pathName(const Instance *instance) const;
bool pathNameLess(const Instance *inst1, bool pathNameLess(const Instance *inst1,
@ -550,11 +550,11 @@ public:
virtual void setIsLeaf(Cell *cell, virtual void setIsLeaf(Cell *cell,
bool is_leaf) = 0; bool is_leaf) = 0;
virtual void setAttribute(Cell *cell, virtual void setAttribute(Cell *cell,
const char *key, const std::string &key,
const char *value) = 0; const std::string &value) = 0;
virtual void setAttribute(Instance *instance, virtual void setAttribute(Instance *instance,
const char *key, const std::string &key,
const char *value) = 0; const std::string &value) = 0;
virtual Port *makePort(Cell *cell, virtual Port *makePort(Cell *cell,
const char *name) = 0; const char *name) = 0;
virtual Port *makeBusPort(Cell *cell, virtual Port *makeBusPort(Cell *cell,

View File

@ -45,8 +45,8 @@ public:
const PatternMatch *pattern) const override; const PatternMatch *pattern) const override;
const char *name(const Cell *cell) const override; const char *name(const Cell *cell) const override;
const char *getAttribute(const Cell *cell, std::string getAttribute(const Cell *cell,
const char* key) const override; const std::string &key) const override;
ObjectId id(const Cell *cell) const override; ObjectId id(const Cell *cell) const override;
Library *library(const Cell *cell) const override; Library *library(const Cell *cell) const override;
LibertyCell *libertyCell(Cell *cell) const override; LibertyCell *libertyCell(Cell *cell) const override;
@ -82,8 +82,8 @@ public:
bool hasMembers(const Port *port) const override; bool hasMembers(const Port *port) const override;
ObjectId id(const Instance *instance) const override; ObjectId id(const Instance *instance) const override;
const char *getAttribute(const Instance *inst, std::string getAttribute(const Instance *inst,
const char* key) const override; const std::string &key) const override;
Instance *topInstance() const override; Instance *topInstance() const override;
Cell *cell(const Instance *instance) const override; Cell *cell(const Instance *instance) const override;
Instance *parent(const Instance *instance) const override; Instance *parent(const Instance *instance) const override;

View File

@ -140,7 +140,6 @@ ConcreteCell::~ConcreteCell()
if (filename_) if (filename_)
stringDelete(filename_); stringDelete(filename_);
ports_.deleteContents(); ports_.deleteContents();
attribute_map_.deleteArrayContents();
} }
void void
@ -270,14 +269,14 @@ ConcreteCell::setIsLeaf(bool is_leaf)
} }
void void
ConcreteCell::setAttribute(const char* key, ConcreteCell::setAttribute(const std::string &key,
const char* value) const std::string &value)
{ {
attribute_map_.insert(key, stringCopy(value)); attribute_map_.insert(key, value);
} }
const char * std::string
ConcreteCell::getAttribute(const char* key) const ConcreteCell::getAttribute(const std::string &key) const
{ {
return attribute_map_.findKey(key); return attribute_map_.findKey(key);
} }

View File

@ -559,8 +559,8 @@ ConcreteNetwork::setIsLeaf(Cell *cell,
void void
ConcreteNetwork::setAttribute(Cell *cell, ConcreteNetwork::setAttribute(Cell *cell,
const char *key, const std::string &key,
const char *value) const std::string &value)
{ {
ConcreteCell *ccell = reinterpret_cast<ConcreteCell*>(cell); ConcreteCell *ccell = reinterpret_cast<ConcreteCell*>(cell);
ccell->setAttribute(key, value); ccell->setAttribute(key, value);
@ -606,9 +606,9 @@ ConcreteNetwork::filename(const Cell *cell)
return ccell->filename(); return ccell->filename();
} }
const char * std::string
ConcreteNetwork::getAttribute(const Cell *cell, ConcreteNetwork::getAttribute(const Cell *cell,
const char *key) const const std::string &key) const
{ {
const ConcreteCell *ccell = reinterpret_cast<const ConcreteCell*>(cell); const ConcreteCell *ccell = reinterpret_cast<const ConcreteCell*>(cell);
return ccell->getAttribute(key); return ccell->getAttribute(key);
@ -938,9 +938,9 @@ ConcreteNetwork::id(const Instance *instance) const
return inst->id(); return inst->id();
} }
const char * std::string
ConcreteNetwork::getAttribute(const Instance *inst, ConcreteNetwork::getAttribute(const Instance *inst,
const char *key) const const std::string &key) const
{ {
const ConcreteInstance *cinst = reinterpret_cast<const ConcreteInstance*>(inst); const ConcreteInstance *cinst = reinterpret_cast<const ConcreteInstance*>(inst);
return cinst->getAttribute(key); return cinst->getAttribute(key);
@ -1352,8 +1352,8 @@ ConcreteNetwork::connect(Instance *inst,
void void
ConcreteNetwork::setAttribute(Instance *inst, ConcreteNetwork::setAttribute(Instance *inst,
const char *key, const std::string &key,
const char *value) const std::string &value)
{ {
ConcreteInstance *cinst = reinterpret_cast<ConcreteInstance*>(inst); ConcreteInstance *cinst = reinterpret_cast<ConcreteInstance*>(inst);
cinst->setAttribute(key, value); cinst->setAttribute(key, value);
@ -1598,7 +1598,6 @@ ConcreteInstance::~ConcreteInstance()
stringDelete(name_); stringDelete(name_);
delete children_; delete children_;
delete nets_; delete nets_;
attribute_map_.deleteArrayContents();
} }
Instance * Instance *
@ -1684,14 +1683,14 @@ ConcreteInstance::childIterator() const
} }
void void
ConcreteInstance::setAttribute(const char *key, ConcreteInstance::setAttribute(const std::string &key,
const char *value) const std::string &value)
{ {
attribute_map_.insert(key, stringCopy(value)); attribute_map_.insert(key, value);
} }
const char * std::string
ConcreteInstance::getAttribute(const char *key) const ConcreteInstance::getAttribute(const std::string &key) const
{ {
return attribute_map_.findKey(key); return attribute_map_.findKey(key);
} }

View File

@ -122,9 +122,9 @@ NetworkNameAdapter::id(const Cell *cell) const
return network_->id(cell); return network_->id(cell);
} }
const char * std::string
NetworkNameAdapter::getAttribute(const Cell *cell, NetworkNameAdapter::getAttribute(const Cell *cell,
const char *key) const const std::string &key) const
{ {
return network_->getAttribute(cell, key); return network_->getAttribute(cell, key);
} }
@ -334,8 +334,9 @@ NetworkNameAdapter::cell(const Instance *instance) const
return network_->cell(instance); return network_->cell(instance);
} }
const char * std::string
NetworkNameAdapter::getAttribute(const Instance *inst, const char *key) const NetworkNameAdapter::getAttribute(const Instance *inst,
const std::string &key) const
{ {
return network_->getAttribute(inst, key); return network_->getAttribute(inst, key);
} }

View File

@ -4186,7 +4186,7 @@ LibertyCell *liberty_cell() { return cmdNetwork()->libertyCell(self); }
bool is_leaf() { return cmdNetwork()->isLeaf(self); } bool is_leaf() { return cmdNetwork()->isLeaf(self); }
CellPortIterator * CellPortIterator *
port_iterator() { return cmdNetwork()->portIterator(self); } port_iterator() { return cmdNetwork()->portIterator(self); }
const char *get_attribute(const char *key) { return cmdNetwork()->getAttribute(self, key); } string get_attribute(const char *key) { return cmdNetwork()->getAttribute(self, key); }
Port * Port *
find_port(const char *name) find_port(const char *name)

View File

@ -1739,27 +1739,21 @@ VerilogNetPortRefPart::name() const
return name_; return name_;
} }
VerilogAttributeEntry::VerilogAttributeEntry(const char *key, VerilogAttributeEntry::VerilogAttributeEntry(std::string key,
const char * value) : std::string value) :
key_(key), key_(key),
value_(value) value_(value)
{ {
} }
VerilogAttributeEntry::~VerilogAttributeEntry()
{
stringDelete(key_);
stringDelete(value_);
}
std::string
const char *
VerilogAttributeEntry::key() VerilogAttributeEntry::key()
{ {
return key_; return key_;
} }
const char * std::string
VerilogAttributeEntry::value() VerilogAttributeEntry::value()
{ {
return value_; return value_;

View File

@ -729,15 +729,15 @@ private:
class VerilogAttributeEntry class VerilogAttributeEntry
{ {
public: public:
VerilogAttributeEntry(const char *key, VerilogAttributeEntry(std::string key,
const char *value); std::string value);
virtual const char *key(); virtual std::string key();
virtual const char *value(); virtual std::string value();
virtual ~VerilogAttributeEntry(); virtual ~VerilogAttributeEntry() = default;
private: private:
const char *key_; std::string key_;
const char *value_; std::string value_;
}; };
} // namespace } // namespace