XLL+ Class Library

COper::ReadArrayIntoOrderedCollection1D

Reads a row or a column from an array into an ordered collection of numbers or strings

[C++]
template< class T, class CONT >
BOOL ReadArrayIntoOrderedCollection1D(
   CONT<T>& cont,
   CONT<T>& dataDefault,
   const char* pszArgName,
   CString& strError,
   long* plUBound = 0,
   long lRowOrCol = XLA_UNIQUE_VECTOR,
   long lFlags = XLA_ARRAY_FLAGS_STD,
   long lLBound = 0,
   long lIgnoreItems = 0
) const;

Parameters

cont

A collection containing items of type T, whose contents will be replaced by the contents of the COper. The container must support the push_back(), size() and clear() methods.

std::vector<T>, std::deque<T> and std::list<T> are among such containers.

dataDefault

The default value to use when filling empty cells.

The following types are directly supported for T:

  • bool
  • long
  • unsigned long
  • int
  • unsigned int
  • short
  • unsigned short
  • double
  • float
  • CString
  • std::string
Any other type is treated as an enumerated type, and converted to an integer value.

pszArgName

The name of the argument that is being read. This will be used in any error strings that are generated.

strError

Reference to an error string buffer. If the function fails for any reason, a useful error string will be placed here, e.g. "MyArgName: expected number in cell 3".

plUBound

Pointer to upper bound. If it is null, then it is ignored. If it is not null then it is used to check that the upper bounds of various arrays are consistent.

See Bounded input arrays for more information on the use of upper bounds.

lRowOrCol

Zero-based index of row or column to be extracted. If it is out of range, the function will fail.

If lRowOrCol is set to XLA_UNIQUE_VECTOR, then the only row of a single-row array (or the only column of a one-column array) will be returned: if the array has more than one row and more than one column, the function will report an error and return FALSE.

lFlags

Flags controlling the conversion. See matrix & vector flags for a full list of flag values.

lLBound

This will be used as a lower bound in the output vector. lLBound cells containing the default value will be inserted at the start of the output vector.

lIgnoreItems

The first lIgnoreItems of input will be ignored. This option can be useful for excluding labels.

Return value

The function returns TRUE if the conversion was successful, FALSE if it failed for any reason.

If it fails, an explanatory error string will be written to strError or xloError. This should be returned to the user.

Remarks

This function extracts a single row or column of numbers or strings from an array argument. Using the default flag values, it is reasonably 'smart': by default it truncates any empty cells at the end (right or bottom) of the input range.

However, a wide variety of other options are available, if you use other flag values and optional arguments. See matrix & vector flags for a full list of flag values.

See Bounded input arrays for more information on the use of upper bounds.

Requirements

Header: xllplus.h

See Also

COper Class | COper Methods | COper::ReadVector() | COper::ReadArrayIntoSet1D() | Bounded input arrays