00001 /* 00002 * TOPPERS Software 00003 * Toyohashi Open Platform for Embedded Real-Time Systems 00004 * 00005 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory 00006 * Toyohashi Univ. of Technology, JAPAN 00007 * Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory 00008 * Graduate School of Information Science, Nagoya Univ., JAPAN 00009 * 00010 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 00011 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 00012 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 00013 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 00014 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 00015 * スコード中に含まれていること. 00016 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 00017 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 00018 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 00019 * の無保証規定を掲載すること. 00020 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 00021 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 00022 * と. 00023 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 00024 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 00025 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 00026 * 報告すること. 00027 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 00028 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 00029 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 00030 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 00031 * 免責すること. 00032 * 00033 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 00034 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 00035 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 00036 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 00037 * の責任を負わない. 00038 * 00039 * @(#) $Id: tool_stddef.h 819 2008-03-18 12:58:50Z hiro $ 00040 */ 00041 00042 /* 00043 * t_stddef.hの開発環境依存部(GCC用) 00044 */ 00045 00046 #ifndef TOPPERS_TOOL_STDDEF_H 00047 #define TOPPERS_TOOL_STDDEF_H 00048 00049 /* 00050 * コンパイラの拡張機能のためのマクロ定義 00051 */ 00052 #ifndef __cplusplus /* C++にはinline がある */ 00053 #if __STDC_VERSION__ < 199901L /* C99にはinline がある */ 00054 #define inline __inline__ /* インライン関数 */ 00055 #endif /* __STDC_VERSION__ < 199901L */ 00056 #endif /* __cplusplus */ 00057 00058 #define Inline static __inline__ /* インライン関数 */ 00059 00060 #ifndef __cplusplus /* C++にはasmがある */ 00061 #define asm __asm__ /* インラインアセンブラ */ 00062 #endif /* __cplusplus */ 00063 00064 #define Asm __asm__ volatile /* インラインアセンブラ(最適化抑止)*/ 00065 00066 #define NoReturn __attribute__((__noreturn__)) 00067 /* リターンしない関数 */ 00068 00069 /* 00070 * 開発環境の標準インクルードファイルの利用 00071 * 00072 * NULLの定義をstddef.hから,INT_MAX,INT_MIN,UINT_MAX,LONG_MAX, 00073 * LONG_MIN,ULONG_MAX,CHAR_BITの定義をlimits.hから取り込む. 00074 * 00075 * C++/EC++では,標準仕様上はこれらのインクルードファイルが用意されて 00076 * いるとは限らないので注意が必要である(ほとんどの開発環境で用意され 00077 * ている). 00078 */ 00079 #ifndef TOPPERS_MACRO_ONLY 00080 #include <stddef.h> 00081 #include <limits.h> 00082 #endif /* TOPPERS_MACRO_ONLY */ 00083 00084 /* 00085 * stdint.hの代用となる定義 00086 * 00087 * 開発環境にstdint.hが用意されておらず,各整数型のサイズがあるパター 00088 * ンに当てはまる場合に,stdint.hの代用となる定義を与える. 00089 * 00090 * TOPPERS_STDINT_TYPE1: char/short/int/long longのビット長がそれぞれ 00091 * 8/16/32/64ビットで,ポインタのビット長がlong 00092 * のビット長と一致する場合 00093 */ 00094 #ifdef TOPPERS_STDINT_TYPE1 00095 00096 /* 00097 * コンパイラ依存のデータ型の定義 00098 */ 00099 #ifndef TOPPERS_MACRO_ONLY 00100 00101 typedef signed char int8_t; /* 符号付き8ビット整数 */ 00102 typedef unsigned char uint8_t; /* 符号無し8ビット整数 */ 00103 00104 typedef signed short int16_t; /* 符号付き16ビット整数 */ 00105 typedef unsigned short uint16_t; /* 符号無し16ビット整数 */ 00106 00107 typedef signed int int32_t; /* 符号付き32ビット整数 */ 00108 typedef unsigned int uint32_t; /* 符号無し32ビット整数 */ 00109 00110 typedef signed long long int64_t; /* 符号付き64ビット整数 */ 00111 typedef unsigned long long uint64_t; /* 符号無し64ビット整数 */ 00112 00113 typedef int8_t int_least8_t; /* 8ビット以上の符号付き整数 */ 00114 typedef uint8_t uint_least8_t; /* 8ビット以上の符号無し整数 */ 00115 00116 typedef long intptr_t; /* ポインタを格納できる符号付き整数 */ 00117 typedef unsigned long uintptr_t; /* ポインタを格納できる符号無し整数 */ 00118 00119 #endif /* TOPPERS_MACRO_ONLY */ 00120 00121 /* 00122 * コンパイラ依存のデータ型の整数定数を作るマクロ 00123 */ 00124 #ifndef INT8_C 00125 #define INT8_C(val) (val) 00126 #endif /* INT8_C */ 00127 00128 #ifndef UINT8_C 00129 #define UINT8_C(val) (val ## U) 00130 #endif /* UINT8_C */ 00131 00132 #ifndef INT16_C 00133 #define INT16_C(val) (val) 00134 #endif /* INT16_C */ 00135 00136 #ifndef UINT16_C 00137 #define UINT16_C(val) (val ## U) 00138 #endif /* UINT16_C */ 00139 00140 #ifndef INT32_C 00141 #define INT32_C(val) (val) 00142 #endif /* INT32_C */ 00143 00144 #ifndef UINT32_C 00145 #define UINT32_C(val) (val ## U) 00146 #endif /* UINT32_C */ 00147 00148 #ifndef INT64_C 00149 #define INT64_C(val) (val ## LL) 00150 #endif /* INT64_C */ 00151 00152 #ifndef UINT64_C 00153 #define UINT64_C(val) (val ## ULL) 00154 #endif /* UINT64_C */ 00155 00156 /* 00157 * コンパイラ依存のデータ型に格納できる最大値と最小値の定義 00158 */ 00159 #define INT8_MAX SCHAR_MAX 00160 #define INT8_MIN SCHAR_MIN 00161 #define UINT8_MAX UCHAR_MAX 00162 00163 #define INT16_MAX SHRT_MAX 00164 #define INT16_MIN SHRT_MIN 00165 #define UINT16_MAX USHRT_MAX 00166 00167 #define INT32_MAX INT_MAX 00168 #define INT32_MIN INT_MIN 00169 #define UINT32_MAX UINT_MAX 00170 00171 #define INT64_MAX LLONG_MAX 00172 #define INT64_MIN LLONG_MIN 00173 #define UINT64_MAX ULLONG_MAX 00174 00175 #define INT_LEAST8_MAX INT8_MAX 00176 #define INT_LEAST8_MIN INT8_MIN 00177 #define UINT_LEAST8_MAX INT8_MAX 00178 00179 #endif /* TOPPERS_STDINT_TYPE1 */ 00180 00181 /* 00182 * 浮動小数点型に関する定義 00183 * 00184 * TOPPERS_STDFLOAT_TYPE1: floatがIEEE754準拠の単精度浮動小数点数, 00185 * doubleが倍精度浮動小数点数の場合 00186 */ 00187 #ifdef TOPPERS_STDFLOAT_TYPE1 00188 #ifndef TOPPERS_MACRO_ONLY 00189 00190 typedef float float32_t; /* IEEE754準拠の単精度浮動小数点数 */ 00191 typedef double double64_t; /* IEEE754準拠の倍精度浮動小数点数 */ 00192 00193 #endif /* TOPPERS_MACRO_ONLY */ 00194 00195 #define FLOAT32_MIN 1.17549435e-38F 00196 #define FLOAT32_MAX 3.40282347e+38F 00197 #define DOUBLE64_MIN 2.2250738585072014e-308 00198 #define DOUBLE64_MAX 1.7976931348623157e+308 00199 00200 #endif /* TOPPERS_STDFLOAT_TYPE1 */ 00201 #endif /* TOPPERS_TOOL_STDDEF_H */
Copyright © 2008 by Kijineko Inc.