UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AutoRTFM.h File Reference
#include "AutoRTFMConstants.h"
#include "AutoRTFMDefines.h"
#include <memory.h>
#include <stdlib.h>

Go to the source code of this file.

Classes

struct  autortfm_extern_api
 
struct  autortfm_open_to_closed_mapping
 
struct  autortfm_open_to_closed_table
 

Typedefs

typedef uint64_t autortfm_transaction_id
 

Enumerations

enum  autortfm_result {
  autortfm_aborted_by_request = 0 , autortfm_aborted_by_language , autortfm_committed , autortfm_aborted_by_transact_during_commit ,
  autortfm_aborted_by_transact_during_abort , autortfm_aborted_by_cascade
}
 
enum  autortfm_status {
  autortfm_status_idle = 0 , autortfm_status_ontrack , autortfm_status_aborted_by_failed_lock_aquisition , autortfm_status_aborted_by_language ,
  autortfm_status_aborted_by_request , autortfm_status_committing , autortfm_status_aborted_by_cascading_abort , autortfm_status_aborted_by_cascading_retry ,
  autortfm_status_in_static_local_initializer , autortfm_status_in_post_abort
}
 
enum  autortfm_log_severity {
  autortfm_log_verbose = 0 , autortfm_log_info , autortfm_log_warn , autortfm_log_error ,
  autortfm_log_fatal
}
 

Functions

UE_AUTORTFM_CRITICAL_INLINE void autortfm_initialize (const autortfm_extern_api *ExternAPI) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE bool autortfm_is_closed (void) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE bool autortfm_is_transactional (void) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE bool autortfm_is_committing (void) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE bool autortfm_is_committing_or_aborting (void) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE bool autortfm_is_retrying (void) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE autortfm_result autortfm_transact (void(*UninstrumentedWork)(void *), void(*InstrumentedWork)(void *), void *Arg) AUTORTFM_EXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE autortfm_result autortfm_transact_then_open (void(*UninstrumentedWork)(void *), void(*InstrumentedWork)(void *), void *Arg)
 
UE_AUTORTFM_CRITICAL_INLINE void autortfm_commit (void(*UninstrumentedWork)(void *), void(*InstrumentedWork)(void *), void *Arg)
 
UE_AUTORTFM_CRITICAL_INLINE void autortfm_abort_transaction () AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE autortfm_transaction_id autortfm_current_transaction_id () AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE autortfm_result autortfm_commit_transaction () AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE void autortfm_open (void(*work)(void *arg), void *arg, const void *)
 
UE_AUTORTFM_CRITICAL_INLINE void autortfm_open_explicit_validation (autortfm_memory_validation_level, void(*work)(void *arg), void *arg, const void *)
 
AUTORTFM_DISABLE_UNREACHABLE_CODE_WARNINGS UE_AUTORTFM_CRITICAL_INLINE autortfm_status autortfm_close (void(*UninstrumentedWork)(void *), void(*InstrumentedWork)(void *), void *Arg)
 
AUTORTFM_RESTORE_UNREACHABLE_CODE_WARNINGS UE_AUTORTFM_CRITICAL_INLINE void autortfm_record_open_write (void *Ptr, size_t Size) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE void autortfm_record_open_write_no_memory_validation (void *Ptr, size_t Size) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE void autortfm_register_open_to_closed_functions (autortfm_open_to_closed_table *Table) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE void autortfm_unregister_open_to_closed_functions (autortfm_open_to_closed_table *Table) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE bool autortfm_is_on_current_transaction_stack (void *Ptr) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE void autortfm_on_commit (void(*work)(void *arg), void *arg)
 
UE_AUTORTFM_CRITICAL_INLINE void autortfm_on_pre_abort (void(*work)(void *arg), void *arg) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE void autortfm_on_abort (void(*work)(void *arg), void *arg) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE void autortfm_push_on_abort_handler (const void *key, void(*work)(void *arg), void *arg) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE void autortfm_pop_on_abort_handler (const void *key) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE voidautortfm_did_allocate (void *ptr, size_t size) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE void autortfm_did_free (void *ptr) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE void autortfm_check_abi (void *ptr, size_t size) AUTORTFM_NOEXCEPT
 
UE_AUTORTFM_CRITICAL_INLINE void autortfm_unreachable (const char *Message) AUTORTFM_NOEXCEPT
 

Typedef Documentation

◆ autortfm_transaction_id

Enumeration Type Documentation

◆ autortfm_log_severity

Enumerator
autortfm_log_verbose 
autortfm_log_info 
autortfm_log_warn 
autortfm_log_error 
autortfm_log_fatal 

◆ autortfm_result

AutoRTFM is designed to make it easy to take existing C++ code–even if it was never designed to have any transactional semantics–and make it transactional just by using an alternate compiler. For details, see Engine/Source/Runtime/AutoRTFM/Documentation/README.md.

