Changes in / [95b1e28:a4248de1]
- Location:
- doc
- Files:
-
- 2 edited
-
papers/general/Paper.tex (modified) (1 diff)
-
user/user.tex (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
doc/papers/general/Paper.tex
r95b1e28 ra4248de1 203 203 The C programming language is a foundational technology for modern computing with millions of lines of code implementing everything from hobby projects to commercial operating-systems. 204 204 This installation base and the programmers producing it represent a massive software-engineering investment spanning decades and likely to continue for decades more. 205 Nevertheless, C, first standardized almost thirty years ago, lacks many features that make programming in more modern languages safer and more productive.205 Nevertheless, C, first standardized almost forty years ago, lacks many features that make programming in more modern languages safer and more productive. 206 206 207 207 The goal of the \CFA project (pronounced ``C-for-all'') is to create an extension of C that provides modern safety and productivity features while still ensuring strong backwards compatibility with C and its programmers. -
doc/user/user.tex
r95b1e28 ra4248de1 11 11 %% Created On : Wed Apr 6 14:53:29 2016 12 12 %% Last Modified By : Peter A. Buhr 13 %% Last Modified On : Thu Jul 26 17:29:05201814 %% Update Count : 336 613 %% Last Modified On : Mon Jul 9 10:49:52 2018 14 %% Update Count : 3361 15 15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 16 16 … … 5967 5967 void * memalign( size_t align, size_t size );§\indexc{memalign}§ 5968 5968 int posix_memalign( void ** ptr, size_t align, size_t size );§\indexc{posix_memalign}§ 5969 } 5970 5971 // §\CFA§ safe equivalents, i.e., implicit size specification 5972 forall( dtype T | sized(T) ) T * malloc( void ); 5973 forall( dtype T | sized(T) ) T * calloc( size_t dim ); 5974 forall( dtype T | sized(T) ) T * realloc( T * ptr, size_t size ); 5975 forall( dtype T | sized(T) ) T * memalign( size_t align ); 5976 forall( dtype T | sized(T) ) T * aligned_alloc( size_t align ); 5977 forall( dtype T | sized(T) ) int posix_memalign( T ** ptr, size_t align ); 5978 5979 // §\CFA§ safe general allocation, fill, resize, array 5980 forall( dtype T | sized(T) ) T * alloc( void );§\indexc{alloc}§ 5981 forall( dtype T | sized(T) ) T * alloc( char fill ); 5982 forall( dtype T | sized(T) ) T * alloc( size_t dim ); 5983 forall( dtype T | sized(T) ) T * alloc( size_t dim, char fill ); 5984 forall( dtype T | sized(T) ) T * alloc( T ptr[], size_t dim ); 5985 forall( dtype T | sized(T) ) T * alloc( T ptr[], size_t dim, char fill ); 5986 5987 // §\CFA§ safe general allocation, align, fill, array 5988 forall( dtype T | sized(T) ) T * align_alloc( size_t align ); 5989 forall( dtype T | sized(T) ) T * align_alloc( size_t align, char fill ); 5990 forall( dtype T | sized(T) ) T * align_alloc( size_t align, size_t dim ); 5991 forall( dtype T | sized(T) ) T * align_alloc( size_t align, size_t dim, char fill ); 5969 5992 5970 5993 // C unsafe initialization/copy 5994 extern "C" { 5971 5995 void * memset( void * dest, int c, size_t size ); 5972 5996 void * memcpy( void * dest, const void * src, size_t size ); 5973 5997 } 5974 5998 5975 forall( dtype T | sized(T) ) {5976 // §\CFA§ safe equivalents, i.e., implicit size specification5977 T * malloc( void );5978 T * calloc( size_t dim );5979 T * realloc( T * ptr, size_t size );5980 T * memalign( size_t align );5981 T * aligned_alloc( size_t align );5982 int posix_memalign( T ** ptr, size_t align );5983 5984 // §\CFA§ safe general allocation, fill, resize, array5985 T * alloc( void );§\indexc{alloc}§5986 T * alloc( char fill );5987 T * alloc( size_t dim );5988 T * alloc( size_t dim, char fill );5989 T * alloc( T ptr[], size_t dim );5990 T * alloc( T ptr[], size_t dim, char fill );5991 5992 // §\CFA§ safe general allocation, align, fill, array5993 T * align_alloc( size_t align );5994 T * align_alloc( size_t align, char fill );5995 T * align_alloc( size_t align, size_t dim );5996 T * align_alloc( size_t align, size_t dim, char fill );5997 5998 5999 // §\CFA§ safe initialization/copy, i.e., implicit size specification 5999 T * memset( T * dest, char c );§\indexc{memset}§6000 T * memcpy( T * dest, const T * src );§\indexc{memcpy}§6000 forall( dtype T | sized(T) ) T * memset( T * dest, char c );§\indexc{memset}§ 6001 forall( dtype T | sized(T) ) T * memcpy( T * dest, const T * src );§\indexc{memcpy}§ 6001 6002 6002 6003 // §\CFA§ safe initialization/copy array 6003 T * amemset( T dest[], char c, size_t dim ); 6004 T * amemcpy( T dest[], const T src[], size_t dim ); 6005 } 6004 forall( dtype T | sized(T) ) T * memset( T dest[], size_t dim, char c ); 6005 forall( dtype T | sized(T) ) T * memcpy( T dest[], const T src[], size_t dim ); 6006 6006 6007 6007 // §\CFA§ allocation/deallocation and constructor/destructor … … 6063 6063 forall( otype T | { int ?<?( T, T ); } ) 6064 6064 void qsort( const T * arr, size_t dim );§\indexc{qsort}§ 6065 6066 forall( otype E | { int ?<?( E, E ); } ) {6067 E * bsearch( E key, const E * vals, size_t dim );§\indexc{bsearch}§ §\C{// location}§6068 size_t bsearch( E key, const E * vals, size_t dim );§\C{// position}§6069 E * bsearchl( E key, const E * vals, size_t dim );§\indexc{bsearchl}§6070 size_t bsearchl( E key, const E * vals, size_t dim );6071 E * bsearchu( E key, const E * vals, size_t dim );§\indexc{bsearchu}§6072 size_t bsearchu( E key, const E * vals, size_t dim );6073 }6074 6075 forall( otype K, otype E | { int ?<?( K, K ); K getKey( const E & ); } ) {6076 E * bsearch( K key, const E * vals, size_t dim );6077 size_t bsearch( K key, const E * vals, size_t dim );6078 E * bsearchl( K key, const E * vals, size_t dim );6079 size_t bsearchl( K key, const E * vals, size_t dim );6080 E * bsearchu( K key, const E * vals, size_t dim );6081 size_t bsearchu( K key, const E * vals, size_t dim );6082 }6083 6084 forall( otype E | { int ?<?( E, E ); } ) {6085 void qsort( E * vals, size_t dim );§\indexc{qsort}§6086 }6087 6065 \end{cfa} 6088 6066
Note:
See TracChangeset
for help on using the changeset viewer.