X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/c18c124eaa464aaaa5549e99e5a70fc9cbb50944..3e170ce000f1506b7b5d2c5c7faec85ceabb573d:/EXTERNAL_HEADERS/corecrypto/cc_macros.h diff --git a/EXTERNAL_HEADERS/corecrypto/cc_macros.h b/EXTERNAL_HEADERS/corecrypto/cc_macros.h new file mode 100644 index 000000000..4d0b0be38 --- /dev/null +++ b/EXTERNAL_HEADERS/corecrypto/cc_macros.h @@ -0,0 +1,80 @@ +/* + * cc_macros.h + * corecrypto + * + * Created on 01/11/2012 + * + * Copyright (c) 2012,2015 Apple Inc. All rights reserved. + * + */ + +#ifndef _CORECRYPTO_CC_MACROS_H_ +#define _CORECRYPTO_CC_MACROS_H_ + +#include + +#ifndef __CC_DEBUG_ASSERT_COMPONENT_NAME_STRING +#define __CC_DEBUG_ASSERT_COMPONENT_NAME_STRING "" +#endif + +#ifndef __CC_DEBUG_ASSERT_PRODUCTION_CODE +#define __CC_DEBUG_ASSERT_PRODUCTION_CODE !CORECRYPTO_DEBUG +#endif + +#ifndef __CC_DEBUG_ASSERT_MESSAGE +#define __CC_DEBUG_ASSERT_MESSAGE(name, assertion, label, message, file, line, value) \ +cc_printf( "CCAssertMacros: %s, %s file: %s, line: %d\n", assertion, (message!=0) ? message : "", file, line); +#endif + +#ifndef cc_require +#if __CC_DEBUG_ASSERT_PRODUCTION_CODE + #define cc_require(assertion, exceptionLabel) \ + do { \ + if ( __builtin_expect(!(assertion), 0) ) { \ + goto exceptionLabel; \ + } \ + } while ( 0 ) +#else + #define cc_require(assertion, exceptionLabel) \ + do { \ + if ( __builtin_expect(!(assertion), 0) ) { \ + __CC_DEBUG_ASSERT_MESSAGE(__CC_DEBUG_ASSERT_COMPONENT_NAME_STRING, \ + #assertion, #exceptionLabel, 0, __FILE__, __LINE__, 0); \ + goto exceptionLabel; \ + } \ + } while ( 0 ) +#endif +#endif + +#ifndef cc_require_action +#if __CC_DEBUG_ASSERT_PRODUCTION_CODE + #define cc_require_action(assertion, exceptionLabel, action) \ + do \ + { \ + if ( __builtin_expect(!(assertion), 0) ) \ + { \ + { \ + action; \ + } \ + goto exceptionLabel; \ + } \ + } while ( 0 ) +#else + #define cc_require_action(assertion, exceptionLabel, action) \ + do \ + { \ + if ( __builtin_expect(!(assertion), 0) ) \ + { \ + __CC_DEBUG_ASSERT_MESSAGE( \ + __CC_DEBUG_ASSERT_COMPONENT_NAME_STRING, \ + #assertion, #exceptionLabel, 0, __FILE__, __LINE__, 0); \ + { \ + action; \ + } \ + goto exceptionLabel; \ + } \ + } while ( 0 ) +#endif +#endif + +#endif /* _CORECRYPTO_CC_MACROS_H_ */