text: 
  /* IO definitions (access restrictions to peripheral registers) */
  #ifdef __cplusplus
    #define   __I     volatile             /*!< \brief Defines 'read only' permissions */
  #else
    #define   __I     volatile const       /*!< \brief Defines 'read only' permissions */
  #endif
  #define     __O     volatile             /*!< \brief Defines 'write only' permissions */
  #define     __IO    volatile             /*!< \brief Defines 'read / write' permissions */
  
  /* following defines should be used for structure members */
  #define     __IM     volatile const      /*!< \brief Defines 'read only' structure member permissions */
  #define     __OM     volatile            /*!< \brief Defines 'write only' structure member permissions */
  #define     __IOM    volatile            /*!< \brief Defines 'read / write' structure member permissions */
  #define RESERVED(N, T) T RESERVED##N;    // placeholder struct members used for "reserved" areas
  