This is done via function to create attributes, then various setters/getters to set/get attributes on functions/parameters/calls. This only includes the function's return attributes in order to keep things simple while the design is discussed. Once somethign is agreed upon, other accessors can be created.
This API will live together with the enum's one for a while, and the enum's will eventually be removed.
This will be a really annoying off by one situation, how are arguments addressed in other parts of the API, if they start with zero so should this.
Make function and return be -1 and -2.