GNU Octave  4.2.1
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Macros | Enumerations | Functions | Variables
ls-mat5.cc File Reference
#include <cfloat>
#include <cstring>
#include <cctype>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include "byte-swap.h"
#include "data-conv.h"
#include "file-ops.h"
#include "glob-match.h"
#include "lo-mappers.h"
#include "mach-info.h"
#include "oct-env.h"
#include "oct-time.h"
#include "quit.h"
#include "str-vec.h"
#include "file-stat.h"
#include "oct-locbuf.h"
#include "Cell.h"
#include "call-stack.h"
#include "defun.h"
#include "error.h"
#include "errwarn.h"
#include "load-save.h"
#include "load-path.h"
#include "ovl.h"
#include "oct-map.h"
#include "ov-cell.h"
#include "ov-class.h"
#include "ov-fcn-inline.h"
#include "pager.h"
#include "pt-exp.h"
#include "sysdep.h"
#include "interpreter.h"
#include "unwind-prot.h"
#include "utils.h"
#include "variables.h"
#include "version.h"
#include "dMatrix.h"
#include "ls-utils.h"
#include "ls-mat5.h"
#include "parse.h"
#include "defaults.h"
#include <zlib.h>
Include dependency graph for ls-mat5.cc:

Go to the source code of this file.

Macros

#define INT8(l)   ((l) == miINT8 || (l) == miUINT8 || (l) == miUTF8)
 
#define INT_LEN(nel, size)
 
#define MAT5_DO_WRITE(TYPE, data, count, stream)
 
#define OCTAVE_MAT5_INTEGER_READ(TYP)
 
#define PAD(l)   (((l) > 0 && (l) <= 4) ? 4 : (((l)+7)/8)*8)
 
#define READ_INTEGER_DATA(TYPE, swap, data, size, len, stream)
 
#define READ_PAD(is_small_data_element, l)   ((is_small_data_element) ? 4 : (((l)+7)/8)*8)
 

Enumerations

enum  arrayclasstype {
  MAT_FILE_CELL_CLASS =1, MAT_FILE_STRUCT_CLASS, MAT_FILE_OBJECT_CLASS, MAT_FILE_CHAR_CLASS,
  MAT_FILE_SPARSE_CLASS, MAT_FILE_DOUBLE_CLASS, MAT_FILE_SINGLE_CLASS, MAT_FILE_INT8_CLASS,
  MAT_FILE_UINT8_CLASS, MAT_FILE_INT16_CLASS, MAT_FILE_UINT16_CLASS, MAT_FILE_INT32_CLASS,
  MAT_FILE_UINT32_CLASS, MAT_FILE_INT64_CLASS, MAT_FILE_UINT64_CLASS, MAT_FILE_FUNCTION_CLASS,
  MAT_FILE_WORKSPACE_CLASS
}
 

Functions

static void read_int (std::istream &is, bool swap, int32_t &val)
 
static void read_mat5_binary_data (std::istream &is, double *data, octave_idx_type count, bool swap, mat5_data_type type, octave::mach_info::float_format flt_fmt)
 
static void read_mat5_binary_data (std::istream &is, float *data, octave_idx_type count, bool swap, mat5_data_type type, octave::mach_info::float_format flt_fmt)
 
std::string read_mat5_binary_element (std::istream &is, const std::string &filename, bool swap, bool &global, octave_value &tc)
 
int read_mat5_binary_file_header (std::istream &is, bool &swap, bool quiet, const std::string &filename)
 
template<typename T >
void read_mat5_integer_data (std::istream &is, T *m, octave_idx_type count, bool swap, mat5_data_type type)
 
template void read_mat5_integer_data (std::istream &is, octave_int8 *m, octave_idx_type count, bool swap, mat5_data_type type)
 
template void read_mat5_integer_data (std::istream &is, octave_int16 *m, octave_idx_type count, bool swap, mat5_data_type type)
 
template void read_mat5_integer_data (std::istream &is, octave_int32 *m, octave_idx_type count, bool swap, mat5_data_type type)
 
template void read_mat5_integer_data (std::istream &is, octave_int64 *m, octave_idx_type count, bool swap, mat5_data_type type)
 
