+#ifndef ANNOTS_STAGE1_INCLUDED
+#define ANNOTS_STAGE1_INCLUDED
+#include <stddef.h>
+
+#define __DEPUTY_UNUSED__ __attribute__((unused))
+
+// define away two obsolete annotations
+#define BOUND(x,y)
+#define SINGLE
+
#if NESC >= 130
-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") { };
+struct @bnd @deputy_scope() @macro("__DEPUTY_BND") { void *lo, *hi; };
+struct @bnd_nok @deputy_scope() @macro("__DEPUTY_BND_NOK") { void *lo, *hi; };
+struct @count @deputy_scope() @macro("__DEPUTY_COUNT") { int n; };
+struct @count_nok @deputy_scope() @macro("__DEPUTY_COUNT_NOK") { int n; };
+struct @one @deputy_scope() @macro("__DEPUTY_ONE") { };
+struct @one_nok @deputy_scope() @macro("__DEPUTY_ONE_NOK") { };
+struct @dmemset @deputy_scope() @macro("__DEPUTY_DMEMSET") {void *p; int what; size_t sz; };
+struct @dmemcpy @deputy_scope() @macro("__DEPUTY_DMEMCPY") {void *dst; void *src; size_t sz; };
-#define COUNT(x) @count(x)
-#define BOUND(x,y) @bound(x,y)
-#define SINGLE @single()
#define NONNULL @nonnull()
+#define BND(x,y) @bnd(x,y)
+#define BND_NOK(x,y) @bnd_nok(x,y)
+#define COUNT(x) @count(x)
+#define COUNT_NOK(x) @count_nok(x)
+#define ONE @one()
+#define ONE_NOK @one_nok()
+#define DMEMSET(x,y,z) @dmemset(x,y,z)
+#define DMEMCPY(x,y,z) @dmemcpy(x,y,z)
+#define TRUSTEDBLOCK @unsafe()
#else // NESC < 130
#error Safe TinyOS requires nesC >= 1.3.0
#endif
+#define NONNULL
+#define BND(x,y)
+#define BND_NOK(x,y)
+#define COUNT(x)
+#define COUNT_NOK(x)
+#define ONE
+#define ONE_NOK
+#define DMEMSET(x,y,z)
+#define DMEMCPY(x,y,z)
+#define TRUSTEDBLOCK
+
#endif // NESC version check
#ifdef SAFE_TINYOS
#define __DEPUTY_COPYTYPE __attribute__((copytype))
#else
#define TCAST(__type,__expr) ((__type)(__expr))
+#endif
+
+#ifdef SAFE_TINYOS
+void * (DMEMSET(1, 2, 3) memset)(void*, int, size_t);
+void * (DMEMCPY(1, 2, 3) memcpy)(void*, const void*, size_t);
#endif
+#endif