#ifndef QAC_FI_XC8_H
#define QAC_FI_XC8_H

/* Compilers may use another function within the assert macro to exit the 
 * program. QAC thus does not see an "exit" function and assumes the 
 * function returns, which it does not.
 * The below pragma tells QAC the compiler supplied function does not
 * return.
 */
#pragma PRQA_NO_RETURN _fassert

/* Depending on the code that the compiler maker uses within the assert macro,
 * QAC may issue warnings. It is also possible that when the NDEBUG macro is used
 * to suppress the assertion code, QAC may issue a "no side-effects" warning.
 * To eliminate these, we turn off all warnings for the assert macro.
 */
#pragma PRQA_MACRO_MESSAGES_OFF "assert"


/* Any other items that may be required in a "force-include" file should be placed below. */

#if __XC8_VERSION < 2000
#define __interrupt
#define low_priority
#define high_priority
#else
#define __interrupt _ignore_paren
#endif /* __XC8_VERSION */

#ifndef __STRICT
#if __XC8_VERSION < 2000
#define interrupt __interrupt
#endif

#define bit __bit

#define near __near
#define far __far
#define persistent __persistent
#ifdef _HTC_VER_MAJOR_
#define bank0 __bank0
#define bank1 __bank1
#define bank2 __bank2
#define bank3 __bank3
#endif /* _HTC_VER_MAJOR_ */
#define eeprom __eeprom

#endif /* __STRICT */

#if defined(_HTC_VER_MAJOR_) || defined(__XC8_VERSION)

/* 5.4.8.4 BANK0, BANK1, BANK2 AND BANK3 TYPE QUALIFIERS */
#define __bank0
#define __bank1
#define __bank2
#define __bank3

#endif /* _HTC_VER_MAJOR_||__XC8_VERSION */

#else
#error "Multiple include"
#endif  /* ifndef QAC_FI_XC8_H */