template void read_mat5_integer_data (std::istream &is, octave_uint8 *m, octave_idx_type count, bool swap, mat5_data_type type)
 
template void read_mat5_integer_data (std::istream &is, octave_uint16 *m, octave_idx_type count, bool swap, mat5_data_type type)
 
template void read_mat5_integer_data (std::istream &is, octave_uint32 *m, octave_idx_type count, bool swap, mat5_data_type type)
 
template void read_mat5_integer_data (std::istream &is, octave_uint64 *m, octave_idx_type count, bool swap, mat5_data_type type)
 
template void read_mat5_integer_data (std::istream &is, int *m, octave_idx_type count, bool swap, mat5_data_type type)
 
static int read_mat5_tag (std::istream &is, bool swap, int32_t &type, int32_t &bytes, bool &is_small_data_element)
 
int save_mat5_array_length (const double *val, octave_idx_type nel, bool save_as_floats)
 
int save_mat5_array_length (const float *, octave_idx_type nel, bool)
 
int save_mat5_array_length (const Complex *val, octave_idx_type nel, bool save_as_floats)
 
int save_mat5_array_length (const FloatComplex *val, octave_idx_type nel, bool save_as_floats)
 
bool save_mat5_binary_element (std::ostream &os, const octave_value &tc, const std::string &name, bool mark_as_global, bool mat7_format, bool save_as_floats, bool compressing)
 
int save_mat5_element_length (const octave_value &tc, const std::string &name, bool save_as_floats, bool mat7_format)
 
static void warn_dim_too_large (const std::string &name)
 
static void write_mat5_array (std::ostream &os, const NDArray &m, bool save_as_floats)
 
static void write_mat5_array (std::ostream &os, const FloatNDArray &m, bool)
 
static bool write_mat5_cell_array (std::ostream &os, const Cell &cell, bool mark_as_global, bool save_as_floats)
 
template<typename T >
void write_mat5_integer_data (std::ostream &os, const T *m, int size, octave_idx_type nel)
 
template void write_mat5_integer_data (std::ostream &os, const octave_int8 *m, int size, octave_idx_type nel)
 
template void write_mat5_integer_data (std::ostream &os, const octave_int16 *m, int size, octave_idx_type nel)
 
template void write_mat5_integer_data (std::ostream &os, const octave_int32 *m, int size, octave_idx_type nel)
 
template void write_mat5_integer_data (std::ostream &os, const octave_int64 *m, int size, octave_idx_type nel)
 
template void write_mat5_integer_data (std::ostream &os, const octave_uint8 *m, int size, octave_idx_type nel)
 
template void write_mat5_integer_data (std::ostream &os, const octave_uint16 *m, int size, octave_idx_type nel)
 
template void write_mat5_integer_data (std::ostream &os, const octave_uint32 *m, int size, octave_idx_type nel)
 
template void write_mat5_integer_data (std::ostream &os, const octave_uint64 *m, int size, octave_idx_type nel)
 
template void write_mat5_integer_data (std::ostream &os, const int *m, int size, octave_idx_type nel)
 
static void write_mat5_sparse_index_vector (std::ostream &os, const octave_idx_type *idx, octave_idx_type nel)
 
static int write_mat5_tag (std::ostream &is, int type, octave_idx_type bytes)
 

Variables

static octave_value subsys_ov
 

Macro Definition Documentation

#define INT8 (   l)    ((l) == miINT8 || (l) == miUINT8 || (l) == miUTF8)

Definition at line 87 of file ls-mat5.cc.

Referenced by read_mat5_binary_element().

#define INT_LEN (   nel,
  size 
)
Value:
{ \
ret += 8; \
octave_idx_type sz = nel * size; \
if (sz > 4) \
ret += PAD (sz); \
}
#define PAD(l)
Definition: ls-mat5.cc:86
if(nargin< 2) print_usage()
Definition: cellfun.cc:405
sz
Definition: data.cc:5342
OCTAVE_EXPORT octave_value_list any number nd example oindent prints the prompt xample Pick a any number!nd example oindent and waits for the user to enter a value The string entered by the user is evaluated as an so it may be a literal a variable or any other valid Octave code The number of return their size
Definition: input.cc:871

