64 componentIDPos_(componentIDPos) {
128 const string procName =
"SlotField::addSocketEncoding";
172 const string procName =
"SlotField::socketEncoding";
173 throw OutOfRange(__FILE__, __LINE__, procName);
189 for (SocketEncodingTable::const_iterator iter =
encodings_.begin();
211 for (SocketEncodingTable::const_iterator iter =
encodings_.begin();
240 const string procName =
"SlotField::setNoOperationEncoding";
311 for (
int i = 0; i < encodings; i++) {
313 int encodingWidth = encoding.
width();
314 if (encodingWidth >
width) {
315 width = encodingWidth;
346 const string procName =
"SlotField::childField";
347 throw OutOfRange(__FILE__, __LINE__, procName);
363 const string procName =
"SlotField::loadState";
368 for (
int i = 0; i < state->
childCount(); i++) {
378 __FILE__, __LINE__, procName, exception.
errorMessage());
#define assert(condition)
static bool canAddComponentEncoding(SlotField &field, unsigned int encoding, unsigned int extraBits)
unsigned int extraBits() const
virtual int width() const
unsigned int encoding() const
std::string errorMessage() const
InstructionField * parent() const
virtual void loadState(const ObjectState *state)
virtual ObjectState * saveState() const
static const std::string OSNAME_NOP_ENCODING
ObjectState name for NOP encoding.
SlotField * parent() const
static NullNOPEncoding & instance()
static NullSocketEncoding & instance()
void setName(const std::string &name)
void setAttribute(const std::string &name, const std::string &value)
ObjectState * child(int index) const
void addChild(ObjectState *child)
int intAttribute(const std::string &name) const
static const std::string OSNAME_SLOT_FIELD
ObjectState name for slot field.
MoveSlot * parent() const
void addSocketEncoding(SocketEncoding &encoding)
SlotField(BinaryEncoding::Position componentIDPos, MoveSlot &parent)
bool hasSocketEncoding(const std::string &socket) const
NOPEncoding * nopEncoding_
The NOP encoding.
virtual int width() const
virtual InstructionField & childField(int position) const
SocketEncodingTable encodings_
The container for socket encodings.
SocketEncoding & socketEncoding(int index) const
virtual ObjectState * saveState() const
bool hasNoOperationEncoding() const
void removeSocketEncoding(SocketEncoding &encoding)
void clearSocketEncodings()
NOPEncoding & noOperationEncoding() const
BinaryEncoding::Position componentIDPos_
Position of the socket and bridge IDs within the field.
virtual void loadState(const ObjectState *state)
BinaryEncoding::Position componentIDPosition() const
void setNoOperationEncoding(NOPEncoding &encoding)
void unsetNoOperationEncoding()
void clearNoOperationEncoding()
static const std::string OSKEY_COMPONENT_ID_POSITION
ObjectState attribute key for component ID position.
virtual int childFieldCount() const
int socketEncodingCount() const
virtual ObjectState * saveState() const
virtual int width() const
static const std::string OSNAME_SOCKET_ENCODING
ObjectState name for socket encoding.
std::string socketName() const
SlotField * parent() const