blob: b37a511fca515f2aa0b9e6bcef0fe3301874821b [file] [log] [blame]
// Part 1
interface Parent {
void Parent(long val);
long getVal();
void mulVal(long mul);
void parentFunc();
[Const] Parent getAsConst();
VoidPtr voidStar(VoidPtr something);
boolean getBoolean();
attribute long attr;
readonly attribute long immutableAttr;
};
interface Child1 {
void Child1(optional long val);
long getValSqr(optional long more);
long getValTimes(optional long times=1);
void parentFunc(long x); // redefinition, name collides with parent
};
Child1 implements Parent;
interface Child2 {
void Child2();
long getValCube();
static void printStatic();
void virtualFunc();
void virtualFunc2();
void virtualFunc3(long x);
void virtualFunc4(long x);
static void runVirtualFunc(Child2 self);
static void runVirtualFunc3(Child2 self, long x);
};
Child2 implements Parent;
[JSImplementation="Child2"]
interface Child2JS {
void Child2JS();
void virtualFunc();
void virtualFunc2();
void virtualFunc3(long x);
void virtualFunc4(long x);
};
interface VirtualBase {
void func();
void constFunc();
};
[JSImplementation="VirtualBase"]
interface ConcreteJS {
void ConcreteJS();
void func();
[Const] void constFunc();
};
// Part 2
interface StringUser {
void StringUser();
void StringUser(DOMString str, long i);
void Print(long anotherInteger, DOMString anotherString);
void PrintFloat(float f);
[Const] DOMString returnAString();
};
interface RefUser {
void RefUser();
void RefUser(long value);
long getValue([Ref] RefUser b);
[Ref] RefUser getMe();
[Value] RefUser getCopy(); // must have zero-arg constructor
[Value] StringUser getAnother();
};
interface VoidPointerUser {
void VoidPointerUser();
any GetVoidPointer();
void SetVoidPointer(any ptr);
};
[Prefix="Space::"]
interface Inner {
void Inner();
long get();
[Operator="*=", Ref] Inner mul(float x);
[Operator="[]"] long getAsArray(long x);
[Operator="+="] void incInPlace([Const, Ref] Inner i);
};
enum AnEnum {
"enum_value1",
"enum_value2"
};
enum EnumClass_EnumWithinClass {
"EnumClass::e_val"
};
enum EnumNamespace_EnumInNamespace {
"EnumNamespace::e_namespace_val"
};
interface EnumClass {
void EnumClass();
EnumClass_EnumWithinClass GetEnum();
EnumNamespace_EnumInNamespace GetEnumFromNameSpace();
};
interface TypeTestClass {
void TypeTestClass();
byte ReturnCharMethod();
void AcceptCharMethod(byte x);
octet ReturnUnsignedCharMethod();
void AcceptUnsignedCharMethod(octet x);
unsigned short ReturnUnsignedShortMethod();
void AcceptUnsignedShortMethod(unsigned short x);
unsigned long ReturnUnsignedLongMethod();
void AcceptUnsignedLongMethod(unsigned long x);
};
interface StructInArray {
void StructInArray(long attr1, long attr2);
attribute long attr1;
attribute long attr2;
};
interface ArrayClass {
void ArrayClass();
[BoundsChecked] attribute long[] int_array;
[Value] attribute StructInArray[] struct_array;
attribute StructInArray[] struct_ptr_array;
};
interface ReceiveArrays {
void ReceiveArrays();
void giveMeArrays(float[] vertices, long[] triangles, long num);
};
interface StoreArray {
void StoreArray();
void setArray([Const] long[] array);
long getArrayValue(long index);
};