26#if ! defined (octave_ov_range_h)
27#define octave_ov_range_h 1
29#include "octave-config.h"
60 : m_numel (
numel), m_base (base), m_increment(incr) { }
70 return m_base +
static_cast<int> (i) * m_increment;
71 return m_base + (m_numel - 1) * m_increment;
78 return m_base +
static_cast<int> (i) * m_increment;
79 return m_base + (m_numel - 1) * m_increment;
107 error (
"invalid range");
116 ov_range (
const octave::range<T>& r,
const octave::idx_vector& cache)
153 const std::list<octave_value_list>& idx);
156 const std::list<octave_value_list>& idx,
int)
157 {
return subsref (type, idx); }
162 OCTINTERP_API octave::idx_vector
index_vector (
bool require_integers =
false)
const;
189 std::size_t
byte_size ()
const {
return 3 *
sizeof (T); }
285 return m.diag (nr, nc);
291 return tmp.
sort (dim, mode);
298 return tmp.
sort (sidx, dim, mode);
303 return m_range.issorted (mode);
320 OCTINTERP_API
float float_value (
bool =
false)
const;
434 OCTINTERP_API octave::range<double>
range_value ()
const;
454 OCTINTERP_API
void print (std::ostream& os,
bool pr_as_read_syntax =
false);
457 print_raw (std::ostream& os,
bool pr_as_read_syntax =
false)
const;
462 OCTINTERP_API
void short_disp (std::ostream& os)
const;
466 OCTINTERP_API std::string
470 OCTINTERP_API
bool save_ascii (std::ostream& os);
472 OCTINTERP_API
bool load_ascii (std::istream& is);
474 OCTINTERP_API
bool save_binary (std::ostream& os,
bool save_as_floats);
478 octave::mach_info::float_format fmt);
485 int write (octave::stream& os,
int block_size,
487 octave::mach_info::float_format flt_fmt)
const
492 return os.write (
matrix_value (), block_size, output_type, skip, flt_fmt);
500 return tmp.
map (umap);
535OCTINTERP_API octave::range<double>
544OCTINTERP_API octave::idx_vector
N Dimensional Array with copy-on-write semantics.
Array< T, Alloc > permute(const Array< octave_idx_type > &vec, bool inv=false) const
Size of the specified dimension.
Array< T, Alloc > sort(int dim=0, sortmode mode=ASCENDING) const
Size of the specified dimension.
Array< T, Alloc > reshape(octave_idx_type nr, octave_idx_type nc) const
Size of the specified dimension.
Vector representing the dimensions (size) of an Array.
virtual octave_value subsref(const std::string &type, const std::list< octave_value_list > &idx)
virtual octave_idx_type numel() const
octave_trivial_range(const octave_trivial_range &)=default
bool is_trivial_range() const
double vm_extract_forloop_double(octave_idx_type i)
octave_trivial_range(octave_idx_type numel, int base, int incr)
octave_value vm_extract_forloop_value(octave_idx_type i)
octave_idx_type nnz() const
octave_value map(octave_base_value::unary_mapper_t umap) const
octave_value diag(octave_idx_type k=0) const
ComplexMatrix complex_matrix_value(bool=false) const
double scalar_value(bool frc_str_conv=false) const
FloatComplex float_complex_value(bool=false) const
octave::idx_vector set_idx_cache(const octave::idx_vector &idx) const
octave_value do_index_op(const octave_value_list &idx, bool resize_ok=false)
octave_value fast_elem_extract(octave_idx_type n) const
octave_value map(unary_mapper_t umap) const
bool is_uint8_type() const
ov_range(const ov_range< T > &r)
float float_scalar_value(bool frc_str_conv=false) const
octave_idx_type numel() const
int32NDArray int32_array_value() const
bool is_uint16_type() const
octave_value as_int64() const
Array< octave_idx_type > sort_rows_idx(sortmode) const
octave_value subsref(const std::string &type, const std::list< octave_value_list > &idx)
bool is_int64_type() const
bool is_double_type() const
sortmode is_sorted_rows(sortmode mode=UNSORTED) const
octave_value diag(octave_idx_type k=0) const
ov_range(const octave::range< T > &r)
ov_range & operator=(const ov_range &)=delete
builtin_type_t builtin_type() const
static octave_hdf5_id hdf5_save_type
bool save_hdf5(octave_hdf5_id loc_id, const char *name, bool flag)
octave_value resize(const dim_vector &dv, bool fill=false) const
octave_value sort(octave_idx_type dim=0, sortmode mode=ASCENDING) const
SparseMatrix sparse_matrix_value(bool=false) const
octave_value as_uint32() const
Array< T > raw_array_value() const
FloatNDArray float_array_value(bool=false) const
octave_value as_uint16() const
bool could_be_trivial_range()
sortmode issorted(sortmode mode=UNSORTED) const
bool load_ascii(std::istream &is)
FloatComplexMatrix float_complex_matrix_value(bool=false) const
uint8NDArray uint8_array_value() const
void short_disp(std::ostream &os) const
octave_value as_single() const
void print_raw(std::ostream &os, bool pr_as_read_syntax=false) const
bool save_ascii(std::ostream &os)
NDArray array_value(bool=false) const
bool is_int8_type() const
std::string edit_display(const float_display_format &fmt, octave_idx_type i, octave_idx_type j) const
octave_value full_value() const
octave_base_value * clone() const
bool save_binary(std::ostream &os, bool save_as_floats)
double double_value(bool=false) const
octave_value all(int dim=0) const
octave_value as_uint64() const
float_display_format get_edit_display_format() const
bool vm_need_storable_call() const
std::size_t byte_size() const
octave_idx_type nnz() const
bool is_int16_type() const
bool is_uint32_type() const
octave_value squeeze() const
octave_value as_int8() const
octave_value as_int16() const
charNDArray char_array_value(bool=false) const
octave::range< T > m_range
octave_value_list subsref(const std::string &type, const std::list< octave_value_list > &idx, int)
octave_value vm_extract_forloop_value(octave_idx_type idx)
boolNDArray bool_array_value(bool warn=false) const
octave_value any(int dim=0) const
int8NDArray int8_array_value() const
type_conv_info numeric_conversion_function() const
float float_value(bool=false) const
mxArray * as_mxArray(bool interleaved) const
bool is_single_type() const
octave_value as_trivial_range()
bool load_hdf5(octave_hdf5_id loc_id, const char *name)
ComplexNDArray complex_array_value(bool=false) const
bool load_binary(std::istream &is, bool swap, octave::mach_info::float_format fmt)
octave_value diag(octave_idx_type nr, octave_idx_type nc) const
octave::idx_vector * m_idx_cache
FloatMatrix float_matrix_value(bool=false) const
octave_base_value * empty_clone() const
octave_value as_double() const
octave::range< double > range_value() const
ov_range(const octave::range< T > &r, const octave::idx_vector &cache)
Matrix matrix_value(bool=false) const
SparseComplexMatrix sparse_complex_matrix_value(bool=false) const
int16NDArray int16_array_value() const
void clear_cached_info() const
bool is_uint64_type() const
octave_value reshape(const dim_vector &new_dims) const
uint16NDArray uint16_array_value() const
int write(octave::stream &os, int block_size, oct_data_conv::data_type output_type, int skip, octave::mach_info::float_format flt_fmt) const
void print(std::ostream &os, bool pr_as_read_syntax=false)
octave_value permute(const Array< int > &vec, bool inv=false) const
FloatComplexNDArray float_complex_array_value(bool=false) const
bool is_int32_type() const
octave_value convert_to_str_internal(bool pad, bool force, char type) const
octave_base_value * try_narrowing_conversion()
octave_value as_uint8() const
octave_value sort(Array< octave_idx_type > &sidx, octave_idx_type dim=0, sortmode mode=ASCENDING) const
uint32NDArray uint32_array_value() const
uint64NDArray uint64_array_value() const
octave::idx_vector index_vector(bool require_integers=false) const
bool print_name_tag(std::ostream &os, const std::string &name) const
octave_value as_int32() const
Complex complex_value(bool=false) const
int64NDArray int64_array_value() const
void error(const char *fmt,...)
std::complex< double > Complex
std::complex< float > FloatComplex
bool btyp_isnumeric(builtin_type_t btyp)
bool btyp_isinteger(builtin_type_t btyp)
bool btyp_isfloat(builtin_type_t btyp)
#define DECLARE_TEMPLATE_OV_TYPEID_SPECIALIZATIONS_API(cls, type, API)
#define DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA_API(API)
ov_range< double > octave_double_range
octave_double_range octave_range