Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/prelude/builtins.c

    r0d8266c r8a30423  
    1010// Created On       : Fri Jul 21 16:21:03 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun 25 18:06:52 2019
    13 // Update Count     : 97
     12// Last Modified On : Tue Mar 26 23:10:36 2019
     13// Update Count     : 95
    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
     
    4925void abort( const char fmt[], ... ) __attribute__ (( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ ));
    5026
    51 // implicit increment, decrement if += defined, and implicit not if != defined
     27// increment/decrement unification
    5228
    5329static inline {
     
    6339        forall( dtype DT | sized(DT) | { void ?{}( DT &, DT ); void ^?{}( DT & ); DT & ?-=?( DT &, one_t ); } )
    6440        DT & ?--( DT & x ) { DT tmp = x; x -= 1; return tmp; }
    65 
    66         forall( dtype DT | { int ?!=?( const DT &, zero_t ); } )
    67         int !?( const DT & x ) { return !( x != 0 ); }
    6841} // distribution
    6942
Note: See TracChangeset for help on using the changeset viewer.