Changeset 1dec8f3 for libcfa/src
- Timestamp:
- Sep 22, 2025, 2:33:42 PM (5 months ago)
- Branches:
- master, stuck-waitfor-destruct
- Children:
- bb5b866
- Parents:
- 7ca6bf1 (diff), 295ed2d1 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- libcfa/src
- Files:
-
- 8 edited
-
collections/string.cfa (modified) (4 diffs)
-
collections/string.hfa (modified) (5 diffs)
-
concurrency/clib/cfathread.cfa (modified) (1 diff)
-
concurrency/locks.cfa (modified) (11 diffs)
-
concurrency/locks.hfa (modified) (4 diffs)
-
concurrency/mutex.cfa (modified) (5 diffs)
-
concurrency/mutex.hfa (modified) (3 diffs)
-
iostream.hfa (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/collections/string.cfa
r7ca6bf1 r1dec8f3 10 10 // Created On : Fri Sep 03 11:00:00 2021 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Apr 13 07:58:55 202513 // Update Count : 39 012 // Last Modified On : Mon Sep 15 10:26:35 2025 13 // Update Count : 394 14 14 // 15 15 … … 97 97 } 98 98 99 string str( ssize_t rhs ) {100 string s = rhs;101 return s;102 }103 104 string str( size_t rhs ) {105 string s = rhs;106 return s;107 }108 109 string str( double rhs ) {110 string s = rhs;111 return s;112 }113 114 string str( long double rhs ) {115 string s = rhs;116 return s;117 }118 119 string str( double _Complex rhs ) {120 string s = rhs;121 return s;122 }123 124 string str( long double _Complex rhs ) {125 string s = rhs;126 return s;127 }128 129 99 void ^?{}( string & s ) { 130 100 ^(*s.inner){}; … … 204 174 205 175 //////////////////////////////////////////////////////// 206 // Getter 176 // C-style 177 178 // safe conversion from string to char * 179 char * strncpy( char * dst, string & src, size_t n ) { 180 size_t l = min( n - 1, len( src ) ); // ensure null terminated 181 for ( i; l ) dst[i] = src[i]; 182 dst[l] = '\0'; 183 return dst; 184 } 185 char * ?=?( char *& dst, string & src ) { 186 dst = aalloc( len( src ) + 1 ); // ensure null terminated 187 for ( i; len( src ) ) dst[i] = src[i]; 188 dst[len(src)] = '\0'; 189 return dst; 190 } 191 void ?{}( char *& dst, string & src ) { 192 dst = aalloc( len( src ) + 1 ); // ensure null terminated 193 for ( i; len( src ) ) dst[i] = src[i]; 194 dst[len(src)] = '\0'; 195 } 207 196 208 197 size_t strnlen( const string & s, size_t maxlen ) { return min( len( s ), maxlen ); } … … 255 244 256 245 string ?()( string & s, ssize_t start, ssize_t len ) { 257 if ( start < 0 ) { start += len( s ); }258 if ( len < 0 ) { len = -len; start -= len ; }259 if ( start >= len( s ) ) return (string){ "" };246 if ( start < 0 ) start += len( s ); 247 if ( len < 0 ) { len = -len; start -= len - 1; } 248 if ( start < 0 || start >= len( s ) ) return (string){ "" }; 260 249 if ( start + len > len( s ) ) len = len( s ) - start; 261 250 string ret = { *s.inner, start, len }; -
libcfa/src/collections/string.hfa
r7ca6bf1 r1dec8f3 10 10 // Created On : Fri Sep 03 11:00:00 2021 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Apr 13 21:03:35202513 // Update Count : 28412 // Last Modified On : Sun Sep 14 10:58:28 2025 13 // Update Count : 311 14 14 // 15 15 … … 43 43 void ?{}( string & s, long double _Complex rhs ); 44 44 static inline void ?{}( string & s, int rhs ) { (s){(signed long int) rhs}; } 45 46 // string str( ssize_t rhs );47 // string str( size_t rhs );48 // string str( double rhs );49 // string str( long double rhs );50 // string str( double _Complex rhs );51 // string str( long double _Complex rhs );52 45 53 46 PBOOST string & ?=?( string & s, string c ); … … 68 61 static inline string & strcpy( string & s, const string & c ) { s = c; return s; } 69 62 static inline string & strncpy( string & s, const string & c, size_t n ) { assign( s, c, n ); return s; } 63 char * strncpy( char * dst, string & src, size_t n ); 64 char * ?=?( char *& dst, string & src ); 65 void ?{}( char *& dst, string & src ); 70 66 71 67 // Alternate construction: request shared edits … … 187 183 PBOOST string ?*?( string s, strmul_factor_t factor ); 188 184 string ?*?( const char * s, strmul_factor_t factor ); 189 static inline string ?*?( strmul_factor_t factor, char s ) { return s* factor; }185 static inline string ?*?( strmul_factor_t factor, char c ) { return c * factor; } 190 186 PBOOST static inline string ?*?( strmul_factor_t factor, string s ) { return s * factor; } 191 187 static inline string ?*?( strmul_factor_t factor, const char * s ) { return s * factor; } … … 278 274 279 275 size_t include( const string & s, const charclass & mask ); 280 static inline size_t include( const char * cs, const charclass & mask ) { const string s = cs; return include( s, mask ); } 276 static inline size_t include( const string & s, const char * mask ) { return include( s, (charclass){ mask } ); } 277 static inline size_t include( const string & s, const string & mask ) { return include( s, (charclass){ mask } ); } 278 static inline size_t include( const char * cs, const charclass & mask ) { return include( (string){ cs }, mask ); } 279 static inline size_t include( const char * cs, const char * mask ) { return include( (string){ cs }, (charclass){ mask } ); } 280 static inline size_t include( const char * cs, const string & mask ) { return include( (string){ cs }, (charclass){ mask } ); } 281 281 282 static inline string include( const string & s, const charclass & mask ) { return s( 0, include( s, mask ) ); } 283 static inline string include( const string & s, const char * mask ) { return s( 0, include( s, (charclass){ mask } ) ); } 284 static inline string include( const string & s, const string & mask ) { return s( 0, include( s, (charclass){ mask } ) ); } 282 285 static inline string include( const char * cs, const charclass & mask ) { const string s = cs; return s( 0, include( s, mask ) ); } 286 static inline string include( const char * cs, const char * mask ) { const string s = cs; return s( 0, include( s, (charclass){ mask } ) ); } 287 static inline string include( const char * cs, const string & mask ) { const string s = cs; return s( 0, include( s, (charclass){ mask } ) ); } 283 288 284 289 size_t exclude( const string & s, const charclass & mask ); 285 static inline size_t exclude( const char * cs, const charclass & mask ) { const string s = cs; return exclude( s, mask ); } 290 static inline size_t exclude( const string & s, const char * mask ) { return exclude( s, (charclass){ mask } ); } 291 static inline size_t exclude( const string & s, const string & mask ) { return exclude( s, (charclass){ mask } ); } 292 static inline size_t exclude( const char * cs, const charclass & mask ) { return exclude( (string){ cs }, mask ); } 293 static inline size_t exclude( const char * cs, const string & mask ) { return exclude( (string){ cs }, (charclass){ mask } ); } 294 static inline size_t exclude( const char * cs, const char * mask ) { return exclude( (string){ cs }, (charclass){ mask } ); } 295 286 296 static inline string exclude( const string & s, const charclass & mask ) { return s( 0, exclude( s, mask ) ); } 297 static inline string exclude( const string & s, const char * mask ) { return s( 0, exclude( s, (charclass){ mask } ) ); } 298 static inline string exclude( const string & s, const string & mask ) { return s( 0, exclude( s, (charclass){ mask } ) ); } 287 299 static inline string exclude( const char * cs, const charclass & mask ) { const string s = cs; return s( 0, exclude( s, mask ) ); } 288 289 size_t include( const string & s, int (*f)( int ) ); 290 static inline size_t include( const char * cs, int (*f)( int ) ) { const string S = cs; return include( S, f ); } 291 static inline string include( const string & s, int (*f)( int ) ) { return s( 0, include( s, f ) ); } 292 static inline string include( const char * cs, int (*f)( int ) ) { const string s = cs; return s( 0, include( s, f ) ); } 293 294 size_t exclude( const string & s, int (*f)( int ) ); 295 static inline size_t exclude( const char * cs, int (*f)( int ) ) { const string s = cs; return exclude( s, f ); } 296 static inline string exclude( const string & s, int (*f)( int ) ) { return s( 0, exclude( s, f ) ); } 297 static inline string exclude( const char * cs, int (*f)( int ) ) { const string s = cs; return s( 0, exclude( s, f ) ); } 300 static inline string exclude( const char * cs, const string & mask ) { const string s = cs; return s( 0, exclude( s, (charclass){ mask } ) ); } 301 static inline string exclude( const char * cs, const char * mask ) { const string s = cs; return s( 0, exclude( s, (charclass){ mask } ) ); } 302 303 size_t include( const string & s, int (* f)( int ) ); // for C character-class functions, e.g., isdigit 304 static inline size_t include( const char * cs, int (* f)( int ) ) { return include( (string){ cs }, f ); } 305 static inline string include( const string & s, int (* f)( int ) ) { return s( 0, include( s, f ) ); } 306 static inline string include( const char * cs, int (* f)( int ) ) { const string s = cs; return s( 0, include( s, f ) ); } 307 308 static inline size_t include( const string & s, bool (* f)( char ) ) { return include( s, (int (*)( int ))f ); } 309 static inline size_t include( const char * cs, bool (* f)( char ) ) { return include( (string){ cs }, f ); } 310 static inline string include( const string & s, bool (* f)( char ) ) { return s( 0, include( s, f ) ); } 311 static inline string include( const char * cs, bool (* f)( char ) ) { const string s = cs; return s( 0, include( s, f ) ); } 312 313 size_t exclude( const string & s, int (* f)( int ) ); // for C character-class functions, e.g., isdigit 314 static inline size_t exclude( const char * cs, int (* f)( int ) ) { return exclude( (string){ cs }, f ); } 315 static inline string exclude( const string & s, int (* f)( int ) ) { return s( 0, exclude( s, f ) ); } 316 static inline string exclude( const char * cs, int (* f)( int ) ) { const string s = cs; return s( 0, exclude( s, f ) ); } 317 318 static inline size_t exclude( const string & s, bool (* f)( char ) ) { return exclude( s, (int (*)( int ))f ); } 319 static inline size_t exclude( const char * cs, bool (* f)( char ) ) { return exclude( (string){ cs }, f ); } 320 static inline string exclude( const string & s, bool (* f)( char ) ) { return s( 0, exclude( s, f ) ); } 321 static inline string exclude( const char * cs, bool (* f)( char ) ) { const string s = cs; return s( 0, exclude( s, f ) ); } 298 322 299 323 string replace( const string & s, const string & from, const string & to ); 300 static inline string replace( const char * s, const char * from, const char * to ) { string S = s, From = from, To = to; return replace( S, From, To ); } 301 static inline string replace( const string & s, const char * from, const char * to ) { const string From = from, To = to; return replace( s, From, To ); } 302 static inline string replace( const string & s, const char * from, const string & to ) { const string From = from; return replace( s, From, to ); } 303 static inline string replace( const string & s, string & from, const char * to ) { const string To = to; return replace( s, from, To ); } 304 305 string translate( const string & s, int (*f)( int ) ); 306 static inline string translate( const char * c, int (*f)( int ) ) { const string S = c; return translate( S, f ); } 324 static inline string replace( const char * s, const char * from, const char * to ) { return replace( (string){ s }, (string){ from }, (string){ to } ); } 325 static inline string replace( const string & s, const char * from, const char * to ) { return replace( s, (string){ from }, (string){ to } ); } 326 static inline string replace( const string & s, const char * from, const string & to ) { return replace( s, (string){ from }, to ); } 327 static inline string replace( const string & s, string & from, const char * to ) { return replace( s, from, (string){ to } ); } 328 329 string translate( const string & s, int (* f)( int ) ); // for C character-class functions, e.g., isdigit 330 static inline string translate( const char * cs, int (* f)( int ) ) { return translate( (string){ cs }, f ); } 331 332 static inline string translate( const string & s, bool (* f)( char ) ) { return translate( s, (int (*)( int ))f ); } 333 static inline string translate( const char * cs, bool (* f)( char ) ) { return translate( (string){ cs }, f ); } 307 334 308 335 #ifndef _COMPILING_STRING_CFA_ -
libcfa/src/concurrency/clib/cfathread.cfa
r7ca6bf1 r1dec8f3 450 450 // Condition 451 451 struct cfathread_condition { 452 cond ition_variable(exp_backoff_then_block_lock) impl;452 cond_lock(exp_backoff_then_block_lock) impl; 453 453 }; 454 454 int cfathread_cond_init(cfathread_cond_t *restrict cond, const cfathread_condattr_t *restrict) __attribute__((nonnull (1))) { *cond = new(); return 0; } -
libcfa/src/concurrency/locks.cfa
r7ca6bf1 r1dec8f3 246 246 struct alarm_node_wrap { 247 247 alarm_node_t alarm_node; 248 cond ition_variable(L) * cond;248 cond_lock(L) * cond; 249 249 info_thread(L) * info_thd; 250 250 }; 251 251 252 void ?{}( alarm_node_wrap(L) & this, Duration alarm, Duration period, Alarm_Callback callback, cond ition_variable(L) * c, info_thread(L) * i ) {252 void ?{}( alarm_node_wrap(L) & this, Duration alarm, Duration period, Alarm_Callback callback, cond_lock(L) * c, info_thread(L) * i ) { 253 253 this.alarm_node{ callback, alarm, period }; 254 254 this.cond = c; … … 259 259 260 260 static void timeout_handler ( alarm_node_wrap(L) & this ) with( this ) { 261 // This cond ition_variablemember is called from the kernel, and therefore, cannot block, but it can spin.261 // This cond_lock member is called from the kernel, and therefore, cannot block, but it can spin. 262 262 lock( cond->lock __cfaabi_dbg_ctx2 ); 263 263 … … 323 323 //----------------------------------------------------------------------------- 324 324 // condition variable 325 void ?{}( cond ition_variable(L) & this ){325 void ?{}( cond_lock(L) & this ){ 326 326 this.lock{}; 327 327 this.blocked_threads{}; … … 329 329 } 330 330 331 void ^?{}( cond ition_variable(L) & this ){ }332 333 static void process_popped( cond ition_variable(L) & this, info_thread(L) & popped ) with( this ) {331 void ^?{}( cond_lock(L) & this ){ } 332 333 static void process_popped( cond_lock(L) & this, info_thread(L) & popped ) with( this ) { 334 334 if (&popped != 0p) { 335 335 popped.signalled = true; … … 345 345 } 346 346 347 bool notify_one( cond ition_variable(L) & this ) with( this ) {347 bool notify_one( cond_lock(L) & this ) with( this ) { 348 348 lock( lock __cfaabi_dbg_ctx2 ); 349 349 bool ret = ! isEmpty( blocked_threads ); … … 353 353 } 354 354 355 bool notify_all( cond ition_variable(L) & this ) with(this) {355 bool notify_all( cond_lock(L) & this ) with(this) { 356 356 lock( lock __cfaabi_dbg_ctx2 ); 357 357 bool ret = ! isEmpty( blocked_threads ); … … 363 363 } 364 364 365 uintptr_t front( cond ition_variable(L) & this ) with(this) {365 uintptr_t front( cond_lock(L) & this ) with(this) { 366 366 return isEmpty( blocked_threads ) ? NULL : first( blocked_threads ).info; 367 367 } 368 368 369 bool empty( cond ition_variable(L) & this ) with(this) {369 bool empty( cond_lock(L) & this ) with(this) { 370 370 lock( lock __cfaabi_dbg_ctx2 ); 371 371 bool ret = isEmpty( blocked_threads ); … … 374 374 } 375 375 376 int counter( cond ition_variable(L) & this ) with(this) { return count; }377 378 static void enqueue_thread( cond ition_variable(L) & this, info_thread(L) * i ) with(this) {376 int counter( cond_lock(L) & this ) with(this) { return count; } 377 378 static void enqueue_thread( cond_lock(L) & this, info_thread(L) * i ) with(this) { 379 379 // add info_thread to waiting queue 380 380 insert_last( blocked_threads, *i ); … … 393 393 394 394 // helper for wait()'s' with no timeout 395 static void queue_info_thread( cond ition_variable(L) & this, info_thread(L) & i ) with(this) {395 static void queue_info_thread( cond_lock(L) & this, info_thread(L) & i ) with(this) { 396 396 lock( lock __cfaabi_dbg_ctx2 ); 397 397 enqueue_thread( this, &i ); … … 412 412 413 413 // helper for wait()'s' with a timeout 414 static void queue_info_thread_timeout( cond ition_variable(L) & this, info_thread(L) & info, Duration t, Alarm_Callback callback ) with(this) {414 static void queue_info_thread_timeout( cond_lock(L) & this, info_thread(L) & info, Duration t, Alarm_Callback callback ) with(this) { 415 415 lock( lock __cfaabi_dbg_ctx2 ); 416 416 enqueue_thread( this, &info ); … … 434 434 return i.signalled; 435 435 436 void wait( cond ition_variable(L) & this ) with(this) { WAIT( 0, 0p ) }437 void wait( cond ition_variable(L) & this, uintptr_t info ) with(this) { WAIT( info, 0p ) }438 void wait( cond ition_variable(L) & this, L & l ) with(this) { WAIT( 0, &l ) }439 void wait( cond ition_variable(L) & this, L & l, uintptr_t info ) with(this) { WAIT( info, &l ) }440 441 bool wait( cond ition_variable(L) & this, Duration duration ) with(this) { WAIT_TIME( 0 , 0p , duration ) }442 bool wait( cond ition_variable(L) & this, uintptr_t info, Duration duration ) with(this) { WAIT_TIME( info, 0p , duration ) }443 bool wait( cond ition_variable(L) & this, L & l, Duration duration ) with(this) { WAIT_TIME( 0 , &l , duration ) }444 bool wait( cond ition_variable(L) & this, L & l, uintptr_t info, Duration duration ) with(this) { WAIT_TIME( info, &l , duration ) }436 void wait( cond_lock(L) & this ) with(this) { WAIT( 0, 0p ) } 437 void wait( cond_lock(L) & this, uintptr_t info ) with(this) { WAIT( info, 0p ) } 438 void wait( cond_lock(L) & this, L & l ) with(this) { WAIT( 0, &l ) } 439 void wait( cond_lock(L) & this, L & l, uintptr_t info ) with(this) { WAIT( info, &l ) } 440 441 bool wait( cond_lock(L) & this, Duration duration ) with(this) { WAIT_TIME( 0 , 0p , duration ) } 442 bool wait( cond_lock(L) & this, uintptr_t info, Duration duration ) with(this) { WAIT_TIME( info, 0p , duration ) } 443 bool wait( cond_lock(L) & this, L & l, Duration duration ) with(this) { WAIT_TIME( 0 , &l , duration ) } 444 bool wait( cond_lock(L) & this, L & l, uintptr_t info, Duration duration ) with(this) { WAIT_TIME( info, &l , duration ) } 445 445 446 446 //----------------------------------------------------------------------------- -
libcfa/src/concurrency/locks.hfa
r7ca6bf1 r1dec8f3 11 11 // Created On : Thu Jan 21 19:46:50 2021 12 12 // Last Modified By : Peter A. Buhr 13 // Last Modified On : Fri Apr 25 07:14:16202514 // Update Count : 2 213 // Last Modified On : Thu Aug 21 22:36:44 2025 14 // Update Count : 23 15 15 // 16 16 … … 797 797 798 798 //----------------------------------------------------------------------------- 799 // cond ition_variable799 // cond_lock 800 800 801 801 // The multi-tool condition variable … … 805 805 // - has shadow queue 806 806 // - can be signalled outside of critical sections with no locks held 807 struct cond ition_variable{807 struct cond_lock { 808 808 // Spin lock used for mutual exclusion 809 809 __spinlock_t lock; … … 816 816 }; 817 817 818 void ?{}( cond ition_variable( L ) & this );819 void ^?{}( cond ition_variable( L ) & this );820 821 bool notify_one( cond ition_variable( L ) & this );822 bool notify_all( cond ition_variable( L ) & this );823 824 uintptr_t front( cond ition_variable( L ) & this );825 826 bool empty ( cond ition_variable( L ) & this );827 int counter( cond ition_variable( L ) & this );828 829 void wait( cond ition_variable( L ) & this );830 void wait( cond ition_variable( L ) & this, uintptr_t info );831 bool wait( cond ition_variable( L ) & this, Duration duration );832 bool wait( cond ition_variable( L ) & this, uintptr_t info, Duration duration );833 834 void wait( cond ition_variable( L ) & this, L & l );835 void wait( cond ition_variable( L ) & this, L & l, uintptr_t info );836 bool wait( cond ition_variable( L ) & this, L & l, Duration duration );837 bool wait( cond ition_variable( L ) & this, L & l, uintptr_t info, Duration duration );818 void ?{}( cond_lock( L ) & this ); 819 void ^?{}( cond_lock( L ) & this ); 820 821 bool notify_one( cond_lock( L ) & this ); 822 bool notify_all( cond_lock( L ) & this ); 823 824 uintptr_t front( cond_lock( L ) & this ); 825 826 bool empty ( cond_lock( L ) & this ); 827 int counter( cond_lock( L ) & this ); 828 829 void wait( cond_lock( L ) & this ); 830 void wait( cond_lock( L ) & this, uintptr_t info ); 831 bool wait( cond_lock( L ) & this, Duration duration ); 832 bool wait( cond_lock( L ) & this, uintptr_t info, Duration duration ); 833 834 void wait( cond_lock( L ) & this, L & l ); 835 void wait( cond_lock( L ) & this, L & l, uintptr_t info ); 836 bool wait( cond_lock( L ) & this, L & l, Duration duration ); 837 bool wait( cond_lock( L ) & this, L & l, uintptr_t info, Duration duration ); 838 838 839 839 //----------------------------------------------------------------------------- -
libcfa/src/concurrency/mutex.cfa
r7ca6bf1 r1dec8f3 12 12 // Created On : Fri May 25 01:37:11 2018 13 13 // Last Modified By : Peter A. Buhr 14 // Last Modified On : Sun Feb 19 17:01:36 202315 // Update Count : 314 // Last Modified On : Thu Aug 21 22:35:44 2025 15 // Update Count : 4 16 16 // 17 17 … … 131 131 //----------------------------------------------------------------------------- 132 132 // Conditions 133 void ?{}(cond ition_variable& this) {133 void ?{}(cond_lock & this) { 134 134 this.blocked_threads{}; 135 135 } 136 136 137 void ^?{}(cond ition_variable& this) {137 void ^?{}(cond_lock & this) { 138 138 // default 139 139 } 140 140 141 void notify_one(cond ition_variable& this) with(this) {141 void notify_one(cond_lock & this) with(this) { 142 142 lock( lock __cfaabi_dbg_ctx2 ); 143 143 unpark( … … 147 147 } 148 148 149 void notify_all(cond ition_variable& this) with(this) {149 void notify_all(cond_lock & this) with(this) { 150 150 lock( lock __cfaabi_dbg_ctx2 ); 151 151 while(this.blocked_threads) { … … 157 157 } 158 158 159 void wait(cond ition_variable& this) {159 void wait(cond_lock & this) { 160 160 lock( this.lock __cfaabi_dbg_ctx2 ); 161 161 append( this.blocked_threads, active_thread() ); … … 165 165 166 166 forall(L & | is_lock(L)) 167 void wait(cond ition_variable& this, L & l) {167 void wait(cond_lock & this, L & l) { 168 168 lock( this.lock __cfaabi_dbg_ctx2 ); 169 169 append( this.blocked_threads, active_thread() ); -
libcfa/src/concurrency/mutex.hfa
r7ca6bf1 r1dec8f3 12 12 // Created On : Fri May 25 01:24:09 2018 13 13 // Last Modified By : Peter A. Buhr 14 // Last Modified On : Thu Feb 2 11:46:08 202315 // Update Count : 214 // Last Modified On : Thu Aug 21 22:35:23 2025 15 // Update Count : 3 16 16 // 17 17 … … 79 79 // Condition variables 80 80 81 struct cond ition_variable{81 struct cond_lock { 82 82 // Spin lock used for mutual exclusion 83 83 __spinlock_t lock; … … 87 87 }; 88 88 89 void ?{}(cond ition_variable& this) __attribute__((deprecated("use concurrency/locks.hfa instead")));90 void ^?{}(cond ition_variable& this) __attribute__((deprecated("use concurrency/locks.hfa instead")));89 void ?{}(cond_lock & this) __attribute__((deprecated("use concurrency/locks.hfa instead"))); 90 void ^?{}(cond_lock & this) __attribute__((deprecated("use concurrency/locks.hfa instead"))); 91 91 92 void notify_one(cond ition_variable& this) __attribute__((deprecated("use concurrency/locks.hfa instead")));93 void notify_all(cond ition_variable& this) __attribute__((deprecated("use concurrency/locks.hfa instead")));92 void notify_one(cond_lock & this) __attribute__((deprecated("use concurrency/locks.hfa instead"))); 93 void notify_all(cond_lock & this) __attribute__((deprecated("use concurrency/locks.hfa instead"))); 94 94 95 void wait(cond ition_variable& this) __attribute__((deprecated("use concurrency/locks.hfa instead")));95 void wait(cond_lock & this) __attribute__((deprecated("use concurrency/locks.hfa instead"))); 96 96 97 97 forall(L & | is_lock(L)) 98 void wait(cond ition_variable& this, L & l) __attribute__((deprecated("use concurrency/locks.hfa instead")));98 void wait(cond_lock & this, L & l) __attribute__((deprecated("use concurrency/locks.hfa instead"))); 99 99 100 100 //----------------------------------------------------------------------------- -
libcfa/src/iostream.hfa
r7ca6bf1 r1dec8f3 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon May 12 17:29:29202513 // Update Count : 7 6912 // Last Modified On : Sat Sep 13 16:10:27 2025 13 // Update Count : 771 14 14 // 15 15
Note:
See TracChangeset
for help on using the changeset viewer.