Changeset 4a3eb1c


Ignore:
Timestamp:
Apr 23, 2024, 2:18:29 PM (7 months ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
master
Children:
5bc81e9, 89da3a9
Parents:
13de4478
Message:

add combinations of pointer/reference for memset and memcpy

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/stdlib.hfa

    r13de4478 r4a3eb1c  
    1010// Created On       : Thu Jan 28 17:12:35 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Apr 22 23:23:58 2024
    13 // Update Count     : 958
     12// Last Modified On : Tue Apr 23 14:05:21 2024
     13// Update Count     : 963
    1414//
    1515
     
    265265static inline forall( T & | sized(T) ) {
    266266        // CFA safe initialization/copy, i.e., implicit size specification, non-array types
    267         T * memset( T * dest, char fill ) {
    268                 return (T *)memset( dest, fill, sizeof(T) );
     267        T * memset( T * dest, char fill ) {                                     // all combinations of pointer/reference
     268                return (T *)memset( dest, fill, sizeof(T) );    // C memset
    269269        } // memset
    270 
    271         T * memcpy( T * dest, const T * src ) {
    272                 return (T *)memcpy( dest, src, sizeof(T) );
     270        T * memset( T & dest, char fill ) {
     271                return (T *)memset( &dest, fill, sizeof(T) );   // C memset
     272        } // memset
     273
     274        T * memcpy( T * dest, const T * src ) {                         // all combinations of pointer/reference
     275                return (T *)memcpy( dest, src, sizeof(T) );             // C memcpy
     276        } // memcpy
     277        T * memcpy( T & dest, const T & src ) {
     278                return (T *)memcpy( &dest, &src, sizeof(T) );   // C memcpy
     279        } // memcpy
     280        T * memcpy( T * dest, const T & src ) {
     281                return (T *)memcpy( dest, &src, sizeof(T) );    // C memcpy
     282        } // memcpy
     283        T * memcpy( T & dest, const T * src ) {
     284                return (T *)memcpy( &dest, src, sizeof(T) );    // C memcpy
    273285        } // memcpy
    274286
  • tests/alloc.cfa

    r13de4478 r4a3eb1c  
    1010// Created On       : Wed Feb  3 07:56:22 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Oct 14 09:31:39 2022
    13 // Update Count     : 491
     12// Last Modified On : Tue Apr 23 14:04:11 2024
     13// Update Count     : 492
    1414//
    1515
     
    240240        free( stp );
    241241
    242         posix_memalign( &stp, Alignment );                  // CFA posix_memalign
     242        posix_memalign( &stp, Alignment );                                      // CFA posix_memalign
    243243        *stp = (Struct){ 42, 42.5 };
    244244        assert( (uintptr_t)stp % Alignment == 0 );
     
    275275        sout | nl;
    276276
    277         stp = alloc( dim, Alignment`align );                // CFA array memalign
     277        stp = alloc( dim, Alignment`align );                            // CFA array memalign
    278278        assert( (uintptr_t)stp % Alignment == 0 );
    279279        for ( i; dim ) { stp[i] = (Struct){ 42, 42.5 }; }
     
    316316        sout | nl;
    317317
    318         memset( &st, fill );                                // CFA memset, type safe
     318        memset( st, fill );                                                                     // CFA memset, type safe
    319319        sout | "CFA memset" | hex(st.x) | hex(st.y);
    320         memcpy( &st1, &st );                                // CFA memcpy, type safe
     320        memcpy( st1, st );                                                                      // CFA memcpy, type safe
    321321        sout | "CFA memcpy" | hex(st1.x) | hex(st1.y);
    322322
Note: See TracChangeset for help on using the changeset viewer.