Variable forcing now uses limited list and buffer instead of systematical instance tree traversal and in-tree "fvalue" to keep track of forced value for pointed variables (external, located). Pointer swapping is performed when forcing externals and located, with backup being restored when forcing is reset. Match Beremiz commit 93ad018fb602.
/*
* (c) 2000 Jiri Baum
* Mario de Sousa
*
* Offered to the public under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program 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 General
* Public License for more details.
*
* This code is made available on the understanding that it will not be
* used in safety-critical situations without a full and competent review.
*/
#ifndef __PLC_TYPES_H
#define __PLC_TYPES_H
#include <limits.h>
#include <float.h> /* some limits related to floats are located here (?) */
/*
* This will need to be conditional on the arquitecture or something.
* Anyone know where we can snarf the relevant magic easily?
*/
typedef double f64; /* 64-bit floating point */
typedef float f32; /* 32-bit floating point */
typedef unsigned long long int u64; /* 64-bit unsigned integer */
typedef long long int i64; /* 64-bit signed integer */
typedef unsigned int u32; /* 32-bit unsigned integer */
typedef int i32; /* 32-bit signed integer */
typedef unsigned short int u16; /* 16-bit unsigned integer */
typedef short int i16; /* 16-bit signed integer */
typedef unsigned char u8; /* 8-bit unsigned integer */
typedef signed char i8; /* 8-bit signed integer */
/* some platforms seem to be missing <float.h> with the definition of FLT_MAX */
#ifndef FLT_MAX
/* this is the minimum value guaranteed by ANSI C++ */
/* does anybody know the minimum value guaranteed for ANSI C ? */
#define FLT_MAX 1E+37
#endif
#ifndef FLT_MIN
/* this is the minimum value guaranteed by ANSI C++ */
/* does anybody know the minimum value guaranteed for ANSI C ? */
#define FLT_MIN 1E-37
#endif
#define f32_MAX FLT_MAX
#define f32_MIN FLT_MIN
#define u32_MAX UINT_MAX
#define u32_MIN 0
#define i32_MAX INT_MAX
#define i32_MIN INT_MIN
#define u16_MAX USHRT_MAX
#define u16_MIN 0
#define i16_MAX SHRT_MAX
#define i16_MIN SHRT_MIN
#define u8_MAX UCHAR_MAX
#define u8_MIN 0
#define i8_MAX SCHAR_MAX
#define i8_MIN SCHAR_MIN
#endif /* __PLC_TYPES_H */