104 lines
3.1 KiB
C++
104 lines
3.1 KiB
C++
#include "vtr_assert.h"
|
|
|
|
#include "fabric_key.h"
|
|
|
|
/************************************************************************
|
|
* Member functions for class FabricKey
|
|
***********************************************************************/
|
|
|
|
/************************************************************************
|
|
* Constructors
|
|
***********************************************************************/
|
|
FabricKey::FabricKey() {
|
|
return;
|
|
}
|
|
|
|
/************************************************************************
|
|
* Public Accessors : aggregates
|
|
***********************************************************************/
|
|
FabricKey::fabric_key_range FabricKey::keys() const {
|
|
return vtr::make_range(key_ids_.begin(), key_ids_.end());
|
|
}
|
|
|
|
/************************************************************************
|
|
* Public Accessors : Basic data query
|
|
***********************************************************************/
|
|
/* Access the name of a key */
|
|
std::string FabricKey::key_name(const FabricKeyId& key_id) const {
|
|
/* validate the key_id */
|
|
VTR_ASSERT(valid_key_id(key_id));
|
|
return key_names_[key_id];
|
|
}
|
|
|
|
/* Access the value of a key */
|
|
size_t FabricKey::key_value(const FabricKeyId& key_id) const {
|
|
/* validate the key_id */
|
|
VTR_ASSERT(valid_key_id(key_id));
|
|
return key_values_[key_id];
|
|
}
|
|
|
|
/* Access the alias of a key */
|
|
std::string FabricKey::key_alias(const FabricKeyId& key_id) const {
|
|
/* validate the key_id */
|
|
VTR_ASSERT(valid_key_id(key_id));
|
|
return key_alias_[key_id];
|
|
}
|
|
|
|
bool FabricKey::empty() const {
|
|
return 0 == key_ids_.size();
|
|
}
|
|
|
|
/************************************************************************
|
|
* Public Mutators
|
|
***********************************************************************/
|
|
void FabricKey::reserve_keys(const size_t& num_keys) {
|
|
key_ids_.reserve(num_keys);
|
|
key_names_.reserve(num_keys);
|
|
key_values_.reserve(num_keys);
|
|
key_alias_.reserve(num_keys);
|
|
}
|
|
|
|
/* Create a new key and add it to the library, return an id */
|
|
FabricKeyId FabricKey::create_key() {
|
|
/* Create a new id */
|
|
FabricKeyId key = FabricKeyId(key_ids_.size());
|
|
key_ids_.push_back(key);
|
|
key_names_.emplace_back();
|
|
key_values_.emplace_back();
|
|
key_alias_.emplace_back();
|
|
|
|
return key;
|
|
}
|
|
|
|
void FabricKey::set_key_name(const FabricKeyId& key_id,
|
|
const std::string& name) {
|
|
/* validate the key_id */
|
|
VTR_ASSERT(valid_key_id(key_id));
|
|
|
|
key_names_[key_id] = name;
|
|
}
|
|
|
|
void FabricKey::set_key_value(const FabricKeyId& key_id,
|
|
const size_t& value) {
|
|
/* validate the key_id */
|
|
VTR_ASSERT(valid_key_id(key_id));
|
|
|
|
key_values_[key_id] = value;
|
|
}
|
|
|
|
void FabricKey::set_key_alias(const FabricKeyId& key_id,
|
|
const std::string& alias) {
|
|
/* validate the key_id */
|
|
VTR_ASSERT(valid_key_id(key_id));
|
|
|
|
key_alias_[key_id] = alias;
|
|
}
|
|
|
|
/************************************************************************
|
|
* Internal invalidators/validators
|
|
***********************************************************************/
|
|
/* Validators */
|
|
bool FabricKey::valid_key_id(const FabricKeyId& key_id) const {
|
|
return ( size_t(key_id) < key_ids_.size() ) && ( key_id == key_ids_[key_id] );
|
|
}
|