Referenced by save_mat5_element_length().

#define MAT5_DO_WRITE (   TYPE,
  data,
  count,
  stream 
)
Value:
do \
{ \
OCTAVE_LOCAL_BUFFER (TYPE, ptr, count); \
for (octave_idx_type i = 0; i < count; i++) \
ptr[i] = static_cast<TYPE> (data[i]); \
std::streamsize n_bytes = sizeof (TYPE) * static_cast<std::streamsize> (count); \
stream.write (reinterpret_cast<char *> (ptr), n_bytes); \
} \
while (0)
while(ischar(s=fgets(fid))) fputs(stdout
for(octave_idx_type n=0;n< hcv.numel();n++)
Definition: graphics.cc:10128
=val(i)}if ode{val(i)}occurs in table i
Definition: lookup.cc:239
#define OCTAVE_LOCAL_BUFFER(T, buf, size)
Definition: oct-locbuf.h:200

Definition at line 1575 of file ls-mat5.cc.

Referenced by write_mat5_array().

#define OCTAVE_MAT5_INTEGER_READ (   TYP)

Definition at line 373 of file ls-mat5.cc.

Referenced by read_mat5_binary_element().

#define PAD (   l)    (((l) > 0 && (l) <= 4) ? 4 : (((l)+7)/8)*8)
#define READ_INTEGER_DATA (   TYPE,
  swap,
  data,
  size,
  len,
  stream 
)
Value:
do \
{ \
if (len > 0) \
{ \
OCTAVE_LOCAL_BUFFER (TYPE, ptr, len); \
std::streamsize n_bytes = size * static_cast<std::streamsize> (len); \
stream.read (reinterpret_cast<char *> (ptr), n_bytes); \
if (swap) \
swap_bytes< size > (ptr, len); \
for (octave_idx_type i = 0; i < len; i++) \
data[i] = ptr[i]; \
} \
} \
while (0)
while(ischar(s=fgets(fid))) fputs(stdout
for(octave_idx_type n=0;n< hcv.numel();n++)
Definition: graphics.cc:10128
bool swap
Definition: load-save.cc:725
if(nargin< 2) print_usage()
Definition: cellfun.cc:405
=val(i)}if ode{val(i)}occurs in table i
Definition: lookup.cc:239
#define OCTAVE_LOCAL_BUFFER(T, buf, size)
Definition: oct-locbuf.h:200
OCTAVE_EXPORT octave_value_list any number nd example oindent prints the prompt xample Pick a any number!nd example oindent and waits for the user to enter a value The string entered by the user is evaluated as an so it may be a literal a variable or any other valid Octave code The number of return their size
Definition: input.cc:871

Referenced by read_mat5_integer_data().

#define READ_PAD (   is_small_data_element,
 
)    ((is_small_data_element) ? 4 : (((l)+7)/8)*8)

Definition at line 85 of file ls-mat5.cc.

Referenced by read_mat5_binary_element().

Enumeration Type Documentation

Enumerator
MAT_FILE_CELL_CLASS 
MAT_FILE_STRUCT_CLASS 
MAT_FILE_OBJECT_CLASS 
MAT_FILE_CHAR_CLASS 
MAT_FILE_SPARSE_CLASS 
MAT_FILE_DOUBLE_CLASS 
MAT_FILE_SINGLE_CLASS 
MAT_FILE_INT8_CLASS 
MAT_FILE_UINT8_CLASS 
MAT_FILE_INT16_CLASS 
MAT_FILE_UINT16_CLASS 
MAT_FILE_INT32_CLASS 
MAT_FILE_UINT32_CLASS 
MAT_FILE_INT64_CLASS 
MAT_FILE_UINT64_CLASS 
MAT_FILE_FUNCTION_CLASS 
MAT_FILE_WORKSPACE_CLASS 

Definition at line 100 of file ls-mat5.cc.

Function Documentation

static void read_int ( std::istream &  is,
bool  swap,
int32_t &  val 
)
static

Definition at line 461 of file ls-mat5.cc.

