Ryan Curtin d3a671e
Index: mlpack-1.0.3/src/mlpack/core/arma_extend/traits.hpp
Ryan Curtin d3a671e
===================================================================
Ryan Curtin d3a671e
--- mlpack-1.0.3/src/mlpack/core/arma_extend/traits.hpp	(revision 13920)
Ryan Curtin d3a671e
+++ mlpack-1.0.3/src/mlpack/core/arma_extend/traits.hpp	(working copy)
Ryan Curtin d3a671e
@@ -15,7 +15,25 @@
Ryan Curtin d3a671e
 
Ryan Curtin d3a671e
 // This isn't necessary if Armadillo was compiled with 64-bit support.
Ryan Curtin d3a671e
 #ifndef ARMA_64BIT_WORD
Ryan Curtin d3a671e
+template<typename T1>
Ryan Curtin d3a671e
+struct is_u64
Ryan Curtin d3a671e
+  { static const bool value = false; };
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
 template<>
Ryan Curtin d3a671e
+struct is_u64<u64>
Ryan Curtin d3a671e
+  { static const bool value = true; };
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+template<typename T1>
Ryan Curtin d3a671e
+struct is_s64
Ryan Curtin d3a671e
+  { static const bool value = false; };
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+template<>
Ryan Curtin d3a671e
+struct is_s64<s64>
Ryan Curtin d3a671e
+  { static const bool value = true; };
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+template<>
Ryan Curtin d3a671e
 struct is_supported_elem_type<u64>
