1 /* 2 * This program is free software; you can redistribute it and/or 3 * modify it under the terms of the GNU General Public License 4 * as published by the Free Software Foundation; either version 2 5 * of the License, or (at your option) any later version. 6 * 7 * This program is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 * GNU General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License 13 * along with this program; if not, write to the Free Software Foundation, 14 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 15 */ 16 17 #ifndef __RNA_ACCESS_H__ 18 #define __RNA_ACCESS_H__ 19 20 /** \file 21 * \ingroup RNA 22 */ 23 24 #include <stdarg.h> 25 26 #include "RNA_types.h" 27 28 #include "BLI_compiler_attrs.h" 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif 33 34 struct ID; 35 struct IDOverrideLibrary; 36 struct IDOverrideLibraryProperty; 37 struct IDOverrideLibraryPropertyOperation; 38 struct IDProperty; 39 struct ListBase; 40 struct Main; 41 struct ReportList; 42 struct Scene; 43 struct bContext; 44 45 /* Types */ 46 extern BlenderRNA BLENDER_RNA; 47 48 /* Keep sorted. */ 49 extern StructRNA RNA_Action; 50 extern StructRNA RNA_ActionConstraint; 51 extern StructRNA RNA_ActionFCurves; 52 extern StructRNA RNA_ActionGroup; 53 extern StructRNA RNA_ActionGroups; 54 extern StructRNA RNA_ActionPoseMarkers; 55 extern StructRNA RNA_Addon; 56 extern StructRNA RNA_AddonPreferences; 57 extern StructRNA RNA_AdjustmentSequence; 58 extern StructRNA RNA_AlwaysSensor; 59 extern StructRNA RNA_AnimData; 60 extern StructRNA RNA_AnimViz; 61 extern StructRNA RNA_AnimVizMotionPaths; 62 extern StructRNA RNA_AnyType; 63 extern StructRNA RNA_Area; 64 extern StructRNA RNA_AreaLight; 65 extern StructRNA RNA_Armature; 66 extern StructRNA RNA_ArmatureGpencilModifier; 67 extern StructRNA RNA_ArmatureModifier; 68 extern StructRNA RNA_ArrayGpencilModifier; 69 extern StructRNA RNA_ArrayModifier; 70 extern StructRNA RNA_Attribute; 71 extern StructRNA RNA_AttributeGroup; 72 extern StructRNA RNA_BackgroundImage; 73 extern StructRNA RNA_BevelModifier; 74 extern StructRNA RNA_BezierSplinePoint; 75 extern StructRNA RNA_BlendData; 76 extern StructRNA RNA_BlendDataLibraries; 77 extern StructRNA RNA_BlendTexture; 78 extern StructRNA RNA_BlenderRNA; 79 extern StructRNA RNA_BoidRule; 80 extern StructRNA RNA_BoidRuleAverageSpeed; 81 extern StructRNA RNA_BoidRuleAvoid; 82 extern StructRNA RNA_BoidRuleAvoidCollision; 83 extern StructRNA RNA_BoidRuleFight; 84 extern StructRNA RNA_BoidRuleFollowLeader; 85 extern StructRNA RNA_BoidRuleGoal; 86 extern StructRNA RNA_BoidSettings; 87 extern StructRNA RNA_BoidState; 88 extern StructRNA RNA_Bone; 89 extern StructRNA RNA_BoneGroup; 90 extern StructRNA RNA_BoolProperty; 91 extern StructRNA RNA_BooleanModifier; 92 extern StructRNA RNA_Brush; 93 extern StructRNA RNA_BrushCapabilitiesImagePaint; 94 extern StructRNA RNA_BrushCapabilitiesVertexPaint; 95 extern StructRNA RNA_BrushTextureSlot; 96 extern StructRNA RNA_BuildGpencilModifier; 97 extern StructRNA RNA_BuildModifier; 98 extern StructRNA RNA_ByteColorAttribute; 99 extern StructRNA RNA_ByteColorAttributeValue; 100 extern StructRNA RNA_CacheFile; 101 extern StructRNA RNA_Camera; 102 extern StructRNA RNA_CameraDOFSettings; 103 extern StructRNA RNA_CastModifier; 104 extern StructRNA RNA_ChildOfConstraint; 105 extern StructRNA RNA_ChildParticle; 106 extern StructRNA RNA_ClampToConstraint; 107 extern StructRNA RNA_ClothCollisionSettings; 108 extern StructRNA RNA_ClothModifier; 109 extern StructRNA RNA_ClothSettings; 110 extern StructRNA RNA_CloudsTexture; 111 extern StructRNA RNA_Collection; 112 extern StructRNA RNA_CollectionProperty; 113 extern StructRNA RNA_CollisionModifier; 114 extern StructRNA RNA_CollisionSettings; 115 extern StructRNA RNA_ColorGpencilModifier; 116 extern StructRNA RNA_ColorManagedDisplaySettings; 117 extern StructRNA RNA_ColorManagedInputColorspaceSettings; 118 extern StructRNA RNA_ColorManagedSequencerColorspaceSettings; 119 extern StructRNA RNA_ColorManagedViewSettings; 120 extern StructRNA RNA_ColorMixSequence; 121 extern StructRNA RNA_ColorRamp; 122 extern StructRNA RNA_ColorRampElement; 123 extern StructRNA RNA_ColorSequence; 124 extern StructRNA RNA_CompositorNode; 125 extern StructRNA RNA_CompositorNodeAlphaOver; 126 extern StructRNA RNA_CompositorNodeBilateralblur; 127 extern StructRNA RNA_CompositorNodeBlur; 128 extern StructRNA RNA_CompositorNodeBrightContrast; 129 extern StructRNA RNA_CompositorNodeChannelMatte; 130 extern StructRNA RNA_CompositorNodeChromaMatte; 131 extern StructRNA RNA_CompositorNodeColorMatte; 132 extern StructRNA RNA_CompositorNodeColorSpill; 133 extern StructRNA RNA_CompositorNodeCombHSVA; 134 extern StructRNA RNA_CompositorNodeCombRGBA; 135 extern StructRNA RNA_CompositorNodeCombYCCA; 136 extern StructRNA RNA_CompositorNodeCombYUVA; 137 extern StructRNA RNA_CompositorNodeComposite; 138 extern StructRNA RNA_CompositorNodeCornerPin; 139 extern StructRNA RNA_CompositorNodeCrop; 140 extern StructRNA RNA_CompositorNodeCurveRGB; 141 extern StructRNA RNA_CompositorNodeCurveVec; 142 extern StructRNA RNA_CompositorNodeDBlur; 143 extern StructRNA RNA_CompositorNodeDefocus; 144 extern StructRNA RNA_CompositorNodeDiffMatte; 145 extern StructRNA RNA_CompositorNodeDilateErode; 146 extern StructRNA RNA_CompositorNodeDisplace; 147 extern StructRNA RNA_CompositorNodeDistanceMatte; 148 extern StructRNA RNA_CompositorNodeDoubleEdgeMask; 149 extern StructRNA RNA_CompositorNodeFilter; 150 extern StructRNA RNA_CompositorNodeFlip; 151 extern StructRNA RNA_CompositorNodeGamma; 152 extern StructRNA RNA_CompositorNodeGlare; 153 extern StructRNA RNA_CompositorNodeHueSat; 154 extern StructRNA RNA_CompositorNodeIDMask; 155 extern StructRNA RNA_CompositorNodeImage; 156 extern StructRNA RNA_CompositorNodeInpaint; 157 extern StructRNA RNA_CompositorNodeInvert; 158 extern StructRNA RNA_CompositorNodeLensdist; 159 extern StructRNA RNA_CompositorNodeLevels; 160 extern StructRNA RNA_CompositorNodeLumaMatte; 161 extern StructRNA RNA_CompositorNodeMapRange; 162 extern StructRNA RNA_CompositorNodeMapUV; 163 extern StructRNA RNA_CompositorNodeMapValue; 164 extern StructRNA RNA_CompositorNodeMask; 165 extern StructRNA RNA_CompositorNodeMath; 166 extern StructRNA RNA_CompositorNodeMixRGB; 167 extern StructRNA RNA_CompositorNodeNormal; 168 extern StructRNA RNA_CompositorNodeNormalize; 169 extern StructRNA RNA_CompositorNodeOutputFile; 170 extern StructRNA RNA_CompositorNodePremulKey; 171 extern StructRNA RNA_CompositorNodeRGB; 172 extern StructRNA RNA_CompositorNodeRGBToBW; 173 extern StructRNA RNA_CompositorNodeRLayers; 174 extern StructRNA RNA_CompositorNodeRotate; 175 extern StructRNA RNA_CompositorNodeScale; 176 extern StructRNA RNA_CompositorNodeSepHSVA; 177 extern StructRNA RNA_CompositorNodeSepRGBA; 178 extern StructRNA RNA_CompositorNodeSepYCCA; 179 extern StructRNA RNA_CompositorNodeSepYUVA; 180 extern StructRNA RNA_CompositorNodeSetAlpha; 181 extern StructRNA RNA_CompositorNodeSplitViewer; 182 extern StructRNA RNA_CompositorNodeSunBeams; 183 extern StructRNA RNA_CompositorNodeSwitchView; 184 extern StructRNA RNA_CompositorNodeTexture; 185 extern StructRNA RNA_CompositorNodeTime; 186 extern StructRNA RNA_CompositorNodeTonemap; 187 extern StructRNA RNA_CompositorNodeTranslate; 188 extern StructRNA RNA_CompositorNodeTree; 189 extern StructRNA RNA_CompositorNodeValToRGB; 190 extern StructRNA RNA_CompositorNodeValue; 191 extern StructRNA RNA_CompositorNodeVecBlur; 192 extern StructRNA RNA_CompositorNodeViewer; 193 extern StructRNA RNA_CompositorNodeZcombine; 194 extern StructRNA RNA_ConsoleLine; 195 extern StructRNA RNA_Constraint; 196 extern StructRNA RNA_ConstraintTarget; 197 extern StructRNA RNA_ConstraintTargetBone; 198 extern StructRNA RNA_Context; 199 extern StructRNA RNA_CopyLocationConstraint; 200 extern StructRNA RNA_CopyRotationConstraint; 201 extern StructRNA RNA_CopyScaleConstraint; 202 extern StructRNA RNA_CopyTransformsConstraint; 203 extern StructRNA RNA_CorrectiveSmoothModifier; 204 extern StructRNA RNA_Curve; 205 extern StructRNA RNA_CurveMap; 206 extern StructRNA RNA_CurveMapPoint; 207 extern StructRNA RNA_CurveMapping; 208 extern StructRNA RNA_CurveModifier; 209 extern StructRNA RNA_CurvePoint; 210 extern StructRNA RNA_CurveProfile; 211 extern StructRNA RNA_CurveProfilePoint; 212 extern StructRNA RNA_DampedTrackConstraint; 213 extern StructRNA RNA_DataTransferModifier; 214 extern StructRNA RNA_DecimateModifier; 215 extern StructRNA RNA_Depsgraph; 216 extern StructRNA RNA_DepsgraphObjectInstance; 217 extern StructRNA RNA_DepsgraphUpdate; 218 extern StructRNA RNA_DisplaceModifier; 219 extern StructRNA RNA_DisplaySafeAreas; 220 extern StructRNA RNA_DistortedNoiseTexture; 221 extern StructRNA RNA_DopeSheet; 222 extern StructRNA RNA_Driver; 223 extern StructRNA RNA_DriverTarget; 224 extern StructRNA RNA_DriverVariable; 225 extern StructRNA RNA_DynamicPaintBrushSettings; 226 extern StructRNA RNA_DynamicPaintCanvasSettings; 227 extern StructRNA RNA_DynamicPaintModifier; 228 extern StructRNA RNA_DynamicPaintSurface; 229 extern StructRNA RNA_EdgeSplitModifier; 230 extern StructRNA RNA_EditBone; 231 extern StructRNA RNA_EffectSequence; 232 extern StructRNA RNA_EffectorWeights; 233 extern StructRNA RNA_EnumProperty; 234 extern StructRNA RNA_EnumPropertyItem; 235 extern StructRNA RNA_Event; 236 extern StructRNA RNA_ExplodeModifier; 237 extern StructRNA RNA_FCurve; 238 extern StructRNA RNA_FCurveSample; 239 extern StructRNA RNA_FFmpegSettings; 240 extern StructRNA RNA_FModifier; 241 extern StructRNA RNA_FModifierCycles; 242 extern StructRNA RNA_FModifierEnvelope; 243 extern StructRNA RNA_FModifierEnvelopeControlPoint; 244 extern StructRNA RNA_FModifierFunctionGenerator; 245 extern StructRNA RNA_FModifierGenerator; 246 extern StructRNA RNA_FModifierLimits; 247 extern StructRNA RNA_FModifierNoise; 248 extern StructRNA RNA_FModifierPython; 249 extern StructRNA RNA_FModifierStepped; 250 extern StructRNA RNA_FaceMap; 251 extern StructRNA RNA_FieldSettings; 252 extern StructRNA RNA_FileBrowserFSMenuEntry; 253 extern StructRNA RNA_FileSelectParams; 254 extern StructRNA RNA_FloatAttribute; 255 extern StructRNA RNA_FloatAttributeValue; 256 extern StructRNA RNA_FloatColorAttribute; 257 extern StructRNA RNA_FloatColorAttributeValue; 258 extern StructRNA RNA_FloatProperty; 259 extern StructRNA RNA_FloorConstraint; 260 extern StructRNA RNA_FluidDomainSettings; 261 extern StructRNA RNA_FluidEffectorSettings; 262 extern StructRNA RNA_FluidFlowSettings; 263 extern StructRNA RNA_FluidModifier; 264 extern StructRNA RNA_FluidSettings; 265 extern StructRNA RNA_FollowPathConstraint; 266 extern StructRNA RNA_FreestyleLineSet; 267 extern StructRNA RNA_FreestyleLineStyle; 268 extern StructRNA RNA_FreestyleModuleSettings; 269 extern StructRNA RNA_FreestyleSettings; 270 extern StructRNA RNA_Function; 271 extern StructRNA RNA_FunctionNode; 272 extern StructRNA RNA_GPencilFrame; 273 extern StructRNA RNA_GPencilInterpolateSettings; 274 extern StructRNA RNA_GPencilLayer; 275 extern StructRNA RNA_GPencilSculptBrush; 276 extern StructRNA RNA_GPencilSculptGuide; 277 extern StructRNA RNA_GPencilSculptSettings; 278 extern StructRNA RNA_GPencilStroke; 279 extern StructRNA RNA_GPencilStrokePoint; 280 extern StructRNA RNA_GaussianBlurSequence; 281 extern StructRNA RNA_Gizmo; 282 extern StructRNA RNA_GizmoGroupProperties; 283 extern StructRNA RNA_GizmoProperties; 284 extern StructRNA RNA_GlowSequence; 285 extern StructRNA RNA_GpencilModifier; 286 extern StructRNA RNA_GreasePencil; 287 extern StructRNA RNA_Hair; 288 extern StructRNA RNA_Header; 289 extern StructRNA RNA_Histogram; 290 extern StructRNA RNA_HookGpencilModifier; 291 extern StructRNA RNA_HookModifier; 292 extern StructRNA RNA_ID; 293 extern StructRNA RNA_IDOverrideLibrary; 294 extern StructRNA RNA_IDOverrideLibraryProperty; 295 extern StructRNA RNA_IKParam; 296 extern StructRNA RNA_Image; 297 extern StructRNA RNA_ImageFormatSettings; 298 extern StructRNA RNA_ImagePaint; 299 extern StructRNA RNA_ImagePreview; 300 extern StructRNA RNA_ImageSequence; 301 extern StructRNA RNA_ImageTexture; 302 extern StructRNA RNA_ImageUser; 303 extern StructRNA RNA_IntAttribute; 304 extern StructRNA RNA_IntAttributeValue; 305 extern StructRNA RNA_IntProperty; 306 extern StructRNA RNA_Itasc; 307 extern StructRNA RNA_Key; 308 extern StructRNA RNA_KeyConfig; 309 extern StructRNA RNA_KeyConfigPreferences; 310 extern StructRNA RNA_KeyMap; 311 extern StructRNA RNA_KeyMapItem; 312 extern StructRNA RNA_KeyMapItems; 313 extern StructRNA RNA_Keyframe; 314 extern StructRNA RNA_KeyingSet; 315 extern StructRNA RNA_KeyingSetInfo; 316 extern StructRNA RNA_KeyingSetPath; 317 extern StructRNA RNA_KeyingSetsAll; 318 extern StructRNA RNA_KinematicConstraint; 319 extern StructRNA RNA_LaplacianDeformModifier; 320 extern StructRNA RNA_LaplacianSmoothModifier; 321 extern StructRNA RNA_Lattice; 322 extern StructRNA RNA_LatticeGpencilModifier; 323 extern StructRNA RNA_LatticeModifier; 324 extern StructRNA RNA_LatticePoint; 325 extern StructRNA RNA_LayerCollection; 326 extern StructRNA RNA_LayerObjects; 327 extern StructRNA RNA_Library; 328 extern StructRNA RNA_Light; 329 extern StructRNA RNA_LightProbe; 330 extern StructRNA RNA_LimitDistanceConstraint; 331 extern StructRNA RNA_LimitLocationConstraint; 332 extern StructRNA RNA_LimitRotationConstraint; 333 extern StructRNA RNA_LimitScaleConstraint; 334 extern StructRNA RNA_LineStyleAlphaModifier; 335 extern StructRNA RNA_LineStyleAlphaModifier_AlongStroke; 336 extern StructRNA RNA_LineStyleAlphaModifier_CreaseAngle; 337 extern StructRNA RNA_LineStyleAlphaModifier_Curvature_3D; 338 extern StructRNA RNA_LineStyleAlphaModifier_DistanceFromCamera; 339 extern StructRNA RNA_LineStyleAlphaModifier_DistanceFromObject; 340 extern StructRNA RNA_LineStyleAlphaModifier_Material; 341 extern StructRNA RNA_LineStyleAlphaModifier_Noise; 342 extern StructRNA RNA_LineStyleAlphaModifier_Tangent; 343 extern StructRNA RNA_LineStyleColorModifier; 344 extern StructRNA RNA_LineStyleColorModifier_AlongStroke; 345 extern StructRNA RNA_LineStyleColorModifier_CreaseAngle; 346 extern StructRNA RNA_LineStyleColorModifier_Curvature_3D; 347 extern StructRNA RNA_LineStyleColorModifier_DistanceFromCamera; 348 extern StructRNA RNA_LineStyleColorModifier_DistanceFromObject; 349 extern StructRNA RNA_LineStyleColorModifier_Material; 350 extern StructRNA RNA_LineStyleColorModifier_Noise; 351 extern StructRNA RNA_LineStyleColorModifier_Tangent; 352 extern StructRNA RNA_LineStyleGeometryModifier; 353 extern StructRNA RNA_LineStyleGeometryModifier_2DOffset; 354 extern StructRNA RNA_LineStyleGeometryModifier_2DTransform; 355 extern StructRNA RNA_LineStyleGeometryModifier_BackboneStretcher; 356 extern StructRNA RNA_LineStyleGeometryModifier_BezierCurve; 357 extern StructRNA RNA_LineStyleGeometryModifier_Blueprint; 358 extern StructRNA RNA_LineStyleGeometryModifier_GuidingLines; 359 extern StructRNA RNA_LineStyleGeometryModifier_PerlinNoise1D; 360 extern StructRNA RNA_LineStyleGeometryModifier_PerlinNoise2D; 361 extern StructRNA RNA_LineStyleGeometryModifier_Polygonalization; 362 extern StructRNA RNA_LineStyleGeometryModifier_Sampling; 363 extern StructRNA RNA_LineStyleGeometryModifier_Simplification; 364 extern StructRNA RNA_LineStyleGeometryModifier_SinusDisplacement; 365 extern StructRNA RNA_LineStyleGeometryModifier_SpatialNoise; 366 extern StructRNA RNA_LineStyleGeometryModifier_TipRemover; 367 extern StructRNA RNA_LineStyleModifier; 368 extern StructRNA RNA_LineStyleTextureSlot; 369 extern StructRNA RNA_LineStyleThicknessModifier; 370 extern StructRNA RNA_LineStyleThicknessModifier_AlongStroke; 371 extern StructRNA RNA_LineStyleThicknessModifier_Calligraphy; 372 extern StructRNA RNA_LineStyleThicknessModifier_CreaseAngle; 373 extern StructRNA RNA_LineStyleThicknessModifier_Curvature_3D; 374 extern StructRNA RNA_LineStyleThicknessModifier_DistanceFromCamera; 375 extern StructRNA RNA_LineStyleThicknessModifier_DistanceFromObject; 376 extern StructRNA RNA_LineStyleThicknessModifier_Material; 377 extern StructRNA RNA_LineStyleThicknessModifier_Noise; 378 extern StructRNA RNA_LineStyleThicknessModifier_Tangent; 379 extern StructRNA RNA_LockedTrackConstraint; 380 extern StructRNA RNA_Macro; 381 extern StructRNA RNA_MagicTexture; 382 extern StructRNA RNA_MarbleTexture; 383 extern StructRNA RNA_Mask; 384 extern StructRNA RNA_MaskLayer; 385 extern StructRNA RNA_MaskModifier; 386 extern StructRNA RNA_MaskSequence; 387 extern StructRNA RNA_Material; 388 extern StructRNA RNA_MaterialSlot; 389 extern StructRNA RNA_Menu; 390 extern StructRNA RNA_Mesh; 391 extern StructRNA RNA_MeshCacheModifier; 392 extern StructRNA RNA_MeshToVolumeModifier; 393 extern StructRNA RNA_MeshColor; 394 extern StructRNA RNA_MeshDeformModifier; 395 extern StructRNA RNA_MeshEdge; 396 extern StructRNA RNA_MeshFloatProperty; 397 extern StructRNA RNA_MeshIntProperty; 398 extern StructRNA RNA_MeshLoop; 399 extern StructRNA RNA_MeshLoopColor; 400 extern StructRNA RNA_MeshLoopColorLayer; 401 extern StructRNA RNA_MeshVertColor; 402 extern StructRNA RNA_MeshVertColorLayer; 403 extern StructRNA RNA_MeshLoopTriangle; 404 extern StructRNA RNA_MeshPolygon; 405 extern StructRNA RNA_MeshSequenceCacheModifier; 406 extern StructRNA RNA_MeshSkinVertex; 407 extern StructRNA RNA_MeshSkinVertexLayer; 408 extern StructRNA RNA_MeshStringProperty; 409 extern StructRNA RNA_MeshTextureFace; 410 extern StructRNA RNA_MeshTexturePoly; 411 extern StructRNA RNA_MeshUVLoop; 412 extern StructRNA RNA_MeshVertex; 413 extern StructRNA RNA_MetaBall; 414 extern StructRNA RNA_MetaElement; 415 extern StructRNA RNA_MetaSequence; 416 extern StructRNA RNA_MirrorGpencilModifier; 417 extern StructRNA RNA_MirrorModifier; 418 extern StructRNA RNA_Modifier; 419 extern StructRNA RNA_MotionPath; 420 extern StructRNA RNA_MotionPathVert; 421 extern StructRNA RNA_MovieClipSequence; 422 extern StructRNA RNA_MovieSequence; 423 extern StructRNA RNA_MovieTracking; 424 extern StructRNA RNA_MovieTrackingObject; 425 extern StructRNA RNA_MovieTrackingStabilization; 426 extern StructRNA RNA_MovieTrackingTrack; 427 extern StructRNA RNA_MulticamSequence; 428 extern StructRNA RNA_MultiplyGpencilModifier; 429 extern StructRNA RNA_MultiresModifier; 430 extern StructRNA RNA_MusgraveTexture; 431 extern StructRNA RNA_NlaStrip; 432 extern StructRNA RNA_NlaTrack; 433 extern StructRNA RNA_Node; 434 extern StructRNA RNA_NodeInstanceHash; 435 extern StructRNA RNA_NodeLink; 436 extern StructRNA RNA_NodeOutputFileSlotFile; 437 extern StructRNA RNA_NodeOutputFileSlotLayer; 438 extern StructRNA RNA_NodeSocket; 439 extern StructRNA RNA_NodeSocketInterface; 440 extern StructRNA RNA_NodeTree; 441 extern StructRNA RNA_NoiseGpencilModifier; 442 extern StructRNA RNA_NoiseTexture; 443 extern StructRNA RNA_NormalEditModifier; 444 extern StructRNA RNA_Object; 445 extern StructRNA RNA_ObjectBase; 446 extern StructRNA RNA_ObjectDisplay; 447 extern StructRNA RNA_OceanModifier; 448 extern StructRNA RNA_OceanTexData; 449 extern StructRNA RNA_OffsetGpencilModifier; 450 extern StructRNA RNA_OpacityGpencilModifier; 451 extern StructRNA RNA_Operator; 452 extern StructRNA RNA_OperatorFileListElement; 453 extern StructRNA RNA_OperatorMacro; 454 extern StructRNA RNA_OperatorMousePath; 455 extern StructRNA RNA_OperatorProperties; 456 extern StructRNA RNA_OperatorStrokeElement; 457 extern StructRNA RNA_PackedFile; 458 extern StructRNA RNA_Paint; 459 extern StructRNA RNA_PaintCurve; 460 extern StructRNA RNA_PaintToolSlot; 461 extern StructRNA RNA_Palette; 462 extern StructRNA RNA_PaletteColor; 463 extern StructRNA RNA_Panel; 464 extern StructRNA RNA_Particle; 465 extern StructRNA RNA_ParticleBrush; 466 extern StructRNA RNA_ParticleDupliWeight; 467 extern StructRNA RNA_ParticleEdit; 468 extern StructRNA RNA_ParticleHairKey; 469 extern StructRNA RNA_ParticleInstanceModifier; 470 extern StructRNA RNA_ParticleKey; 471 extern StructRNA RNA_ParticleSettings; 472 extern StructRNA RNA_ParticleSettingsTextureSlot; 473 extern StructRNA RNA_ParticleSystem; 474 extern StructRNA RNA_ParticleSystemModifier; 475 extern StructRNA RNA_ParticleTarget; 476 extern StructRNA RNA_PivotConstraint; 477 extern StructRNA RNA_PointCache; 478 extern StructRNA RNA_PointCloud; 479 extern StructRNA RNA_PointLight; 480 extern StructRNA RNA_PointerProperty; 481 extern StructRNA RNA_Pose; 482 extern StructRNA RNA_PoseBone; 483 extern StructRNA RNA_Preferences; 484 extern StructRNA RNA_PreferencesEdit; 485 extern StructRNA RNA_PreferencesFilePaths; 486 extern StructRNA RNA_PreferencesInput; 487 extern StructRNA RNA_PreferencesKeymap; 488 extern StructRNA RNA_PreferencesSystem; 489 extern StructRNA RNA_PreferencesView; 490 extern StructRNA RNA_Property; 491 extern StructRNA RNA_PropertyGroup; 492 extern StructRNA RNA_PropertyGroupItem; 493 extern StructRNA RNA_PythonConstraint; 494 extern StructRNA RNA_Region; 495 extern StructRNA RNA_RemeshModifier; 496 extern StructRNA RNA_RenderEngine; 497 extern StructRNA RNA_RenderLayer; 498 extern StructRNA RNA_RenderPass; 499 extern StructRNA RNA_RenderResult; 500 extern StructRNA RNA_RenderSettings; 501 extern StructRNA RNA_RigidBodyJointConstraint; 502 extern StructRNA RNA_RigidBodyObject; 503 extern StructRNA RNA_RigidBodyWorld; 504 extern StructRNA RNA_SPHFluidSettings; 505 extern StructRNA RNA_Scene; 506 extern StructRNA RNA_SceneDisplay; 507 extern StructRNA RNA_SceneEEVEE; 508 extern StructRNA RNA_SceneObjects; 509 extern StructRNA RNA_SceneRenderLayer; 510 extern StructRNA RNA_SceneSequence; 511 extern StructRNA RNA_Scopes; 512 extern StructRNA RNA_Screen; 513 extern StructRNA RNA_ScrewModifier; 514 extern StructRNA RNA_Sculpt; 515 extern StructRNA RNA_SelectedUvElement; 516 extern StructRNA RNA_Sensor; 517 extern StructRNA RNA_Sequence; 518 extern StructRNA RNA_SequenceColorBalance; 519 extern StructRNA RNA_SequenceColorBalanceData; 520 extern StructRNA RNA_SequenceCrop; 521 extern StructRNA RNA_SequenceEditor; 522 extern StructRNA RNA_SequenceElement; 523 extern StructRNA RNA_SequenceModifier; 524 extern StructRNA RNA_SequenceProxy; 525 extern StructRNA RNA_SequenceTransform; 526 extern StructRNA RNA_ShaderFx; 527 extern StructRNA RNA_ShaderFxBlur; 528 extern StructRNA RNA_ShaderFxColorize; 529 extern StructRNA RNA_ShaderFxFlip; 530 extern StructRNA RNA_ShaderFxGlow; 531 extern StructRNA RNA_ShaderFxLight; 532 extern StructRNA RNA_ShaderFxPixel; 533 extern StructRNA RNA_ShaderFxRim; 534 extern StructRNA RNA_ShaderFxShadow; 535 extern StructRNA RNA_ShaderFxSwirl; 536 extern StructRNA RNA_ShaderFxWave; 537 extern StructRNA RNA_ShaderNode; 538 extern StructRNA RNA_ShaderNodeCameraData; 539 extern StructRNA RNA_ShaderNodeCombineRGB; 540 extern StructRNA RNA_ShaderNodeGamma; 541 extern StructRNA RNA_ShaderNodeHueSaturation; 542 extern StructRNA RNA_ShaderNodeInvert; 543 extern StructRNA RNA_ShaderNodeMapping; 544 extern StructRNA RNA_ShaderNodeMath; 545 extern StructRNA RNA_ShaderNodeMixRGB; 546 extern StructRNA RNA_ShaderNodeNormal; 547 extern StructRNA RNA_ShaderNodeOutput; 548 extern StructRNA RNA_ShaderNodeOutputAOV; 549 extern StructRNA RNA_ShaderNodeRGB; 550 extern StructRNA RNA_ShaderNodeRGBCurve; 551 extern StructRNA RNA_ShaderNodeRGBToBW; 552 extern StructRNA RNA_ShaderNodeScript; 553 extern StructRNA RNA_ShaderNodeSeparateRGB; 554 extern StructRNA RNA_ShaderNodeTree; 555 extern StructRNA RNA_ShaderNodeValToRGB; 556 extern StructRNA RNA_ShaderNodeValue; 557 extern StructRNA RNA_ShaderNodeVectorCurve; 558 extern StructRNA RNA_ShaderNodeVectorMath; 559 extern StructRNA RNA_ShapeKey; 560 extern StructRNA RNA_ShapeKeyBezierPoint; 561 extern StructRNA RNA_ShapeKeyCurvePoint; 562 extern StructRNA RNA_ShapeKeyPoint; 563 extern StructRNA RNA_ShrinkwrapConstraint; 564 extern StructRNA RNA_ShrinkwrapModifier; 565 extern StructRNA RNA_SimpleDeformModifier; 566 extern StructRNA RNA_SimplifyGpencilModifier; 567 extern StructRNA RNA_Simulation; 568 #ifdef WITH_GEOMETRY_NODES 569 extern StructRNA RNA_SimulationModifier; 570 #endif 571 extern StructRNA RNA_SimulationNode; 572 extern StructRNA RNA_SimulationNodeTree; 573 extern StructRNA RNA_SkinModifier; 574 extern StructRNA RNA_SmoothGpencilModifier; 575 extern StructRNA RNA_SmoothModifier; 576 extern StructRNA RNA_SoftBodyModifier; 577 extern StructRNA RNA_SoftBodySettings; 578 extern StructRNA RNA_SolidifyModifier; 579 extern StructRNA RNA_Sound; 580 extern StructRNA RNA_SoundSequence; 581 extern StructRNA RNA_Space; 582 extern StructRNA RNA_SpaceClipEditor; 583 extern StructRNA RNA_SpaceConsole; 584 extern StructRNA RNA_SpaceDopeSheetEditor; 585 extern StructRNA RNA_SpaceFileBrowser; 586 extern StructRNA RNA_SpaceGraphEditor; 587 extern StructRNA RNA_SpaceImageEditor; 588 extern StructRNA RNA_SpaceImageOverlay; 589 extern StructRNA RNA_SpaceInfo; 590 extern StructRNA RNA_SpaceNLA; 591 extern StructRNA RNA_SpaceNodeEditor; 592 extern StructRNA RNA_SpaceOutliner; 593 extern StructRNA RNA_SpacePreferences; 594 extern StructRNA RNA_SpaceProperties; 595 extern StructRNA RNA_SpaceSequenceEditor; 596 extern StructRNA RNA_SpaceTextEditor; 597 extern StructRNA RNA_SpaceUVEditor; 598 extern StructRNA RNA_SpaceView3D; 599 extern StructRNA RNA_Speaker; 600 extern StructRNA RNA_SpeedControlSequence; 601 extern StructRNA RNA_Spline; 602 extern StructRNA RNA_SplineIKConstraint; 603 extern StructRNA RNA_SplinePoint; 604 extern StructRNA RNA_SpotLight; 605 extern StructRNA RNA_Stereo3dDisplay; 606 extern StructRNA RNA_StretchToConstraint; 607 extern StructRNA RNA_StringAttribute; 608 extern StructRNA RNA_StringAttributeValue; 609 extern StructRNA RNA_StringProperty; 610 extern StructRNA RNA_Struct; 611 extern StructRNA RNA_StucciTexture; 612 extern StructRNA RNA_StudioLight; 613 extern StructRNA RNA_SubdivGpencilModifier; 614 extern StructRNA RNA_SubsurfModifier; 615 extern StructRNA RNA_SunLight; 616 extern StructRNA RNA_SurfaceCurve; 617 extern StructRNA RNA_SurfaceDeformModifier; 618 extern StructRNA RNA_SurfaceModifier; 619 extern StructRNA RNA_TexMapping; 620 extern StructRNA RNA_Text; 621 extern StructRNA RNA_TextBox; 622 extern StructRNA RNA_TextCharacterFormat; 623 extern StructRNA RNA_TextCurve; 624 extern StructRNA RNA_TextLine; 625 extern StructRNA RNA_TextSequence; 626 extern StructRNA RNA_Texture; 627 extern StructRNA RNA_TextureNode; 628 extern StructRNA RNA_TextureNodeBricks; 629 extern StructRNA RNA_TextureNodeChecker; 630 extern StructRNA RNA_TextureNodeCompose; 631 extern StructRNA RNA_TextureNodeCoordinates; 632 extern StructRNA RNA_TextureNodeCurveRGB; 633 extern StructRNA RNA_TextureNodeCurveTime; 634 extern StructRNA RNA_TextureNodeDecompose; 635 extern StructRNA RNA_TextureNodeDistance; 636 extern StructRNA RNA_TextureNodeHueSaturation; 637 extern StructRNA RNA_TextureNodeImage; 638 extern StructRNA RNA_TextureNodeInvert; 639 extern StructRNA RNA_TextureNodeMath; 640 extern StructRNA RNA_TextureNodeMixRGB; 641 extern StructRNA RNA_TextureNodeOutput; 642 extern StructRNA RNA_TextureNodeRGBToBW; 643 extern StructRNA RNA_TextureNodeRotate; 644 extern StructRNA RNA_TextureNodeScale; 645 extern StructRNA RNA_TextureNodeTexture; 646 extern StructRNA RNA_TextureNodeTranslate; 647 extern StructRNA RNA_TextureNodeTree; 648 extern StructRNA RNA_TextureNodeValToNor; 649 extern StructRNA RNA_TextureNodeValToRGB; 650 extern StructRNA RNA_TextureNodeViewer; 651 extern StructRNA RNA_TextureSlot; 652 extern StructRNA RNA_Theme; 653 extern StructRNA RNA_ThemeBoneColorSet; 654 extern StructRNA RNA_ThemeCollectionColor; 655 extern StructRNA RNA_ThemeConsole; 656 extern StructRNA RNA_ThemeDopeSheet; 657 extern StructRNA RNA_ThemeFileBrowser; 658 extern StructRNA RNA_ThemeFontStyle; 659 extern StructRNA RNA_ThemeGraphEditor; 660 extern StructRNA RNA_ThemeImageEditor; 661 extern StructRNA RNA_ThemeInfo; 662 extern StructRNA RNA_ThemeNLAEditor; 663 extern StructRNA RNA_ThemeNodeEditor; 664 extern StructRNA RNA_ThemeOutliner; 665 extern StructRNA RNA_ThemePreferences; 666 extern StructRNA RNA_ThemeProperties; 667 extern StructRNA RNA_ThemeSequenceEditor; 668 extern StructRNA RNA_ThemeSpaceGeneric; 669 extern StructRNA RNA_ThemeSpaceGradient; 670 extern StructRNA RNA_ThemeSpaceListGeneric; 671 extern StructRNA RNA_ThemeStyle; 672 extern StructRNA RNA_ThemeTextEditor; 673 extern StructRNA RNA_ThemeUserInterface; 674 extern StructRNA RNA_ThemeView3D; 675 extern StructRNA RNA_ThemeWidgetColors; 676 extern StructRNA RNA_ThemeWidgetStateColors; 677 extern StructRNA RNA_ThickGpencilModifier; 678 extern StructRNA RNA_TimeGpencilModifier; 679 extern StructRNA RNA_TimelineMarker; 680 extern StructRNA RNA_Timer; 681 extern StructRNA RNA_TintGpencilModifier; 682 extern StructRNA RNA_ToolSettings; 683 extern StructRNA RNA_TrackToConstraint; 684 extern StructRNA RNA_TransformConstraint; 685 extern StructRNA RNA_TransformOrientationSlot; 686 extern StructRNA RNA_TransformSequence; 687 extern StructRNA RNA_TriangulateModifier; 688 extern StructRNA RNA_UILayout; 689 extern StructRNA RNA_UIList; 690 extern StructRNA RNA_UIPieMenu; 691 extern StructRNA RNA_UIPopupMenu; 692 extern StructRNA RNA_UVProjectModifier; 693 extern StructRNA RNA_UVProjector; 694 extern StructRNA RNA_UVWarpModifier; 695 extern StructRNA RNA_UnitSettings; 696 extern StructRNA RNA_UnknownType; 697 extern StructRNA RNA_UserSolidLight; 698 extern StructRNA RNA_VertexcolorGpencilModifier; 699 extern StructRNA RNA_VectorFont; 700 extern StructRNA RNA_VertexGroup; 701 extern StructRNA RNA_VertexGroupElement; 702 extern StructRNA RNA_VertexPaint; 703 extern StructRNA RNA_VertexWeightEditModifier; 704 extern StructRNA RNA_VertexWeightMixModifier; 705 extern StructRNA RNA_VertexWeightProximityModifier; 706 extern StructRNA RNA_View3DCursor; 707 extern StructRNA RNA_View3DOverlay; 708 extern StructRNA RNA_View3DShading; 709 extern StructRNA RNA_ViewLayer; 710 extern StructRNA RNA_ViewLayerEEVEE; 711 extern StructRNA RNA_Volume; 712 extern StructRNA RNA_VolumeDisplaceModifier; 713 extern StructRNA RNA_VolumeToMeshModifier; 714 extern StructRNA RNA_VoronoiTexture; 715 extern StructRNA RNA_WalkNavigation; 716 extern StructRNA RNA_WarpModifier; 717 extern StructRNA RNA_WaveModifier; 718 extern StructRNA RNA_WeightedNormalModifier; 719 extern StructRNA RNA_WeldModifier; 720 extern StructRNA RNA_Window; 721 extern StructRNA RNA_WindowManager; 722 extern StructRNA RNA_WipeSequence; 723 extern StructRNA RNA_WireframeModifier; 724 extern StructRNA RNA_WoodTexture; 725 extern StructRNA RNA_WorkSpace; 726 extern StructRNA RNA_World; 727 extern StructRNA RNA_WorldLighting; 728 extern StructRNA RNA_WorldMistSettings; 729 extern StructRNA RNA_XrSessionSettings; 730 extern StructRNA RNA_XrSessionState; 731 extern StructRNA RNA_uiPopover; 732 extern StructRNA RNA_wmOwnerIDs; 733 734 /* Pointer 735 * 736 * These functions will fill in RNA pointers, this can be done in three ways: 737 * - a pointer Main is created by just passing the data pointer 738 * - a pointer to a datablock can be created with the type and id data pointer 739 * - a pointer to data contained in a datablock can be created with the id type 740 * and id data pointer, and the data type and pointer to the struct itself. 741 * 742 * There is also a way to get a pointer with the information about all structs. 743 */ 744 745 void RNA_main_pointer_create(struct Main *main, PointerRNA *r_ptr); 746 void RNA_id_pointer_create(struct ID *id, PointerRNA *r_ptr); 747 void RNA_pointer_create(struct ID *id, StructRNA *type, void *data, PointerRNA *r_ptr); 748 bool RNA_pointer_is_null(const PointerRNA *ptr); 749 750 bool RNA_path_resolved_create(PointerRNA *ptr, 751 struct PropertyRNA *prop, 752 const int prop_index, 753 PathResolvedRNA *r_anim_rna); 754 755 void RNA_blender_rna_pointer_create(PointerRNA *r_ptr); 756 void RNA_pointer_recast(PointerRNA *ptr, PointerRNA *r_ptr); 757 758 extern const PointerRNA PointerRNA_NULL; 759 760 /* Structs */ 761 762 StructRNA *RNA_struct_find(const char *identifier); 763 764 const char *RNA_struct_identifier(const StructRNA *type); 765 const char *RNA_struct_ui_name(const StructRNA *type); 766 const char *RNA_struct_ui_name_raw(const StructRNA *type); 767 const char *RNA_struct_ui_description(const StructRNA *type); 768 const char *RNA_struct_ui_description_raw(const StructRNA *type); 769 const char *RNA_struct_translation_context(const StructRNA *type); 770 int RNA_struct_ui_icon(const StructRNA *type); 771 772 PropertyRNA *RNA_struct_name_property(const StructRNA *type); 773 const EnumPropertyItem *RNA_struct_property_tag_defines(const StructRNA *type); 774 PropertyRNA *RNA_struct_iterator_property(StructRNA *type); 775 StructRNA *RNA_struct_base(StructRNA *type); 776 const StructRNA *RNA_struct_base_child_of(const StructRNA *type, const StructRNA *parent_type); 777 778 bool RNA_struct_is_ID(const StructRNA *type); 779 bool RNA_struct_is_a(const StructRNA *type, const StructRNA *srna); 780 781 bool RNA_struct_undo_check(const StructRNA *type); 782 783 StructRegisterFunc RNA_struct_register(StructRNA *type); 784 StructUnregisterFunc RNA_struct_unregister(StructRNA *type); 785 void **RNA_struct_instance(PointerRNA *ptr); 786 787 void *RNA_struct_py_type_get(StructRNA *srna); 788 void RNA_struct_py_type_set(StructRNA *srna, void *py_type); 789 790 void *RNA_struct_blender_type_get(StructRNA *srna); 791 void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type); 792 793 struct IDProperty *RNA_struct_idprops(PointerRNA *ptr, bool create); 794 bool RNA_struct_idprops_check(StructRNA *srna); 795 bool RNA_struct_idprops_register_check(const StructRNA *type); 796 bool RNA_struct_idprops_datablock_allowed(const StructRNA *type); 797 bool RNA_struct_idprops_contains_datablock(const StructRNA *type); 798 bool RNA_struct_idprops_unset(PointerRNA *ptr, const char *identifier); 799 800 PropertyRNA *RNA_struct_find_property(PointerRNA *ptr, const char *identifier); 801 bool RNA_struct_contains_property(PointerRNA *ptr, PropertyRNA *prop_test); 802 unsigned int RNA_struct_count_properties(StructRNA *srna); 803 804 /* lower level functions for access to type properties */ 805 const struct ListBase *RNA_struct_type_properties(StructRNA *srna); 806 PropertyRNA *RNA_struct_type_find_property(StructRNA *srna, const char *identifier); 807 808 FunctionRNA *RNA_struct_find_function(StructRNA *srna, const char *identifier); 809 const struct ListBase *RNA_struct_type_functions(StructRNA *srna); 810 811 char *RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int fixedlen, int *r_len); 812 813 bool RNA_struct_available_or_report(struct ReportList *reports, const char *identifier); 814 bool RNA_struct_bl_idname_ok_or_report(struct ReportList *reports, 815 const char *identifier, 816 const char *sep); 817 818 /* Properties 819 * 820 * Access to struct properties. All this works with RNA pointers rather than 821 * direct pointers to the data. */ 822 823 /* Property Information */ 824 825 const char *RNA_property_identifier(const PropertyRNA *prop); 826 const char *RNA_property_description(PropertyRNA *prop); 827 828 PropertyType RNA_property_type(PropertyRNA *prop); 829 PropertySubType RNA_property_subtype(PropertyRNA *prop); 830 PropertyUnit RNA_property_unit(PropertyRNA *prop); 831 int RNA_property_flag(PropertyRNA *prop); 832 int RNA_property_override_flag(PropertyRNA *prop); 833 int RNA_property_tags(PropertyRNA *prop); 834 bool RNA_property_builtin(PropertyRNA *prop); 835 void *RNA_property_py_data_get(PropertyRNA *prop); 836 837 int RNA_property_array_length(PointerRNA *ptr, PropertyRNA *prop); 838 bool RNA_property_array_check(PropertyRNA *prop); 839 int RNA_property_multi_array_length(PointerRNA *ptr, PropertyRNA *prop, int dimension); 840 int RNA_property_array_dimension(PointerRNA *ptr, PropertyRNA *prop, int length[]); 841 char RNA_property_array_item_char(PropertyRNA *prop, int index); 842 int RNA_property_array_item_index(PropertyRNA *prop, char name); 843 844 int RNA_property_string_maxlength(PropertyRNA *prop); 845 846 const char *RNA_property_ui_name(const PropertyRNA *prop); 847 const char *RNA_property_ui_name_raw(const PropertyRNA *prop); 848 const char *RNA_property_ui_description(const PropertyRNA *prop); 849 const char *RNA_property_ui_description_raw(const PropertyRNA *prop); 850 const char *RNA_property_translation_context(const PropertyRNA *prop); 851 int RNA_property_ui_icon(const PropertyRNA *prop); 852 853 /* Dynamic Property Information */ 854 855 void RNA_property_int_range(PointerRNA *ptr, PropertyRNA *prop, int *hardmin, int *hardmax); 856 void RNA_property_int_ui_range( 857 PointerRNA *ptr, PropertyRNA *prop, int *softmin, int *softmax, int *step); 858 859 void RNA_property_float_range(PointerRNA *ptr, PropertyRNA *prop, float *hardmin, float *hardmax); 860 void RNA_property_float_ui_range(PointerRNA *ptr, 861 PropertyRNA *prop, 862 float *softmin, 863 float *softmax, 864 float *step, 865 float *precision); 866 867 int RNA_property_float_clamp(PointerRNA *ptr, PropertyRNA *prop, float *value); 868 int RNA_property_int_clamp(PointerRNA *ptr, PropertyRNA *prop, int *value); 869 870 bool RNA_enum_identifier(const EnumPropertyItem *item, const int value, const char **identifier); 871 int RNA_enum_bitflag_identifiers(const EnumPropertyItem *item, 872 const int value, 873 const char **identifier); 874 bool RNA_enum_name(const EnumPropertyItem *item, const int value, const char **r_name); 875 bool RNA_enum_description(const EnumPropertyItem *item, const int value, const char **description); 876 int RNA_enum_from_value(const EnumPropertyItem *item, const int value); 877 int RNA_enum_from_identifier(const EnumPropertyItem *item, const char *identifier); 878 int RNA_enum_from_name(const EnumPropertyItem *item, const char *name); 879 unsigned int RNA_enum_items_count(const EnumPropertyItem *item); 880 881 void RNA_property_enum_items_ex(struct bContext *C, 882 PointerRNA *ptr, 883 PropertyRNA *prop, 884 const bool use_static, 885 const EnumPropertyItem **r_item, 886 int *r_totitem, 887 bool *r_free); 888 void RNA_property_enum_items(struct bContext *C, 889 PointerRNA *ptr, 890 PropertyRNA *prop, 891 const EnumPropertyItem **r_item, 892 int *r_totitem, 893 bool *r_free); 894 void RNA_property_enum_items_gettexted(struct bContext *C, 895 PointerRNA *ptr, 896 PropertyRNA *prop, 897 const EnumPropertyItem **r_item, 898 int *r_totitem, 899 bool *r_free); 900 void RNA_property_enum_items_gettexted_all(struct bContext *C, 901 PointerRNA *ptr, 902 PropertyRNA *prop, 903 const EnumPropertyItem **r_item, 904 int *r_totitem, 905 bool *r_free); 906 bool RNA_property_enum_value( 907 struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *r_value); 908 bool RNA_property_enum_identifier(struct bContext *C, 909 PointerRNA *ptr, 910 PropertyRNA *prop, 911 const int value, 912 const char **identifier); 913 bool RNA_property_enum_name( 914 struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **name); 915 bool RNA_property_enum_name_gettexted( 916 struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **name); 917 918 bool RNA_property_enum_item_from_value(struct bContext *C, 919 PointerRNA *ptr, 920 PropertyRNA *prop, 921 const int value, 922 EnumPropertyItem *r_item); 923 bool RNA_property_enum_item_from_value_gettexted(struct bContext *C, 924 PointerRNA *ptr, 925 PropertyRNA *prop, 926 const int value, 927 EnumPropertyItem *r_item); 928 929 int RNA_property_enum_bitflag_identifiers(struct bContext *C, 930 PointerRNA *ptr, 931 PropertyRNA *prop, 932 const int value, 933 const char **identifier); 934 935 StructRNA *RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop); 936 bool RNA_property_pointer_poll(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *value); 937 938 bool RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop); 939 bool RNA_property_editable_info(PointerRNA *ptr, PropertyRNA *prop, const char **r_info); 940 bool RNA_property_editable_index(PointerRNA *ptr, PropertyRNA *prop, int index); 941 942 /* without lib check, only checks the flag */ 943 bool RNA_property_editable_flag(PointerRNA *ptr, PropertyRNA *prop); 944 945 bool RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop); 946 bool RNA_property_animated(PointerRNA *ptr, PropertyRNA *prop); 947 bool RNA_property_overridable_get(PointerRNA *ptr, PropertyRNA *prop); 948 bool RNA_property_overridable_library_set(PointerRNA *ptr, 949 PropertyRNA *prop, 950 const bool is_overridable); 951 bool RNA_property_overridden(PointerRNA *ptr, PropertyRNA *prop); 952 bool RNA_property_comparable(PointerRNA *ptr, PropertyRNA *prop); 953 bool RNA_property_path_from_ID_check(PointerRNA *ptr, PropertyRNA *prop); /* slow, use with care */ 954 955 void RNA_property_update(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop); 956 void RNA_property_update_main(struct Main *bmain, 957 struct Scene *scene, 958 PointerRNA *ptr, 959 PropertyRNA *prop); 960 bool RNA_property_update_check(struct PropertyRNA *prop); 961 962 /* Property Data */ 963 964 bool RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop); 965 void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value); 966 void RNA_property_boolean_get_array(PointerRNA *ptr, PropertyRNA *prop, bool *values); 967 bool RNA_property_boolean_get_index(PointerRNA *ptr, PropertyRNA *prop, int index); 968 void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const bool *values); 969 void RNA_property_boolean_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, bool value); 970 bool RNA_property_boolean_get_default(PointerRNA *ptr, PropertyRNA *prop); 971 void RNA_property_boolean_get_default_array(PointerRNA *ptr, PropertyRNA *prop, bool *values); 972 bool RNA_property_boolean_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index); 973 974 int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop); 975 void RNA_property_int_set(PointerRNA *ptr, PropertyRNA *prop, int value); 976 void RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values); 977 void RNA_property_int_get_array_range(PointerRNA *ptr, PropertyRNA *prop, int values[2]); 978 int RNA_property_int_get_index(PointerRNA *ptr, PropertyRNA *prop, int index); 979 void RNA_property_int_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *values); 980 void RNA_property_int_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int value); 981 int RNA_property_int_get_default(PointerRNA *ptr, PropertyRNA *prop); 982 bool RNA_property_int_set_default(PointerRNA *ptr, PropertyRNA *prop, int value); 983 void RNA_property_int_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values); 984 int RNA_property_int_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index); 985 986 float RNA_property_float_get(PointerRNA *ptr, PropertyRNA *prop); 987 void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value); 988 void RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, float *values); 989 void RNA_property_float_get_array_range(PointerRNA *ptr, PropertyRNA *prop, float values[2]); 990 float RNA_property_float_get_index(PointerRNA *ptr, PropertyRNA *prop, int index); 991 void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, const float *values); 992 void RNA_property_float_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, float value); 993 float RNA_property_float_get_default(PointerRNA *ptr, PropertyRNA *prop); 994 bool RNA_property_float_set_default(PointerRNA *ptr, PropertyRNA *prop, float value); 995 void RNA_property_float_get_default_array(PointerRNA *ptr, PropertyRNA *prop, float *values); 996 float RNA_property_float_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index); 997 998 void RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop, char *value); 999 char *RNA_property_string_get_alloc( 1000 PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen, int *r_len); 1001 void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value); 1002 void RNA_property_string_set_bytes(PointerRNA *ptr, PropertyRNA *prop, const char *value, int len); 1003 int RNA_property_string_length(PointerRNA *ptr, PropertyRNA *prop); 1004 void RNA_property_string_get_default(PointerRNA *ptr, PropertyRNA *prop, char *value); 1005 char *RNA_property_string_get_default_alloc(PointerRNA *ptr, 1006 PropertyRNA *prop, 1007 char *fixedbuf, 1008 int fixedlen); 1009 int RNA_property_string_default_length(PointerRNA *ptr, PropertyRNA *prop); 1010 1011 int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop); 1012 void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value); 1013 int RNA_property_enum_get_default(PointerRNA *ptr, PropertyRNA *prop); 1014 void *RNA_property_enum_py_data_get(PropertyRNA *prop); 1015 int RNA_property_enum_step( 1016 const struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, int from_value, int step); 1017 1018 PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop) ATTR_NONNULL(1, 2); 1019 void RNA_property_pointer_set(PointerRNA *ptr, 1020 PropertyRNA *prop, 1021 PointerRNA ptr_value, 1022 struct ReportList *reports) ATTR_NONNULL(1, 2); 1023 PointerRNA RNA_property_pointer_get_default(PointerRNA *ptr, PropertyRNA *prop) ATTR_NONNULL(1, 2); 1024 1025 void RNA_property_collection_begin(PointerRNA *ptr, 1026 PropertyRNA *prop, 1027 CollectionPropertyIterator *iter); 1028 void RNA_property_collection_next(CollectionPropertyIterator *iter); 1029 void RNA_property_collection_skip(CollectionPropertyIterator *iter, int num); 1030 void RNA_property_collection_end(CollectionPropertyIterator *iter); 1031 int RNA_property_collection_length(PointerRNA *ptr, PropertyRNA *prop); 1032 int RNA_property_collection_lookup_index(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *t_ptr); 1033 int RNA_property_collection_lookup_int(PointerRNA *ptr, 1034 PropertyRNA *prop, 1035 int key, 1036 PointerRNA *r_ptr); 1037 int RNA_property_collection_lookup_string(PointerRNA *ptr, 1038 PropertyRNA *prop, 1039 const char *key, 1040 PointerRNA *r_ptr); 1041 int RNA_property_collection_lookup_string_index( 1042 PointerRNA *ptr, PropertyRNA *prop, const char *key, PointerRNA *r_ptr, int *r_index); 1043 int RNA_property_collection_assign_int(PointerRNA *ptr, 1044 PropertyRNA *prop, 1045 const int key, 1046 const PointerRNA *assign_ptr); 1047 bool RNA_property_collection_type_get(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *r_ptr); 1048 1049 /* efficient functions to set properties for arrays */ 1050 int RNA_property_collection_raw_array(PointerRNA *ptr, 1051 PropertyRNA *prop, 1052 PropertyRNA *itemprop, 1053 RawArray *array); 1054 int RNA_property_collection_raw_get(struct ReportList *reports, 1055 PointerRNA *ptr, 1056 PropertyRNA *prop, 1057 const char *propname, 1058 void *array, 1059 RawPropertyType type, 1060 int len); 1061 int RNA_property_collection_raw_set(struct ReportList *reports, 1062 PointerRNA *ptr, 1063 PropertyRNA *prop, 1064 const char *propname, 1065 void *array, 1066 RawPropertyType type, 1067 int len); 1068 int RNA_raw_type_sizeof(RawPropertyType type); 1069 RawPropertyType RNA_property_raw_type(PropertyRNA *prop); 1070 1071 /* to create ID property groups */ 1072 void RNA_property_pointer_add(PointerRNA *ptr, PropertyRNA *prop); 1073 void RNA_property_pointer_remove(PointerRNA *ptr, PropertyRNA *prop); 1074 void RNA_property_collection_add(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *r_ptr); 1075 bool RNA_property_collection_remove(PointerRNA *ptr, PropertyRNA *prop, int key); 1076 void RNA_property_collection_clear(PointerRNA *ptr, PropertyRNA *prop); 1077 bool RNA_property_collection_move(PointerRNA *ptr, PropertyRNA *prop, int key, int pos); 1078 1079 /* copy/reset */ 1080 bool RNA_property_copy( 1081 struct Main *bmain, PointerRNA *ptr, PointerRNA *fromptr, PropertyRNA *prop, int index); 1082 bool RNA_property_reset(PointerRNA *ptr, PropertyRNA *prop, int index); 1083 bool RNA_property_assign_default(PointerRNA *ptr, PropertyRNA *prop); 1084 1085 /* Path 1086 * 1087 * Experimental method to refer to structs and properties with a string, 1088 * using a syntax like: scenes[0].objects["Cube"].data.verts[7].co 1089 * 1090 * This provides a way to refer to RNA data while being detached from any 1091 * particular pointers, which is useful in a number of applications, like 1092 * UI code or Actions, though efficiency is a concern. */ 1093 1094 char *RNA_path_append( 1095 const char *path, PointerRNA *ptr, PropertyRNA *prop, int intkey, const char *strkey); 1096 char *RNA_path_back(const char *path); 1097 1098 /* path_resolve() variants only ensure that a valid pointer (and optionally property) exist */ 1099 bool RNA_path_resolve(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop); 1100 1101 bool RNA_path_resolve_full( 1102 PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop, int *r_index); 1103 1104 /* path_resolve_property() variants ensure that pointer + property both exist */ 1105 bool RNA_path_resolve_property(PointerRNA *ptr, 1106 const char *path, 1107 PointerRNA *r_ptr, 1108 PropertyRNA **r_prop); 1109 1110 bool RNA_path_resolve_property_full( 1111 PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop, int *r_index); 1112 1113 /* path_resolve_property_and_item_pointer() variants ensure that pointer + property both exist, 1114 * and resolve last Pointer value if possible (Pointer prop or item of a Collection prop). */ 1115 bool RNA_path_resolve_property_and_item_pointer(PointerRNA *ptr, 1116 const char *path, 1117 PointerRNA *r_ptr, 1118 PropertyRNA **r_prop, 1119 PointerRNA *r_item_ptr); 1120 1121 bool RNA_path_resolve_property_and_item_pointer_full(PointerRNA *ptr, 1122 const char *path, 1123 PointerRNA *r_ptr, 1124 PropertyRNA **r_prop, 1125 int *r_index, 1126 PointerRNA *r_item_ptr); 1127 1128 typedef struct PropertyElemRNA PropertyElemRNA; 1129 struct PropertyElemRNA { 1130 PropertyElemRNA *next, *prev; 1131 PointerRNA ptr; 1132 PropertyRNA *prop; 1133 int index; 1134 }; 1135 bool RNA_path_resolve_elements(PointerRNA *ptr, const char *path, struct ListBase *r_elements); 1136 1137 char *RNA_path_from_struct_to_idproperty(PointerRNA *ptr, struct IDProperty *needle); 1138 1139 struct ID *RNA_find_real_ID_and_path(struct Main *bmain, struct ID *id, const char **r_path); 1140 1141 char *RNA_path_from_ID_to_struct(PointerRNA *ptr); 1142 1143 char *RNA_path_from_real_ID_to_struct(struct Main *bmain, PointerRNA *ptr, struct ID **r_real); 1144 1145 char *RNA_path_from_ID_to_property(PointerRNA *ptr, PropertyRNA *prop); 1146 char *RNA_path_from_ID_to_property_index(PointerRNA *ptr, 1147 PropertyRNA *prop, 1148 int index_dim, 1149 int index); 1150 1151 char *RNA_path_from_real_ID_to_property_index(struct Main *bmain, 1152 PointerRNA *ptr, 1153 PropertyRNA *prop, 1154 int index_dim, 1155 int index, 1156 struct ID **r_real_id); 1157 1158 char *RNA_path_resolve_from_type_to_property(struct PointerRNA *ptr, 1159 struct PropertyRNA *prop, 1160 const struct StructRNA *type); 1161 1162 char *RNA_path_full_ID_py(struct Main *bmain, struct ID *id); 1163 char *RNA_path_full_struct_py(struct Main *bmain, struct PointerRNA *ptr); 1164 char *RNA_path_full_property_py_ex( 1165 struct Main *bmain, PointerRNA *ptr, PropertyRNA *prop, int index, bool use_fallback); 1166 char *RNA_path_full_property_py(struct Main *bmain, 1167 struct PointerRNA *ptr, 1168 struct PropertyRNA *prop, 1169 int index); 1170 char *RNA_path_struct_property_py(struct PointerRNA *ptr, struct PropertyRNA *prop, int index); 1171 char *RNA_path_property_py(struct PointerRNA *ptr, struct PropertyRNA *prop, int index); 1172 1173 /* Quick name based property access 1174 * 1175 * These are just an easier way to access property values without having to 1176 * call RNA_struct_find_property. The names have to exist as RNA properties 1177 * for the type in the pointer, if they do not exist an error will be printed. 1178 * 1179 * There is no support for pointers and collections here yet, these can be 1180 * added when ID properties support them. */ 1181 1182 bool RNA_boolean_get(PointerRNA *ptr, const char *name); 1183 void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value); 1184 void RNA_boolean_get_array(PointerRNA *ptr, const char *name, bool *values); 1185 void RNA_boolean_set_array(PointerRNA *ptr, const char *name, const bool *values); 1186 1187 int RNA_int_get(PointerRNA *ptr, const char *name); 1188 void RNA_int_set(PointerRNA *ptr, const char *name, int value); 1189 void RNA_int_get_array(PointerRNA *ptr, const char *name, int *values); 1190 void RNA_int_set_array(PointerRNA *ptr, const char *name, const int *values); 1191 1192 float RNA_float_get(PointerRNA *ptr, const char *name); 1193 void RNA_float_set(PointerRNA *ptr, const char *name, float value); 1194 void RNA_float_get_array(PointerRNA *ptr, const char *name, float *values); 1195 void RNA_float_set_array(PointerRNA *ptr, const char *name, const float *values); 1196 1197 int RNA_enum_get(PointerRNA *ptr, const char *name); 1198 void RNA_enum_set(PointerRNA *ptr, const char *name, int value); 1199 void RNA_enum_set_identifier(struct bContext *C, 1200 PointerRNA *ptr, 1201 const char *name, 1202 const char *id); 1203 bool RNA_enum_is_equal(struct bContext *C, 1204 PointerRNA *ptr, 1205 const char *name, 1206 const char *enumname); 1207 1208 /* Lower level functions that don't use a PointerRNA. */ 1209 bool RNA_enum_value_from_id(const EnumPropertyItem *item, const char *identifier, int *r_value); 1210 bool RNA_enum_id_from_value(const EnumPropertyItem *item, int value, const char **r_identifier); 1211 bool RNA_enum_icon_from_value(const EnumPropertyItem *item, int value, int *r_icon); 1212 bool RNA_enum_name_from_value(const EnumPropertyItem *item, int value, const char **r_name); 1213 1214 void RNA_string_get(PointerRNA *ptr, const char *name, char *value); 1215 char *RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen); 1216 int RNA_string_length(PointerRNA *ptr, const char *name); 1217 void RNA_string_set(PointerRNA *ptr, const char *name, const char *value); 1218 1219 /** 1220 * Retrieve the named property from PointerRNA. 1221 */ 1222 PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name); 1223 /* Set the property name of PointerRNA ptr to ptr_value */ 1224 void RNA_pointer_set(PointerRNA *ptr, const char *name, PointerRNA ptr_value); 1225 void RNA_pointer_add(PointerRNA *ptr, const char *name); 1226 1227 void RNA_collection_begin(PointerRNA *ptr, const char *name, CollectionPropertyIterator *iter); 1228 int RNA_collection_length(PointerRNA *ptr, const char *name); 1229 void RNA_collection_add(PointerRNA *ptr, const char *name, PointerRNA *r_value); 1230 void RNA_collection_clear(PointerRNA *ptr, const char *name); 1231 1232 #define RNA_BEGIN(sptr, itemptr, propname) \ 1233 { \ 1234 CollectionPropertyIterator rna_macro_iter; \ 1235 for (RNA_collection_begin(sptr, propname, &rna_macro_iter); rna_macro_iter.valid; \ 1236 RNA_property_collection_next(&rna_macro_iter)) { \ 1237 PointerRNA itemptr = rna_macro_iter.ptr; 1238 1239 #define RNA_END \ 1240 } \ 1241 RNA_property_collection_end(&rna_macro_iter); \ 1242 } \ 1243 ((void)0) 1244 1245 #define RNA_PROP_BEGIN(sptr, itemptr, prop) \ 1246 { \ 1247 CollectionPropertyIterator rna_macro_iter; \ 1248 for (RNA_property_collection_begin(sptr, prop, &rna_macro_iter); rna_macro_iter.valid; \ 1249 RNA_property_collection_next(&rna_macro_iter)) { \ 1250 PointerRNA itemptr = rna_macro_iter.ptr; 1251 1252 #define RNA_PROP_END \ 1253 } \ 1254 RNA_property_collection_end(&rna_macro_iter); \ 1255 } \ 1256 ((void)0) 1257 1258 #define RNA_STRUCT_BEGIN(sptr, prop) \ 1259 { \ 1260 CollectionPropertyIterator rna_macro_iter; \ 1261 for (RNA_property_collection_begin( \ 1262 sptr, RNA_struct_iterator_property((sptr)->type), &rna_macro_iter); \ 1263 rna_macro_iter.valid; \ 1264 RNA_property_collection_next(&rna_macro_iter)) { \ 1265 PropertyRNA *prop = (PropertyRNA *)rna_macro_iter.ptr.data; 1266 1267 #define RNA_STRUCT_BEGIN_SKIP_RNA_TYPE(sptr, prop) \ 1268 { \ 1269 CollectionPropertyIterator rna_macro_iter; \ 1270 RNA_property_collection_begin( \ 1271 sptr, RNA_struct_iterator_property((sptr)->type), &rna_macro_iter); \ 1272 if (rna_macro_iter.valid) { \ 1273 RNA_property_collection_next(&rna_macro_iter); \ 1274 } \ 1275 for (; rna_macro_iter.valid; RNA_property_collection_next(&rna_macro_iter)) { \ 1276 PropertyRNA *prop = (PropertyRNA *)rna_macro_iter.ptr.data; 1277 1278 #define RNA_STRUCT_END \ 1279 } \ 1280 RNA_property_collection_end(&rna_macro_iter); \ 1281 } \ 1282 ((void)0) 1283 1284 /* check if the idproperty exists, for operators */ 1285 bool RNA_property_is_set_ex(PointerRNA *ptr, PropertyRNA *prop, bool use_ghost); 1286 bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop); 1287 void RNA_property_unset(PointerRNA *ptr, PropertyRNA *prop); 1288 bool RNA_struct_property_is_set_ex(PointerRNA *ptr, const char *identifier, bool use_ghost); 1289 bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier); 1290 bool RNA_property_is_idprop(const PropertyRNA *prop); 1291 bool RNA_property_is_unlink(PropertyRNA *prop); 1292 void RNA_struct_property_unset(PointerRNA *ptr, const char *identifier); 1293 1294 /* python compatible string representation of this property, (must be freed!) */ 1295 char *RNA_property_as_string( 1296 struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, int index, int max_prop_length); 1297 char *RNA_pointer_as_string_id(struct bContext *C, PointerRNA *ptr); 1298 char *RNA_pointer_as_string(struct bContext *C, 1299 PointerRNA *ptr, 1300 PropertyRNA *prop_ptr, 1301 PointerRNA *ptr_prop); 1302 char *RNA_pointer_as_string_keywords_ex(struct bContext *C, 1303 PointerRNA *ptr, 1304 const bool as_function, 1305 const bool all_args, 1306 const bool nested_args, 1307 const int max_prop_length, 1308 PropertyRNA *iterprop); 1309 char *RNA_pointer_as_string_keywords(struct bContext *C, 1310 PointerRNA *ptr, 1311 const bool as_function, 1312 const bool all_args, 1313 const bool nested_args, 1314 const int max_prop_length); 1315 char *RNA_function_as_string_keywords(struct bContext *C, 1316 FunctionRNA *func, 1317 const bool as_function, 1318 const bool all_args, 1319 const int max_prop_length); 1320 1321 /* Function */ 1322 1323 const char *RNA_function_identifier(FunctionRNA *func); 1324 const char *RNA_function_ui_description(FunctionRNA *func); 1325 const char *RNA_function_ui_description_raw(FunctionRNA *func); 1326 int RNA_function_flag(FunctionRNA *func); 1327 int RNA_function_defined(FunctionRNA *func); 1328 1329 PropertyRNA *RNA_function_get_parameter(PointerRNA *ptr, FunctionRNA *func, int index); 1330 PropertyRNA *RNA_function_find_parameter(PointerRNA *ptr, 1331 FunctionRNA *func, 1332 const char *identifier); 1333 const struct ListBase *RNA_function_defined_parameters(FunctionRNA *func); 1334 1335 /* Utility */ 1336 1337 int RNA_parameter_flag(PropertyRNA *prop); 1338 1339 ParameterList *RNA_parameter_list_create(ParameterList *parms, PointerRNA *ptr, FunctionRNA *func); 1340 void RNA_parameter_list_free(ParameterList *parms); 1341 int RNA_parameter_list_size(ParameterList *parms); 1342 int RNA_parameter_list_arg_count(ParameterList *parms); 1343 int RNA_parameter_list_ret_count(ParameterList *parms); 1344 1345 void RNA_parameter_list_begin(ParameterList *parms, ParameterIterator *iter); 1346 void RNA_parameter_list_next(ParameterIterator *iter); 1347 void RNA_parameter_list_end(ParameterIterator *iter); 1348 1349 void RNA_parameter_get(ParameterList *parms, PropertyRNA *parm, void **value); 1350 void RNA_parameter_get_lookup(ParameterList *parms, const char *identifier, void **value); 1351 void RNA_parameter_set(ParameterList *parms, PropertyRNA *parm, const void *value); 1352 void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, const void *value); 1353 /* Only for PROP_DYNAMIC properties! */ 1354 int RNA_parameter_dynamic_length_get(ParameterList *parms, PropertyRNA *parm); 1355 int RNA_parameter_dynamic_length_get_data(ParameterList *parms, PropertyRNA *parm, void *data); 1356 void RNA_parameter_dynamic_length_set(ParameterList *parms, PropertyRNA *parm, int length); 1357 void RNA_parameter_dynamic_length_set_data(ParameterList *parms, 1358 PropertyRNA *parm, 1359 void *data, 1360 int length); 1361 1362 int RNA_function_call(struct bContext *C, 1363 struct ReportList *reports, 1364 PointerRNA *ptr, 1365 FunctionRNA *func, 1366 ParameterList *parms); 1367 int RNA_function_call_lookup(struct bContext *C, 1368 struct ReportList *reports, 1369 PointerRNA *ptr, 1370 const char *identifier, 1371 ParameterList *parms); 1372 1373 int RNA_function_call_direct(struct bContext *C, 1374 struct ReportList *reports, 1375 PointerRNA *ptr, 1376 FunctionRNA *func, 1377 const char *format, 1378 ...) ATTR_PRINTF_FORMAT(5, 6); 1379 int RNA_function_call_direct_lookup(struct bContext *C, 1380 struct ReportList *reports, 1381 PointerRNA *ptr, 1382 const char *identifier, 1383 const char *format, 1384 ...) ATTR_PRINTF_FORMAT(5, 6); 1385 int RNA_function_call_direct_va(struct bContext *C, 1386 struct ReportList *reports, 1387 PointerRNA *ptr, 1388 FunctionRNA *func, 1389 const char *format, 1390 va_list args); 1391 int RNA_function_call_direct_va_lookup(struct bContext *C, 1392 struct ReportList *reports, 1393 PointerRNA *ptr, 1394 const char *identifier, 1395 const char *format, 1396 va_list args); 1397 1398 const char *RNA_translate_ui_text(const char *text, 1399 const char *text_ctxt, 1400 struct StructRNA *type, 1401 struct PropertyRNA *prop, 1402 int translate); 1403 1404 /* ID */ 1405 1406 short RNA_type_to_ID_code(const StructRNA *type); 1407 StructRNA *ID_code_to_RNA_type(short idcode); 1408 1409 #define RNA_POINTER_INVALIDATE(ptr) \ 1410 { \ 1411 /* this is checked for validity */ \ 1412 (ptr)->type = NULL; /* should not be needed but prevent bad pointer access, just in case */ \ 1413 (ptr)->owner_id = NULL; \ 1414 } \ 1415 (void)0 1416 1417 /* macro which inserts the function name */ 1418 #if defined __GNUC__ 1419 # define RNA_warning(format, args...) _RNA_warning("%s: " format "\n", __func__, ##args) 1420 #else 1421 # define RNA_warning(format, ...) _RNA_warning("%s: " format "\n", __FUNCTION__, __VA_ARGS__) 1422 #endif 1423 1424 void _RNA_warning(const char *format, ...) ATTR_PRINTF_FORMAT(1, 2); 1425 1426 /* Equals test. */ 1427 1428 /** 1429 * \note In practice, #EQ_STRICT and #EQ_COMPARE have same behavior currently, 1430 * and will yield same result. 1431 */ 1432 typedef enum eRNACompareMode { 1433 /* Only care about equality, not full comparison. */ 1434 /** Set/unset ignored. */ 1435 RNA_EQ_STRICT, 1436 /** Unset property matches anything. */ 1437 RNA_EQ_UNSET_MATCH_ANY, 1438 /** Unset property never matches set property. */ 1439 RNA_EQ_UNSET_MATCH_NONE, 1440 /** Full comparison. */ 1441 RNA_EQ_COMPARE, 1442 } eRNACompareMode; 1443 1444 bool RNA_property_equals(struct Main *bmain, 1445 struct PointerRNA *ptr_a, 1446 struct PointerRNA *ptr_b, 1447 struct PropertyRNA *prop, 1448 eRNACompareMode mode); 1449 bool RNA_struct_equals(struct Main *bmain, 1450 struct PointerRNA *ptr_a, 1451 struct PointerRNA *ptr_b, 1452 eRNACompareMode mode); 1453 1454 /* Override. */ 1455 1456 /** Flags for #RNA_struct_override_matches. */ 1457 typedef enum eRNAOverrideMatch { 1458 /** Do not compare properties that are not overridable. */ 1459 RNA_OVERRIDE_COMPARE_IGNORE_NON_OVERRIDABLE = 1 << 0, 1460 /** Do not compare properties that are already overridden. */ 1461 RNA_OVERRIDE_COMPARE_IGNORE_OVERRIDDEN = 1 << 1, 1462 1463 /** Create new property override if needed and possible. */ 1464 RNA_OVERRIDE_COMPARE_CREATE = 1 << 16, 1465 /** Restore property's value(s) to reference ones if needed and possible. */ 1466 RNA_OVERRIDE_COMPARE_RESTORE = 1 << 17, 1467 } eRNAOverrideMatch; 1468 1469 typedef enum eRNAOverrideMatchResult { 1470 /** 1471 * Some new property overrides were created to take into account 1472 * differences between local and reference. 1473 */ 1474 RNA_OVERRIDE_MATCH_RESULT_CREATED = 1 << 0, 1475 /** Some properties were reset to reference values. */ 1476 RNA_OVERRIDE_MATCH_RESULT_RESTORED = 1 << 1, 1477 } eRNAOverrideMatchResult; 1478 1479 typedef enum eRNAOverrideStatus { 1480 /** The property is overridable. */ 1481 RNA_OVERRIDE_STATUS_OVERRIDABLE = 1 << 0, 1482 /** The property is overridden. */ 1483 RNA_OVERRIDE_STATUS_OVERRIDDEN = 1 << 1, 1484 /** Overriding this property is mandatory when creating an override. */ 1485 RNA_OVERRIDE_STATUS_MANDATORY = 1 << 2, 1486 /** The override status of this property is locked. */ 1487 RNA_OVERRIDE_STATUS_LOCKED = 1 << 3, 1488 } eRNAOverrideStatus; 1489 1490 bool RNA_struct_override_matches(struct Main *bmain, 1491 struct PointerRNA *ptr_local, 1492 struct PointerRNA *ptr_reference, 1493 const char *root_path, 1494 const size_t root_path_len, 1495 struct IDOverrideLibrary *override, 1496 const eRNAOverrideMatch flags, 1497 eRNAOverrideMatchResult *r_report_flags); 1498 1499 bool RNA_struct_override_store(struct Main *bmain, 1500 struct PointerRNA *ptr_local, 1501 struct PointerRNA *ptr_reference, 1502 PointerRNA *ptr_storage, 1503 struct IDOverrideLibrary *override); 1504 1505 void RNA_struct_override_apply(struct Main *bmain, 1506 struct PointerRNA *ptr_dst, 1507 struct PointerRNA *ptr_src, 1508 struct PointerRNA *ptr_storage, 1509 struct IDOverrideLibrary *override); 1510 1511 struct IDOverrideLibraryProperty *RNA_property_override_property_find(struct Main *bmain, 1512 PointerRNA *ptr, 1513 PropertyRNA *prop, 1514 struct ID **r_owner_id); 1515 struct IDOverrideLibraryProperty *RNA_property_override_property_get(struct Main *bmain, 1516 PointerRNA *ptr, 1517 PropertyRNA *prop, 1518 bool *r_created); 1519 1520 struct IDOverrideLibraryPropertyOperation *RNA_property_override_property_operation_find( 1521 struct Main *bmain, 1522 PointerRNA *ptr, 1523 PropertyRNA *prop, 1524 const int index, 1525 const bool strict, 1526 bool *r_strict); 1527 struct IDOverrideLibraryPropertyOperation *RNA_property_override_property_operation_get( 1528 struct Main *bmain, 1529 PointerRNA *ptr, 1530 PropertyRNA *prop, 1531 const short operation, 1532 const int index, 1533 const bool strict, 1534 bool *r_strict, 1535 bool *r_created); 1536 1537 eRNAOverrideStatus RNA_property_override_library_status(struct Main *bmainm, 1538 PointerRNA *ptr, 1539 PropertyRNA *prop, 1540 const int index); 1541 1542 void RNA_struct_state_owner_set(const char *name); 1543 const char *RNA_struct_state_owner_get(void); 1544 1545 #ifdef __cplusplus 1546 } 1547 #endif 1548 1549 #endif /* __RNA_ACCESS_H__ */ 1550