References swap_bytes< 4 >(), and val.

Referenced by read_mat5_binary_element().

static void read_mat5_binary_data ( std::istream &  is,
double data,
octave_idx_type  count,
bool  swap,
mat5_data_type  type,
octave::mach_info::float_format  flt_fmt 
)
static
static void read_mat5_binary_data ( std::istream &  is,
float *  data,
octave_idx_type  count,
bool  swap,
mat5_data_type  type,
octave::mach_info::float_format  flt_fmt 
)
static
std::string read_mat5_binary_element ( std::istream &  is,
const std::string filename,
bool  swap,
bool global,
octave_value tc 
)

Definition at line 478 of file ls-mat5.cc.

References a, action_container::add_fcn(), symbol_table::alloc_scope(), octave_map::assign(), symbol_table::assign(), octave_scalar_map::begin(), octave_value::cell_value(), Sparse< T >::cidx(), Array< T >::clear(), octave_scalar_map::contents(), octave_map::contents(), octave_value::convert_to_str(), Sparse< T >::data(), dims, octave::sys::file_ops::dir_sep_chars(), octave_scalar_map::end(), symbol_table::erase_scope(), err, err_disabled_feature(), error(), eval_string(), octave::sys::base_file_stat::exists(), fcn, octave_value::fcn_handle_value(), octave_fcn_handle::fcn_val(), feval(), octave::directory_path::find_first_of(), load_path::find_method(), flt_fmt, octave::mach_info::flt_fmt_ieee_big_endian, octave::mach_info::flt_fmt_ieee_little_endian, octave::mach_info::flt_fmt_unknown, fname, Array< T >::fortran_vec(), frame, fs, imag(), INT8, octave_scalar_map::key(), load_fcn_from_file(), m, octave::sys::env::make_absolute(), make_fcn_handle(), MAT_FILE_CELL_CLASS, MAT_FILE_CHAR_CLASS, MAT_FILE_DOUBLE_CLASS, MAT_FILE_FUNCTION_CLASS, MAT_FILE_INT16_CLASS, MAT_FILE_INT32_CLASS, MAT_FILE_INT64_CLASS, MAT_FILE_INT8_CLASS, MAT_FILE_OBJECT_CLASS, MAT_FILE_SINGLE_CLASS, MAT_FILE_SPARSE_CLASS, MAT_FILE_STRUCT_CLASS, MAT_FILE_UINT16_CLASS, MAT_FILE_UINT32_CLASS, MAT_FILE_UINT64_CLASS, MAT_FILE_UINT8_CLASS, MAT_FILE_WORKSPACE_CLASS, miCOMPRESSED, miINT32, miMATRIX, miUINT32, miUTF16, miUTF32, miUTF8, name, octave_scalar_map::nfields(), nm, number, Array< T >::numel(), dim_vector::numel(), OCTAVE_EXEC_PREFIX, OCTAVE_LOCAL_BUFFER, OCTAVE_MAT5_INTEGER_READ, octave_value(), p, octave_call_stack::pop(), octave_call_stack::push(), read_int(), read_mat5_binary_data(), read_mat5_binary_element(), read_mat5_integer_data(), read_mat5_tag(), READ_PAD, octave_class::reconstruct_exemplar(), octave_class::reconstruct_parents(), dim_vector::resize(), retval, Sparse< T >::ridx(), action_container::run(), octave_value::scalar_map_value(), symbol_table::set_scope(), str, string, octave_value::string_value(), swap, swap_bytes< 4 >(), load_path::system_path(), tmp, type, octave_value::uint32_array_value(), octave_value::uint8_array_value(), val, warning(), and Sparse< T >::xdata().

Referenced by do_load(), read_mat5_binary_element(), and read_mat5_binary_file_header().

