zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

_bounds.h (2156B) - Raw


      1 /*
      2  * Copyright (c) 2024 Apple Inc. All rights reserved.
      3  *
      4  * @APPLE_LICENSE_HEADER_START@
      5  * 
      6  * This file contains Original Code and/or Modifications of Original Code
      7  * as defined in and that are subject to the Apple Public Source License
      8  * Version 2.0 (the 'License'). You may not use this file except in
      9  * compliance with the License. Please obtain a copy of the License at
     10  * http://www.opensource.apple.com/apsl/ and read it before using this
     11  * file.
     12  * 
     13  * The Original Code and all software distributed under the License are
     14  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
     15  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
     16  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
     17  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
     18  * Please see the License for the specific language governing rights and
     19  * limitations under the License.
     20  * 
     21  * @APPLE_LICENSE_HEADER_END@
     22  */
     23 
     24 #ifndef _LIBC_BOUNDS_H_
     25 #define _LIBC_BOUNDS_H_
     26 
     27 #include <sys/cdefs.h>
     28 
     29 #ifdef __LIBC_STAGED_BOUNDS_SAFETY_ATTRIBUTES /* compiler-defined */
     30 
     31 #define _LIBC_COUNT(x)		__counted_by(x)
     32 #define _LIBC_COUNT_OR_NULL(x)	__counted_by_or_null(x)
     33 #define _LIBC_SIZE(x)		__sized_by(x)
     34 #define _LIBC_SIZE_OR_NULL(x)	__sized_by_or_null(x)
     35 #define _LIBC_ENDED_BY(x)	__ended_by(x)
     36 #define _LIBC_SINGLE		__single
     37 #define _LIBC_UNSAFE_INDEXABLE	__unsafe_indexable
     38 #define _LIBC_CSTR		__null_terminated
     39 #define _LIBC_NULL_TERMINATED   __null_terminated
     40 #define _LIBC_FLEX_COUNT(FIELD, INTCOUNT)	__counted_by(FIELD)
     41 
     42 #define _LIBC_SINGLE_BY_DEFAULT()	__ptrcheck_abi_assume_single()
     43 #define _LIBC_PTRCHECK_REPLACED(R)  __ptrcheck_unavailable_r(R)
     44 
     45 #else /* _LIBC_ANNOTATE_BOUNDS */
     46 
     47 #define _LIBC_COUNT(x)
     48 #define _LIBC_COUNT_OR_NULL(x)
     49 #define _LIBC_SIZE(x)
     50 #define _LIBC_SIZE_OR_NULL(x)
     51 #define _LIBC_ENDED_BY(x)
     52 #define _LIBC_SINGLE
     53 #define _LIBC_UNSAFE_INDEXABLE
     54 #define _LIBC_CSTR
     55 #define _LIBC_NULL_TERMINATED
     56 #define _LIBC_FLEX_COUNT(FIELD, INTCOUNT)	(INTCOUNT)
     57 
     58 #define _LIBC_SINGLE_BY_DEFAULT()
     59 #define _LIBC_PTRCHECK_REPLACED(R)
     60 
     61 #endif /* _LIBC_ANNOTATE_BOUNDS */
     62 
     63 #endif /* _LIBC_BOUNDS_H_ */