diff --git a/doc/APIreference/APIfunctions.rst b/doc/APIreference/APIfunctions.rst index b63981d2..c34be65b 100644 --- a/doc/APIreference/APIfunctions.rst +++ b/doc/APIreference/APIfunctions.rst @@ -52,5 +52,6 @@ API function can be classified as: - :ref:`Attribute getters`. - :ref:`Spec utilities`. - :ref:`Element initialization`. + - :ref:`Element casting`. .. include:: functions.rst diff --git a/doc/APIreference/functions.rst b/doc/APIreference/functions.rst index 81a3841a..30f62c87 100644 --- a/doc/APIreference/functions.rst +++ b/doc/APIreference/functions.rst @@ -4225,222 +4225,6 @@ mjs_nextElement Return spec's next element; return NULL if element is last. -.. _mjs_asBody: - -mjs_asBody -~~~~~~~~~~ - -.. mujoco-include:: mjs_asBody - -Safely cast an element as mjsBody, or return NULL if the element is not an mjsBody. - -.. _mjs_asGeom: - -mjs_asGeom -~~~~~~~~~~ - -.. mujoco-include:: mjs_asGeom - -Safely cast an element as mjsGeom, or return NULL if the element is not an mjsGeom. - -.. _mjs_asJoint: - -mjs_asJoint -~~~~~~~~~~~ - -.. mujoco-include:: mjs_asJoint - -Safely cast an element as mjsJoint, or return NULL if the element is not an mjsJoint. - -.. _mjs_asSite: - -mjs_asSite -~~~~~~~~~~ - -.. mujoco-include:: mjs_asSite - -Safely cast an element as mjsSite, or return NULL if the element is not an mjsSite. - -.. _mjs_asCamera: - -mjs_asCamera -~~~~~~~~~~~~ - -.. mujoco-include:: mjs_asCamera - -Safely cast an element as mjsCamera, or return NULL if the element is not an mjsCamera. - -.. _mjs_asLight: - -mjs_asLight -~~~~~~~~~~~ - -.. mujoco-include:: mjs_asLight - -Safely cast an element as mjsLight, or return NULL if the element is not an mjsLight. - -.. _mjs_asFrame: - -mjs_asFrame -~~~~~~~~~~~ - -.. mujoco-include:: mjs_asFrame - -Safely cast an element as mjsFrame, or return NULL if the element is not an mjsFrame. - -.. _mjs_asActuator: - -mjs_asActuator -~~~~~~~~~~~~~~ - -.. mujoco-include:: mjs_asActuator - -Safely cast an element as mjsActuator, or return NULL if the element is not an mjsActuator. - -.. _mjs_asSensor: - -mjs_asSensor -~~~~~~~~~~~~ - -.. mujoco-include:: mjs_asSensor - -Safely cast an element as mjsSensor, or return NULL if the element is not an mjsSensor. - -.. _mjs_asFlex: - -mjs_asFlex -~~~~~~~~~~ - -.. mujoco-include:: mjs_asFlex - -Safely cast an element as mjsFlex, or return NULL if the element is not an mjsFlex. - -.. _mjs_asPair: - -mjs_asPair -~~~~~~~~~~ - -.. mujoco-include:: mjs_asPair - -Safely cast an element as mjsPair, or return NULL if the element is not an mjsPair. - -.. _mjs_asEquality: - -mjs_asEquality -~~~~~~~~~~~~~~ - -.. mujoco-include:: mjs_asEquality - -Safely cast an element as mjsEquality, or return NULL if the element is not an mjsEquality. - -.. _mjs_asExclude: - -mjs_asExclude -~~~~~~~~~~~~~ - -.. mujoco-include:: mjs_asExclude - -Safely cast an element as mjsExclude, or return NULL if the element is not an mjsExclude. - -.. _mjs_asTendon: - -mjs_asTendon -~~~~~~~~~~~~ - -.. mujoco-include:: mjs_asTendon - -Safely cast an element as mjsTendon, or return NULL if the element is not an mjsTendon. - -.. _mjs_asNumeric: - -mjs_asNumeric -~~~~~~~~~~~~~ - -.. mujoco-include:: mjs_asNumeric - -Safely cast an element as mjsNumeric, or return NULL if the element is not an mjsNumeric. - -.. _mjs_asText: - -mjs_asText -~~~~~~~~~~ - -.. mujoco-include:: mjs_asText - -Safely cast an element as mjsText, or return NULL if the element is not an mjsText. - -.. _mjs_asTuple: - -mjs_asTuple -~~~~~~~~~~~ - -.. mujoco-include:: mjs_asTuple - -Safely cast an element as mjsTuple, or return NULL if the element is not an mjsTuple. - -.. _mjs_asKey: - -mjs_asKey -~~~~~~~~~ - -.. mujoco-include:: mjs_asKey - -Safely cast an element as mjsKey, or return NULL if the element is not an mjsKey. - -.. _mjs_asMesh: - -mjs_asMesh -~~~~~~~~~~ - -.. mujoco-include:: mjs_asMesh - -Safely cast an element as mjsMesh, or return NULL if the element is not an mjsMesh. - -.. _mjs_asHField: - -mjs_asHField -~~~~~~~~~~~~ - -.. mujoco-include:: mjs_asHField - -Safely cast an element as mjsHField, or return NULL if the element is not an mjsHField. - -.. _mjs_asSkin: - -mjs_asSkin -~~~~~~~~~~ - -.. mujoco-include:: mjs_asSkin - -Safely cast an element as mjsSkin, or return NULL if the element is not an mjsSkin. - -.. _mjs_asTexture: - -mjs_asTexture -~~~~~~~~~~~~~ - -.. mujoco-include:: mjs_asTexture - -Safely cast an element as mjsTexture, or return NULL if the element is not an mjsTexture. - -.. _mjs_asMaterial: - -mjs_asMaterial -~~~~~~~~~~~~~~ - -.. mujoco-include:: mjs_asMaterial - -Safely cast an element as mjsMaterial, or return NULL if the element is not an mjsMaterial. - -.. _mjs_asPlugin: - -mjs_asPlugin -~~~~~~~~~~~~ - -.. mujoco-include:: mjs_asPlugin - -Safely cast an element as mjsPlugin, or return NULL if the element is not an mjsPlugin. - .. _AttributeSetters: Attribute setters @@ -4835,3 +4619,223 @@ mjs_defaultPlugin Default plugin attributes. +.. _ElementCasting: + +Element casting +^^^^^^^^^^^^^^^ +.. _mjs_asBody: + +mjs_asBody +~~~~~~~~~~ + +.. mujoco-include:: mjs_asBody + +Safely cast an element as mjsBody, or return NULL if the element is not an mjsBody. + +.. _mjs_asGeom: + +mjs_asGeom +~~~~~~~~~~ + +.. mujoco-include:: mjs_asGeom + +Safely cast an element as mjsGeom, or return NULL if the element is not an mjsGeom. + +.. _mjs_asJoint: + +mjs_asJoint +~~~~~~~~~~~ + +.. mujoco-include:: mjs_asJoint + +Safely cast an element as mjsJoint, or return NULL if the element is not an mjsJoint. + +.. _mjs_asSite: + +mjs_asSite +~~~~~~~~~~ + +.. mujoco-include:: mjs_asSite + +Safely cast an element as mjsSite, or return NULL if the element is not an mjsSite. + +.. _mjs_asCamera: + +mjs_asCamera +~~~~~~~~~~~~ + +.. mujoco-include:: mjs_asCamera + +Safely cast an element as mjsCamera, or return NULL if the element is not an mjsCamera. + +.. _mjs_asLight: + +mjs_asLight +~~~~~~~~~~~ + +.. mujoco-include:: mjs_asLight + +Safely cast an element as mjsLight, or return NULL if the element is not an mjsLight. + +.. _mjs_asFrame: + +mjs_asFrame +~~~~~~~~~~~ + +.. mujoco-include:: mjs_asFrame + +Safely cast an element as mjsFrame, or return NULL if the element is not an mjsFrame. + +.. _mjs_asActuator: + +mjs_asActuator +~~~~~~~~~~~~~~ + +.. mujoco-include:: mjs_asActuator + +Safely cast an element as mjsActuator, or return NULL if the element is not an mjsActuator. + +.. _mjs_asSensor: + +mjs_asSensor +~~~~~~~~~~~~ + +.. mujoco-include:: mjs_asSensor + +Safely cast an element as mjsSensor, or return NULL if the element is not an mjsSensor. + +.. _mjs_asFlex: + +mjs_asFlex +~~~~~~~~~~ + +.. mujoco-include:: mjs_asFlex + +Safely cast an element as mjsFlex, or return NULL if the element is not an mjsFlex. + +.. _mjs_asPair: + +mjs_asPair +~~~~~~~~~~ + +.. mujoco-include:: mjs_asPair + +Safely cast an element as mjsPair, or return NULL if the element is not an mjsPair. + +.. _mjs_asEquality: + +mjs_asEquality +~~~~~~~~~~~~~~ + +.. mujoco-include:: mjs_asEquality + +Safely cast an element as mjsEquality, or return NULL if the element is not an mjsEquality. + +.. _mjs_asExclude: + +mjs_asExclude +~~~~~~~~~~~~~ + +.. mujoco-include:: mjs_asExclude + +Safely cast an element as mjsExclude, or return NULL if the element is not an mjsExclude. + +.. _mjs_asTendon: + +mjs_asTendon +~~~~~~~~~~~~ + +.. mujoco-include:: mjs_asTendon + +Safely cast an element as mjsTendon, or return NULL if the element is not an mjsTendon. + +.. _mjs_asNumeric: + +mjs_asNumeric +~~~~~~~~~~~~~ + +.. mujoco-include:: mjs_asNumeric + +Safely cast an element as mjsNumeric, or return NULL if the element is not an mjsNumeric. + +.. _mjs_asText: + +mjs_asText +~~~~~~~~~~ + +.. mujoco-include:: mjs_asText + +Safely cast an element as mjsText, or return NULL if the element is not an mjsText. + +.. _mjs_asTuple: + +mjs_asTuple +~~~~~~~~~~~ + +.. mujoco-include:: mjs_asTuple + +Safely cast an element as mjsTuple, or return NULL if the element is not an mjsTuple. + +.. _mjs_asKey: + +mjs_asKey +~~~~~~~~~ + +.. mujoco-include:: mjs_asKey + +Safely cast an element as mjsKey, or return NULL if the element is not an mjsKey. + +.. _mjs_asMesh: + +mjs_asMesh +~~~~~~~~~~ + +.. mujoco-include:: mjs_asMesh + +Safely cast an element as mjsMesh, or return NULL if the element is not an mjsMesh. + +.. _mjs_asHField: + +mjs_asHField +~~~~~~~~~~~~ + +.. mujoco-include:: mjs_asHField + +Safely cast an element as mjsHField, or return NULL if the element is not an mjsHField. + +.. _mjs_asSkin: + +mjs_asSkin +~~~~~~~~~~ + +.. mujoco-include:: mjs_asSkin + +Safely cast an element as mjsSkin, or return NULL if the element is not an mjsSkin. + +.. _mjs_asTexture: + +mjs_asTexture +~~~~~~~~~~~~~ + +.. mujoco-include:: mjs_asTexture + +Safely cast an element as mjsTexture, or return NULL if the element is not an mjsTexture. + +.. _mjs_asMaterial: + +mjs_asMaterial +~~~~~~~~~~~~~~ + +.. mujoco-include:: mjs_asMaterial + +Safely cast an element as mjsMaterial, or return NULL if the element is not an mjsMaterial. + +.. _mjs_asPlugin: + +mjs_asPlugin +~~~~~~~~~~~~ + +.. mujoco-include:: mjs_asPlugin + +Safely cast an element as mjsPlugin, or return NULL if the element is not an mjsPlugin. + diff --git a/doc/includes/references.h b/doc/includes/references.h index d1e11e55..a1d4c405 100644 --- a/doc/includes/references.h +++ b/doc/includes/references.h @@ -3599,30 +3599,6 @@ mjsElement* mjs_firstChild(mjsBody* body, mjtObj type); mjsElement* mjs_nextChild(mjsBody* body, mjsElement* child); mjsElement* mjs_firstElement(mjSpec* s, mjtObj type); mjsElement* mjs_nextElement(mjSpec* s, mjsElement* element); -mjsBody* mjs_asBody(mjsElement* element); -mjsGeom* mjs_asGeom(mjsElement* element); -mjsJoint* mjs_asJoint(mjsElement* element); -mjsSite* mjs_asSite(mjsElement* element); -mjsCamera* mjs_asCamera(mjsElement* element); -mjsLight* mjs_asLight(mjsElement* element); -mjsFrame* mjs_asFrame(mjsElement* element); -mjsActuator* mjs_asActuator(mjsElement* element); -mjsSensor* mjs_asSensor(mjsElement* element); -mjsFlex* mjs_asFlex(mjsElement* element); -mjsPair* mjs_asPair(mjsElement* element); -mjsEquality* mjs_asEquality(mjsElement* element); -mjsExclude* mjs_asExclude(mjsElement* element); -mjsTendon* mjs_asTendon(mjsElement* element); -mjsNumeric* mjs_asNumeric(mjsElement* element); -mjsText* mjs_asText(mjsElement* element); -mjsTuple* mjs_asTuple(mjsElement* element); -mjsKey* mjs_asKey(mjsElement* element); -mjsMesh* mjs_asMesh(mjsElement* element); -mjsHField* mjs_asHField(mjsElement* element); -mjsSkin* mjs_asSkin(mjsElement* element); -mjsTexture* mjs_asTexture(mjsElement* element); -mjsMaterial* mjs_asMaterial(mjsElement* element); -mjsPlugin* mjs_asPlugin(mjsElement* element); void mjs_setBuffer(mjByteVec* dest, const void* array, int size); void mjs_setString(mjString* dest, const char* text); void mjs_setStringVec(mjStringVec* dest, const char* text); @@ -3666,4 +3642,28 @@ void mjs_defaultText(mjsText* text); void mjs_defaultTuple(mjsTuple* tuple); void mjs_defaultKey(mjsKey* key); void mjs_defaultPlugin(mjsPlugin* plugin); +mjsBody* mjs_asBody(mjsElement* element); +mjsGeom* mjs_asGeom(mjsElement* element); +mjsJoint* mjs_asJoint(mjsElement* element); +mjsSite* mjs_asSite(mjsElement* element); +mjsCamera* mjs_asCamera(mjsElement* element); +mjsLight* mjs_asLight(mjsElement* element); +mjsFrame* mjs_asFrame(mjsElement* element); +mjsActuator* mjs_asActuator(mjsElement* element); +mjsSensor* mjs_asSensor(mjsElement* element); +mjsFlex* mjs_asFlex(mjsElement* element); +mjsPair* mjs_asPair(mjsElement* element); +mjsEquality* mjs_asEquality(mjsElement* element); +mjsExclude* mjs_asExclude(mjsElement* element); +mjsTendon* mjs_asTendon(mjsElement* element); +mjsNumeric* mjs_asNumeric(mjsElement* element); +mjsText* mjs_asText(mjsElement* element); +mjsTuple* mjs_asTuple(mjsElement* element); +mjsKey* mjs_asKey(mjsElement* element); +mjsMesh* mjs_asMesh(mjsElement* element); +mjsHField* mjs_asHField(mjsElement* element); +mjsSkin* mjs_asSkin(mjsElement* element); +mjsTexture* mjs_asTexture(mjsElement* element); +mjsMaterial* mjs_asMaterial(mjsElement* element); +mjsPlugin* mjs_asPlugin(mjsElement* element); // NOLINTEND diff --git a/include/mujoco/mujoco.h b/include/mujoco/mujoco.h index cdc63388..3475a682 100644 --- a/include/mujoco/mujoco.h +++ b/include/mujoco/mujoco.h @@ -1559,78 +1559,6 @@ MJAPI mjsElement* mjs_firstElement(mjSpec* s, mjtObj type); // Return spec's next element; return NULL if element is last. MJAPI mjsElement* mjs_nextElement(mjSpec* s, mjsElement* element); -// Safely cast an element as mjsBody, or return NULL if the element is not an mjsBody. -MJAPI mjsBody* mjs_asBody(mjsElement* element); - -// Safely cast an element as mjsGeom, or return NULL if the element is not an mjsGeom. -MJAPI mjsGeom* mjs_asGeom(mjsElement* element); - -// Safely cast an element as mjsJoint, or return NULL if the element is not an mjsJoint. -MJAPI mjsJoint* mjs_asJoint(mjsElement* element); - -// Safely cast an element as mjsSite, or return NULL if the element is not an mjsSite. -MJAPI mjsSite* mjs_asSite(mjsElement* element); - -// Safely cast an element as mjsCamera, or return NULL if the element is not an mjsCamera. -MJAPI mjsCamera* mjs_asCamera(mjsElement* element); - -// Safely cast an element as mjsLight, or return NULL if the element is not an mjsLight. -MJAPI mjsLight* mjs_asLight(mjsElement* element); - -// Safely cast an element as mjsFrame, or return NULL if the element is not an mjsFrame. -MJAPI mjsFrame* mjs_asFrame(mjsElement* element); - -// Safely cast an element as mjsActuator, or return NULL if the element is not an mjsActuator. -MJAPI mjsActuator* mjs_asActuator(mjsElement* element); - -// Safely cast an element as mjsSensor, or return NULL if the element is not an mjsSensor. -MJAPI mjsSensor* mjs_asSensor(mjsElement* element); - -// Safely cast an element as mjsFlex, or return NULL if the element is not an mjsFlex. -MJAPI mjsFlex* mjs_asFlex(mjsElement* element); - -// Safely cast an element as mjsPair, or return NULL if the element is not an mjsPair. -MJAPI mjsPair* mjs_asPair(mjsElement* element); - -// Safely cast an element as mjsEquality, or return NULL if the element is not an mjsEquality. -MJAPI mjsEquality* mjs_asEquality(mjsElement* element); - -// Safely cast an element as mjsExclude, or return NULL if the element is not an mjsExclude. -MJAPI mjsExclude* mjs_asExclude(mjsElement* element); - -// Safely cast an element as mjsTendon, or return NULL if the element is not an mjsTendon. -MJAPI mjsTendon* mjs_asTendon(mjsElement* element); - -// Safely cast an element as mjsNumeric, or return NULL if the element is not an mjsNumeric. -MJAPI mjsNumeric* mjs_asNumeric(mjsElement* element); - -// Safely cast an element as mjsText, or return NULL if the element is not an mjsText. -MJAPI mjsText* mjs_asText(mjsElement* element); - -// Safely cast an element as mjsTuple, or return NULL if the element is not an mjsTuple. -MJAPI mjsTuple* mjs_asTuple(mjsElement* element); - -// Safely cast an element as mjsKey, or return NULL if the element is not an mjsKey. -MJAPI mjsKey* mjs_asKey(mjsElement* element); - -// Safely cast an element as mjsMesh, or return NULL if the element is not an mjsMesh. -MJAPI mjsMesh* mjs_asMesh(mjsElement* element); - -// Safely cast an element as mjsHField, or return NULL if the element is not an mjsHField. -MJAPI mjsHField* mjs_asHField(mjsElement* element); - -// Safely cast an element as mjsSkin, or return NULL if the element is not an mjsSkin. -MJAPI mjsSkin* mjs_asSkin(mjsElement* element); - -// Safely cast an element as mjsTexture, or return NULL if the element is not an mjsTexture. -MJAPI mjsTexture* mjs_asTexture(mjsElement* element); - -// Safely cast an element as mjsMaterial, or return NULL if the element is not an mjsMaterial. -MJAPI mjsMaterial* mjs_asMaterial(mjsElement* element); - -// Safely cast an element as mjsPlugin, or return NULL if the element is not an mjsPlugin. -MJAPI mjsPlugin* mjs_asPlugin(mjsElement* element); - //---------------------------------- Attribute setters --------------------------------------------- @@ -1770,6 +1698,81 @@ MJAPI void mjs_defaultKey(mjsKey* key); // Default plugin attributes. MJAPI void mjs_defaultPlugin(mjsPlugin* plugin); + +//---------------------------------- Element casting ----------------------------------------------- + +// Safely cast an element as mjsBody, or return NULL if the element is not an mjsBody. +MJAPI mjsBody* mjs_asBody(mjsElement* element); + +// Safely cast an element as mjsGeom, or return NULL if the element is not an mjsGeom. +MJAPI mjsGeom* mjs_asGeom(mjsElement* element); + +// Safely cast an element as mjsJoint, or return NULL if the element is not an mjsJoint. +MJAPI mjsJoint* mjs_asJoint(mjsElement* element); + +// Safely cast an element as mjsSite, or return NULL if the element is not an mjsSite. +MJAPI mjsSite* mjs_asSite(mjsElement* element); + +// Safely cast an element as mjsCamera, or return NULL if the element is not an mjsCamera. +MJAPI mjsCamera* mjs_asCamera(mjsElement* element); + +// Safely cast an element as mjsLight, or return NULL if the element is not an mjsLight. +MJAPI mjsLight* mjs_asLight(mjsElement* element); + +// Safely cast an element as mjsFrame, or return NULL if the element is not an mjsFrame. +MJAPI mjsFrame* mjs_asFrame(mjsElement* element); + +// Safely cast an element as mjsActuator, or return NULL if the element is not an mjsActuator. +MJAPI mjsActuator* mjs_asActuator(mjsElement* element); + +// Safely cast an element as mjsSensor, or return NULL if the element is not an mjsSensor. +MJAPI mjsSensor* mjs_asSensor(mjsElement* element); + +// Safely cast an element as mjsFlex, or return NULL if the element is not an mjsFlex. +MJAPI mjsFlex* mjs_asFlex(mjsElement* element); + +// Safely cast an element as mjsPair, or return NULL if the element is not an mjsPair. +MJAPI mjsPair* mjs_asPair(mjsElement* element); + +// Safely cast an element as mjsEquality, or return NULL if the element is not an mjsEquality. +MJAPI mjsEquality* mjs_asEquality(mjsElement* element); + +// Safely cast an element as mjsExclude, or return NULL if the element is not an mjsExclude. +MJAPI mjsExclude* mjs_asExclude(mjsElement* element); + +// Safely cast an element as mjsTendon, or return NULL if the element is not an mjsTendon. +MJAPI mjsTendon* mjs_asTendon(mjsElement* element); + +// Safely cast an element as mjsNumeric, or return NULL if the element is not an mjsNumeric. +MJAPI mjsNumeric* mjs_asNumeric(mjsElement* element); + +// Safely cast an element as mjsText, or return NULL if the element is not an mjsText. +MJAPI mjsText* mjs_asText(mjsElement* element); + +// Safely cast an element as mjsTuple, or return NULL if the element is not an mjsTuple. +MJAPI mjsTuple* mjs_asTuple(mjsElement* element); + +// Safely cast an element as mjsKey, or return NULL if the element is not an mjsKey. +MJAPI mjsKey* mjs_asKey(mjsElement* element); + +// Safely cast an element as mjsMesh, or return NULL if the element is not an mjsMesh. +MJAPI mjsMesh* mjs_asMesh(mjsElement* element); + +// Safely cast an element as mjsHField, or return NULL if the element is not an mjsHField. +MJAPI mjsHField* mjs_asHField(mjsElement* element); + +// Safely cast an element as mjsSkin, or return NULL if the element is not an mjsSkin. +MJAPI mjsSkin* mjs_asSkin(mjsElement* element); + +// Safely cast an element as mjsTexture, or return NULL if the element is not an mjsTexture. +MJAPI mjsTexture* mjs_asTexture(mjsElement* element); + +// Safely cast an element as mjsMaterial, or return NULL if the element is not an mjsMaterial. +MJAPI mjsMaterial* mjs_asMaterial(mjsElement* element); + +// Safely cast an element as mjsPlugin, or return NULL if the element is not an mjsPlugin. +MJAPI mjsPlugin* mjs_asPlugin(mjsElement* element); + #ifdef __cplusplus } #endif diff --git a/introspect/functions.py b/introspect/functions.py index f5f6cb08..98dce5fd 100644 --- a/introspect/functions.py +++ b/introspect/functions.py @@ -9902,390 +9902,6 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([ ), doc="Return spec's next element; return NULL if element is last.", )), - ('mjs_asBody', - FunctionDecl( - name='mjs_asBody', - return_type=PointerType( - inner_type=ValueType(name='mjsBody'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsBody, or return NULL if the element is not an mjsBody.', # pylint: disable=line-too-long - )), - ('mjs_asGeom', - FunctionDecl( - name='mjs_asGeom', - return_type=PointerType( - inner_type=ValueType(name='mjsGeom'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsGeom, or return NULL if the element is not an mjsGeom.', # pylint: disable=line-too-long - )), - ('mjs_asJoint', - FunctionDecl( - name='mjs_asJoint', - return_type=PointerType( - inner_type=ValueType(name='mjsJoint'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsJoint, or return NULL if the element is not an mjsJoint.', # pylint: disable=line-too-long - )), - ('mjs_asSite', - FunctionDecl( - name='mjs_asSite', - return_type=PointerType( - inner_type=ValueType(name='mjsSite'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsSite, or return NULL if the element is not an mjsSite.', # pylint: disable=line-too-long - )), - ('mjs_asCamera', - FunctionDecl( - name='mjs_asCamera', - return_type=PointerType( - inner_type=ValueType(name='mjsCamera'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsCamera, or return NULL if the element is not an mjsCamera.', # pylint: disable=line-too-long - )), - ('mjs_asLight', - FunctionDecl( - name='mjs_asLight', - return_type=PointerType( - inner_type=ValueType(name='mjsLight'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsLight, or return NULL if the element is not an mjsLight.', # pylint: disable=line-too-long - )), - ('mjs_asFrame', - FunctionDecl( - name='mjs_asFrame', - return_type=PointerType( - inner_type=ValueType(name='mjsFrame'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsFrame, or return NULL if the element is not an mjsFrame.', # pylint: disable=line-too-long - )), - ('mjs_asActuator', - FunctionDecl( - name='mjs_asActuator', - return_type=PointerType( - inner_type=ValueType(name='mjsActuator'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsActuator, or return NULL if the element is not an mjsActuator.', # pylint: disable=line-too-long - )), - ('mjs_asSensor', - FunctionDecl( - name='mjs_asSensor', - return_type=PointerType( - inner_type=ValueType(name='mjsSensor'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsSensor, or return NULL if the element is not an mjsSensor.', # pylint: disable=line-too-long - )), - ('mjs_asFlex', - FunctionDecl( - name='mjs_asFlex', - return_type=PointerType( - inner_type=ValueType(name='mjsFlex'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsFlex, or return NULL if the element is not an mjsFlex.', # pylint: disable=line-too-long - )), - ('mjs_asPair', - FunctionDecl( - name='mjs_asPair', - return_type=PointerType( - inner_type=ValueType(name='mjsPair'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsPair, or return NULL if the element is not an mjsPair.', # pylint: disable=line-too-long - )), - ('mjs_asEquality', - FunctionDecl( - name='mjs_asEquality', - return_type=PointerType( - inner_type=ValueType(name='mjsEquality'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsEquality, or return NULL if the element is not an mjsEquality.', # pylint: disable=line-too-long - )), - ('mjs_asExclude', - FunctionDecl( - name='mjs_asExclude', - return_type=PointerType( - inner_type=ValueType(name='mjsExclude'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsExclude, or return NULL if the element is not an mjsExclude.', # pylint: disable=line-too-long - )), - ('mjs_asTendon', - FunctionDecl( - name='mjs_asTendon', - return_type=PointerType( - inner_type=ValueType(name='mjsTendon'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsTendon, or return NULL if the element is not an mjsTendon.', # pylint: disable=line-too-long - )), - ('mjs_asNumeric', - FunctionDecl( - name='mjs_asNumeric', - return_type=PointerType( - inner_type=ValueType(name='mjsNumeric'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsNumeric, or return NULL if the element is not an mjsNumeric.', # pylint: disable=line-too-long - )), - ('mjs_asText', - FunctionDecl( - name='mjs_asText', - return_type=PointerType( - inner_type=ValueType(name='mjsText'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsText, or return NULL if the element is not an mjsText.', # pylint: disable=line-too-long - )), - ('mjs_asTuple', - FunctionDecl( - name='mjs_asTuple', - return_type=PointerType( - inner_type=ValueType(name='mjsTuple'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsTuple, or return NULL if the element is not an mjsTuple.', # pylint: disable=line-too-long - )), - ('mjs_asKey', - FunctionDecl( - name='mjs_asKey', - return_type=PointerType( - inner_type=ValueType(name='mjsKey'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsKey, or return NULL if the element is not an mjsKey.', # pylint: disable=line-too-long - )), - ('mjs_asMesh', - FunctionDecl( - name='mjs_asMesh', - return_type=PointerType( - inner_type=ValueType(name='mjsMesh'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsMesh, or return NULL if the element is not an mjsMesh.', # pylint: disable=line-too-long - )), - ('mjs_asHField', - FunctionDecl( - name='mjs_asHField', - return_type=PointerType( - inner_type=ValueType(name='mjsHField'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsHField, or return NULL if the element is not an mjsHField.', # pylint: disable=line-too-long - )), - ('mjs_asSkin', - FunctionDecl( - name='mjs_asSkin', - return_type=PointerType( - inner_type=ValueType(name='mjsSkin'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsSkin, or return NULL if the element is not an mjsSkin.', # pylint: disable=line-too-long - )), - ('mjs_asTexture', - FunctionDecl( - name='mjs_asTexture', - return_type=PointerType( - inner_type=ValueType(name='mjsTexture'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsTexture, or return NULL if the element is not an mjsTexture.', # pylint: disable=line-too-long - )), - ('mjs_asMaterial', - FunctionDecl( - name='mjs_asMaterial', - return_type=PointerType( - inner_type=ValueType(name='mjsMaterial'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsMaterial, or return NULL if the element is not an mjsMaterial.', # pylint: disable=line-too-long - )), - ('mjs_asPlugin', - FunctionDecl( - name='mjs_asPlugin', - return_type=PointerType( - inner_type=ValueType(name='mjsPlugin'), - ), - parameters=( - FunctionParameterDecl( - name='element', - type=PointerType( - inner_type=ValueType(name='mjsElement'), - ), - ), - ), - doc='Safely cast an element as mjsPlugin, or return NULL if the element is not an mjsPlugin.', # pylint: disable=line-too-long - )), ('mjs_setBuffer', FunctionDecl( name='mjs_setBuffer', @@ -11015,4 +10631,388 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([ ), doc='Default plugin attributes.', )), + ('mjs_asBody', + FunctionDecl( + name='mjs_asBody', + return_type=PointerType( + inner_type=ValueType(name='mjsBody'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsBody, or return NULL if the element is not an mjsBody.', # pylint: disable=line-too-long + )), + ('mjs_asGeom', + FunctionDecl( + name='mjs_asGeom', + return_type=PointerType( + inner_type=ValueType(name='mjsGeom'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsGeom, or return NULL if the element is not an mjsGeom.', # pylint: disable=line-too-long + )), + ('mjs_asJoint', + FunctionDecl( + name='mjs_asJoint', + return_type=PointerType( + inner_type=ValueType(name='mjsJoint'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsJoint, or return NULL if the element is not an mjsJoint.', # pylint: disable=line-too-long + )), + ('mjs_asSite', + FunctionDecl( + name='mjs_asSite', + return_type=PointerType( + inner_type=ValueType(name='mjsSite'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsSite, or return NULL if the element is not an mjsSite.', # pylint: disable=line-too-long + )), + ('mjs_asCamera', + FunctionDecl( + name='mjs_asCamera', + return_type=PointerType( + inner_type=ValueType(name='mjsCamera'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsCamera, or return NULL if the element is not an mjsCamera.', # pylint: disable=line-too-long + )), + ('mjs_asLight', + FunctionDecl( + name='mjs_asLight', + return_type=PointerType( + inner_type=ValueType(name='mjsLight'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsLight, or return NULL if the element is not an mjsLight.', # pylint: disable=line-too-long + )), + ('mjs_asFrame', + FunctionDecl( + name='mjs_asFrame', + return_type=PointerType( + inner_type=ValueType(name='mjsFrame'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsFrame, or return NULL if the element is not an mjsFrame.', # pylint: disable=line-too-long + )), + ('mjs_asActuator', + FunctionDecl( + name='mjs_asActuator', + return_type=PointerType( + inner_type=ValueType(name='mjsActuator'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsActuator, or return NULL if the element is not an mjsActuator.', # pylint: disable=line-too-long + )), + ('mjs_asSensor', + FunctionDecl( + name='mjs_asSensor', + return_type=PointerType( + inner_type=ValueType(name='mjsSensor'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsSensor, or return NULL if the element is not an mjsSensor.', # pylint: disable=line-too-long + )), + ('mjs_asFlex', + FunctionDecl( + name='mjs_asFlex', + return_type=PointerType( + inner_type=ValueType(name='mjsFlex'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsFlex, or return NULL if the element is not an mjsFlex.', # pylint: disable=line-too-long + )), + ('mjs_asPair', + FunctionDecl( + name='mjs_asPair', + return_type=PointerType( + inner_type=ValueType(name='mjsPair'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsPair, or return NULL if the element is not an mjsPair.', # pylint: disable=line-too-long + )), + ('mjs_asEquality', + FunctionDecl( + name='mjs_asEquality', + return_type=PointerType( + inner_type=ValueType(name='mjsEquality'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsEquality, or return NULL if the element is not an mjsEquality.', # pylint: disable=line-too-long + )), + ('mjs_asExclude', + FunctionDecl( + name='mjs_asExclude', + return_type=PointerType( + inner_type=ValueType(name='mjsExclude'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsExclude, or return NULL if the element is not an mjsExclude.', # pylint: disable=line-too-long + )), + ('mjs_asTendon', + FunctionDecl( + name='mjs_asTendon', + return_type=PointerType( + inner_type=ValueType(name='mjsTendon'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsTendon, or return NULL if the element is not an mjsTendon.', # pylint: disable=line-too-long + )), + ('mjs_asNumeric', + FunctionDecl( + name='mjs_asNumeric', + return_type=PointerType( + inner_type=ValueType(name='mjsNumeric'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsNumeric, or return NULL if the element is not an mjsNumeric.', # pylint: disable=line-too-long + )), + ('mjs_asText', + FunctionDecl( + name='mjs_asText', + return_type=PointerType( + inner_type=ValueType(name='mjsText'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsText, or return NULL if the element is not an mjsText.', # pylint: disable=line-too-long + )), + ('mjs_asTuple', + FunctionDecl( + name='mjs_asTuple', + return_type=PointerType( + inner_type=ValueType(name='mjsTuple'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsTuple, or return NULL if the element is not an mjsTuple.', # pylint: disable=line-too-long + )), + ('mjs_asKey', + FunctionDecl( + name='mjs_asKey', + return_type=PointerType( + inner_type=ValueType(name='mjsKey'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsKey, or return NULL if the element is not an mjsKey.', # pylint: disable=line-too-long + )), + ('mjs_asMesh', + FunctionDecl( + name='mjs_asMesh', + return_type=PointerType( + inner_type=ValueType(name='mjsMesh'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsMesh, or return NULL if the element is not an mjsMesh.', # pylint: disable=line-too-long + )), + ('mjs_asHField', + FunctionDecl( + name='mjs_asHField', + return_type=PointerType( + inner_type=ValueType(name='mjsHField'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsHField, or return NULL if the element is not an mjsHField.', # pylint: disable=line-too-long + )), + ('mjs_asSkin', + FunctionDecl( + name='mjs_asSkin', + return_type=PointerType( + inner_type=ValueType(name='mjsSkin'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsSkin, or return NULL if the element is not an mjsSkin.', # pylint: disable=line-too-long + )), + ('mjs_asTexture', + FunctionDecl( + name='mjs_asTexture', + return_type=PointerType( + inner_type=ValueType(name='mjsTexture'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsTexture, or return NULL if the element is not an mjsTexture.', # pylint: disable=line-too-long + )), + ('mjs_asMaterial', + FunctionDecl( + name='mjs_asMaterial', + return_type=PointerType( + inner_type=ValueType(name='mjsMaterial'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsMaterial, or return NULL if the element is not an mjsMaterial.', # pylint: disable=line-too-long + )), + ('mjs_asPlugin', + FunctionDecl( + name='mjs_asPlugin', + return_type=PointerType( + inner_type=ValueType(name='mjsPlugin'), + ), + parameters=( + FunctionParameterDecl( + name='element', + type=PointerType( + inner_type=ValueType(name='mjsElement'), + ), + ), + ), + doc='Safely cast an element as mjsPlugin, or return NULL if the element is not an mjsPlugin.', # pylint: disable=line-too-long + )), ])