Ryan Curtin d3a671e
   {
Ryan Curtin d3a671e
   static const bool value = true;
Ryan Curtin d3a671e
@@ -26,6 +44,13 @@
Ryan Curtin d3a671e
   {
Ryan Curtin d3a671e
   static const bool value = true;
Ryan Curtin d3a671e
   };
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+template<>
Ryan Curtin d3a671e
+struct is_signed<u64>
Ryan Curtin d3a671e
+  {
Ryan Curtin d3a671e
+  static const bool value = false;
Ryan Curtin d3a671e
+  };
Ryan Curtin d3a671e
 #endif
Ryan Curtin d3a671e
 
Ryan Curtin d3a671e
 #endif
Ryan Curtin d3a671e
Index: mlpack-1.0.3/src/mlpack/core/arma_extend/restrictors.hpp
Ryan Curtin d3a671e
===================================================================
Ryan Curtin d3a671e
--- mlpack-1.0.3/src/mlpack/core/arma_extend/restrictors.hpp	(revision 0)
Ryan Curtin d3a671e
+++ mlpack-1.0.3/src/mlpack/core/arma_extend/restrictors.hpp	(working copy)
Ryan Curtin d3a671e
@@ -0,0 +1,17 @@
Ryan Curtin d3a671e
+// Modifications to allow u64/s64 in Armadillo when ARMA_64BIT_WORD is not
Ryan Curtin d3a671e
+// defined.
Ryan Curtin d3a671e
+#ifndef ARMA_64BIT_WORD
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+template<> struct arma_scalar_only<u64>   { typedef u64   result; };
Ryan Curtin d3a671e
+template<> struct arma_scalar_only<s64>   { typedef s64   result; };
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+template<> struct arma_integral_only<u64> { typedef u64   result; };
Ryan Curtin d3a671e
+template<> struct arma_integral_only<s64> { typedef s64   result; };
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+template<> struct arma_unsigned_integral_only<u64> { typedef u64 result; };
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+template<> struct arma_signed_integral_only<s64> { typedef s64 result; };
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+template<> struct arma_signed_only<s64> { typedef s64 result; };
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+#endif
Ryan Curtin d3a671e
Index: mlpack-1.0.3/src/mlpack/core/arma_extend/arma_extend.hpp
Ryan Curtin d3a671e
===================================================================
Ryan Curtin d3a671e
--- mlpack-1.0.3/src/mlpack/core/arma_extend/arma_extend.hpp	(revision 13920)
Ryan Curtin d3a671e
+++ mlpack-1.0.3/src/mlpack/core/arma_extend/arma_extend.hpp	(working copy)
Ryan Curtin d3a671e
@@ -21,10 +21,12 @@
Ryan Curtin d3a671e
 #endif
Ryan Curtin d3a671e
 
Ryan Curtin d3a671e
 namespace arma {
Ryan Curtin d3a671e
-  // u64
Ryan Curtin d3a671e
+  // u64/s64
Ryan Curtin d3a671e
   #include "typedef.hpp"
Ryan Curtin d3a671e
   #include "traits.hpp"
Ryan Curtin d3a671e
   #include "promote_type.hpp"
Ryan Curtin d3a671e
+  #include "restrictors.hpp"
Ryan Curtin d3a671e
+  #include "hdf5_misc.hpp"
Ryan Curtin d3a671e
 
Ryan Curtin d3a671e
   // ccov()
Ryan Curtin d3a671e
   #include "op_ccov_proto.hpp"
Ryan Curtin d3a671e
Index: mlpack-1.0.3/src/mlpack/core/arma_extend/typedef.hpp
Ryan Curtin d3a671e
===================================================================
Ryan Curtin d3a671e
--- mlpack-1.0.3/src/mlpack/core/arma_extend/typedef.hpp	(revision 13920)
Ryan Curtin d3a671e
+++ mlpack-1.0.3/src/mlpack/core/arma_extend/typedef.hpp	(working copy)
Ryan Curtin d3a671e
@@ -42,17 +42,28 @@
Ryan Curtin d3a671e
     #endif
Ryan Curtin d3a671e
     };
Ryan Curtin d3a671e
 
Ryan Curtin d3a671e
-  typedef deduce_u64<(sizeof(std::size_t) >= 8)>::u64 u64;
Ryan Curtin d3a671e
-#endif
Ryan Curtin d3a671e
-
Ryan Curtin d3a671e
   // We only need to typedef s64.
Ryan Curtin d3a671e
   #if   ULONG_MAX >= 0xffffffffffffffff
Ryan Curtin d3a671e
     typedef          long s64;
Ryan Curtin d3a671e
   #elif ULLONG_MAX >= 0xffffffffffffffff
Ryan Curtin d3a671e
-    typedef          long s64;
Ryan Curtin d3a671e
+    typedef     long long s64;
Ryan Curtin d3a671e
   #else
Ryan Curtin d3a671e
     #error "don't know how to typedef 's64' on this system"
Ryan Curtin d3a671e
   #endif
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+  typedef deduce_u64<(sizeof(std::size_t) >= 8)>::u64 u64;
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+  namespace junk
Ryan Curtin d3a671e
+    {
Ryan Curtin d3a671e
+    struct arma_64_elem_size_test
Ryan Curtin d3a671e
+      {
Ryan Curtin d3a671e
+      arma_static_check( (sizeof(u64) != 8), ERROR___TYPE_U64_HAS_UNSUPPORTED_SIZE );
Ryan Curtin d3a671e
+      arma_static_check( (sizeof(s64) != 8), ERROR___TYPE_S64_HAS_UNSUPPORTED_SIZE );
Ryan Curtin d3a671e
+      };
Ryan Curtin d3a671e
+    }
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+#endif
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
 #else
Ryan Curtin d3a671e
 
Ryan Curtin d3a671e
   // We must typedef both u64 and s64.
Ryan Curtin d3a671e
Index: mlpack-1.0.3/src/mlpack/core/arma_extend/hdf5_misc.hpp
Ryan Curtin d3a671e
===================================================================
Ryan Curtin d3a671e
--- mlpack-1.0.3/src/mlpack/core/arma_extend/hdf5_misc.hpp	(revision 0)
Ryan Curtin d3a671e
+++ mlpack-1.0.3/src/mlpack/core/arma_extend/hdf5_misc.hpp	(working copy)
Ryan Curtin d3a671e
@@ -0,0 +1,21 @@
Ryan Curtin d3a671e
+// To hack in u64/s64 support to Armadillo when it is not compiled with
Ryan Curtin d3a671e
+// ARMA_64BIT_WORD.
Ryan Curtin d3a671e
+#ifdef ARMA_USE_HDF5
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+template<>
Ryan Curtin d3a671e
+inline
Ryan Curtin d3a671e
+hid_t
Ryan Curtin d3a671e
+get_hdf5_type< long long >()
Ryan Curtin d3a671e
+  {
Ryan Curtin d3a671e
+  return H5Tcopy(H5T_NATIVE_LLONG);
Ryan Curtin d3a671e
+  }
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+template<>
Ryan Curtin d3a671e
+inline
Ryan Curtin d3a671e
+hid_t
Ryan Curtin d3a671e
+get_hdf5_type< unsigned long long >()
Ryan Curtin d3a671e
+  {
Ryan Curtin d3a671e
+  return H5Tcopy(H5T_NATIVE_ULLONG);
Ryan Curtin d3a671e
+  }
Ryan Curtin d3a671e
+
Ryan Curtin d3a671e
+#endif