enum memory_table_list { P_AVInfo, P_UndoBuffer, P_MiscCache, F_File, F_Precomps, F_Layers, F_Sources, F_Properties, F_Bezier, F_Effects, F_Strings, F_PrincipalBitmaps, B_Thumbnails, B_ScratchSpace, B_CachedBitmaps, }; struct memory_table { char *Name; void *Address; uint64 Size; uint32 Block_ElementSize; }; struct global_memory { void *Address; uint64 CurrentPosition; uint64 Size; }; enum history_action_type { action_type_swap, action_type_shift }; struct history_action { memory_table_list TableName; history_action_type Type; uint64 Size; uint64 ByteOffset; uint64 ShiftAmount; // Only for type_shift int16 Direction; // Only for type_shift }; struct history_entry { char *Name; uint16 NumberOfActions; }; struct history_entry_list { history_entry Entry[256]; history_action Action[1024]; uint16 NumberOfEntries; uint16 EntryPlayhead; }; struct memory { memory_table Slot[16]; history_entry_list History; uint64 ScratchPos; uint32 EntryCount; bool32 IsFileSaved; };