int read_mat5_binary_file_header ( std::istream &  is,
bool swap,
bool  quiet,
const std::string filename 
)
template<typename T >
void read_mat5_integer_data ( std::istream &  is,
T *  m,
octave_idx_type  count,
bool  swap,
mat5_data_type  type 
)
template void read_mat5_integer_data ( std::istream &  is,
octave_int8 m,
octave_idx_type  count,
bool  swap,
mat5_data_type  type 
)
template void read_mat5_integer_data ( std::istream &  is,
octave_int16 m,
octave_idx_type  count,
bool  swap,
mat5_data_type  type 
)
template void read_mat5_integer_data ( std::istream &  is,
octave_int32 m,
octave_idx_type  count,
bool  swap,
mat5_data_type  type 
)
template void read_mat5_integer_data ( std::istream &  is,
octave_int64 m,
octave_idx_type  count,
bool  swap,
mat5_data_type  type 
)
template void read_mat5_integer_data ( std::istream &  is,
octave_uint8 m,
octave_idx_type  count,
bool  swap,
mat5_data_type  type 
)
template void read_mat5_integer_data ( std::istream &  is,
octave_uint16 m,
octave_idx_type  count,
bool  swap,
mat5_data_type  type 
)
template void read_mat5_integer_data ( std::istream &  is,
octave_uint32 m,
octave_idx_type  count,
bool  swap,
mat5_data_type  type 
)
template void read_mat5_integer_data ( std::istream &  is,
octave_uint64 m,
octave_idx_type  count,
bool  swap,
mat5_data_type  type 
)
template void read_mat5_integer_data ( std::istream &  is,
int m,
octave_idx_type  count,
bool  swap,
mat5_data_type  type 
)
static int read_mat5_tag ( std::istream &  is,
bool  swap,
int32_t &  type,
int32_t &  bytes,
bool is_small_data_element 
)
static

Definition at line 426 of file ls-mat5.cc.

References swap_bytes< 4 >().

Referenced by read_mat5_binary_element().

int save_mat5_array_length ( const double val,
octave_idx_type  nel,
bool  save_as_floats 
)

Definition at line 1880 of file ls-mat5.cc.

References octave::math::finite(), max(), size, and tmp.

Referenced by save_mat5_array_length(), and save_mat5_element_length().

int save_mat5_array_length ( const float *  ,
octave_idx_type  nel,
bool   
)

Definition at line 1954 of file ls-mat5.cc.

References PAD, and size.

int save_mat5_array_length ( const Complex val,
octave_idx_type  nel,
bool  save_as_floats 
)
int save_mat5_array_length ( const FloatComplex val,
octave_idx_type  nel,
bool  save_as_floats 
)
bool save_mat5_binary_element ( std::ostream &  os,
const octave_value tc,
const std::string name,
bool  mark_as_global,
bool  mat7_format,
bool  save_as_floats,
bool  compressing 
)

Definition at line 2230 of file ls-mat5.cc.

References octave_value::array_value(), octave_value::bool_array_value(), octave_value::cell_value(), octave_value::char_array_value(), Sparse< T >::cidx(), octave_value::class_name(), Sparse< T >::cols(), octave_value::complex_array_value(), octave_map::contents(), Sparse< T >::data(), Array< T >::data(), octave_value::dims(), dv, error(), feval(), load_path::find_method(), octave_value::float_array_value(), octave_value::float_complex_array_value(), Array< T >::fortran_vec(), octave::math::imag(), imag(), octave_value::int16_array_value(), octave_value::int32_array_value(), octave_value::int64_array_value(), octave_value::int8_array_value(), octave_value::is_bool_type(), octave_value::is_cell(), octave_value::is_complex_matrix(), octave_value::is_complex_scalar(), octave_value::is_complex_type(), octave_value::is_inline_function(), octave_value::is_map(), octave_value::is_object(), octave_value::is_range(), octave_value::is_real_matrix(), octave_value::is_real_scalar(), octave_value::is_single_type(), octave_value::is_sparse_type(), octave_value::is_string(), octave_map::keys(), m, octave_value::map_value(), MAT_FILE_CELL_CLASS, MAT_FILE_CHAR_CLASS, MAT_FILE_DOUBLE_CLASS, MAT_FILE_INT16_CLASS, MAT_FILE_INT32_CLASS, MAT_FILE_INT64_CLASS, MAT_FILE_INT8_CLASS, MAT_FILE_OBJECT_CLASS, MAT_FILE_SINGLE_CLASS, MAT_FILE_SPARSE_CLASS, MAT_FILE_STRUCT_CLASS, MAT_FILE_UINT16_CLASS, MAT_FILE_UINT32_CLASS, MAT_FILE_UINT64_CLASS, MAT_FILE_UINT8_CLASS, max(), miCOMPRESSED, miINT32, miINT8, miMATRIX, miUINT16, miUINT32, octave_value::ndims(), octave_map::nfields(), Sparse< T >::nnz(), Array< T >::numel(), octave_map::numel(), dim_vector::numel(), Sparse< T >::nzmax(), OCTAVE_LOCAL_BUFFER, PAD, octave::math::real(), real(), Sparse< T >::ridx(), s, save_mat5_binary_element(), save_mat5_element_length(), octave_value::sparse_complex_matrix_value(), octave_value::sparse_matrix_value(), string, tmp, octave_value::uint16_array_value(), octave_value::uint32_array_value(), octave_value::uint64_array_value(), octave_value::uint8_array_value(), warn_dim_too_large(), warn_wrong_type_arg(), write_mat5_array(), write_mat5_cell_array(), write_mat5_integer_data(), write_mat5_sparse_index_vector(), and write_mat5_tag().

