# idarray Specification Sheet

Portable Object Compiler (c) 1998,2003. All Rights Reserved.

# IdArray

Inherits from: Array

## Class Description

IdArray instances are used to hold objects (nil is allowed). This class is somewhat similar to String, the difference being that a String is an Array of bytes, while this class provides a somewhat similar API to strings of id.

Note: This class is present mostly for compatibility with ICpak101. You most likely want to use OrdCltn instead of this class.

The method size returns the number of non-nil objects in the IdArray. The method capacity returns the total number of objects that the array can hold.

## Method types

### Creation

- new
- new:
- with:
- copy
- deepCopy
- free

### Interrogation

- size
- at:
- at:put:

### Resizing

- capacity
- capacity:
- packContents

### Printing

- printOn:

### Archiving

- fileOutOn:
- fileInFrom:

## Methods

### new

> +new

Creates an instance whose value is set to the empty array.

### new:

> +new:(unsigned)n

Creates an instance of n nil objects.

### with:

> +with:(int)nArgs,...

Creates an instance of nArgs objects, using a variable number of arguments, that may contain nil objects.

>     id myArray = [IdArray with:3,nil,[Object new],nil];

### copy

> -copy

Returns a copy of the receiver with its internal C array copied as well (but not the objects that it contains).

### deepCopy

> -deepCopy

Like copy, but also sends deepCopy messages to the objects in the IdArray.

### free

> -free

Frees the receiver and its internal C array as well.

### size

> - (unsigned)size

Returns the number of non-nil objects in the array.

Note: For Stepstone compatibility (with ICpak101) this method is, for this class, not the same as capacity. In the case of the IntArray class, size and capacity are the same.

### at:

> -at:(unsigned)anOffset

Returns the object at anOffset or signals the OutOfBounds exception if anOffset is greater than the length of the array.

Unlike for OrdCltn instances, this method may return a nil object.

### at:put:

> -at:(unsigned)anOffset put:anObject

Replaces the object at anOffset with anObject and returns the old object which was in that location. Generates an out of bounds exception if anOffset is greater than the length of the array.

Unlike for OrdCltn instances, this method will accept a nil object.

### capacity

> - (unsigned)capacity

Returns the total number of objects in the IdArray. (nil or non-nil).

### capacity:

> -capacity:(unsigned)nSlots

Changes the capacity to nSlots. If nSlots is larger than the current capacity, the memory added at the end will be zero-filled. If nSlots is less than the current capacity, the array is truncated.

### packContents

> -packContents

Removes nil objects while preserving the order of elements in the IdArray. Used to eliminate the 'hole' left by a at:put: message with a nil argument.

### printOn:

> -printOn:(IOD)aFile

Prints the array to aFile without appending a newline. Returns the receiver.

### fileOutOn:

> -fileOutOn:aFiler

Writes the array on aFiler. Returns the receiver.

### fileInFrom:

> -fileInFrom:aFiler

Reads a array object from aFiler. Returns the receiver.