Enumerator
autortfm_aborted_by_request 
autortfm_aborted_by_language 
autortfm_committed 
autortfm_aborted_by_transact_during_commit 
autortfm_aborted_by_transact_during_abort 
autortfm_aborted_by_cascade 

◆ autortfm_status

Enumerator
autortfm_status_idle 
autortfm_status_ontrack 
autortfm_status_aborted_by_failed_lock_aquisition 
autortfm_status_aborted_by_language 
autortfm_status_aborted_by_request 
autortfm_status_committing 
autortfm_status_aborted_by_cascading_abort 
autortfm_status_aborted_by_cascading_retry 
autortfm_status_in_static_local_initializer 
autortfm_status_in_post_abort 

Function Documentation

◆ autortfm_abort_transaction()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_abort_transaction ( )

◆ autortfm_check_abi()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_check_abi ( void ptr,
size_t  size 
)

◆ autortfm_close()

AUTORTFM_DISABLE_UNREACHABLE_CODE_WARNINGS UE_AUTORTFM_CRITICAL_INLINE autortfm_status autortfm_close ( void(*)(void *)  UninstrumentedWork,
void(*)(void *)  InstrumentedWork,
void Arg 
)

◆ autortfm_commit()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_commit ( void(*)(void *)  UninstrumentedWork,
void(*)(void *)  InstrumentedWork,
void Arg 
)

◆ autortfm_commit_transaction()

UE_AUTORTFM_CRITICAL_INLINE autortfm_result autortfm_commit_transaction ( )

◆ autortfm_current_transaction_id()

UE_AUTORTFM_CRITICAL_INLINE autortfm_transaction_id autortfm_current_transaction_id ( )

◆ autortfm_did_allocate()

UE_AUTORTFM_CRITICAL_INLINE void * autortfm_did_allocate ( void ptr,
size_t  size 
)

◆ autortfm_did_free()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_did_free ( void ptr)

◆ autortfm_initialize()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_initialize ( const autortfm_extern_api ExternAPI)

◆ autortfm_is_closed()

UE_AUTORTFM_CRITICAL_INLINE bool autortfm_is_closed ( void  )

◆ autortfm_is_committing()

UE_AUTORTFM_CRITICAL_INLINE bool autortfm_is_committing ( void  )

◆ autortfm_is_committing_or_aborting()

UE_AUTORTFM_CRITICAL_INLINE bool autortfm_is_committing_or_aborting ( void  )

◆ autortfm_is_on_current_transaction_stack()

UE_AUTORTFM_CRITICAL_INLINE bool autortfm_is_on_current_transaction_stack ( void Ptr)

◆ autortfm_is_retrying()

UE_AUTORTFM_CRITICAL_INLINE bool autortfm_is_retrying ( void  )

◆ autortfm_is_transactional()

UE_AUTORTFM_CRITICAL_INLINE bool autortfm_is_transactional ( void  )

◆ autortfm_on_abort()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_on_abort ( void(*)(void *arg work,
void arg 
)

◆ autortfm_on_commit()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_on_commit ( void(*)(void *arg work,
void arg 
)

◆ autortfm_on_pre_abort()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_on_pre_abort ( void(*)(void *arg work,
void arg 
)

◆ autortfm_open()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_open ( void(*)(void *arg work,
void arg,
const void  
)

◆ autortfm_open_explicit_validation()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_open_explicit_validation ( autortfm_memory_validation_level  ,
void(*)(void *arg work,
void arg,
const void  
)

◆ autortfm_pop_on_abort_handler()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_pop_on_abort_handler ( const void key)

◆ autortfm_push_on_abort_handler()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_push_on_abort_handler ( const void key,
void(*)(void *arg work,
void arg 
)

◆ autortfm_record_open_write()

◆ autortfm_record_open_write_no_memory_validation()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_record_open_write_no_memory_validation ( void Ptr,
size_t  Size 
)

◆ autortfm_register_open_to_closed_functions()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_register_open_to_closed_functions ( autortfm_open_to_closed_table Table)

◆ autortfm_transact()

UE_AUTORTFM_CRITICAL_INLINE autortfm_result autortfm_transact ( void(*)(void *)  UninstrumentedWork,
void(*)(void *)  InstrumentedWork,
void Arg 
)

◆ autortfm_transact_then_open()

UE_AUTORTFM_CRITICAL_INLINE autortfm_result autortfm_transact_then_open ( void(*)(void *)  UninstrumentedWork,
void(*)(void *)  InstrumentedWork,
void Arg 
)

◆ autortfm_unreachable()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_unreachable ( const char Message)

◆ autortfm_unregister_open_to_closed_functions()

UE_AUTORTFM_CRITICAL_INLINE void autortfm_unregister_open_to_closed_functions ( autortfm_open_to_closed_table Table)