Changes in libcfa/prelude/builtins.c [b867278:bf71cfd]
- File:
-
- 1 edited
-
libcfa/prelude/builtins.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/prelude/builtins.c
rb867278 rbf71cfd 10 10 // Created On : Fri Jul 21 16:21:03 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Aug 5 21:40:38201813 // Update Count : 2012 // Last Modified On : Thu Feb 8 12:47:59 2018 13 // Update Count : 19 14 14 // 15 16 // type that wraps a pointer and a destructor-like function - used in generating implicit destructor calls for struct members in user-defined functions17 // Note: needs to occur early, because it is used to generate destructor calls during code generation18 forall(dtype T)19 struct __Destructor {20 T * object;21 void (*dtor)(T *);22 };23 24 // defined destructor in the case that non-generated code wants to use __Destructor25 forall(dtype T)26 static inline void ^?{}(__Destructor(T) & x) {27 if (x.object && x.dtor) {28 x.dtor(x.object);29 }30 }31 32 // easy interface into __Destructor's destructor for easy codegen purposes33 extern "C" {34 forall(dtype T)35 static inline void __destroy_Destructor(__Destructor(T) * dtor) {36 ^(*dtor){};37 }38 }39 15 40 16 // exception implementation … … 46 22 47 23 void exit( int status, const char fmt[], ... ) __attribute__ (( format(printf, 2, 3), __nothrow__, __leaf__, __noreturn__ )); 48 void abort ( const char fmt[], ... ) __attribute__ (( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ ));24 void abort ( const char fmt[], ... ) __attribute__ (( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ )); 49 25 50 26 // increment/decrement unification
Note:
See TracChangeset
for help on using the changeset viewer.