Referenced by do_save(), save_mat5_binary_element(), and write_mat5_cell_array().

int save_mat5_element_length ( const octave_value tc,
const std::string name,
bool  save_as_floats,
bool  mat7_format 
)
static void warn_dim_too_large ( const std::string name)
static

Definition at line 2220 of file ls-mat5.cc.

References warning().

Referenced by save_mat5_binary_element().

static void write_mat5_array ( std::ostream &  os,
const NDArray m,
bool  save_as_floats 
)
static
static void write_mat5_array ( std::ostream &  os,
const FloatNDArray m,
bool   
)
static
static bool write_mat5_cell_array ( std::ostream &  os,
const Cell cell,
bool  mark_as_global,
bool  save_as_floats 
)
static

Definition at line 1862 of file ls-mat5.cc.

References Array< T >::numel(), and save_mat5_binary_element().

Referenced by save_mat5_binary_element().

template<typename T >
void write_mat5_integer_data ( std::ostream &  os,
const T *  m,
int  size,
octave_idx_type  nel 
)
template void write_mat5_integer_data ( std::ostream &  os,
const octave_int8 m,
int  size,
octave_idx_type  nel 
)
template void write_mat5_integer_data ( std::ostream &  os,
const octave_int16 m,
int  size,
octave_idx_type  nel 
)
template void write_mat5_integer_data ( std::ostream &  os,
const octave_int32 m,
int  size,
octave_idx_type  nel 
)
template void write_mat5_integer_data ( std::ostream &  os,
const octave_int64 m,
int  size,
octave_idx_type  nel 
)
template void write_mat5_integer_data ( std::ostream &  os,
const octave_uint8 m,
int  size,
octave_idx_type  nel 
)
template void write_mat5_integer_data ( std::ostream &  os,
const octave_uint16 m,
int  size,
octave_idx_type  nel 
)
template void write_mat5_integer_data ( std::ostream &  os,
const octave_uint32 m,
int  size,
octave_idx_type  nel 
)
template void write_mat5_integer_data ( std::ostream &  os,
const octave_uint64 m,
int  size,
octave_idx_type  nel 
)
template void write_mat5_integer_data ( std::ostream &  os,
const int m,
int  size,
octave_idx_type  nel 
)
static void write_mat5_sparse_index_vector ( std::ostream &  os,
const octave_idx_type idx,
octave_idx_type  nel 
)
static

Definition at line 2205 of file ls-mat5.cc.

References OCTAVE_LOCAL_BUFFER, tmp, and write_mat5_integer_data().

Referenced by save_mat5_binary_element().

static int write_mat5_tag ( std::ostream &  is,
int  type,
octave_idx_type  bytes 
)
static

Definition at line 1552 of file ls-mat5.cc.

References type.

Referenced by save_mat5_binary_element(), write_mat5_array(), and write_mat5_integer_data().

Variable Documentation

octave_value subsys_ov
static

Definition at line 91 of file ls-mat5.cc.