#define __DEPUTY_BOUND(__lo,__hi) __attribute__((bounds((__lo),(__hi))))
#define __DEPUTY_COUNT(__n) __DEPUTY_BOUND(__this, __this + (__n))
#define __DEPUTY_SINGLE(__n) __DEPUTY_COUNT(1)
-#define __DEPUTY_TRUSTED_CAST(__type,__expr) ((__type)((void * __DEPUTY_TRUSTED __DEPUTY_COPYTYPE)(__expr)))
-#define TC(__type,__expr) __DEPUTY_TRUSTED_CAST(__type,__expr)
-
-#define __DEPUTY_NONNULL __attribute__((nonnull))
-#define __DEPUTY_TRUSTED __attribute__((trusted))
-#define __DEPUTY_COPYTYPE __attribute__((copytype))
+#define __DEPUTY_NONNULL(__n) __attribute__((nonnull))
#define __DEPUTY_TRUSTEDBLOCK __blockattribute__((trusted))
#define __DEPUTY_BOUND(__lo,__hi)
#define __DEPUTY_COUNT(__n)
#define __DEPUTY_SINGLE(__n)
-#define __DEPUTY_TRUSTED_CAST(__type,__expr) ((__type)(__expr))
-#define TC(__type,__expr) __DEPUTY_TRUSTED_CAST(__type,__expr)
-
-#define __DEPUTY_NONNULL
-#define __DEPUTY_TRUSTED
-#define __DEPUTY_COPYTYPE
+#define __DEPUTY_NONNULL(__n)
#define __DEPUTY_TRUSTEDBLOCK
struct @count @deputy_scope() @macro("__DEPUTY_COUNT") { int n; };
struct @single @deputy_scope() @macro("__DEPUTY_SINGLE") { };
struct @nonnull @deputy_scope() @macro("__DEPUTY_NONNULL") { };
+
+#define __DEPUTY_TRUSTED __attribute__((trusted))
+#define __DEPUTY_COPYTYPE __attribute__((copytype))
+#define TC(__type,__expr) __DEPUTY_TRUSTED_CAST(__type,__expr)
+#define __DEPUTY_TRUSTED_CAST(__type,__expr) ((__type)((void * __DEPUTY_TRUSTED __DEPUTY_COPYTYPE)(__expr)))
--- /dev/null
+struct @bound @deputy_scope() @macro("__DEPUTY_BOUND") { void *lo, *hi; };
+struct @count @deputy_scope() @macro("__DEPUTY_COUNT") { int n; };
+struct @single @deputy_scope() @macro("__DEPUTY_SINGLE") { };
+struct @nonnull @deputy_scope() @macro("__DEPUTY_NONNULL") { };
+
+#define __DEPUTY_TRUSTED
+#define __DEPUTY_COPYTYPE
+#define TC(__type,__expr) __DEPUTY_TRUSTED_CAST(__type,__expr)
+#define __DEPUTY_TRUSTED_CAST(__type,__expr) ((__type)(__expr))