28#if defined (HAVE_CONFIG_H)
45 for (
int i = 0; i < nd; i++)
54 m_num_dims = (j > 2 ? j : 2);
60 std::ostringstream buf;
62 for (
int i = 0; i <
ndims (); i++)
70 std::string retval = buf.str ();
80 for (
int i = 0; i <
ndims (); i++)
94 if (new_dims.
ndims () == 2 &&
xelem(0) == 1 && new_dims.
elem(1) == 1)
113 int orig_nd =
ndims ();
114 int ndb = dvb.
ndims ();
115 int new_nd = (dim < ndb ? ndb : dim + 1);
116 if (new_nd > orig_nd)
123 for (
int i = 0; i < ndb; i++)
125 if (i != dim &&
xelem(i) != dvb(i))
132 for (
int i = ndb; i < new_nd; i++)
134 if (i != dim &&
xelem(i) != 1)
142 xelem(dim) += (dim < ndb ? dvb(dim) : 1);
146 if (ndb == 2 && dvb(0) == 0 && dvb(1) == 0)
148 else if (orig_nd == 2 &&
xelem(0) == 0 &&
xelem(1) == 0)
179 bool e2dvb = dvb(0) + dvb(1) == 1;
199 int n_dims =
ndims ();
207 std::copy_n (m_dims, n_dims, retval.m_dims);
208 std::fill_n (retval.m_dims + n_dims, n - n_dims, 1);
219 std::copy_n (m_dims, n-1, retval.m_dims);
223 for (
int i = n; i < n_dims; i++)
226 retval.
xelem(n-1) = k;
244 retval(i) =
elem (i);
N Dimensional Array with copy-on-write semantics.
Vector representing the dimensions (size) of an Array.
bool concat(const dim_vector &dvb, int dim)
This corresponds to cat().
std::string str(char sep='x') const
void chop_trailing_singletons()
dim_vector squeeze() const
void resize(int n, int fill_value=0)
static dim_vector alloc(int n)
Array< octave_idx_type > as_array() const
octave_idx_type ndims() const
Number of dimensions.
void chop_all_singletons()
bool hvcat(const dim_vector &dvb, int dim)
This corresponds to [,] (horzcat, dim = 0) and [;] (vertcat, dim = 1).
octave_idx_type & xelem(int i)
octave_idx_type & elem(int i)
dim_vector redim(int n) const
Force certain dimensionality, preserving numel ().
dim_vector as_row() const