tool_stddef.h

説明を見る。
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.

ホームページ制作