44 #ifndef Included_RexxArray
45 #define Included_RexxArray
47 #define RaiseBoundsNone 0x00000000
48 #define RaiseBoundsUpper 0x00000001
49 #define RaiseBoundsInvalid 0x00000002
50 #define RaiseBoundsTooMany 0x00000004
51 #define RaiseBoundsAll 0x0000000F
52 #define ExtendUpper 0x00000010
103 inline void *
operator new(
size_t size,
void *objectPtr) {
return objectPtr; };
110 void *
operator new(size_t, size_t,
RexxObject **);
113 inline void operator delete(
void *) {;}
114 inline void operator delete(
void *,
void *) {;}
121 inline void operator delete(
void *, size_t,
RexxObject **) {;}
122 inline void operator delete(
void *, size_t, size_t,
RexxClass *cls) {;}
129 void init(
size_t,
size_t);
203 inline RexxObject *
get(
size_t pos) {
return (this->
data())[pos-1];}
205 inline RexxObject **
data(
size_t pos) {
return &((this->
data())[pos-1]);}
361 return new (o1, o2, o3, o4, o5)
RexxArray;
RexxArray * new_externalArray(size_t s, RexxClass *c)
struct copyElementParm COPYELEMENTPARM
RexxArray * new_array(size_t s)
virtual wholenumber_t compare(RexxObject *first, RexxObject *second)
PartitionBounds(size_t l, size_t r)
RexxObject ** slotAddress(size_t index)
static const size_t ARRAY_DEFAULT_SIZE
static const size_t ARRAY_MIN_SIZE
RexxObject * getRexx(RexxObject **, size_t, size_t)
size_t findSingleIndexItem(RexxObject *item)
size_t addFirst(RexxObject *item)
static const size_t MAX_FIXEDARRAY_SIZE
void flatten(RexxEnvelope *)
RexxObject ** data(size_t pos)
static void createInstance()
bool hasIndexNative(size_t)
void put(RexxObject *eref, size_t pos)
RexxArray(RESTORETYPE restoreType)
RexxObject * insertRexx(RexxObject *_value, RexxObject *index)
void closeGap(size_t index, size_t elements)
RexxObject * of(RexxObject **, size_t, size_t)
RexxObject * supplier(RexxObject *maxItems=OREF_NULL)
size_t find(BaseSortComparator &comparator, RexxObject *val, int bnd, size_t left, size_t right)
size_t insertAfter(RexxObject *item, size_t index)
static RexxClass * classInstance
RexxObject * remove(size_t)
static void arraycopy(RexxArray *source, size_t start, RexxArray *target, size_t index, size_t count)
static RexxArray * nullArray
RexxObject * getApi(size_t pos)
size_t indexOf(RexxObject *)
wholenumber_t sortCompare(RexxObject *comparator, RexxObject *left, RexxObject *right)
RexxInteger * available(size_t position)
RexxObject * putRexx(RexxObject **, size_t, size_t)
RexxObject * join(RexxArray *)
RexxObject * newRexx(RexxObject **, size_t, size_t)
RexxArray * allItems(RexxObject *maxItems=OREF_NULL)
void openGap(size_t index, size_t elements)
bool isMultiDimensional()
RexxObject * nextRexx(RexxObject **, size_t, size_t)
RexxArray * allIndexes(RexxObject *maxIndexes=OREF_NULL)
RexxObject * deleteRexx(RexxObject *index)
RexxObject * convertIndex(size_t idx)
size_t append(RexxObject *)
RexxObject * appendRexx(RexxObject *)
void ensureSpace(size_t newSize)
RexxObject * index(RexxObject *)
void setExpansion(RexxObject *expansion)
size_t insert(RexxObject *_value, size_t index)
RexxArray * stableSortRexx()
RexxObject * sectionSubclass(size_t, size_t)
RexxObject * removeItem(RexxObject *)
bool isSingleDimensional()
RexxArray * section(size_t, size_t)
RexxObject * hasItem(RexxObject *)
void liveGeneral(int reason)
size_t addLast(RexxObject *item)
void putApi(RexxObject *eref, size_t pos)
RexxObject * deleteItem(size_t index)
RexxObject * removeRexx(RexxObject **, size_t, size_t)
RexxObject * fill(RexxObject *)
RexxObject * getDimensions()
RexxArray * stableSortWithRexx(RexxObject *comparator)
bool validateIndex(RexxObject **, size_t, size_t, size_t, stringsize_t &)
RexxObject * dimension(RexxObject *)
RexxArray * extend(size_t)
RexxObject * hasIndexRexx(RexxObject **, size_t, size_t)
RexxObject * sectionRexx(RexxObject *, RexxObject *)
RexxObject * previousRexx(RexxObject **, size_t, size_t)
RexxObject * get(size_t pos)
RexxArray * extendMulti(RexxObject **, size_t, size_t)
RexxArray * getExpansion()
static RexxArray * createMultidimensional(RexxObject **dims, size_t count, RexxClass *)
RexxString * toString(RexxString *, RexxString *)
void mergeSort(BaseSortComparator &comparator, RexxArray *working, size_t left, size_t right)
RexxArray * expansionArray
void merge(BaseSortComparator &comparator, RexxArray *working, size_t left, size_t mid, size_t right)
RexxObject * indexToArray(size_t idx)
virtual RexxString * primitiveMakeString()
RexxMessage * start(RexxObject **, size_t, size_t)
RexxString * makeString()
virtual wholenumber_t compare(RexxObject *first, RexxObject *second)
WithSortComparator(RexxObject *c)
size_t firstChangedDimension