18struct PreviewImageRuntime;
185#define MAX_IDPROP_NAME 64
186#define DEFAULT_ALLOC_FOR_NULL_STRINGS 64
377#define MAX_ID_NAME 66
616#define ID_FAKE_USERS(id) ((((const ID *)id)->flag & ID_FLAG_FAKEUSER) ? 1 : 0)
623#define ID_EXTRA_USERS(id) (((const ID *)id)->tag & ID_TAG_EXTRAUSER ? 1 : 0)
632#define ID_EXTRA_REAL_USERS(id) (((const ID *)id)->tag & ID_TAG_EXTRAUSER_SET ? 1 : 0)
637#define ID_REAL_USERS(id) (((const ID *)id)->us - ID_FAKE_USERS(id))
642#define ID_REFCOUNTING_USERS(id) (ID_REAL_USERS(id) - ID_EXTRA_REAL_USERS(id))
644#define ID_CHECK_UNDO(id) \
645 ((GS((id)->name) != ID_SCR) && (GS((id)->name) != ID_WM) && (GS((id)->name) != ID_WS))
647#define ID_BLEND_PATH(_bmain, _id) \
648 ((_id)->lib ? (_id)->lib->runtime.filepath_abs : BKE_main_blendfile_path((_bmain)))
649#define ID_BLEND_PATH_FROM_GLOBAL(_id) \
650 ((_id)->lib ? (_id)->lib->runtime.filepath_abs : BKE_main_blendfile_path_from_global())
652#define ID_MISSING(_id) ((((const ID *)(_id))->tag & ID_TAG_MISSING) != 0)
654#define ID_IS_LINKED(_id) (((const ID *)(_id))->lib != NULL)
656#define ID_TYPE_SUPPORTS_ASSET_EDITABLE(id_type) ELEM(id_type, ID_BR, ID_TE, ID_NT, ID_IM, ID_PC)
658#define ID_IS_EDITABLE(_id) \
659 ((((const ID *)(_id))->lib == NULL) || \
660 ((((const ID *)(_id))->lib->runtime.tag & LIBRARY_ASSET_EDITABLE) && \
661 ID_TYPE_SUPPORTS_ASSET_EDITABLE(GS((((const ID *)(_id))->name)))))
665#define ID_IS_OVERRIDABLE_LIBRARY_HIERARCHY(_id) \
666 (ID_IS_LINKED(_id) && !ID_MISSING(_id) && \
667 (BKE_idtype_get_info_from_id((const ID *)(_id))->flags & IDTYPE_FLAGS_NO_LIBLINKING) == 0 && \
668 !ELEM(GS(((ID *)(_id))->name), ID_SCE))
669#define ID_IS_OVERRIDABLE_LIBRARY(_id) \
670 (ID_IS_OVERRIDABLE_LIBRARY_HIERARCHY((_id)) && (((const ID *)(_id))->tag & ID_TAG_EXTERN) != 0)
676#define ID_IS_OVERRIDE_LIBRARY_REAL(_id) \
677 (((const ID *)(_id))->override_library != NULL && \
678 ((const ID *)(_id))->override_library->reference != NULL)
680#define ID_IS_OVERRIDE_LIBRARY_VIRTUAL(_id) \
681 ((((const ID *)(_id))->flag & ID_FLAG_EMBEDDED_DATA_LIB_OVERRIDE) != 0)
683#define ID_IS_OVERRIDE_LIBRARY(_id) \
684 (ID_IS_OVERRIDE_LIBRARY_REAL(_id) || ID_IS_OVERRIDE_LIBRARY_VIRTUAL(_id))
686#define ID_IS_OVERRIDE_LIBRARY_HIERARCHY_ROOT(_id) \
687 (!ID_IS_OVERRIDE_LIBRARY_REAL(_id) || \
688 ((ID *)(_id))->override_library->hierarchy_root == ((ID *)(_id)))
690#define ID_IS_ASSET(_id) (((const ID *)(_id))->asset_data != NULL)
693#define ID_TYPE_USE_COPY_ON_EVAL(_id_type) \
694 (!ELEM(_id_type, ID_LI, ID_IP, ID_SCR, ID_VF, ID_BR, ID_WM, ID_PAL, ID_PC, ID_WS, ID_IM))
698#define ID_TYPE_SUPPORTS_PARAMS_WITHOUT_COW(id_type) ELEM(id_type, ID_ME)
700#define ID_TYPE_IS_DEPRECATED(id_type) ELEM(id_type, ID_IP)
705#define GS(a) (CHECK_TYPE_ANY(a, char *, const char *), (ID_Type)(*((const short *)(a))))
707#define ID_NEW_SET(_id, _idn) \
708 (((ID *)(_id))->newid = (ID *)(_idn), \
709 ((ID *)(_id))->newid->tag |= ID_TAG_NEW, \
710 (void *)((ID *)(_id))->newid)
711#define ID_NEW_REMAP(a) \
712 if ((a) && (a)->id.newid) { \
713 *(void **)&(a) = (a)->id.newid; \
1013#define ID_TAG_KEEP_ON_UNDO (ID_TAG_EXTRAUSER | ID_TAG_MISSING | ID_TAG_RUNTIME)
1164#define FILTER_ID_AC (1ULL << 0)
1165#define FILTER_ID_AR (1ULL << 1)
1166#define FILTER_ID_BR (1ULL << 2)
1167#define FILTER_ID_CA (1ULL << 3)
1168#define FILTER_ID_CU_LEGACY (1ULL << 4)
1169#define FILTER_ID_GD_LEGACY (1ULL << 5)
1170#define FILTER_ID_GR (1ULL << 6)
1171#define FILTER_ID_IM (1ULL << 7)
1172#define FILTER_ID_LA (1ULL << 8)
1173#define FILTER_ID_LS (1ULL << 9)
1174#define FILTER_ID_LT (1ULL << 10)
1175#define FILTER_ID_MA (1ULL << 11)
1176#define FILTER_ID_MB (1ULL << 12)
1177#define FILTER_ID_MC (1ULL << 13)
1178#define FILTER_ID_ME (1ULL << 14)
1179#define FILTER_ID_MSK (1ULL << 15)
1180#define FILTER_ID_NT (1ULL << 16)
1181#define FILTER_ID_OB (1ULL << 17)
1182#define FILTER_ID_PAL (1ULL << 18)
1183#define FILTER_ID_PC (1ULL << 19)
1184#define FILTER_ID_SCE (1ULL << 20)
1185#define FILTER_ID_SPK (1ULL << 21)
1186#define FILTER_ID_SO (1ULL << 22)
1187#define FILTER_ID_TE (1ULL << 23)
1188#define FILTER_ID_TXT (1ULL << 24)
1189#define FILTER_ID_VF (1ULL << 25)
1190#define FILTER_ID_WO (1ULL << 26)
1191#define FILTER_ID_PA (1ULL << 27)
1192#define FILTER_ID_CF (1ULL << 28)
1193#define FILTER_ID_WS (1ULL << 29)
1194#define FILTER_ID_LP (1ULL << 31)
1195#define FILTER_ID_CV (1ULL << 32)
1196#define FILTER_ID_PT (1ULL << 33)
1197#define FILTER_ID_VO (1ULL << 34)
1198#define FILTER_ID_SIM (1ULL << 35)
1199#define FILTER_ID_KE (1ULL << 36)
1200#define FILTER_ID_SCR (1ULL << 37)
1201#define FILTER_ID_WM (1ULL << 38)
1202#define FILTER_ID_LI (1ULL << 39)
1203#define FILTER_ID_GP (1ULL << 40)
1204#define FILTER_ID_IP (1ULL << 41)
1206#define FILTER_ID_ALL \
1207 (FILTER_ID_AC | FILTER_ID_AR | FILTER_ID_BR | FILTER_ID_CA | FILTER_ID_CU_LEGACY | \
1208 FILTER_ID_GD_LEGACY | FILTER_ID_GR | FILTER_ID_IM | FILTER_ID_LA | FILTER_ID_LS | \
1209 FILTER_ID_LT | FILTER_ID_MA | FILTER_ID_MB | FILTER_ID_MC | FILTER_ID_ME | FILTER_ID_MSK | \
1210 FILTER_ID_NT | FILTER_ID_OB | FILTER_ID_PA | FILTER_ID_PAL | FILTER_ID_PC | FILTER_ID_SCE | \
1211 FILTER_ID_SPK | FILTER_ID_SO | FILTER_ID_TE | FILTER_ID_TXT | FILTER_ID_VF | FILTER_ID_WO | \
1212 FILTER_ID_CF | FILTER_ID_WS | FILTER_ID_LP | FILTER_ID_CV | FILTER_ID_PT | FILTER_ID_VO | \
1213 FILTER_ID_SIM | FILTER_ID_KE | FILTER_ID_SCR | FILTER_ID_WM | FILTER_ID_LI | FILTER_ID_GP | \
1328#define INDEX_ID_MAX (INDEX_ID_NULL + 1)
struct IDOverrideLibraryProperty IDOverrideLibraryProperty
struct IDOverrideLibraryPropertyOperation IDOverrideLibraryPropertyOperation
@ PRV_TAG_DEFFERED_DELETE
@ PRV_TAG_DEFFERED_RENDERING
struct IDPropertyUIData IDPropertyUIData
struct Library_Runtime Library_Runtime
struct IDPropertyUIDataBool IDPropertyUIDataBool
@ ID_RECALC_AUDIO_LISTENER
@ ID_RECALC_GEOMETRY_ALL_MODES
@ ID_RECALC_SEQUENCER_STRIPS
@ ID_RECALC_ANIMATION_NO_FLUSH
struct IDPropertyUIDataID IDPropertyUIDataID
struct IDOverrideLibrary IDOverrideLibrary
@ LIBOVERRIDE_PROP_TAG_NEEDS_RETORE
@ LIBOVERRIDE_PROP_OP_TAG_UNUSED
struct LibraryWeakReference LibraryWeakReference
struct IDPropertyUIDataEnumItem IDPropertyUIDataEnumItem
struct DrawDataList DrawDataList
@ LIBOVERRIDE_TAG_NEEDS_RESTORE
@ LIBOVERRIDE_TAG_RESYNC_ISOLATED_FROM_ROOT
@ LIBOVERRIDE_TAG_NEEDS_RELOAD
@ LIBOVERRIDE_TAG_NEED_RESYNC_ORIGINAL
@ LIBOVERRIDE_OP_FLAG_MANDATORY
@ LIBOVERRIDE_OP_FLAG_LOCKED
@ LIBOVERRIDE_OP_FLAG_IDPOINTER_ITEM_USE_ID
@ LIBOVERRIDE_OP_FLAG_IDPOINTER_MATCH_REFERENCE
struct ID_Runtime ID_Runtime
@ ID_REMAP_IS_LINKED_DIRECT
@ ID_REMAP_IS_USER_ONE_SKIPPED
void(* DrawDataFreeCb)(struct DrawData *engine_data)
struct IDPropertyUIDataFloat IDPropertyUIDataFloat
@ ID_FLAG_INDIRECT_WEAK_LINK
@ ID_FLAG_EMBEDDED_DATA_LIB_OVERRIDE
@ ID_FLAG_LIB_OVERRIDE_RESYNC_LEFTOVER
struct IDOverrideLibraryRuntime IDOverrideLibraryRuntime
@ LIBOVERRIDE_OP_SUBTRACT
@ LIBOVERRIDE_OP_MULTIPLY
@ LIBOVERRIDE_OP_INSERT_BEFORE
@ LIBOVERRIDE_OP_INSERT_AFTER
@ ID_TAG_UNDO_OLD_ID_REUSED_UNCHANGED
@ ID_TAG_UNDO_OLD_ID_REUSED_NOUNDO
@ ID_TAG_NO_USER_REFCOUNT
@ ID_TAG_LIBOVERRIDE_AUTOREFRESH
@ ID_TAG_UNDO_OLD_ID_REREAD_IN_PLACE
@ ID_TAG_COPIED_ON_EVAL_FINAL_RESULT
@ ID_TAG_LIBOVERRIDE_NEED_RESYNC
@ ID_TAG_LIBOVERRIDE_REFOK
@ ID_TAG_ID_LINK_PLACEHOLDER
@ LIBOVERRIDE_FLAG_NO_HIERARCHY
@ LIBOVERRIDE_FLAG_SYSTEM_DEFINED
void(* DrawDataInitCb)(struct DrawData *engine_data)
struct IDPropertyData IDPropertyData
struct IDProperty IDProperty
struct PreviewImageRuntimeHandle PreviewImageRuntimeHandle
@ LIBRARY_IS_ASSET_EDIT_FILE
@ LIBRARY_ASSET_FILE_WRITABLE
@ LIBRARY_TAG_RESYNC_REQUIRED
struct IDPropertyUIDataString IDPropertyUIDataString
struct IDPropertyUIDataInt IDPropertyUIDataInt
struct ID_Runtime_Remap ID_Runtime_Remap
Enumerations for DNA_ID.h.
#define DNA_DEFINE_CXX_METHODS(class_name)
These structs are the foundation for all linked lists in the library system.
struct DrawEngineType * engine_type
struct IDOverrideLibraryPropertyOperation * next
struct IDOverrideLibraryPropertyOperation * prev
int subitem_reference_index
char * subitem_local_name
struct ID * subitem_reference_id
struct ID * subitem_local_id
char * subitem_reference_name
struct IDOverrideLibraryProperty * prev
unsigned int rna_prop_type
struct IDOverrideLibraryProperty * next
struct GHash * rna_path_to_override_properties
struct ID * hierarchy_root
IDOverrideLibraryRuntime * runtime
IDPropertyUIDataEnumItem * enum_items
IDPropertyUIData * ui_data
struct Depsgraph * depsgraph
unsigned int recalc_after_undo_push
struct AssetMetaData * asset_data
IDOverrideLibrary * override_library
unsigned int recalc_up_to_undo_push
struct LibraryWeakReference * library_weak_reference
struct ID_Runtime runtime
char library_filepath[1024]
struct UniqueName_Map * name_map
struct FileData * filedata
struct PackedFile * packedfile
struct Library_Runtime runtime
PreviewImageRuntimeHandle * runtime
short changed_timestamp[2]