Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/prelude/builtins.c

    rb867278 rbf71cfd  
    1010// Created On       : Fri Jul 21 16:21:03 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug  5 21:40:38 2018
    13 // Update Count     : 20
     12// Last Modified On : Thu Feb  8 12:47:59 2018
     13// Update Count     : 19
    1414//
    15 
    16 // type that wraps a pointer and a destructor-like function - used in generating implicit destructor calls for struct members in user-defined functions
    17 // Note: needs to occur early, because it is used to generate destructor calls during code generation
    18 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 __Destructor
    25 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 purposes
    33 extern "C" {
    34         forall(dtype T)
    35         static inline void __destroy_Destructor(__Destructor(T) * dtor) {
    36                 ^(*dtor){};
    37         }
    38 }
    3915
    4016// exception implementation
     
    4622
    4723void 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__ ));
     24void abort ( const char fmt[], ... ) __attribute__ (( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ ));
    4925
    5026// increment/decrement unification
Note: See TracChangeset for help on using the changeset viewer.