blob: 701ffa0d199aa9ad991140965c230f72fc986545 [file] [log] [blame]
/* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* Charmonizer/Probe/Integers.h -- info about integer types and sizes.
*
* One or the other of these will be defined, depending on whether the
* processor is big-endian or little-endian.
*
* BIG_END
* LITTLE_END
*
* These will always be defined:
*
* SIZEOF_CHAR
* SIZEOF_SHORT
* SIZEOF_INT
* SIZEOF_LONG
* SIZEOF_PTR
*
* If long longs are available these symbols will be defined:
*
* HAS_LONG_LONG
* SIZEOF_LONG_LONG
*
* Similarly, with the __int64 type (the sizeof is included for completeness):
*
* HAS___INT64
* SIZEOF___INT64
*
* If the inttypes.h or stdint.h header files are available, these may be
* defined:
*
* HAS_INTTYPES_H
* HAS_STDINT_H
*
* If stdint.h is is available, it will be pound-included in the configuration
* header. If it is not, the following typedefs will be defined if possible:
*
* int8_t
* int16_t
* int32_t
* int64_t
* uint8_t
* uint16_t
* uint32_t
* uint64_t
*
* The following typedefs will be created if a suitable integer type exists,
* as will most often be the case. However, if for example a char is 64 bits
* (as on certain Crays), no 8-bit types will be defined, or if no 64-bit
* integer type is available, no 64-bit types will be defined, etc.
*
* bool_t
* i8_t
* u8_t
* i16_t
* u16_t
* i32_t
* u32_t
* i64_t
* u64_t
*
* Availability of the preceding integer typedefs is indicated by which of
* these are defined:
*
* HAS_I8_T
* HAS_I16_T
* HAS_I32_T
* HAS_I64_T
*
* Maximums will be defined for all available integer types (save bool_t), and
* minimums for all available signed types.
*
* I8_MAX
* U8_MAX
* I16_MAX
* U16_MAX
* I32_MAX
* U32_MAX
* I64_MAX
* U64_MAX
* I8_MIN
* I16_MIN
* I32_MIN
* I64_MIN
*
* If 64-bit integers are available, this macro will promote pointers to i64_t
* safely.
*
* PTR_TO_I64(ptr)
*
* If 64-bit integers are available, these macros will expand to the printf
* conversion specification for signed and unsigned versions (most commonly
* "lld" and "llu").
*
* I64P
* U64P
*
* 32-bit and 64-bit literals can be spec'd via these macros, which append the
* appropriate postfix:
*
* I32_C(n)
* U32_C(n)
* I64_C(n)
* U64_C(n)
*
* These symbols will be defined if they are not already:
*
* true
* false
*/
#ifndef H_CHAZ_INTEGERS
#define H_CHAZ_INTEGERS
#ifdef __cplusplus
extern "C" {
#endif
#include <stdio.h>
/* Run the Integers module.
*/
void chaz_Integers_run(void);
#ifdef CHAZ_USE_SHORT_NAMES
#define Integers_run chaz_Integers_run
#endif
#ifdef __cplusplus
}
#endif
#endif /* H_CHAZ_INTEGERS */