14 #ifndef __INCLUDED_SCOPIRA_BASEKIT_DIRECTIO_H__    15 #define __INCLUDED_SCOPIRA_BASEKIT_DIRECTIO_H__    19 #include <scopira/tool/platform.h>    20 #include <scopira/tool/export.h>    21 #include <scopira/tool/fileflow.h>    22 #include <scopira/tool/array.h>    23 #include <scopira/basekit/narray.h>    29     struct directio_header_t;
    31     SCOPIRA_EXPORT 
bool save_directio_file_impl(
const std::string &filename, 
short numdimen, 
const size_t *dimen, 
size_t elemsize, 
const char *
id, 
const void *data);
    32     SCOPIRA_EXPORT 
bool load_directio_file_impl(
const std::string &filename, 
short numdimen, 
size_t *dimen, 
size_t elemsize, 
const char *
id, 
void * &outary);
    33     SCOPIRA_EXPORT 
bool bind_direct_file_impl(
scopira::tool::fileflow *f, scopira::tool::byte_t * &baseary, 
size_t len, narray_delete_i * &func, 
bool readonly);
    34     SCOPIRA_EXPORT 
bool create_directio_file_impl(
const std::string &filename, 
short numdimen, 
size_t *dimen, 
size_t elemsize, 
const char *
id);
    35     SCOPIRA_EXPORT 
bool bind_directio_file_impl(
const std::string &filename, 
short numdimen, 
size_t *dimen, 
size_t elemsize, 
const char *
id, 
bool readonly, 
void * &outary, narray_delete_i * &outfunc);
    36     SCOPIRA_EXPORT 
void sync_directio_file(narray_delete_i *d);
    40     template <> 
class directio_traints<float> { 
public: 
static const char * get_name(
void) { 
return "float32"; } };
    41     template <> 
class directio_traints<double> { 
public: 
static const char * get_name(
void) { 
return "float64"; } };
    42     template <> 
class directio_traints<char> { 
public: 
static const char * get_name(
void) { 
return "int8"; } };
    43     template <> 
class directio_traints<short> { 
public: 
static const char * get_name(
void) { 
return "int16"; } };
    44     template <> 
class directio_traints<int> { 
public: 
static const char * get_name(
void) { 
return "int32"; } };
    60         std::string &elementtype, std::vector<size_t> &dimen);
    72     template <
class T, 
int DIM>
    94     template <
class T, 
int DIM>
   108     template <
class T, 
int DIM>
   112         scopira::tool::byte_t *baseary;
   115         if (!bind_direct_file_impl(f, baseary, sz.
product()*
sizeof(T)+skipb, func, readonly))
   136     template <
class T, 
int DIM>
   158     template <
class T, 
int DIM>
   169     template <
class T, 
int DIM>
   193     SCOPIRA_EXPORT 
bool failed(
void)
 const { 
return dm_file.failed(); }
   202       assert(dm_dimen.size()>0);
   203       return dm_dimen[dm_dimen.size()-1];
   218     SCOPIRA_EXPORT 
bool open_file(
const std::string &filename, 
bool readonly,
   219         size_t dimlen, 
size_t elemsize, 
const char *elemname);
   222     SCOPIRA_EXPORT 
void verify_dimen(
const char *elemname, 
size_t subprod);
   223     SCOPIRA_EXPORT 
size_t seek_slice(
size_t r, 
size_t elemsize);    
   227     scopira::tool::fileflow::offset_t dm_baseoffset;
   229     const char *dm_elemname;
   250     bool open_file(
const std::string &filename, 
bool readonly) {
   260       assert(DIM == dm_dimen.size());
   263       for (
int i=0; i<ret.size(); ++i)
   264         ret[i] = dm_dimen[i];
   274       assert(DIM == dm_dimen.size());
   277       for (
int i=0; i<ret.size(); ++i)
   278         ret[i] = dm_dimen[i];
   289       size_t numelem = seek_slice(r, 
sizeof(T));
   290       return dm_file.read_array(out.
c_array(), numelem) == numelem;
   300       size_t numelem = seek_slice(r, 
sizeof(T));
   301       return dm_file.write_array(out.
c_array(), numelem) == numelem;
 bool open_file(const std::string &filename, bool readonly)
Definition: directio.h:250
 
bool failed(void) const
Definition: directio.h:193
 
directio_slice(void)
ctor 
Definition: directio.h:242
 
Definition: archiveflow.h:20
 
Definition: directio.h:39
 
const index_type & dimen(void) const
gets the size of this array 
Definition: narray.h:867
 
narray_delete_i * normal_narray_delete
 
bool bind_directio_file(const std::string &filename, narray< T, DIM > &out, bool readonly=false)
Definition: directio.h:159
 
void resize_direct(index_type sz, T *direct_ary, scopira::basekit::narray_delete_i *delfunc=null_narray_delete)
Definition: narray.h:1373
 
size_t product(void) const
Return the product of this coord. 
Definition: narray.h:713
 
Definition: directio.h:176
 
scopira::basekit::nindex< DIM > dimen(void) const
Definition: directio.h:259
 
bool open_file(const std::string &filename, bool readonly, size_t dimlen, size_t elemsize, const char *elemname)
 
scopira::basekit::nindex< DIM-1 > slice_dimen(void) const
Definition: directio.h:273
 
scopira::basekit::narray_delete_i * get_direct(void) const
gets the direct status/handler. non-null for direct mode 
Definition: narray.h:923
 
bool load_directio_file(const std::string &filename, scopira::basekit::narray< T, DIM > &out)
Definition: directio.h:73
 
bool load_slice(size_t r, scopira::basekit::narray< T, DIM-1 > &out)
Definition: directio.h:287
 
const T * c_array(void) const
raw c-array style access 
Definition: narray.h:843
 
Definition: directio.h:185
 
bool bind_direct_file(scopira::tool::fileflow *f, scopira::basekit::nindex< DIM > sz, scopira::basekit::narray< T, DIM > &out, bool readonly=false, scopira::tool::fileflow::offset_t skipb=0)
Definition: directio.h:109
 
size_t size_rows(void) const
Definition: directio.h:201
 
bool query_directio_file(const std::string &filename, std::string &elementtype, std::vector< size_t > &dimen)
 
bool create_directio_file(const std::string &filename, nindex< DIM > sz)
Definition: directio.h:137
 
bool save_slice(size_t r, scopira::basekit::narray< T, DIM-1 > &out)
Definition: directio.h:298
 
bool save_directio_file(const std::string &filename, const scopira::basekit::narray< T, DIM > &in)
Definition: directio.h:95
 
void resize(size_t len)
Definition: narray.h:877