/* tslint:disable:no-unused-variable */ /** * Provides API for working with native C types, pointers, pointer arithmetic and memory. */ declare module interop { /** * A type that wraps a pointer and allows read/write operations on its value. */ interface Reference { value: T; } /** * A Reference constructor. */ var Reference: { /** * Creates a new reference around a value. * The native representation of the type will be determined the first time the Reference is used * in operation involving marshalling. * @param value The JavaScript value used to initialize the reference. */ new (value?: T): Reference; /** * Creates a reference from to the pointer with a given type. * @param type The type to interpret the pointer */ new (type: Type, data: Pointer): Reference; /** * Creates a new reference around a value. * @param type The type to interpret the value */ new (type: Type, value: any): Reference; /** * Gets the value using pointer arithmetic. */ [index: number]: any; /** * Dereferences the pointer. */ value: any; }; /** * A type that is used to represent a void*. */ interface Pointer { /** * Creates a new pointer with the given offset. * @param offset The offset in bytes. */ new (offset: number); /** * Creates a new pointer by adding an offset to the current pointer. * @param offset The offset in bytes. */ add(offset: number): Pointer; /** * Creates a new pointer by removing an offset from the current pointer. * @param offset The offset in bytes. */ subtract(offset: number): Pointer; /** * Converts the value of this instance to a number. */ toNumber(): number; } interface Type { (ptr: Pointer): T; } var types: { "void": Type; bool: Type; int8: Type; uint8: Type; int16: Type; uint16: Type; int32: Type; uint32: Type; int64: Type; uint64: Type; float: Type; double: Type; //UTF8CString: Type>; unichar: Type; id: Type; protocol: Type; "class": Type; selector: Type; } } declare function __collect(): void;