/*             ----> DO NOT REMOVE THE FOLLOWING NOTICE <----

                   Copyright (c) 2014-2015 Datalight, Inc.
                       All Rights Reserved Worldwide.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; use version 2 of the License.

    This program is distributed in the hope that it will be useful,
    but "AS-IS," WITHOUT ANY WARRANTY; without even the implied warranty
    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
/*  Businesses and individuals that for commercial or other reasons cannot
    comply with the terms of the GPLv2 license may obtain a commercial license
    before incorporating Reliance Edge into proprietary software for
    distribution in any form.  Visit http://www.datalight.com/reliance-edge for
    more information.
*/
/** @file
    @brief Compile-time validity checks for the REDCONF macros.
*/
#ifndef REDCONFIGCHK_H
#define REDCONFIGCHK_H

#ifndef REDCONF_READ_ONLY
  #error "Configuration error: REDCONF_READ_ONLY must be defined."
#endif
#ifndef REDCONF_API_POSIX
  #error "Configuration error: REDCONF_API_POSIX must be defined."
#endif
#ifndef REDCONF_API_FSE
  #error "Configuration error: REDCONF_API_FSE must be defined."
#endif

#if REDCONF_API_POSIX == 1
  #ifndef REDCONF_API_POSIX_FORMAT
    #error "Configuration error: REDCONF_API_POSIX_FORMAT must be defined."
  #endif
  #ifndef REDCONF_API_POSIX_UNLINK
    #error "Configuration error: REDCONF_API_POSIX_UNLINK must be defined."
  #endif
  #ifndef REDCONF_API_POSIX_MKDIR
    #error "Configuration error: REDCONF_API_POSIX_MKDIR must be defined."
  #endif
  #ifndef REDCONF_API_POSIX_RMDIR
    #error "Configuration error: REDCONF_API_POSIX_RMDIR must be defined."
  #endif
  #ifndef REDCONF_API_POSIX_RENAME
    #error "Configuration error: REDCONF_API_POSIX_RENAME must be defined."
  #endif
  #ifndef REDCONF_API_POSIX_LINK
    #error "Configuration error: REDCONF_API_POSIX_LINK must be defined."
  #endif
  #ifndef REDCONF_API_POSIX_FTRUNCATE
    #error "Configuration error: REDCONF_API_POSIX_FTRUNCATE must be defined."
  #endif
  #ifndef REDCONF_API_POSIX_READDIR
    #error "Configuration error: REDCONF_API_POSIX_READDIR must be defined."
  #endif
  #ifndef REDCONF_NAME_MAX
    #error "Configuration error: REDCONF_NAME_MAX must be defined."
  #endif
  #ifndef REDCONF_PATH_SEPARATOR
    #error "Configuration error: REDCONF_PATH_SEPARATOR must be defined."
  #endif
  #ifndef REDCONF_RENAME_ATOMIC
    #error "Configuration error: REDCONF_RENAME_ATOMIC must be defined."
  #endif
  #ifndef REDCONF_HANDLE_COUNT
    #error "Configuration error: REDCONF_HANDLE_COUNT must be defined."
  #endif
#endif
#if REDCONF_API_FSE == 1
  #ifndef REDCONF_API_FSE_FORMAT
    #error "Configuration error: REDCONF_API_FSE_FORMAT must be defined."
  #endif
  #ifndef REDCONF_API_FSE_TRUNCATE
    #error "Configuration error: REDCONF_API_FSE_TRUNCATE must be defined."
  #endif
  #ifndef REDCONF_API_FSE_TRANSMASKSET
    #error "Configuration error: REDCONF_API_FSE_TRANSMASKSET must be defined."
  #endif
  #ifndef REDCONF_API_FSE_TRANSMASKGET
    #error "Configuration error: REDCONF_API_FSE_TRANSMASKGET must be defined."
  #endif
#endif

#ifndef REDCONF_TASK_COUNT
  #error "Configuration error: REDCONF_TASK_COUNT must be defined."
#endif
#ifndef REDCONF_ENDIAN_BIG
  #error "Configuration error: REDCONF_ENDIAN_BIG must be defined."
#endif
#ifndef REDCONF_ALIGNMENT_SIZE
  #error "Configuration error: REDCONF_ALIGNMENT_SIZE must be defined."
#endif
#ifndef REDCONF_CRC_ALGORITHM
  #error "Configuration error: REDCONF_CRC_ALGORITHM must be defined."
#endif
#ifndef REDCONF_INODE_TIMESTAMPS
  #error "Configuration error: REDCONF_INODE_TIMESTAMPS must be defined."
#endif
#ifndef REDCONF_ATIME
  #error "Configuration error: REDCONF_ATIME must be defined."
#endif
#ifndef REDCONF_DIRECT_POINTERS
  #error "Configuration error: REDCONF_DIRECT_POINTERS must be defined."
#endif
#ifndef REDCONF_INDIRECT_POINTERS
  #error "Configuration error: REDCONF_INDIRECT_POINTERS must be defined."
#endif
#ifndef REDCONF_INODE_BLOCKS
  #error "Configuration error: REDCONF_INODE_BLOCKS must be defined."
