Struct jscjs_sys::api::JSClassDefinition [−][src]
#[repr(C)]pub struct JSClassDefinition {}Show fields
pub version: c_int, pub attributes: JSClassAttributes, pub className: *const c_char, pub parentClass: JSClassRef, pub staticValues: *const JSStaticValue, pub staticFunctions: *const JSStaticFunction, pub initialize: JSObjectInitializeCallback, pub finalize: JSObjectFinalizeCallback, pub hasProperty: JSObjectHasPropertyCallback, pub getProperty: JSObjectGetPropertyCallback, pub setProperty: JSObjectSetPropertyCallback, pub deleteProperty: JSObjectDeletePropertyCallback, pub getPropertyNames: JSObjectGetPropertyNamesCallback, pub callAsFunction: JSObjectCallAsFunctionCallback, pub callAsConstructor: JSObjectCallAsConstructorCallback, pub hasInstance: JSObjectHasInstanceCallback, pub convertToType: JSObjectConvertToTypeCallback,
Expand description
@struct JSClassDefinition @abstract This structure contains properties and callbacks that define a type of object. All fields other than the version field are optional. Any pointer may be NULL. @field version The version number of this structure. The current version is 0. @field attributes A logically ORed set of JSClassAttributes to give to the class. @field className A null-terminated UTF8 string containing the class’s name. @field parentClass A JSClass to set as the class’s parent class. Pass NULL use the default object class. @field staticValues A JSStaticValue array containing the class’s statically declared value properties. Pass NULL to specify no statically declared value properties. The array must be terminated by a JSStaticValue whose name field is NULL. @field staticFunctions A JSStaticFunction array containing the class’s statically declared function properties. Pass NULL to specify no statically declared function properties. The array must be terminated by a JSStaticFunction whose name field is NULL. @field initialize The callback invoked when an object is first created. Use this callback to initialize the object. @field finalize The callback invoked when an object is finalized (prepared for garbage collection). Use this callback to release resources allocated for the object, and perform other cleanup. @field hasProperty The callback invoked when determining whether an object has a property. If this field is NULL, getProperty is called instead. The hasProperty callback enables optimization in cases where only a property’s existence needs to be known, not its value, and computing its value is expensive. @field getProperty The callback invoked when getting a property’s value. @field setProperty The callback invoked when setting a property’s value. @field deleteProperty The callback invoked when deleting a property. @field getPropertyNames The callback invoked when collecting the names of an object’s properties. @field callAsFunction The callback invoked when an object is called as a function. @field hasInstance The callback invoked when an object is used as the target of an ‘instanceof’ expression. @field callAsConstructor The callback invoked when an object is used as a constructor in a ‘new’ expression. @field convertToType The callback invoked when converting an object to a particular JavaScript type. @discussion The staticValues and staticFunctions arrays are the simplest and most efficient means for vending custom properties. Statically declared properties autmatically service requests like getProperty, setProperty, and getPropertyNames. Property access callbacks are required only to implement unusual properties, like array indexes, whose names are not known at compile-time.
If you named your getter function “GetX” and your setter function “SetX”, you would declare a JSStaticValue array containing “X” like this:
JSStaticValue StaticValueArray[] = { { “X”, GetX, SetX, kJSPropertyAttributeNone }, { 0, 0, 0, 0 } };
Standard JavaScript practice calls for storing function objects in prototypes, so they can be shared. The default JSClass created by JSClassCreate follows this idiom, instantiating objects with a shared, automatically generating prototype containing the class’s function objects. The kJSClassAttributeNoAutomaticPrototype attribute specifies that a JSClass should not automatically generate such a prototype. The resulting JSClass instantiates objects with the default object prototype, and gives each instance object its own copy of the class’s function objects.
A NULL callback specifies that the default object callback should substitute, except in the case of hasProperty, where it specifies that getProperty should substitute.
It is not possible to use JS subclassing with objects created from a class definition that sets callAsConstructor by default. Subclassing is supported via the JSObjectMakeConstructor function, however.
Fields
version: c_int
attributes: JSClassAttributes
className: *const c_char
parentClass: JSClassRef
staticValues: *const JSStaticValue
staticFunctions: *const JSStaticFunction
initialize: JSObjectInitializeCallback
finalize: JSObjectFinalizeCallback
hasProperty: JSObjectHasPropertyCallback
getProperty: JSObjectGetPropertyCallback
setProperty: JSObjectSetPropertyCallback
deleteProperty: JSObjectDeletePropertyCallback
getPropertyNames: JSObjectGetPropertyNamesCallback
callAsFunction: JSObjectCallAsFunctionCallback
callAsConstructor: JSObjectCallAsConstructorCallback
hasInstance: JSObjectHasInstanceCallback
convertToType: JSObjectConvertToTypeCallback
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for JSClassDefinition
impl !Send for JSClassDefinition
impl !Sync for JSClassDefinition
impl Unpin for JSClassDefinition
impl UnwindSafe for JSClassDefinition
Blanket Implementations
Mutably borrows from an owned value. Read more