2 #ifndef vbl_big_sparse_array_3d_hxx_ 3 #define vbl_big_sparse_array_3d_hxx_ 10 # include <vcl_msvc_warnings.h> 14 inline ulonglong
bigencode(
unsigned i,
unsigned j,
unsigned k)
18 assert( i <= 0x3fffff && j <= 0x1fffff && k <= 0x1fffff );
19 return (((ulonglong)i) << 42) |
20 (((ulonglong)j) << 21) |
23 assert( i <= 0x3ff && j <= 0x7ff && k <= 0x7ff );
24 return (((ulonglong)i) << 22) |
25 (((ulonglong)j) << 11) |
30 inline void bigdecode(ulonglong v,
unsigned& i,
unsigned& j,
unsigned& k)
33 k = (unsigned)(v & 0x1fffff);
34 j = (unsigned)((v >> 21) & 0x1fffff);
35 i = (unsigned)((v >> 42) & 0x3fffff);
37 k = (unsigned)(v & 0x7ff);
38 j = (unsigned)((v >> 11) & 0x7ff);
39 i = (unsigned)((v >> 22) & 0x3ff);
47 std::cout <<
"{vbl_big_sparse_array_3d(" << i <<
',' << j <<
',' << k
48 <<
") - storage[" <<
bigencode(i,j,k) <<
"] - " 57 typename Map::const_iterator p = storage_.find(
bigencode(i,j,k));
59 std::cout <<
"{vbl_big_sparse_array_3d(" << i <<
',' << j <<
',' << k
60 <<
") - storage[" <<
bigencode(i,j,k) <<
"] - " 63 assert(p != storage_.end());
71 std::cout <<
"{vbl_big_sparse_array_3d::fullp(" << i <<
',' << j <<
',' << k <<
") - " 72 << (storage_.find(
bigencode(i,j,k)) != storage_.end()) <<
"}\n";
74 return (storage_.find(
bigencode(i,j,k)) != storage_.end());
80 typedef typename Map::iterator iter;
81 typedef typename Map::value_type value_type;
83 std::pair<iter,bool> res = storage_.insert(value_type(v,t));
85 std::cout <<
"{vbl_big_sparse_array_3d::put(" << i <<
',' << j <<
',' << k <<
") - " 86 << res.second <<
"}\n";
94 for (
typename Map::const_iterator p = storage_.begin(); p != storage_.end(); ++p) {
97 out <<
'(' << i <<
',' << j <<
',' << k <<
"): " << (*p).second << std::endl;
102 #define VBL_BIG_SPARSE_ARRAY_3D_INSTANTIATE_base(T) \ 103 template class vbl_big_sparse_array_3d<T > 105 #undef VBL_BIG_SPARSE_ARRAY_3D_INSTANTIATE 106 #define VBL_BIG_SPARSE_ARRAY_3D_INSTANTIATE(T) \ 107 VBL_BIG_SPARSE_ARRAY_3D_INSTANTIATE_base(T); \ 110 #endif // vbl_big_sparse_array_3d_hxx_ T & operator()(unsigned, unsigned, unsigned)
std::ostream & print(std::ostream &) const
bool fullp(unsigned, unsigned, unsigned) const
Has this cell been assigned a value?.
ulonglong bigencode(unsigned i, unsigned j, unsigned k)
bool put(unsigned, unsigned, unsigned, T const &)
Put a value in a certain cell.
void bigdecode(ulonglong v, unsigned &i, unsigned &j, unsigned &k)