Created Signature class and added to isolation data

Signed-off-by: Zane Shelley <zshelle@us.ibm.com>
Change-Id: I84653e1daa2b27327586817af5eb42de61bc37fa
diff --git a/src/isolator/hei_signature.hpp b/src/isolator/hei_signature.hpp
new file mode 100644
index 0000000..018673a
--- /dev/null
+++ b/src/isolator/hei_signature.hpp
@@ -0,0 +1,71 @@
+#pragma once
+
+#include <hei_includes.hpp>
+
+namespace libhei
+{
+
+/**
+ * @brief A signature represents an active attention from a single bit on a
+ *        register within a chip.
+ *
+ * The isolator will gather a list of all active attentions on a chip and return
+ * a list of signatures to the user application. The user application should be
+ * able to determine what actions to take based on these signatures.
+ */
+class Signature
+{
+  public: // Constructors, destructor, assignment, etc.
+
+    /**
+     * @brief Constructor from components.
+     * @param i_chip     The chip containing this register.
+     * @param i_id       The register ID.
+     * @param i_instance The instance of this register.
+     * @param i_bit      The target bit within this register.
+     * @param i_attnType The attention type reported by this bit.
+     */
+    Signature( const Chip & i_chip, RegisterId_t i_id,
+               RegisterInstance_t i_instance, RegisterBit_t i_bit,
+               AttentionType_t i_attnType ) :
+        iv_chip( i_chip ), iv_id( i_id ), iv_instance( i_instance ),
+        iv_bit( i_bit ), iv_attnType( i_attnType )
+    {}
+
+    /** @brief Destructor. */
+    ~Signature() = default;
+
+    /** @brief Copy constructor. */
+    Signature( const Signature & ) = default;
+
+    /** @brief Assignment operator. */
+    Signature & operator=( const Signature & ) = default;
+
+  private: // Instance variables.
+
+    Chip               iv_chip;     ///< Chip containing this register.
+    RegisterId_t       iv_id;       ///< Register ID.
+    RegisterInstance_t iv_instance; ///< Instance of this register.
+    RegisterBit_t      iv_bit;      ///< Target bit within this register.
+    AttentionType_t    iv_attnType; ///< Attention type reported by this bit.
+
+  public: // Member functions
+
+    /** @return The chip containing this register. */
+    const Chip & getChip() const { return iv_chip; }
+
+    /** @return The register ID. */
+    RegisterId_t getId() const { return iv_id; }
+
+    /** @return The instance of this register. */
+    RegisterInstance_t getInstance() const { return iv_instance; }
+
+    /** @return The target bit within this register. */
+    RegisterBit_t getBit() const { return iv_bit; }
+
+    /** @return The attention type reported by this bit. */
+    AttentionType_t getAttnType() const { return iv_attnType; }
+};
+
+} // end namespace libhei
+