+               /** Atomically determines if the specified ring buffer contains any free space. This should
+                *  be tested before storing data to the buffer, to ensure that no data is lost due to a
+                *  buffer overrun.
+                *
+                *  \param[in,out] Buffer  Pointer to a ring buffer structure to insert into
+                *
+                *  \return Boolean true if the buffer contains no free space, false otherwise
+                */              
+               static inline bool RingBuffer_IsFull(RingBuff_t* const Buffer)
+               {
+                       return (RingBuffer_GetCount(Buffer) == BUFFER_SIZE);
+               }
+
+               /** Atomically determines if the specified ring buffer contains any data. This should
+                *  be tested before removing data from the buffer, to ensure that the buffer does not
+                *  underflow.
+                *
+                *  If the data is to be removed in a loop, store the total number of bytes stored in the
+                *  buffer (via a call to the \ref RingBuffer_GetCount() function) in a temporary variable
+                *  to reduce the time spent in atomicity locks.
+                *
+                *  \param[in,out] Buffer  Pointer to a ring buffer structure to insert into
+                *
+                *  \return Boolean true if the buffer contains no free space, false otherwise
+                */              
+               static inline bool RingBuffer_IsEmpty(RingBuff_t* const Buffer)
+               {
+                       return (RingBuffer_GetCount(Buffer) == 0);
+               }
+