Commit 396329db authored by Dominik Gabi's avatar Dominik Gabi Committed by facebook-github-bot-4

wrapper for nullable attribute

Reviewed By: yfeldblum

Differential Revision: D2784472

fb-gh-sync-id: 84c7426cc82edabb04c662fa699764ffc0864b7e
parent 6896ff9d
......@@ -29,6 +29,12 @@
#define FOLLY_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x)
#endif
#ifndef __has_extension
#define FOLLY_HAS_EXTENSION(x) 0
#else
#define FOLLY_HAS_EXTENSION(x) __has_extension(x)
#endif
/**
* Fallthrough to indicate that `break` was left out on purpose in a switch
* statement, e.g.
......@@ -48,4 +54,27 @@
#define FOLLY_FALLTHROUGH
#endif
/**
* Nullable indicates that a return value or a parameter may be a `nullptr`,
* e.g.
*
* int* FOLLY_NULLABLE foo(int* a, int* FOLLY_NULLABLE b) {
* if (*a > 0) { // safe dereference
* return nullptr;
* }
* if (*b < 0) { // unsafe dereference
* return *a;
* }
* if (b != nullptr && *b == 1) { // safe checked dereference
* return new int(1);
* }
* return nullptr;
* }
*/
#if FOLLY_HAS_EXTENSION(nullability)
#define FOLLY_NULLABLE _Nullable
#else
#define FOLLY_NULLABLE
#endif
#endif /* FOLLY_BASE_ATTRIBUTES_H_ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment