1717{ **
1818 * Try to lock a spin lock by setting it to a non-zero value.
1919 *}
20+ { $ifdef SDL_RUNTIME_LOADING}
21+ Type
22+ TSDL_AtomicTryLock_func = function (lock: PSDL_SpinLock): TSDL_bool; cdecl;
23+ Var
24+ SDL_AtomicTryLock : TSDL_AtomicTryLock_func = Nil ;
25+ { $else}
2026function SDL_AtomicTryLock (lock: PSDL_SpinLock): TSDL_bool; cdecl;
2127 external SDL_LibName { $IFDEF DELPHI} { $IFDEF MACOS} name ' _SDL_AtomicTryLock' { $ENDIF} { $ENDIF} ;
28+ { $endif}
2229
2330{ **
2431 * Lock a spin lock by setting it to a non-zero value.
2532 *}
33+ { $ifdef SDL_RUNTIME_LOADING}
34+ Type
35+ TSDL_AtomicLock_func = function (lock: PSDL_SpinLock): TSDL_bool; cdecl;
36+ Var
37+ SDL_AtomicLock : TSDL_AtomicLock_func = Nil ;
38+ { $else}
2639function SDL_AtomicLock (lock: PSDL_SpinLock): TSDL_bool; cdecl;
2740 external SDL_LibName { $IFDEF DELPHI} { $IFDEF MACOS} name ' _SDL_AtomicLock' { $ENDIF} { $ENDIF} ;
41+ { $endif}
2842
2943{ **
3044 * Unlock a spin lock by setting it to 0.
3145 *
3246 * Always returns immediately.
3347 *}
48+ { $ifdef SDL_RUNTIME_LOADING}
49+ Type
50+ TSDL_AtomicUnlock_proc = procedure (lock: PSDL_SpinLock); cdecl;
51+ Var
52+ SDL_AtomicUnlock : TSDL_AtomicUnlock_proc = Nil ;
53+ { $else}
3454procedure SDL_AtomicUnlock (lock: PSDL_SpinLock); cdecl;
3555 external SDL_LibName { $IFDEF DELPHI} { $IFDEF MACOS} name ' _SDL_AtomicUnlock' { $ENDIF} { $ENDIF} ;
56+ { $endif}
3657
3758{ **
3859 * The compiler barrier prevents the compiler from reordering
5475{ **
5576 * Set an atomic variable to a new value if it is currently an old value.
5677 *}
57- function SDL_AtomicCAS (atomic: PSDL_Atomic; oldValue, newValue: cint): TSDL_bool; cdecl;
78+ { $ifdef SDL_RUNTIME_LOADING}
79+ Type
80+ TSDL_AtomicCAS_func = function (atomic: PSDL_Atomic; oldValue, newValue: cint): TSDL_bool; cdecl;
81+ Var
82+ SDL_AtomicCAS : TSDL_AtomicCAS_func = Nil ;
83+ { $else}
84+ function SDL_AtomicCAS (atomic: PSDL_Atomic; oldValue, newValue: cint): TSDL_bool; cdecl;
5885 external SDL_LibName { $IFDEF DELPHI} { $IFDEF MACOS} name ' _SDL_AtomicCAS' { $ENDIF} { $ENDIF} ;
86+ { $endif}
5987
6088{ **
6189 * Set an atomic variable to a new value and return the old one.
6290 *
6391 * This function also acts as a full memory barrier.
6492 *}
65- function SDL_AtomicSet (atomic: PSDL_Atomic; value : cint): cint; cdecl;
93+ { $ifdef SDL_RUNTIME_LOADING}
94+ Type
95+ TSDL_AtomicSet_func = function (atomic: PSDL_Atomic; value : cint): cint; cdecl;
96+ Var
97+ SDL_AtomicSet : TSDL_AtomicSet_func = Nil ;
98+ { $else}
99+ function SDL_AtomicSet (atomic: PSDL_Atomic; value : cint): cint; cdecl;
66100 external SDL_LibName { $IFDEF DELPHI} { $IFDEF MACOS} name ' _SDL_AtomicSet' { $ENDIF} { $ENDIF} ;
101+ { $endif}
67102
68103{ **
69104 * Get the value of an atomic variable.
70105 *}
71- function SDL_AtomicGet (atomic: PSDL_Atomic): cint; cdecl;
106+ { $ifdef SDL_RUNTIME_LOADING}
107+ Type
108+ TSDL_AtomicGet_func = function (atomic: PSDL_Atomic): cint; cdecl;
109+ Var
110+ SDL_AtomicGet : TSDL_AtomicGet_func = Nil ;
111+ { $else}
112+ function SDL_AtomicGet (atomic: PSDL_Atomic): cint; cdecl;
72113 external SDL_LibName { $IFDEF DELPHI} { $IFDEF MACOS} name ' _SDL_AtomicGet' { $ENDIF} { $ENDIF} ;
114+ { $endif}
73115
74116{ **
75117 * Add to an atomic variable, and return the old value.
76118 *
77119 * This function also acts as a full memory barrier.
78120 *}
79- function SDL_AtomicAdd (atomic: PSDL_Atomic; value : cint): cint; cdecl;
121+ { $ifdef SDL_RUNTIME_LOADING}
122+ Type
123+ TSDL_AtomicAdd_func = function (atomic: PSDL_Atomic; value : cint): cint; cdecl;
124+ Var
125+ SDL_AtomicAdd : TSDL_AtomicAdd_func = Nil ;
126+ { $else}
127+ function SDL_AtomicAdd (atomic: PSDL_Atomic; value : cint): cint; cdecl;
80128 external SDL_LibName { $IFDEF DELPHI} { $IFDEF MACOS} name ' _SDL_AtomicAdd' { $ENDIF} { $ENDIF} ;
129+ { $endif}
81130
82131{ **
83132 * Increment an atomic variable used as a reference count.
@@ -92,18 +141,39 @@ function SDL_AtomicDecRef(atomic: PSDL_Atomic): Boolean;
92141{ **
93142 * Set a pointer to a new value if it is currently an old value.
94143 *}
144+ { $ifdef SDL_RUNTIME_LOADING}
145+ Type
146+ TSDL_AtomicCASPtr_func = function (ptr: PPointer; oldValue, newValue: Pointer): TSDL_bool; cdecl;
147+ Var
148+ SDL_AtomicCASPtr : TSDL_AtomicCASPtr_func = Nil ;
149+ { $else}
95150function SDL_AtomicCASPtr (ptr: PPointer; oldValue, newValue: Pointer): TSDL_bool; cdecl;
96151 external SDL_LibName { $IFDEF DELPHI} { $IFDEF MACOS} name ' _SDL_AtomicCASPtr' { $ENDIF} { $ENDIF} ;
152+ { $endif}
97153
98154{ **
99155 * Set a pointer to a new value atomically, and return the old value.
100156 *}
157+ { $ifdef SDL_RUNTIME_LOADING}
158+ Type
159+ TSDL_AtomicSetPtr_func = function (ptr: PPointer; value : Pointer): Pointer; cdecl;
160+ Var
161+ SDL_AtomicSetPtr : TSDL_AtomicSetPtr_func = Nil ;
162+ { $else}
101163function SDL_AtomicSetPtr (ptr: PPointer; value : Pointer): Pointer; cdecl;
102164 external SDL_LibName { $IFDEF DELPHI} { $IFDEF MACOS} name ' _SDL_AtomicSetPtr' { $ENDIF} { $ENDIF} ;
165+ { $endif}
103166
104167{ **
105168 * Get the value of a pointer atomically.
106169 *}
170+ { $ifdef SDL_RUNTIME_LOADING}
171+ Type
172+ TSDL_AtomicGetPtr_func = function (ptr: PPointer): Pointer; cdecl;
173+ Var
174+ SDL_AtomicGetPtr : TSDL_AtomicGetPtr_func = Nil ;
175+ { $else}
107176function SDL_AtomicGetPtr (ptr: PPointer): Pointer; cdecl;
108177 external SDL_LibName { $IFDEF DELPHI} { $IFDEF MACOS} name ' _SDL_AtomicGetPtr' { $ENDIF} { $ENDIF} ;
178+ { $endif}
109179
0 commit comments