/*
 * Copyright 2010 Trident Microsystems (Far East) Ltd. All rights reserved.
 * All prior copyright rights in this work and the accompanying software
 * products transferred to Trident Microsystems (Far East) Ltd. by written
 * agreement.
 */
/*****************************************************************************/
/* Copyright (c) 2010 NXP B.V.  All rights are reserved.                     */
/*                                                                           */
/* Redistribution and use in source and binary forms, with or without        */
/* modification, are permitted provided that the following conditions        */
/* are met:                                                                  */
/*                                                                           */
/* Redistributions of source code must retain the above copyright            */
/* notice, this list of conditions and the following disclaimer.             */
/*                                                                           */
/* Redistributions in binary form must reproduce the above copyright         */
/* notice, this list of conditions and the following disclaimer in the       */
/* documentation and/or other materials provided with the distribution.      */
/*                                                                           */
/* Neither the name of NXP nor the names of its                              */
/* contributors may be used to endorse or promote products derived from      */
/* this software without specific prior written permission.                  */
/*                                                                           */
/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS       */
/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT         */
/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR     */
/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT      */
/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,     */
/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT          */
/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,     */
/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     */
/* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT       */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE         */
/* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH          */
/* DAMAGE.                                                                   */
/*                                                                           */
/*****************************************************************************/
/**
    @file   qac_project_forceinclude.h
    @brief  Additional contents for a QAC forceinclude header file.

@b  Component:  none

Additional contents for a QAC forceinclude header file.
Mainly used for:
- adding typedefs that QAC needs to know about, which are inbuilt in the compiler.
- adding global QAC pragmas that we can't/shouldn't put in the source code itself.

Rev Date        Author      Comments
--------------------------------------------------------------------------------
  1 20070314    batelaan    Initial
  2 20070314    batelaan    Add copy_from_user/copy_to_user
  3 20070326    batelaan    Add QAC macro.
  4 20070926    barnish     renamed & added multiple inclusion protection
  5 20080208    batelaan    Update file copyright/license text
  6 20081016    batelaan    Adding pragma and rule suppressions for DirectFB.
  7 20090114    batelaan    Update copyright header
*/

#ifndef QAC_PROJECT_FORCEINCLUDE_H
#define QAC_PROJECT_FORCEINCLUDE_H

/** Indicates that QAC is analysing the source code. */
#define QAC 1

#ifdef linux

/*
  602 - The identifier '%s' is reserved for use by the library.
  1021 - Statement in expression is not valid ISO, treated as an extension.
  3112 - This statement has no side-effect - it can be removed.
*/
#pragma PRQA_MACRO_MESSAGES_OFF "copy_from_user",602,1021,3112
#pragma PRQA_MACRO_MESSAGES_OFF "copy_to_user",602,1021,3112

#ifdef MODULE
/* These prevent lots of useless messages about Linux module-related definitions. */
#pragma PRQA_MACRO_MESSAGES_OFF "module_init"
#pragma PRQA_MACRO_MESSAGES_OFF "module_exit"
#pragma PRQA_MACRO_MESSAGES_OFF "module_param"
#pragma PRQA_MACRO_MESSAGES_OFF "module_param_named"
#pragma PRQA_MACRO_MESSAGES_OFF "module_param_string"
#pragma PRQA_MACRO_MESSAGES_OFF "module_param_array"
#pragma PRQA_MACRO_MESSAGES_OFF "module_param_array_named"
#pragma PRQA_MACRO_MESSAGES_OFF "MODULE_AUTHOR"
#pragma PRQA_MACRO_MESSAGES_OFF "MODULE_LICENSE"
#pragma PRQA_MACRO_MESSAGES_OFF "MODULE_ALIAS"
#pragma PRQA_MACRO_MESSAGES_OFF "MODULE_INFO"
#pragma PRQA_MACRO_MESSAGES_OFF "MODULE_DESCRIPTION"
#pragma PRQA_MACRO_MESSAGES_OFF "MODULE_PARM_DESC"
#pragma PRQA_MACRO_MESSAGES_OFF "MODULE_DEVICE_TABLE"
#pragma PRQA_MACRO_MESSAGES_OFF "MODULE_VERSION"
#pragma PRQA_MACRO_MESSAGES_OFF "MODULE_FIRMWARE"
#endif
#endif

/* DirectFB related message suppression. */
#pragma PRQA_NO_RETURN direct_assertion
#pragma PRQA_NO_RETURN direct_assumption

/* Suppress these kind of warnings:
   238:      D_MAGIC_ASSERT( pnxdraw, phStbDFB_PNXDraw_t );
           ^
ERROR: COMPLIANCE: Right operand of shift operator is greater than or equal to the width of the underlying type. - Check rule QL1:MISRA.12.8
(At line: 238, column: 5, in file /home/batelaan/stb225/stb225-batelaan/stb225/src/directfb/comps/phStbDFB/src/phStbDFB_2d.c)
*/
#pragma PRQA_MACRO_MESSAGES_OFF "D_MAGIC",238
#pragma PRQA_MACRO_MESSAGES_OFF "D_MAGIC_SET",499,2214,3201,3355,3356,3359,3393,4130
#pragma PRQA_MACRO_MESSAGES_OFF "D_MAGIC_ASSERT",499,2214,3393,4130
#pragma PRQA_MACRO_MESSAGES_OFF "D_MAGIC_CLEAR",2214,3201,3355,3356,3359
#pragma PRQA_MACRO_MESSAGES_OFF "D_ASSERT",2214

#endif /* QAC_PROJECT_FORCEINCLUDE_H - Do not add anything below this line */
