Add missing header.
[bertos.git] / compiler.h
index 3eb3f6a6ea4a76c28dcae08714d616adaab35444..3f2d84848f06c5e94a2e36d7f0e6e3e9d2f050f4 100755 (executable)
 
 /*#*
  *#* $Log$
+ *#* Revision 1.41  2005/01/22 04:19:22  bernie
+ *#* MTIME_INFINITE: New constant.
+ *#*
+ *#* Revision 1.40  2005/01/20 18:46:04  aleph
+ *#* Add progmem datatypes; PSTR() definition.
+ *#*
+ *#* Revision 1.39  2005/01/08 08:49:39  bernie
+ *#* Define PROGMEM on AVR only when not including pgmspace.h.
+ *#*
  *#* Revision 1.38  2004/12/31 16:41:52  bernie
  *#* PROGMEM: Define to nothing for non-Harvard processors.
  *#*
                        #define PGM_READ_CHAR(s) pgm_read_byte(s)
                        #define PGM_FUNC(x) x ## _P
                        #define PGM_ATTR  PROGMEM
+               #else
+                       /* We still need this for prototypes */
+                       #define PROGMEM  __attribute__((__progmem__))
+                       #define PSTR(s) ({static char __c[] PROGMEM = (s); __c;})
                #endif
-               #define PROGMEM  __attribute__((__progmem__))
 
        #endif
 
        #define COMPILER_TYPEOF 1
        #define COMPILER_STATEMENT_EXPRESSIONS 1
 
+       #define typeof __typeof__
+
        #include <stdint.h>
        #include <stddef.h>
        #include <stdbool.h>
        #include <stdint.h>
 #endif
 
+/*!
+ * \name Types for variables stored in program memory (harvard processors).
+ * \{
+ */
+typedef PROGMEM int8_t pgm_int8_t;
+typedef PROGMEM uint8_t pgm_uint8_t;
+typedef PROGMEM int16_t pgm_int16_t;
+typedef PROGMEM uint16_t pgm_uint16_t;
+typedef PROGMEM int32_t pgm_int32_t;
+typedef PROGMEM uint32_t pgm_uint32_t;
+/*\}*/
 
 #if CPU_AVR_ATMEGA8
        /*
        typedef int16_t utime_t;  /*!< Type for time expressed in microseconds. */
        #define SIZEOF_MTIME_T (16 / CPU_BITS_PER_CHAR)
        #define SIZEOF_UTIME_T (16 / CPU_BITS_PER_CHAR)
+       #define MTIME_INFINITE 0x7FFFL
 #else
        typedef int32_t mtime_t;  /*!< Type for time expressed in milliseconds. */
        typedef int32_t utime_t;  /*!< Type for time expressed in microseconds. */
        #define SIZEOF_MTIME_T (32 / CPU_BITS_PER_CHAR)
        #define SIZEOF_UTIME_T (32 / CPU_BITS_PER_CHAR)
+       #define MTIME_INFINITE 0x7FFFFFFFL
 #endif
 
 /*! Bulk storage large enough for both pointers or integers. */