This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088
Fork of libMiMic by
core/include/NyLPC_stdlib.h@115:fa79286d8ea4, 2017-02-24 (annotated)
- Committer:
- furutani
- Date:
- Fri Feb 24 04:43:41 2017 +0000
- Revision:
- 115:fa79286d8ea4
- Parent:
- 72:c118a7aa37a3
Delete missing include line.; Add parameter "timeout" to TCPSocket::connect(), precv().; Fix to send ARP request to default gateway when connecting to IP address of different segment.;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nyatla | 0:142ee8b12fef | 1 | /********************************************************************************* |
nyatla | 0:142ee8b12fef | 2 | * PROJECT: MiMic |
nyatla | 0:142ee8b12fef | 3 | * -------------------------------------------------------------------------------- |
nyatla | 0:142ee8b12fef | 4 | * |
nyatla | 0:142ee8b12fef | 5 | * This file is part of MiMic |
nyatla | 0:142ee8b12fef | 6 | * Copyright (C)2011 Ryo Iizuka |
nyatla | 0:142ee8b12fef | 7 | * |
nyatla | 0:142ee8b12fef | 8 | * MiMic is free software: you can redistribute it and/or modify |
nyatla | 0:142ee8b12fef | 9 | * it under the terms of the GNU Lesser General Public License as published |
nyatla | 0:142ee8b12fef | 10 | * by the Free Software Foundation, either version 3 of the License, or |
nyatla | 0:142ee8b12fef | 11 | * (at your option) any later version. |
nyatla | 0:142ee8b12fef | 12 | * |
nyatla | 0:142ee8b12fef | 13 | * This program is distributed in the hope that it will be useful, |
nyatla | 0:142ee8b12fef | 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
nyatla | 0:142ee8b12fef | 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
nyatla | 0:142ee8b12fef | 16 | * GNU General Public License for more details. |
nyatla | 0:142ee8b12fef | 17 | * |
nyatla | 0:142ee8b12fef | 18 | * You should have received a copy of the GNU Lesser General Public License |
nyatla | 0:142ee8b12fef | 19 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
nyatla | 0:142ee8b12fef | 20 | * |
nyatla | 0:142ee8b12fef | 21 | * For further information please contact. |
nyatla | 0:142ee8b12fef | 22 | * http://nyatla.jp/ |
nyatla | 0:142ee8b12fef | 23 | * <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp> |
nyatla | 0:142ee8b12fef | 24 | * |
nyatla | 0:142ee8b12fef | 25 | *********************************************************************************/ |
nyatla | 0:142ee8b12fef | 26 | /** |
nyatla | 0:142ee8b12fef | 27 | * @file |
nyatla | 0:142ee8b12fef | 28 | * このファイルは、ルートモジュールにあるヘッダファイルを集積します。 |
nyatla | 0:142ee8b12fef | 29 | * 基本的な型の定義も行います。 |
nyatla | 0:142ee8b12fef | 30 | */ |
nyatla | 0:142ee8b12fef | 31 | #ifndef NyLPC_stdlib_h |
nyatla | 0:142ee8b12fef | 32 | #define NyLPC_stdlib_h |
nyatla | 0:142ee8b12fef | 33 | #include "NyLPC_config.h" |
nyatla | 0:142ee8b12fef | 34 | |
nyatla | 0:142ee8b12fef | 35 | #include <string.h> |
nyatla | 0:142ee8b12fef | 36 | |
nyatla | 0:142ee8b12fef | 37 | #ifdef __cplusplus |
nyatla | 0:142ee8b12fef | 38 | extern "C" { |
nyatla | 0:142ee8b12fef | 39 | #endif /* __cplusplus */ |
nyatla | 0:142ee8b12fef | 40 | |
nyatla | 0:142ee8b12fef | 41 | /********************************************************************** |
nyatla | 0:142ee8b12fef | 42 | * |
nyatla | 0:142ee8b12fef | 43 | * ASSERT/ABORT |
nyatla | 0:142ee8b12fef | 44 | * |
nyatla | 0:142ee8b12fef | 45 | **********************************************************************/ |
nyatla | 19:33b9ba0859ee | 46 | #define MIMIC_DEBUG 1 |
nyatla | 19:33b9ba0859ee | 47 | #ifdef MIMIC_DEBUG |
nyatla | 0:142ee8b12fef | 48 | |
nyatla | 19:33b9ba0859ee | 49 | /** |
nyatla | 19:33b9ba0859ee | 50 | * 引数チェック専用のASSERT構文です。 |
nyatla | 19:33b9ba0859ee | 51 | * デバック時のみ有効です。 |
nyatla | 19:33b9ba0859ee | 52 | */ |
nyatla | 19:33b9ba0859ee | 53 | #define NyLPC_ArgAssert(e) if(!(e)){NyLPC_assertHook(NULL,-1);}; |
nyatla | 0:142ee8b12fef | 54 | |
nyatla | 19:33b9ba0859ee | 55 | /** |
nyatla | 19:33b9ba0859ee | 56 | * ASSERTマクロです。 |
nyatla | 19:33b9ba0859ee | 57 | * デバック時のみ有効です。 |
nyatla | 19:33b9ba0859ee | 58 | */ |
nyatla | 19:33b9ba0859ee | 59 | #define NyLPC_Assert(e) if(!(e)){NyLPC_assertHook(NULL,-1);}; |
nyatla | 0:142ee8b12fef | 60 | |
nyatla | 19:33b9ba0859ee | 61 | /** |
nyatla | 19:33b9ba0859ee | 62 | * デバック用のフックマクロです。 |
nyatla | 19:33b9ba0859ee | 63 | * デバック時のみ有効です。 |
nyatla | 19:33b9ba0859ee | 64 | */ |
nyatla | 19:33b9ba0859ee | 65 | #define NyAR_DebugHook() {NyLPC_debugHook(__FILE__,__LINE__);}; |
nyatla | 0:142ee8b12fef | 66 | |
nyatla | 19:33b9ba0859ee | 67 | /** |
nyatla | 19:33b9ba0859ee | 68 | * Abortマクロです。プログラムを異常終了するときのエントリポイントになります。 |
nyatla | 19:33b9ba0859ee | 69 | * デバック時/リリース時のどちらでも有効です。 |
nyatla | 19:33b9ba0859ee | 70 | */ |
nyatla | 19:33b9ba0859ee | 71 | #define NyLPC_Abort() {NyLPC_abortHook(__FILE__,__LINE__);}; //もうだめ |
nyatla | 0:142ee8b12fef | 72 | |
nyatla | 19:33b9ba0859ee | 73 | /** |
nyatla | 19:33b9ba0859ee | 74 | * Abortマクロです。eが偽の時に、異常終了します。 |
nyatla | 19:33b9ba0859ee | 75 | * デバック時/リリース時のどちらでも有効です。 |
nyatla | 19:33b9ba0859ee | 76 | * @param e |
nyatla | 57:bc4330dfa62f | 77 | * 評価式です. |
nyatla | 19:33b9ba0859ee | 78 | */ |
nyatla | 19:33b9ba0859ee | 79 | #define NyLPC_AbortIfNot(e) if(!(e)){NyLPC_abortHook(__FILE__,__LINE__);}; |
nyatla | 0:142ee8b12fef | 80 | |
nyatla | 19:33b9ba0859ee | 81 | /** |
nyatla | 57:bc4330dfa62f | 82 | * 警告表示用のマクロです.デバックに使います. |
nyatla | 57:bc4330dfa62f | 83 | * デバック時のみ有効です. |
nyatla | 19:33b9ba0859ee | 84 | */ |
nyatla | 19:33b9ba0859ee | 85 | #define NyLPC_Warning() {NyLPC_debugHook(__FILE__,__LINE__);}; |
nyatla | 0:142ee8b12fef | 86 | |
nyatla | 19:33b9ba0859ee | 87 | /** |
nyatla | 57:bc4330dfa62f | 88 | * 警告表示用のマクロです.eが偽の時に、警告を出します. |
nyatla | 57:bc4330dfa62f | 89 | * デバック時のみ有効です. |
nyatla | 19:33b9ba0859ee | 90 | * @param e |
nyatla | 19:33b9ba0859ee | 91 | * 評価式です。 |
nyatla | 19:33b9ba0859ee | 92 | */ |
nyatla | 19:33b9ba0859ee | 93 | #define NyLPC_WarningIfNot(e) if(!(e)){NyLPC_debugHook(__FILE__,__LINE__);}; |
nyatla | 0:142ee8b12fef | 94 | |
nyatla | 19:33b9ba0859ee | 95 | /* |
nyatla | 19:33b9ba0859ee | 96 | * トレースマクロです。デバックに使います。 |
nyatla | 19:33b9ba0859ee | 97 | * 内部変数に、最後にコールされたファイル名と、行番号を保存します。 |
nyatla | 57:bc4330dfa62f | 98 | * デバック時のみ有効です. |
nyatla | 19:33b9ba0859ee | 99 | */ |
nyatla | 19:33b9ba0859ee | 100 | #define NyLPC_Trace() {NyLPC_debugHook(__FILE__,__LINE__);}; |
nyatla | 19:33b9ba0859ee | 101 | #else |
nyatla | 19:33b9ba0859ee | 102 | #define NyLPC_ArgAssert(e) if(!(e)){NyLPC_assertHook(NULL,-1);}; |
nyatla | 19:33b9ba0859ee | 103 | #define NyLPC_Assert(e) if(!(e)){NyLPC_assertHook(NULL,-1);}; |
nyatla | 19:33b9ba0859ee | 104 | #define NyAR_DebugHook() {NyLPC_debugHook(__FILE__,__LINE__);}; |
nyatla | 19:33b9ba0859ee | 105 | #define NyLPC_Abort() {NyLPC_abortHook(__FILE__,__LINE__);}; //もうだめ |
nyatla | 19:33b9ba0859ee | 106 | #define NyLPC_AbortIfNot(e) if(!(e)){NyLPC_abortHook(__FILE__,__LINE__);}; |
nyatla | 19:33b9ba0859ee | 107 | #define NyLPC_Warning() {NyLPC_debugHook(__FILE__,__LINE__);}; |
nyatla | 19:33b9ba0859ee | 108 | #define NyLPC_WarningIfNot(e) if(!(e)){NyLPC_debugHook(__FILE__,__LINE__);}; |
nyatla | 19:33b9ba0859ee | 109 | #define NyLPC_Trace() {NyLPC_debugHook(__FILE__,__LINE__);}; |
nyatla | 19:33b9ba0859ee | 110 | #endif |
nyatla | 0:142ee8b12fef | 111 | |
nyatla | 0:142ee8b12fef | 112 | /** |
nyatla | 0:142ee8b12fef | 113 | * アサートマクロが使う関数です。 |
nyatla | 0:142ee8b12fef | 114 | * @param m |
nyatla | 0:142ee8b12fef | 115 | * __FILE__を指定します。 |
nyatla | 0:142ee8b12fef | 116 | * @param l |
nyatla | 0:142ee8b12fef | 117 | * __LINE__を指定します。 |
nyatla | 0:142ee8b12fef | 118 | */ |
nyatla | 0:142ee8b12fef | 119 | void NyLPC_assertHook(const char* m,int l); |
nyatla | 0:142ee8b12fef | 120 | /** |
nyatla | 0:142ee8b12fef | 121 | * Abortマクロが使う関数です。 |
nyatla | 0:142ee8b12fef | 122 | * @param m |
nyatla | 0:142ee8b12fef | 123 | * __FILE__を指定します。 |
nyatla | 0:142ee8b12fef | 124 | * @param l |
nyatla | 0:142ee8b12fef | 125 | * __LINE__を指定します。 |
nyatla | 0:142ee8b12fef | 126 | */ |
nyatla | 0:142ee8b12fef | 127 | void NyLPC_abortHook(const char* m,int l); |
nyatla | 0:142ee8b12fef | 128 | /** |
nyatla | 0:142ee8b12fef | 129 | * Debugマクロが使う関数です。 |
nyatla | 0:142ee8b12fef | 130 | * @param m |
nyatla | 0:142ee8b12fef | 131 | * __FILE__を指定します。 |
nyatla | 0:142ee8b12fef | 132 | * @param l |
nyatla | 0:142ee8b12fef | 133 | * __LINE__を指定します。 |
nyatla | 0:142ee8b12fef | 134 | */ |
nyatla | 0:142ee8b12fef | 135 | void NyLPC_debugHook(const char* m,int l); |
nyatla | 0:142ee8b12fef | 136 | |
nyatla | 0:142ee8b12fef | 137 | /** |
nyatla | 0:142ee8b12fef | 138 | * デバック用のステータス変数です。 |
nyatla | 0:142ee8b12fef | 139 | * アサートを検出した回数を保存します。 |
nyatla | 0:142ee8b12fef | 140 | */ |
nyatla | 0:142ee8b12fef | 141 | extern unsigned int NyLPC_assert_counter; |
nyatla | 0:142ee8b12fef | 142 | /** |
nyatla | 0:142ee8b12fef | 143 | * デバック用のステータス変数です。 |
nyatla | 0:142ee8b12fef | 144 | * アサートを検出した回数を保存します。 |
nyatla | 0:142ee8b12fef | 145 | */ |
nyatla | 0:142ee8b12fef | 146 | extern unsigned int NyLPC_abort_counter; |
nyatla | 0:142ee8b12fef | 147 | /** |
nyatla | 0:142ee8b12fef | 148 | * デバック用のステータス変数です。 |
nyatla | 0:142ee8b12fef | 149 | * アサートを検出した回数を保存します。 |
nyatla | 0:142ee8b12fef | 150 | */ |
nyatla | 0:142ee8b12fef | 151 | extern unsigned int NyLPC_debug_counter; |
nyatla | 0:142ee8b12fef | 152 | |
nyatla | 0:142ee8b12fef | 153 | /** |
nyatla | 0:142ee8b12fef | 154 | * GOTO方式のエラーハンドラを記述するためのマクロです。 |
nyatla | 0:142ee8b12fef | 155 | * @param l |
nyatla | 0:142ee8b12fef | 156 | * 指定ラベルへジャンプします。 |
nyatla | 0:142ee8b12fef | 157 | */ |
nyatla | 0:142ee8b12fef | 158 | #define NyLPC_OnErrorGoto(l) goto l |
nyatla | 0:142ee8b12fef | 159 | |
nyatla | 0:142ee8b12fef | 160 | |
nyatla | 0:142ee8b12fef | 161 | |
nyatla | 0:142ee8b12fef | 162 | /********************************************************************** |
nyatla | 0:142ee8b12fef | 163 | * |
nyatla | 0:142ee8b12fef | 164 | * Basic type |
nyatla | 0:142ee8b12fef | 165 | * |
nyatla | 0:142ee8b12fef | 166 | **********************************************************************/ |
nyatla | 0:142ee8b12fef | 167 | |
nyatla | 0:142ee8b12fef | 168 | /** |
nyatla | 0:142ee8b12fef | 169 | * 真偽値型です。 |
nyatla | 0:142ee8b12fef | 170 | */ |
nyatla | 0:142ee8b12fef | 171 | typedef long NyLPC_TBool; |
nyatla | 0:142ee8b12fef | 172 | |
nyatla | 0:142ee8b12fef | 173 | /** |
nyatla | 0:142ee8b12fef | 174 | * TRUEを表します。この値は、ifで評価したときに真を返すことを保障します。 |
nyatla | 0:142ee8b12fef | 175 | */ |
nyatla | 0:142ee8b12fef | 176 | #define NyLPC_TBool_TRUE (0==0) |
nyatla | 0:142ee8b12fef | 177 | /** |
nyatla | 0:142ee8b12fef | 178 | * FALSEを表します。この値は、ifで評価したときに偽を返すことを保障します。 |
nyatla | 0:142ee8b12fef | 179 | */ |
nyatla | 0:142ee8b12fef | 180 | #define NyLPC_TBool_FALSE (0!=0) |
nyatla | 0:142ee8b12fef | 181 | |
nyatla | 0:142ee8b12fef | 182 | /** |
nyatla | 0:142ee8b12fef | 183 | * ウェーイを表します。この値は、NyLPC_TBool_FALSEと同じです。 |
nyatla | 0:142ee8b12fef | 184 | */ |
nyatla | 0:142ee8b12fef | 185 | #define NyLPC_TBool_VEII NyLPC_TBool_FALSE |
nyatla | 0:142ee8b12fef | 186 | |
nyatla | 0:142ee8b12fef | 187 | |
nyatla | 0:142ee8b12fef | 188 | |
nyatla | 0:142ee8b12fef | 189 | /** |
nyatla | 0:142ee8b12fef | 190 | * 8bit長のバイト文字の型です。 |
nyatla | 0:142ee8b12fef | 191 | */ |
nyatla | 0:142ee8b12fef | 192 | typedef char NyLPC_TChar; |
nyatla | 0:142ee8b12fef | 193 | /** |
nyatla | 0:142ee8b12fef | 194 | * 符号有り8bit型です。 |
nyatla | 0:142ee8b12fef | 195 | */ |
nyatla | 48:00d211aac2ec | 196 | typedef signed char NyLPC_TInt8; |
nyatla | 0:142ee8b12fef | 197 | /** |
nyatla | 0:142ee8b12fef | 198 | * 符号有り16bit型です。 |
nyatla | 0:142ee8b12fef | 199 | */ |
nyatla | 48:00d211aac2ec | 200 | typedef signed short NyLPC_TInt16; |
nyatla | 0:142ee8b12fef | 201 | /** |
nyatla | 0:142ee8b12fef | 202 | * 符号有り32bit型です。 |
nyatla | 0:142ee8b12fef | 203 | */ |
nyatla | 48:00d211aac2ec | 204 | typedef signed long NyLPC_TInt32; |
nyatla | 0:142ee8b12fef | 205 | |
nyatla | 0:142ee8b12fef | 206 | //---------------------------------------------------------------------- |
nyatla | 0:142ee8b12fef | 207 | // NyLPC_TUInt8 |
nyatla | 0:142ee8b12fef | 208 | //---------------------------------------------------------------------- |
nyatla | 0:142ee8b12fef | 209 | |
nyatla | 0:142ee8b12fef | 210 | /** |
nyatla | 0:142ee8b12fef | 211 | * 符号無し8bit型です。 |
nyatla | 0:142ee8b12fef | 212 | */ |
nyatla | 0:142ee8b12fef | 213 | typedef unsigned char NyLPC_TUInt8; |
nyatla | 0:142ee8b12fef | 214 | |
nyatla | 0:142ee8b12fef | 215 | /** |
nyatla | 0:142ee8b12fef | 216 | * ビット操作関数です。bfのビット番号bに、1をセットします。 |
nyatla | 0:142ee8b12fef | 217 | * @bf |
nyatla | 0:142ee8b12fef | 218 | * 操作対象の変数です。 |
nyatla | 0:142ee8b12fef | 219 | * @b |
nyatla | 37:fc4b4fd6a649 | 220 | * 操作するビットパターンです。 |
nyatla | 0:142ee8b12fef | 221 | */ |
nyatla | 0:142ee8b12fef | 222 | #define NyLPC_TUInt8_setBit(bf,b) NyLPC_TUInt32_setBit(bf,b) |
nyatla | 0:142ee8b12fef | 223 | /** |
nyatla | 0:142ee8b12fef | 224 | * ビット操作関数です。bfのビット番号bに、0をセットします。 |
nyatla | 0:142ee8b12fef | 225 | * @bf |
nyatla | 0:142ee8b12fef | 226 | * 操作対象の変数です。 |
nyatla | 0:142ee8b12fef | 227 | * @b |
nyatla | 37:fc4b4fd6a649 | 228 | * 操作するビットパターンです。 |
nyatla | 0:142ee8b12fef | 229 | */ |
nyatla | 0:142ee8b12fef | 230 | #define NyLPC_TUInt8_unsetBit(bf,b) NyLPC_TUInt32_unsetBit(bf,b) |
nyatla | 0:142ee8b12fef | 231 | /** |
nyatla | 0:142ee8b12fef | 232 | * ビット判定関数です。bfのビット番号bが1であるかを確認します。 |
nyatla | 2:b96c1e90d120 | 233 | * @bf |
nyatla | 0:142ee8b12fef | 234 | * 判定する変数です。 |
nyatla | 0:142ee8b12fef | 235 | * @b |
nyatla | 37:fc4b4fd6a649 | 236 | * 判定するビットパターンです。 |
nyatla | 0:142ee8b12fef | 237 | * @return |
nyatla | 37:fc4b4fd6a649 | 238 | * ビットが一致するなら真を返します。 |
nyatla | 0:142ee8b12fef | 239 | */ |
nyatla | 0:142ee8b12fef | 240 | #define NyLPC_TUInt8_isBitOn(bf,b) NyLPC_TUInt32_isBitOn(bf,b) |
nyatla | 0:142ee8b12fef | 241 | |
nyatla | 0:142ee8b12fef | 242 | /** |
nyatla | 0:142ee8b12fef | 243 | * 8bit長のTRUE値です。 |
nyatla | 0:142ee8b12fef | 244 | */ |
nyatla | 0:142ee8b12fef | 245 | #define NyLPC_TUInt8_TRUE NyLPC_TBool_TRUE |
nyatla | 0:142ee8b12fef | 246 | /** |
nyatla | 0:142ee8b12fef | 247 | * 8bit長のFALSE値です。 |
nyatla | 0:142ee8b12fef | 248 | */ |
nyatla | 0:142ee8b12fef | 249 | #define NyLPC_TUInt8_FALSE NyLPC_TBool_FALSE |
nyatla | 0:142ee8b12fef | 250 | /** |
nyatla | 0:142ee8b12fef | 251 | * 8bit長のFALSEをNyLPC_TBoolへ変換します。 |
nyatla | 0:142ee8b12fef | 252 | * @param a |
nyatla | 0:142ee8b12fef | 253 | * 変換する変数です。 |
nyatla | 0:142ee8b12fef | 254 | * @return |
nyatla | 0:142ee8b12fef | 255 | * 変換した値です。 |
nyatla | 0:142ee8b12fef | 256 | */ |
nyatla | 0:142ee8b12fef | 257 | #define NyLPC_TUInt8_castto_TBool(a) ((a)?NyLPC_TBool_TRUE:NyLPC_TBool_FALSE) |
nyatla | 0:142ee8b12fef | 258 | |
nyatla | 0:142ee8b12fef | 259 | //---------------------------------------------------------------------- |
nyatla | 0:142ee8b12fef | 260 | // NyLPC_TUInt16 |
nyatla | 0:142ee8b12fef | 261 | //---------------------------------------------------------------------- |
nyatla | 0:142ee8b12fef | 262 | |
nyatla | 0:142ee8b12fef | 263 | /** |
nyatla | 0:142ee8b12fef | 264 | * 符号無し16bit型です。 |
nyatla | 0:142ee8b12fef | 265 | */ |
nyatla | 0:142ee8b12fef | 266 | typedef unsigned short NyLPC_TUInt16; |
nyatla | 0:142ee8b12fef | 267 | |
nyatla | 0:142ee8b12fef | 268 | /** |
nyatla | 0:142ee8b12fef | 269 | * INTMAX |
nyatla | 0:142ee8b12fef | 270 | */ |
nyatla | 0:142ee8b12fef | 271 | #define NyLPC_TUInt16_MAX 0xFFFF |
nyatla | 0:142ee8b12fef | 272 | |
nyatla | 0:142ee8b12fef | 273 | /** |
nyatla | 0:142ee8b12fef | 274 | * ビット操作関数です。bfのビット番号bに、1をセットします。 |
nyatla | 0:142ee8b12fef | 275 | * @bf |
nyatla | 0:142ee8b12fef | 276 | * 操作対象の変数です。 |
nyatla | 0:142ee8b12fef | 277 | * @b |
nyatla | 0:142ee8b12fef | 278 | * 操作するビット番号です。 |
nyatla | 0:142ee8b12fef | 279 | */ |
nyatla | 0:142ee8b12fef | 280 | #define NyLPC_TUInt16_setBit(bf,b) NyLPC_TUInt32_setBit(bf,b) |
nyatla | 0:142ee8b12fef | 281 | /** |
nyatla | 0:142ee8b12fef | 282 | * ビット操作関数です。bfのビット番号bに、0をセットします。 |
nyatla | 0:142ee8b12fef | 283 | * @bf |
nyatla | 0:142ee8b12fef | 284 | * 操作対象の変数です。 |
nyatla | 0:142ee8b12fef | 285 | * @b |
nyatla | 48:00d211aac2ec | 286 | * 操作するビット番号です。 |
nyatla | 0:142ee8b12fef | 287 | */ |
nyatla | 0:142ee8b12fef | 288 | #define NyLPC_TUInt16_unsetBit(bf,b) NyLPC_TUInt32_unsetBit(bf,b) |
nyatla | 0:142ee8b12fef | 289 | /** |
nyatla | 0:142ee8b12fef | 290 | * ビット判定関数です。bfのビット番号bが1であるかを確認します。 |
nyatla | 0:142ee8b12fef | 291 | * @bf |
nyatla | 0:142ee8b12fef | 292 | * 判定する変数です。 |
nyatla | 0:142ee8b12fef | 293 | * @b |
nyatla | 48:00d211aac2ec | 294 | * 判定するビット番号です。 |
nyatla | 0:142ee8b12fef | 295 | * @return |
nyatla | 37:fc4b4fd6a649 | 296 | * ビットが一致するなら真を返します。 |
nyatla | 0:142ee8b12fef | 297 | */ |
nyatla | 0:142ee8b12fef | 298 | #define NyLPC_TUInt16_isBitOn(bf,b) NyLPC_TUInt32_isBitOn(bf,b) |
nyatla | 0:142ee8b12fef | 299 | |
nyatla | 0:142ee8b12fef | 300 | /** |
nyatla | 0:142ee8b12fef | 301 | * バイトオーダーを入れ替えます。 |
nyatla | 0:142ee8b12fef | 302 | * @param n |
nyatla | 0:142ee8b12fef | 303 | * 変換もとの変数です。 |
nyatla | 0:142ee8b12fef | 304 | * @return |
nyatla | 0:142ee8b12fef | 305 | * 入れ替えた16ビット値を返します。 |
nyatla | 0:142ee8b12fef | 306 | * |
nyatla | 0:142ee8b12fef | 307 | */ |
nyatla | 0:142ee8b12fef | 308 | #define NyLPC_TUInt16_BSWAP(n) (((((NyLPC_TUInt16)(n))<< 8)&0xff00)|((((NyLPC_TUInt16)(n))>> 8)&0x00ff)) |
nyatla | 0:142ee8b12fef | 309 | |
nyatla | 0:142ee8b12fef | 310 | |
nyatla | 0:142ee8b12fef | 311 | |
nyatla | 0:142ee8b12fef | 312 | /** |
nyatla | 0:142ee8b12fef | 313 | * バイトオーダーを入れ替えます。 |
nyatla | 0:142ee8b12fef | 314 | * NyLPC_TUInt16_BSWAPとの違いは、関数であることです。 |
nyatla | 0:142ee8b12fef | 315 | * @param n |
nyatla | 0:142ee8b12fef | 316 | * 変換もとの変数です。 |
nyatla | 0:142ee8b12fef | 317 | * @return |
nyatla | 0:142ee8b12fef | 318 | * 入れ替えた16ビット値を返します。 |
nyatla | 0:142ee8b12fef | 319 | */ |
nyatla | 0:142ee8b12fef | 320 | NyLPC_TUInt16 NyLPC_TUInt16_bswap(NyLPC_TUInt16 n); |
nyatla | 0:142ee8b12fef | 321 | /** |
nyatla | 0:142ee8b12fef | 322 | * 16bit長のTRUE値です。 |
nyatla | 0:142ee8b12fef | 323 | */ |
nyatla | 0:142ee8b12fef | 324 | #define NyLPC_TUInt16_TRUE NyLPC_TBool_TRUE |
nyatla | 0:142ee8b12fef | 325 | /** |
nyatla | 0:142ee8b12fef | 326 | * 16bit長のFALSE値です。 |
nyatla | 0:142ee8b12fef | 327 | */ |
nyatla | 0:142ee8b12fef | 328 | #define NyLPC_TUInt16_FALSE NyLPC_TBool_FALSE |
nyatla | 0:142ee8b12fef | 329 | /** |
nyatla | 0:142ee8b12fef | 330 | * 16bit長のFALSEをNyLPC_TBoolへ変換します。 |
nyatla | 0:142ee8b12fef | 331 | * @param a |
nyatla | 0:142ee8b12fef | 332 | * 変換する変数です。 |
nyatla | 0:142ee8b12fef | 333 | * @return |
nyatla | 0:142ee8b12fef | 334 | * 変換した値です。 |
nyatla | 0:142ee8b12fef | 335 | */ |
nyatla | 0:142ee8b12fef | 336 | #define NyLPC_TUInt16_castto_TBool(a) ((a)?NyLPC_TBool_TRUE:NyLPC_TBool_FALSE) |
nyatla | 0:142ee8b12fef | 337 | |
nyatla | 0:142ee8b12fef | 338 | //---------------------------------------------------------------------- |
nyatla | 0:142ee8b12fef | 339 | |
nyatla | 0:142ee8b12fef | 340 | /** |
nyatla | 0:142ee8b12fef | 341 | * 符号無し32bit型です。 |
nyatla | 0:142ee8b12fef | 342 | */ |
nyatla | 0:142ee8b12fef | 343 | typedef unsigned long NyLPC_TUInt32; |
nyatla | 0:142ee8b12fef | 344 | /** |
nyatla | 2:b96c1e90d120 | 345 | * ビット操作関数です。bfのビットパターンbに、1をセットします。 |
nyatla | 0:142ee8b12fef | 346 | * @bf |
nyatla | 0:142ee8b12fef | 347 | * 操作対象の変数です。 |
nyatla | 0:142ee8b12fef | 348 | * @b |
nyatla | 2:b96c1e90d120 | 349 | * 操作するビットパターンです。 |
nyatla | 0:142ee8b12fef | 350 | */ |
nyatla | 48:00d211aac2ec | 351 | #define NyLPC_TUInt32_setBit(bf,b) bf=(bf|(1<<b)) |
nyatla | 0:142ee8b12fef | 352 | /** |
nyatla | 2:b96c1e90d120 | 353 | * ビット操作関数です。bfのビットパターンbに、0をセットします。 |
nyatla | 0:142ee8b12fef | 354 | * @bf |
nyatla | 0:142ee8b12fef | 355 | * 操作対象の変数です。 |
nyatla | 0:142ee8b12fef | 356 | * @b |
nyatla | 2:b96c1e90d120 | 357 | * 操作するビットパターンです。 |
nyatla | 0:142ee8b12fef | 358 | */ |
nyatla | 48:00d211aac2ec | 359 | #define NyLPC_TUInt32_unsetBit(bf,b) bf=(bf&(~(1<<b))) |
nyatla | 0:142ee8b12fef | 360 | /** |
nyatla | 2:b96c1e90d120 | 361 | * ビット判定関数です。bfのビットパターンbが1であるかを確認します。 |
nyatla | 0:142ee8b12fef | 362 | * @bf |
nyatla | 0:142ee8b12fef | 363 | * 判定する変数です。 |
nyatla | 0:142ee8b12fef | 364 | * @b |
nyatla | 2:b96c1e90d120 | 365 | * 判定するビットパターンです。 |
nyatla | 0:142ee8b12fef | 366 | * @return |
nyatla | 37:fc4b4fd6a649 | 367 | * ビットが一致するなら真を返します。 |
nyatla | 0:142ee8b12fef | 368 | */ |
nyatla | 48:00d211aac2ec | 369 | #define NyLPC_TUInt32_isBitOn(bf,b) ((bf&(1<<b))!=0) |
nyatla | 0:142ee8b12fef | 370 | |
nyatla | 0:142ee8b12fef | 371 | /** |
nyatla | 0:142ee8b12fef | 372 | * バイトオーダーを入れ替えます。 |
nyatla | 0:142ee8b12fef | 373 | * @param n |
nyatla | 0:142ee8b12fef | 374 | * 変換もとの変数です。 |
nyatla | 0:142ee8b12fef | 375 | * @return |
nyatla | 0:142ee8b12fef | 376 | * 入れ替えた32ビット値を返します。 |
nyatla | 0:142ee8b12fef | 377 | * |
nyatla | 0:142ee8b12fef | 378 | */ |
nyatla | 0:142ee8b12fef | 379 | #define NyLPC_TUInt32_BSWAP(n) (((((NyLPC_TUInt32)(n))<<24)&0xff000000)|((((NyLPC_TUInt32)(n))<< 8)&0x00ff0000)|((((NyLPC_TUInt32)(n))>> 8)&0x0000ff00)|((((NyLPC_TUInt32)(n))>>24)&0x000000ff)) |
nyatla | 0:142ee8b12fef | 380 | /** |
nyatla | 0:142ee8b12fef | 381 | * バイトオーダーを入れ替えます。 |
nyatla | 0:142ee8b12fef | 382 | * NyLPC_TUInt32_BSWAPとの違いは、関数であることです。 |
nyatla | 0:142ee8b12fef | 383 | * @param n |
nyatla | 0:142ee8b12fef | 384 | * 変換もとの変数です。 |
nyatla | 0:142ee8b12fef | 385 | * @return |
nyatla | 0:142ee8b12fef | 386 | * 入れ替えた32ビット値を返します。 |
nyatla | 0:142ee8b12fef | 387 | */ |
nyatla | 0:142ee8b12fef | 388 | NyLPC_TUInt32 NyLPC_TUInt32_bswap(NyLPC_TUInt32 n); |
nyatla | 0:142ee8b12fef | 389 | |
nyatla | 0:142ee8b12fef | 390 | /** |
nyatla | 0:142ee8b12fef | 391 | * 32bit長のTRUE値です。 |
nyatla | 0:142ee8b12fef | 392 | */ |
nyatla | 0:142ee8b12fef | 393 | #define NyLPC_TUInt32_TRUE NyLPC_TBool_TRUE |
nyatla | 0:142ee8b12fef | 394 | /** |
nyatla | 0:142ee8b12fef | 395 | * 32bit長のFALSE値です。 |
nyatla | 0:142ee8b12fef | 396 | */ |
nyatla | 0:142ee8b12fef | 397 | #define NyLPC_TUInt32_FALSE NyLPC_TBool_FALSE |
nyatla | 0:142ee8b12fef | 398 | /** |
nyatla | 0:142ee8b12fef | 399 | * 32bit長のFALSEをNyLPC_TBoolへ変換します。 |
nyatla | 0:142ee8b12fef | 400 | * @param a |
nyatla | 0:142ee8b12fef | 401 | * 変換する変数です。 |
nyatla | 0:142ee8b12fef | 402 | * @return |
nyatla | 0:142ee8b12fef | 403 | * 変換した値です。 |
nyatla | 0:142ee8b12fef | 404 | */ |
nyatla | 0:142ee8b12fef | 405 | #define NyLPC_TUInt32_castto_TBool(a) ((a)?NyLPC_TBool_TRUE:NyLPC_TBool_FALSE) |
nyatla | 0:142ee8b12fef | 406 | |
nyatla | 0:142ee8b12fef | 407 | |
nyatla | 0:142ee8b12fef | 408 | //---------------------------------------------------------------------- |
nyatla | 0:142ee8b12fef | 409 | |
nyatla | 0:142ee8b12fef | 410 | /** |
nyatla | 0:142ee8b12fef | 411 | * 長さ付TChar配列の構造体です。 |
nyatla | 0:142ee8b12fef | 412 | * |
nyatla | 0:142ee8b12fef | 413 | */ |
nyatla | 0:142ee8b12fef | 414 | struct NyLPC_TCharArrayPtr |
nyatla | 0:142ee8b12fef | 415 | { |
nyatla | 0:142ee8b12fef | 416 | /** 配列のポインタ */ |
nyatla | 0:142ee8b12fef | 417 | NyLPC_TChar* ptr; |
nyatla | 0:142ee8b12fef | 418 | /** 配列の長さ */ |
nyatla | 0:142ee8b12fef | 419 | NyLPC_TUInt16 len; |
nyatla | 0:142ee8b12fef | 420 | }; |
nyatla | 0:142ee8b12fef | 421 | /** |
nyatla | 0:142ee8b12fef | 422 | * ptrの位置をi_seekだけ進行します。 |
nyatla | 0:142ee8b12fef | 423 | * @param i_struct |
nyatla | 0:142ee8b12fef | 424 | * 操作する構造体 |
nyatla | 0:142ee8b12fef | 425 | * @param i_seek |
nyatla | 0:142ee8b12fef | 426 | * シークするバイト長 |
nyatla | 0:142ee8b12fef | 427 | */ |
nyatla | 0:142ee8b12fef | 428 | NyLPC_TBool NyLPC_TCharArrayPtr_seek(struct NyLPC_TCharArrayPtr* i_struct,NyLPC_TUInt16 i_seek); |
nyatla | 0:142ee8b12fef | 429 | |
nyatla | 0:142ee8b12fef | 430 | |
nyatla | 0:142ee8b12fef | 431 | /** |
nyatla | 0:142ee8b12fef | 432 | * 長さ付TUInt32配列の構造体です。 |
nyatla | 0:142ee8b12fef | 433 | * |
nyatla | 0:142ee8b12fef | 434 | */ |
nyatla | 0:142ee8b12fef | 435 | struct NyLPC_TUInt32ArrayPtr |
nyatla | 0:142ee8b12fef | 436 | { |
nyatla | 0:142ee8b12fef | 437 | /** 配列のポインタ */ |
nyatla | 0:142ee8b12fef | 438 | NyLPC_TUInt32* ptr; |
nyatla | 0:142ee8b12fef | 439 | /** 要素数 */ |
nyatla | 0:142ee8b12fef | 440 | NyLPC_TUInt16 len; |
nyatla | 0:142ee8b12fef | 441 | }; |
nyatla | 0:142ee8b12fef | 442 | /** |
nyatla | 0:142ee8b12fef | 443 | * ptrの位置をi_seekだけ進行します。 |
nyatla | 0:142ee8b12fef | 444 | * 進行すると、len要素がi_seekだけ減少します。 |
nyatla | 0:142ee8b12fef | 445 | * @param i_struct |
nyatla | 0:142ee8b12fef | 446 | * 操作する構造体 |
nyatla | 0:142ee8b12fef | 447 | * @param i_seek |
nyatla | 0:142ee8b12fef | 448 | * シークする要素長 |
nyatla | 0:142ee8b12fef | 449 | */ |
nyatla | 0:142ee8b12fef | 450 | NyLPC_TBool NyLPC_TUInt32ArrayPtr_seek(struct NyLPC_TUInt32ArrayPtr* i_struct,NyLPC_TUInt16 i_seek); |
nyatla | 0:142ee8b12fef | 451 | /** |
nyatla | 0:142ee8b12fef | 452 | * 構造体に、参照するバッファの初期位置とサイズをセットします。 |
nyatla | 0:142ee8b12fef | 453 | * セットしたバッファは、前方シークの可能な書き込みバッファとして使用できます。 |
nyatla | 0:142ee8b12fef | 454 | */ |
nyatla | 0:142ee8b12fef | 455 | void NyLPC_TUInt32ArrayPtr_setBuf(struct NyLPC_TUInt32ArrayPtr* i_struct,NyLPC_TUInt32* i_ptr,NyLPC_TUInt16 i_len); |
nyatla | 0:142ee8b12fef | 456 | |
nyatla | 2:b96c1e90d120 | 457 | |
nyatla | 2:b96c1e90d120 | 458 | /** |
nyatla | 2:b96c1e90d120 | 459 | * TextとIDのテーブルです。 |
nyatla | 2:b96c1e90d120 | 460 | */ |
nyatla | 2:b96c1e90d120 | 461 | struct NyLPC_TTextIdTbl{ |
nyatla | 2:b96c1e90d120 | 462 | const char* n; |
nyatla | 2:b96c1e90d120 | 463 | NyLPC_TUInt8 id; |
nyatla | 2:b96c1e90d120 | 464 | }; |
nyatla | 2:b96c1e90d120 | 465 | |
nyatla | 2:b96c1e90d120 | 466 | /** |
nyatla | 48:00d211aac2ec | 467 | * テーブルから文字列に一致するIDを返します。 |
nyatla | 48:00d211aac2ec | 468 | * 大文字と小文字の区別をしません。 |
nyatla | 48:00d211aac2ec | 469 | * @return |
nyatla | 48:00d211aac2ec | 470 | * 一致する文字列のID |
nyatla | 48:00d211aac2ec | 471 | * 一致するものがない場合、テーブルの終端の値を返す。 |
nyatla | 2:b96c1e90d120 | 472 | */ |
nyatla | 2:b96c1e90d120 | 473 | NyLPC_TUInt8 NyLPC_TTextIdTbl_getMatchId(const NyLPC_TChar* i_str,const struct NyLPC_TTextIdTbl i_tbl[]); |
nyatla | 48:00d211aac2ec | 474 | /** |
nyatla | 48:00d211aac2ec | 475 | * テーブルから文字列に一致するIDを返します。 |
nyatla | 48:00d211aac2ec | 476 | * 大文字と小文字の区別をしません。 |
nyatla | 48:00d211aac2ec | 477 | * @return |
nyatla | 48:00d211aac2ec | 478 | * 一致する文字列のID |
nyatla | 48:00d211aac2ec | 479 | * 一致するものがない場合、テーブルの終端の値を返す。 |
nyatla | 48:00d211aac2ec | 480 | */ |
nyatla | 48:00d211aac2ec | 481 | NyLPC_TUInt8 NyLPC_TTextIdTbl_getMatchIdIgnoreCase(const NyLPC_TChar* i_str,const struct NyLPC_TTextIdTbl i_tbl[]); |
nyatla | 48:00d211aac2ec | 482 | /** |
nyatla | 57:bc4330dfa62f | 483 | * テーブルからIDに一致する文字列を返す. |
nyatla | 48:00d211aac2ec | 484 | * @return |
nyatla | 57:bc4330dfa62f | 485 | * IDに一致する文字列. |
nyatla | 48:00d211aac2ec | 486 | * 存在しなければNULL |
nyatla | 48:00d211aac2ec | 487 | */ |
nyatla | 48:00d211aac2ec | 488 | const NyLPC_TChar* NyLPC_TTextIdTbl_getTextById(NyLPC_TUInt8 i_id,const struct NyLPC_TTextIdTbl i_tbl[]); |
nyatla | 0:142ee8b12fef | 489 | |
nyatla | 0:142ee8b12fef | 490 | /********************************************************************************* |
nyatla | 0:142ee8b12fef | 491 | * standard function |
nyatla | 0:142ee8b12fef | 492 | *********************************************************************************/ |
nyatla | 11:c82a7b2899b0 | 493 | /** |
nyatla | 11:c82a7b2899b0 | 494 | * Same as tolower |
nyatla | 11:c82a7b2899b0 | 495 | */ |
nyatla | 11:c82a7b2899b0 | 496 | #define NyLPC_tolower(c) (((c) >= 'A' && (c) <= 'Z' )?((c)+'a' - 'A'):(c)) |
nyatla | 11:c82a7b2899b0 | 497 | |
nyatla | 11:c82a7b2899b0 | 498 | /** |
nyatla | 48:00d211aac2ec | 499 | * @return |
nyatla | 48:00d211aac2ec | 500 | * 書き込んだ文字列の長さ |
nyatla | 11:c82a7b2899b0 | 501 | */ |
nyatla | 49:d4334acc3ec3 | 502 | NyLPC_TInt8 NyLPC_itoa(int i_n,char* o_out,NyLPC_TInt8 i_base); |
nyatla | 11:c82a7b2899b0 | 503 | |
nyatla | 13:a71705c5e6fd | 504 | |
nyatla | 48:00d211aac2ec | 505 | /** |
nyatla | 48:00d211aac2ec | 506 | * @return |
nyatla | 48:00d211aac2ec | 507 | * 書き込んだ文字列の長さ |
nyatla | 48:00d211aac2ec | 508 | */ |
nyatla | 49:d4334acc3ec3 | 509 | NyLPC_TInt8 NyLPC_uitoa(unsigned int i_n,char* o_out,NyLPC_TInt8 i_base); |
nyatla | 48:00d211aac2ec | 510 | /** |
nyatla | 48:00d211aac2ec | 511 | * 桁数の指定できるuitoaです。 |
nyatla | 48:00d211aac2ec | 512 | */ |
nyatla | 49:d4334acc3ec3 | 513 | NyLPC_TInt8 NyLPC_uitoa2(unsigned int i_n,char* o_out,NyLPC_TInt8 i_base,NyLPC_TInt8 i_digit); |
nyatla | 13:a71705c5e6fd | 514 | |
nyatla | 13:a71705c5e6fd | 515 | |
nyatla | 11:c82a7b2899b0 | 516 | /** |
nyatla | 11:c82a7b2899b0 | 517 | * Same as reverse |
nyatla | 11:c82a7b2899b0 | 518 | */ |
nyatla | 0:142ee8b12fef | 519 | void NyLPC_reverse(char* s); |
nyatla | 0:142ee8b12fef | 520 | |
nyatla | 11:c82a7b2899b0 | 521 | /** |
nyatla | 11:c82a7b2899b0 | 522 | * Same as stricmp |
nyatla | 11:c82a7b2899b0 | 523 | */ |
nyatla | 11:c82a7b2899b0 | 524 | int NyLPC_stricmp(const char *i_s1, const char *i_s2); |
nyatla | 11:c82a7b2899b0 | 525 | |
nyatla | 11:c82a7b2899b0 | 526 | /** |
nyatla | 11:c82a7b2899b0 | 527 | * Same as strnicmp |
nyatla | 11:c82a7b2899b0 | 528 | */ |
nyatla | 11:c82a7b2899b0 | 529 | int NyLPC_strnicmp(const char *i_s1, const char *i_s2,int n); |
nyatla | 11:c82a7b2899b0 | 530 | |
nyatla | 11:c82a7b2899b0 | 531 | /** |
nyatla | 11:c82a7b2899b0 | 532 | * Convert a charactor to integer. |
nyatla | 11:c82a7b2899b0 | 533 | */ |
nyatla | 11:c82a7b2899b0 | 534 | int NyLPC_ctoi(char i); |
nyatla | 11:c82a7b2899b0 | 535 | |
nyatla | 11:c82a7b2899b0 | 536 | /** |
nyatla | 11:c82a7b2899b0 | 537 | * Convert a character to 16 digit integer. |
nyatla | 11:c82a7b2899b0 | 538 | */ |
nyatla | 11:c82a7b2899b0 | 539 | int NyLPC_ctox(char i); |
nyatla | 2:b96c1e90d120 | 540 | |
nyatla | 72:c118a7aa37a3 | 541 | /** |
nyatla | 72:c118a7aa37a3 | 542 | * va_copyがない場合の対処だお |
nyatla | 72:c118a7aa37a3 | 543 | */ |
nyatla | 72:c118a7aa37a3 | 544 | #ifndef va_copy |
nyatla | 72:c118a7aa37a3 | 545 | # define NyLPC_va_copy(dest, src) ((dest) = (src)) |
nyatla | 72:c118a7aa37a3 | 546 | #else |
nyatla | 72:c118a7aa37a3 | 547 | # define NyLPC_va_copy(dest, src) va_copy((dest),(src)) |
nyatla | 72:c118a7aa37a3 | 548 | #endif |
nyatla | 2:b96c1e90d120 | 549 | |
nyatla | 2:b96c1e90d120 | 550 | #ifdef __cplusplus |
nyatla | 2:b96c1e90d120 | 551 | } |
nyatla | 2:b96c1e90d120 | 552 | #endif /* __cplusplus */ |
nyatla | 2:b96c1e90d120 | 553 | |
nyatla | 2:b96c1e90d120 | 554 | |
nyatla | 2:b96c1e90d120 | 555 | |
nyatla | 0:142ee8b12fef | 556 | /********************************************************************************* |
nyatla | 0:142ee8b12fef | 557 | * |
nyatla | 0:142ee8b12fef | 558 | *********************************************************************************/ |
nyatla | 0:142ee8b12fef | 559 | |
nyatla | 2:b96c1e90d120 | 560 | #include "../NyLPC_cMiMicEnv.h" |
nyatla | 0:142ee8b12fef | 561 | #include "../NyLPC_cRingBuffer.h" |
nyatla | 0:142ee8b12fef | 562 | #include "../NyLPC_cPtrTbl.h" |
nyatla | 0:142ee8b12fef | 563 | #include "../NyLPC_cFifoBuffer.h" |
nyatla | 0:142ee8b12fef | 564 | #include "../NyLPC_cPtrStream.h" |
nyatla | 0:142ee8b12fef | 565 | #include "../NyLPC_cStr.h" |
nyatla | 0:142ee8b12fef | 566 | |
nyatla | 0:142ee8b12fef | 567 | |
nyatla | 0:142ee8b12fef | 568 | |
nyatla | 13:a71705c5e6fd | 569 | |
nyatla | 13:a71705c5e6fd | 570 | |
nyatla | 11:c82a7b2899b0 | 571 | #endif |