Indexed properties

A JavaScript object may be an array, accessed using array index notation ([...]), for example, p[4]. PODS supports arrays by providing get_element and set_element methods, accessed through PODS_ARRAY_GETTER and PODS_ARRAY_SETTER macros. When a JavaScript object is referenced with an array index subscript, M-Business Client calls the object's getMethod() method and passes the special method name, "get_element".

A PODS object may also use arrays as arguments or return values of methods. This requires an implementation of the PODSArray data type. M-Business Client provides an implementation called PODSStdArray, which satisfies this need, but it is not as efficient as an implementation as a POD could supply to itself with knowledge of the data that the array would contain.

For example, suppose that p is a PODSObject and JavaScript code executes:

var x = p[7];

M-Business Client calls p's getMethod() method and passes the method name "get_element". The getMethod() method might return the type string "i_s" and a pointer to the C function:

PODSString getElement(PODSObject* o, PODSInt32 index) 
{ 
    MyObject* m = (MyObject*) o; 
    return m->strings[index]; 
}

Then M-Business Client would call the function, passing the integer 7 as the value of the index parameter.

Similarly, when M-Business Client sets an indexed property of a PODS object, M-Business Client calls the object's getMethod() method and passes the special method name "set_element". The getMethod() method should return a pointer to a method that takes two parameters: an integer index and a value. The second parameter may be of any PODS type.