Changes in / [a4248de1:95b1e28]
- 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
ra4248de1 r95b1e28 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 forty years ago, lacks many features that make programming in more modern languages safer and more productive.205 Nevertheless, C, first standardized almost thirty 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
ra4248de1 r95b1e28 11 11 %% Created On : Wed Apr 6 14:53:29 2016 12 12 %% Last Modified By : Peter A. Buhr 13 %% Last Modified On : Mon Jul 9 10:49:52201814 %% Update Count : 336 113 %% Last Modified On : Thu Jul 26 17:29:05 2018 14 %% Update Count : 3366 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 specification5972 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, array5980 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, array5988 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 );5992 5969 5993 5970 // C unsafe initialization/copy 5994 extern "C" {5995 5971 void * memset( void * dest, int c, size_t size ); 5996 5972 void * memcpy( void * dest, const void * src, size_t size ); 5997 5973 } 5998 5974 5975 forall( dtype T | sized(T) ) { 5976 // §\CFA§ safe equivalents, i.e., implicit size specification 5977 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, array 5985 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, array 5993 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 5999 5998 // §\CFA§ safe initialization/copy, i.e., implicit size specification 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}§5999 T * memset( T * dest, char c );§\indexc{memset}§ 6000 T * memcpy( T * dest, const T * src );§\indexc{memcpy}§ 6002 6001 6003 6002 // §\CFA§ safe initialization/copy array 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 ); 6003 T * amemset( T dest[], char c, size_t dim ); 6004 T * amemcpy( T dest[], const T src[], size_t dim ); 6005 } 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 } 6065 6087 \end{cfa} 6066 6088
Note:
See TracChangeset
for help on using the changeset viewer.