Changeset b6a71bc for libcfa


Ignore:
Timestamp:
Apr 12, 2024, 7:40:17 AM (3 weeks ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
master
Children:
6dd4091
Parents:
d9bad51
Message:

formatting

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/stdlib.hfa

    rd9bad51 rb6a71bc  
    1010// Created On       : Thu Jan 28 17:12:35 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Mar 17 08:25:31 2024
    13 // Update Count     : 796
     12// Last Modified On : Fri Apr 12 07:39:15 2024
     13// Update Count     : 812
    1414//
    1515
     
    109109        1. Replace the current forall-block that contains defintions of S_fill and S_realloc with following:
    110110                forall( T & | sized(T) ) {
    111                         union  U_fill           { char c; T * a; T t; };
    112                         struct S_fill           { char tag; U_fill(T) fill; };
    113                         struct S_realloc        { inline T *; };
     111                        union  U_fill { char c; T * a; T t; };
     112                        struct S_fill { char tag; U_fill(T) fill; };
     113                        struct S_realloc { inline T *; };
    114114                }
    115115
    116116        2. Replace all current postfix-fill functions with following for updated S_fill:
    117                 S_fill(T) ?`fill( char a )                                      { S_fill(T) ret = {'c'}; ret.fill.c = a; return ret; }
    118                 S_fill(T) ?`fill( T    a )                                      { S_fill(T) ret = {'t'}; memcpy(&ret.fill.t, &a, sizeof(T)); return ret; }
    119                 S_fill(T) ?`fill( T    a[], size_t nmemb )      { S_fill(T) ret = {'a', nmemb}; ret.fill.a = a; return ret; }
     117                S_fill(T) ?`fill( char a ) { S_fill(T) ret = {'c'}; ret.fill.c = a; return ret; }
     118                S_fill(T) ?`fill( T a ) { S_fill(T) ret = {'t'}; memcpy(&ret.fill.t, &a, sizeof(T)); return ret; }
     119                S_fill(T) ?`fill( T a[], size_t nmemb ) { S_fill(T) ret = {'a', nmemb}; ret.fill.a = a; return ret; }
    120120
    121121        3. Replace the alloc_internal$ function which is outside ttype forall-block with following function:
     
    148148*/
    149149
    150 typedef struct S_align                  { inline size_t;  } T_align;
    151 typedef struct S_resize                 { inline void *;  }     T_resize;
     150typedef struct S_align { inline size_t;  } T_align;
     151typedef struct S_resize { inline void *;  }     T_resize;
    152152
    153153forall( T & ) {
    154         struct S_fill           { char tag; char c; size_t size; T * at; char t[50]; };
    155         struct S_realloc        { inline T *; };
     154        struct S_fill { char tag; char c; size_t size; T * at; char t[50]; };
     155        struct S_realloc { inline T *; };
    156156}
    157157
    158 static inline T_align   ?`align   ( size_t a )  { return (T_align){a}; }
    159 static inline T_resize  ?`resize  ( void * a )  { return (T_resize){a}; }
    160 
     158static inline T_align ?`align( size_t a ) { return (T_align){a}; }
     159static inline T_resize ?`resize( void * a )     { return (T_resize){a}; }
     160
     161extern "C" ssize_t write(int fd, const void *buf, size_t count);
    161162static inline forall( T & | sized(T) ) {
    162163        S_fill(T) ?`fill ( T t ) {
     
    169170                return ret;
    170171        }
    171         S_fill(T)               ?`fill ( zero_t ) = void; // FIX ME: remove this once ticket 214 is resolved
    172         S_fill(T)               ?`fill ( T * a )                                { return (S_fill(T)){ 'T', '0', 0, a }; } // FIX ME: remove this once ticket 214 is resolved
    173         S_fill(T)               ?`fill ( char c )                               { return (S_fill(T)){ 'c', c }; }
    174         S_fill(T)               ?`fill ( T a[], size_t nmemb )  { return (S_fill(T)){ 'a', '0', nmemb * sizeof(T), a }; }
    175 
    176         S_realloc(T)    ?`realloc ( T * a )                             { return (S_realloc(T)){a}; }
     172        S_fill(T) ?`fill ( zero_t ) = void; // FIX ME: remove this once ticket 214 is resolved
     173        S_fill(T) ?`fill ( T * a ) { return (S_fill(T)){ 'T', '0', 0, a }; } // FIX ME: remove this once ticket 214 is resolved
     174        S_fill(T) ?`fill ( char c ) { return (S_fill(T)){ 'c', c };     }
     175        S_fill(T) ?`fill ( T a[], size_t nmemb ) { return (S_fill(T)){ 'a', '0', nmemb * sizeof(T), a }; }
     176
     177        S_realloc(T) ?`realloc ( T * a ) { return (S_realloc(T)){a}; }
    177178
    178179        T * alloc_internal$( void * Resize, T * Realloc, size_t Align, size_t Dim, S_fill(T) Fill ) {
     
    182183
    183184                if ( Resize ) {
    184                         ptr = (T*) (void *) resize( (void *)Resize, Align, Dim * size );
     185                        ptr = (T*)(void *)resize( (void *)Resize, Align, Dim * size );
    185186                } else if ( Realloc ) {
    186187                        if ( Fill.tag != '0' ) copy_end = min(malloc_size( Realloc ), Dim * size );
    187                         ptr = (T *) (void *) realloc( (void *)Realloc, Align, Dim * size );
     188                        ptr = (T *)(void *)realloc( (void *)Realloc, Align, Dim * size );
    188189                } else {
    189                         ptr = (T *) (void *) memalign( Align, Dim * size );
     190                        ptr = (T *)(void *) memalign( Align, Dim * size );
    190191                }
    191192
Note: See TracChangeset for help on using the changeset viewer.