Implementation of 1-Wire with added Alarm Search Functionality

Dependents:   Max32630_One_Wire_Interface

Revision:
33:a4c015046956
Child:
43:23017dcd2ec3
diff -r bce180b544ed -r a4c015046956 array.hpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/array.hpp	Thu Mar 31 11:56:01 2016 -0500
@@ -0,0 +1,57 @@
+#ifndef _ARRAY_HPP
+#define _ARRAY_HPP
+
+#include <cstdint>
+#include <cstring>
+
+template <typename T, std::size_t N>
+class array
+{
+public:
+  static const std::size_t length = N;
+  typedef T Buffer[N];
+  
+private:
+  Buffer m_buffer;
+  
+public:
+  const array<T, N> & operator=(const array<T, N> & rhs)
+  {
+      std::memcpy(this->m_buffer, rhs.m_buffer, N * sizeof(T));
+      return rhs;
+  }
+  
+  bool operator==(const array<T, N> & rhs) const
+  {
+    return (std::memcmp(this->m_buffer, rhs.m_buffer, N * sizeof(T)) == 0);
+  }
+  
+  bool operator!=(const array<T, N> & rhs) const
+  {
+    return !operator==(rhs);
+  }
+  
+  operator Buffer &()
+  {
+    return m_buffer; // Conversion to array reference
+  }
+  
+  operator const Buffer&() const
+  {
+    return m_buffer; // Conversion to const array reference
+  }
+  
+  array<T, N>() { }
+  
+  array<T, N>(const array<T, N> & copy)
+  {
+    operator=(copy);
+  }
+  
+  array<T, N>(const Buffer & buffer)
+  {
+    std::memcpy(m_buffer, buffer, N * sizeof(T));
+  }
+};
+
+#endif
\ No newline at end of file