#endif
#ifndef REDCONF_IMAP_EXTERNAL
  #error "Configuration error: REDCONF_IMAP_EXTERNAL must be defined."
#endif
#ifndef REDCONF_IMAP_INLINE
  #error "Configuration error: REDCONF_IMAP_INLINE must be defined."
#endif
#ifndef REDCONF_OUTPUT
  #error "Configuration error: REDCONF_OUTPUT must be defined."
#endif
#ifndef REDCONF_ASSERTS
  #error "Configuration error: REDCONF_ASSERTS must be defined."
#endif
#ifndef REDCONF_TRANSACT_DEFAULT
  #error "Configuration error: REDCONF_TRANSACT_DEFAULT must be defined."
#endif
#ifndef REDCONF_BUFFER_COUNT
  #error "Configuration error: REDCONF_BUFFER_COUNT must be defined."
#endif
#ifndef REDCONF_BLOCK_SIZE
  #error "Configuration error: REDCONF_BLOCK_SIZE must be defined."
#endif
#ifndef REDCONF_VOLUME_COUNT
  #error "Configuration error: REDCONF_VOLUME_COUNT must be defined."
#endif
#ifndef REDCONF_IMAGE_BUILDER
  #error "Configuration error: REDCONF_IMAGE_BUILDER must be defined."
#endif
#ifndef REDCONF_CHECKER
  #error "Configuration error: REDCONF_CHECKER must be defined."
#endif


#if (REDCONF_READ_ONLY != 0) && (REDCONF_READ_ONLY != 1)
  #error "Configuration error: REDCONF_READ_ONLY must be either 0 or 1"
#endif

#if (REDCONF_API_POSIX != 0) && (REDCONF_API_POSIX != 1)
  #error "Configuration error: REDCONF_API_POSIX must be either 0 or 1."
#endif
#if (REDCONF_API_FSE != 0) && (REDCONF_API_FSE != 1)
  #error "Configuration error: REDCONF_API_FSE must be either 0 or 1."
#endif

#if (REDCONF_API_FSE == 0) && (REDCONF_API_POSIX == 0)
  #error "Configuration error: either REDCONF_API_FSE or REDCONF_API_POSIX must be set to 1."
#endif

#if REDCONF_API_POSIX == 1
  #if REDCONF_API_FSE != 0
    #error "Configuration error: REDCONF_API_FSE must be 0 if REDCONF_API_POSIX is 1"
  #endif

  #if (REDCONF_API_POSIX_FORMAT != 0) && (REDCONF_API_POSIX_FORMAT != 1)
    #error "Configuration error: REDCONF_API_POSIX_FORMAT must be either 0 or 1."
  #endif

  #if (REDCONF_API_POSIX_UNLINK != 0) && (REDCONF_API_POSIX_UNLINK != 1)
    #error "Configuration error: REDCONF_API_POSIX_UNLINK must be either 0 or 1."
  #endif

  #if (REDCONF_API_POSIX_MKDIR != 0) && (REDCONF_API_POSIX_MKDIR != 1)
    #error "Configuration error: REDCONF_API_POSIX_MKDIR must be either 0 or 1."
  #endif

  #if (REDCONF_API_POSIX_RMDIR != 0) && (REDCONF_API_POSIX_RMDIR != 1)
    #error "Configuration error: REDCONF_API_POSIX_RMDIR must be either 0 or 1."
  #endif

  #if (REDCONF_API_POSIX_RENAME != 0) && (REDCONF_API_POSIX_RENAME != 1)
    #error "Configuration error: REDCONF_API_POSIX_RENAME must be either 0 or 1."
  #endif

  #if (REDCONF_API_POSIX_LINK != 0) && (REDCONF_API_POSIX_LINK != 1)
    #error "Configuration error: REDCONF_API_POSIX_LINK must be either 0 or 1."
  #endif

  #if (REDCONF_API_POSIX_FTRUNCATE != 0) && (REDCONF_API_POSIX_FTRUNCATE != 1)
    #error "Configuration error: REDCONF_API_POSIX_FTRUNCATE must be either 0 or 1."
  #endif

  #if (REDCONF_API_POSIX_READDIR != 0) && (REDCONF_API_POSIX_READDIR != 1)
    #error "Configuration error: REDCONF_API_POSIX_READDIR must be either 0 or 1."
  #endif

  #if (REDCONF_NAME_MAX < 1U) || (REDCONF_NAME_MAX > (REDCONF_BLOCK_SIZE - 4U))
    #error "Configuration error: invalid value of REDCONF_NAME_MAX"
  #endif

  #if (REDCONF_PATH_SEPARATOR < 1) || (REDCONF_PATH_SEPARATOR > 127)
    #error "Configuration error: invalid value of REDCONF_PATH_SEPARATOR"
  #endif

  #if (REDCONF_RENAME_ATOMIC != 0) && (REDCONF_RENAME_ATOMIC != 1)
    #error "Configuration error: REDCONF_RENAME_ATOMIC must be either 0 or 1."
  #endif

  #if (REDCONF_HANDLE_COUNT < 1U) || (REDCONF_HANDLE_COUNT > 4096U)
    #error "Configuration error: invalid value of REDCONF_HANDLE_COUNT"
  #endif
