Type Syntax

In many places throughout the ObjectiveScript documentation, you'll find mentions of <type>. This represents an [Objective-]C type which is understood by the ObjectiveScript transpiler.

Overview

The syntax for ObjectiveScript types is pretty similar to standard [Objective-]C type syntax, with a few differences.

  • All Objective-C objects are represented by id
  • There are no type annotations
  • No support for unions
  • Structs must be declared at the top-level with @struct. See Advanced Types.

Primitives

The following "primitive" types are supported verbatim

  • [unsigned] char
  • [unsigned] int
  • [unsigned] short
  • [unsigned] long [long]
  • float
  • double
  • BOOL
  • SEL
  • id
  • Class

Void

void is supported as a return type on C functions and Objective-C methods.

Pointers

To declare a pointer type, append * to the type. For example, BOOL *.

Structs

Structs must first be defined at the top level with the following syntax

@struct <name> {
    <type> <name>;
    ...
};

For example,

@struct CGSize {
    double width;
    double height;
}

Following this, they can be referenced as types using the syntax struct <name>, e.g. struct CGSize.

Arrays

C Arrays can be declared by appending [<length>] to the type. For example, int[5].