---
name: "IdArray"
section: "3poc"
platform: "linux"
package: "objc-poc"
version: "3.1.26-2"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/IdArray/3poc"
---

# IdArray(3poc)

Portable Object Compiler IdArray class

## NAME

IdArray - Portable Object Compiler IdArray class

## 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 generates an error 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.