#endif
#if REDCONF_API_FSE == 1
  #if (REDCONF_API_FSE_FORMAT != 0) && (REDCONF_API_FSE_FORMAT != 1)
    #error "Configuration error: REDCONF_API_FSE_FORMAT must be either 0 or 1."
  #endif

  #if (REDCONF_API_FSE_TRUNCATE != 0) && (REDCONF_API_FSE_TRUNCATE != 1)
    #error "Configuration error: REDCONF_API_FSE_TRUNCATE must be either 0 or 1."
  #endif

  #if (REDCONF_API_FSE_TRANSMASKSET != 0) && (REDCONF_API_FSE_TRANSMASKSET != 1)
    #error "Configuration error: REDCONF_API_FSE_TRANSMASKSET must be either 0 or 1."
  #endif

  #if (REDCONF_API_FSE_TRANSMASKGET != 0) && (REDCONF_API_FSE_TRANSMASKGET != 1)
    #error "Configuration error: REDCONF_API_FSE_TRANSMASKGET must be either 0 or 1."
  #endif
#endif

#if REDCONF_TASK_COUNT < 1U
  #error "Configuration error: invalid value of REDCONF_TASK_COUNT"
#endif

#if (REDCONF_ENDIAN_BIG != 0) && (REDCONF_ENDIAN_BIG != 1)
  #error "Configuration error: REDCONF_ENDIAN_BIG must be either 0 or 1."
#endif

#if (REDCONF_ALIGNMENT_SIZE != 1U) && (REDCONF_ALIGNMENT_SIZE != 2U) && (REDCONF_ALIGNMENT_SIZE != 4U) && (REDCONF_ALIGNMENT_SIZE != 8U)
  #error "Configuration error: invalid value REDCONF_ALIGNMENT_SIZE"
#endif

/*  REDCONF_CRC_ALGORITHM checked in crc.c
*/

#if (REDCONF_INODE_TIMESTAMPS != 0) && (REDCONF_INODE_TIMESTAMPS != 1)
  #error "Configuration error: REDCONF_INODE_TIMESTAMPS must be either 0 or 1."
#endif

#if (REDCONF_ATIME != 0) && (REDCONF_ATIME != 1)
  #error "Configuration error: REDCONF_ATIME must be either 0 or 1."
#endif

#if (REDCONF_INODE_TIMESTAMPS == 0) && (REDCONF_ATIME == 1)
  #error "Configuration error: REDCONF_ATIME must be 0 when REDCONF_INODE_TIMESTAMPS is 0."
#endif

/*  REDCONF_DIRECT_POINTERS and REDCONF_INDIRECT_POINTERS checked in rednodes.h
*/

#if (REDCONF_INODE_BLOCKS != 0) && (REDCONF_INODE_BLOCKS != 1)
  #error "Configuration error: REDCONF_INODE_BLOCKS must be either 0 or 1."
#endif

/*  Further validity checking of imap specs done in RelCoreInit()
*/
#if (REDCONF_IMAP_EXTERNAL != 0) && (REDCONF_IMAP_EXTERNAL != 1)
  #error "Configuration error: REDCONF_IMAP_EXTERNAL must be either 0 or 1."
#endif
#if (REDCONF_IMAP_INLINE != 0) && (REDCONF_IMAP_INLINE != 1)
  #error "Configuration error: REDCONF_IMAP_INLINE must be either 0 or 1."
#endif
#if (REDCONF_IMAP_INLINE == 0) && (REDCONF_IMAP_EXTERNAL == 0)
  #error "Configuration error: At least one of REDCONF_IMAP_INLINE and REDCONF_IMAP_EXTERNAL must be set"
#endif

#if (REDCONF_OUTPUT != 0) && (REDCONF_OUTPUT != 1)
  #error "Configuration error: REDCONF_OUTPUT must be either 0 or 1."
#endif

#if (REDCONF_ASSERTS != 0) && (REDCONF_ASSERTS != 1)
  #error "Configuration error: REDCONF_ASSERTS must be either 0 or 1."
#endif

/*  REDCONF_BLOCK_SIZE checked in redmacs.h
*/

#if (REDCONF_VOLUME_COUNT < 1U) || (REDCONF_VOLUME_COUNT > 255U)
  #error "REDCONF_VOLUME_COUNT must be an integer between 1 and 255"
#endif

/*  REDCONF_BUFFER_COUNT lower limit checked in buffer.c
*/
#if REDCONF_BUFFER_COUNT > 255U
  #error "REDCONF_BUFFER_COUNT cannot be greater than 255"
#endif

#if (REDCONF_IMAGE_BUILDER != 0) && (REDCONF_IMAGE_BUILDER != 1)
  #error "Configuration error: REDCONF_IMAGE_BUILDER must be either 0 or 1."
#endif

#if (REDCONF_CHECKER != 0) && (REDCONF_CHECKER != 1)
  #error "Configuration error: REDCONF_CHECKER must be either 0 or 1."
#endif


#endif


