/**************************************************************************/
/* */
/* This file is part of Frama-C. */
/* */
/* Copyright (C) 2007-2008 */
/* CEA (Commissariat à l'Énergie Atomique) */
/* */
/* you can redistribute it and/or modify it under the terms of the GNU */
/* Lesser General Public License as published by the Free Software */
/* Foundation, version 2.1. */
/* */
/* It is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU Lesser General Public License for more details. */
/* */
/* See the GNU Lesser General Public License version 2.1 */
/* for more details (enclosed in the file licenses/LGPLv2.1). */
/* */
/**************************************************************************/
/* $Id: builtin.h,v 1.16 2008/06/26 07:46:00 uid568 Exp $ */
#ifndef Frama_C_BUILTIN
#define Frama_C_BUILTIN
#include "libc.h"
/*@ assigns \result \from a, b;
*/
int Frama_C_nondet(int a, int b);
/*@ assigns \result \from a, b;
*/
void *Frama_C_nondet_ptr(void *a, void *b);
/*@ assigns \result \from min, max;
*/
int Frama_C_interval(int min, int max);
/*@ assigns \result \from min, max;
*/
float Frama_C_float_interval(float min, float max);
/*@
assigns ((char *)dest)[0] \from ((char *)src)[0];
// supported, but not really treated...
// assigns ((char *)dest)[0..n-1] \from ((char *)src)[0..n-1];
*/
void Frama_C_memcpy(void *dest, const void *src, unsigned long n);
/*@
assigns \empty;
*/
void Frama_C_abort(void) __attribute__ ((noreturn));
void Frama_C_show_each_warning(const char*);
size_t Frama_C_offset(const void*);
#endif