FluentLogger: fluent-logger-mbed A structured logger for Fluentd (mbed)

Dependents:   FluentLogger_Hello SNIC-FluentLogger-example

FluentLogger

Fluentd Logo

What is this ?

You can logging to Fluentd server.
This library included subset of MassagePack library.

Supported MessagePack formats(encode only)

format namefirst byte (in hex)
positive fixint0x00 - 0x7f
fixmap0x80 - 0x8f
fixarray0x90 - 0x9f
fixstr0xa0 - 0xbf
nil0xc0
false0xc2
true0xc3
float 320xca
float 640xcb
uint 80xcc
uint 160xcd
uint 320xce
uint 640xcf
int 80xd0
int 160xd1
int 320xd2
int 640xd3
str 80xd9
negative fixint0xe0 - 0xff

これは何?

Fluentd サーバにログを送信するためのライブラリです。
サブセット版のMassagePackライブラリも同梱しています。

サーバ側ダウン時の再接続機能は限定的に実装されています。 現時点での実装は送信時に切断を検知し、次回送信時に再接続する仕様です。

Committer:
YuuichiAkagawa
Date:
Mon Dec 15 15:37:23 2014 +0000
Revision:
1:6b1268731465
Parent:
0:b4815a079a4b
rename uMP functions(set_array->start_array, set_map->start_map); add uMP map functions

Who changed what in which revision?

UserRevisionLine numberNew contents of line
YuuichiAkagawa 0:b4815a079a4b 1 /* uMP - micro MessagePack class
YuuichiAkagawa 0:b4815a079a4b 2 * Copyright (c) 2014 Yuuichi Akagawa
YuuichiAkagawa 0:b4815a079a4b 3 *
YuuichiAkagawa 0:b4815a079a4b 4 * Licensed under the Apache License, Version 2.0 (the "License");
YuuichiAkagawa 0:b4815a079a4b 5 * you may not use this file except in compliance with the License.
YuuichiAkagawa 0:b4815a079a4b 6 * You may obtain a copy of the License at
YuuichiAkagawa 0:b4815a079a4b 7 *
YuuichiAkagawa 0:b4815a079a4b 8 * http://www.apache.org/licenses/LICENSE-2.0
YuuichiAkagawa 0:b4815a079a4b 9 *
YuuichiAkagawa 0:b4815a079a4b 10 * Unless required by applicable law or agreed to in writing, software
YuuichiAkagawa 0:b4815a079a4b 11 * distributed under the License is distributed on an "AS IS" BASIS,
YuuichiAkagawa 0:b4815a079a4b 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
YuuichiAkagawa 0:b4815a079a4b 13 * See the License for the specific language governing permissions and
YuuichiAkagawa 0:b4815a079a4b 14 * limitations under the License.
YuuichiAkagawa 0:b4815a079a4b 15 */
YuuichiAkagawa 0:b4815a079a4b 16
YuuichiAkagawa 0:b4815a079a4b 17 #include "mbed.h"
YuuichiAkagawa 0:b4815a079a4b 18 #include "uMP.h"
YuuichiAkagawa 0:b4815a079a4b 19
YuuichiAkagawa 0:b4815a079a4b 20 uMP::uMP() :
YuuichiAkagawa 0:b4815a079a4b 21 _ptr(0), _nbuf(DEFAULT_BUFFSIZE)
YuuichiAkagawa 0:b4815a079a4b 22 {
YuuichiAkagawa 0:b4815a079a4b 23 _buf = new uint8_t[_nbuf];
YuuichiAkagawa 0:b4815a079a4b 24 }
YuuichiAkagawa 0:b4815a079a4b 25
YuuichiAkagawa 0:b4815a079a4b 26 uMP::uMP(uint32_t size) :
YuuichiAkagawa 0:b4815a079a4b 27 _ptr(0), _nbuf(size)
YuuichiAkagawa 0:b4815a079a4b 28 {
YuuichiAkagawa 0:b4815a079a4b 29 _buf = new uint8_t[_nbuf];
YuuichiAkagawa 0:b4815a079a4b 30 }
YuuichiAkagawa 0:b4815a079a4b 31
YuuichiAkagawa 0:b4815a079a4b 32 uMP::~uMP()
YuuichiAkagawa 0:b4815a079a4b 33 {
YuuichiAkagawa 0:b4815a079a4b 34 delete[] _buf;
YuuichiAkagawa 0:b4815a079a4b 35 }
YuuichiAkagawa 0:b4815a079a4b 36
YuuichiAkagawa 0:b4815a079a4b 37 /* MessagePack funcions (Subset) */
YuuichiAkagawa 0:b4815a079a4b 38 bool uMP::set_nil()
YuuichiAkagawa 0:b4815a079a4b 39 {
YuuichiAkagawa 0:b4815a079a4b 40 return set_buffer(TAG_NIL);
YuuichiAkagawa 0:b4815a079a4b 41 }
YuuichiAkagawa 0:b4815a079a4b 42
YuuichiAkagawa 0:b4815a079a4b 43 bool uMP::set_true()
YuuichiAkagawa 0:b4815a079a4b 44 {
YuuichiAkagawa 0:b4815a079a4b 45 return set_buffer(TAG_TRUE);
YuuichiAkagawa 0:b4815a079a4b 46 }
YuuichiAkagawa 0:b4815a079a4b 47
YuuichiAkagawa 0:b4815a079a4b 48 bool uMP::set_false()
YuuichiAkagawa 0:b4815a079a4b 49 {
YuuichiAkagawa 0:b4815a079a4b 50 return set_buffer(TAG_FALSE);
YuuichiAkagawa 0:b4815a079a4b 51 }
YuuichiAkagawa 0:b4815a079a4b 52
YuuichiAkagawa 1:6b1268731465 53 bool uMP::start_array(uint32_t size)
YuuichiAkagawa 0:b4815a079a4b 54 {
YuuichiAkagawa 0:b4815a079a4b 55 if (size <= 0x0f) {
YuuichiAkagawa 0:b4815a079a4b 56 return set_buffer((uint8_t)(TAG_FIXARRAY | size));
YuuichiAkagawa 0:b4815a079a4b 57 }
YuuichiAkagawa 0:b4815a079a4b 58 return false;
YuuichiAkagawa 0:b4815a079a4b 59 }
YuuichiAkagawa 0:b4815a079a4b 60
YuuichiAkagawa 1:6b1268731465 61 bool uMP::start_map(uint32_t size)
YuuichiAkagawa 0:b4815a079a4b 62 {
YuuichiAkagawa 0:b4815a079a4b 63 if (size <= 0x0f) {
YuuichiAkagawa 0:b4815a079a4b 64 return set_buffer((uint8_t)(TAG_FIXMAP | size));
YuuichiAkagawa 0:b4815a079a4b 65 }
YuuichiAkagawa 0:b4815a079a4b 66 #if 0
YuuichiAkagawa 0:b4815a079a4b 67 if (size <= 0xffff) {
YuuichiAkagawa 0:b4815a079a4b 68 return cmp_write_map16(ctx, size);
YuuichiAkagawa 0:b4815a079a4b 69 }
YuuichiAkagawa 0:b4815a079a4b 70 #endif
YuuichiAkagawa 0:b4815a079a4b 71 return false;
YuuichiAkagawa 0:b4815a079a4b 72 }
YuuichiAkagawa 0:b4815a079a4b 73
YuuichiAkagawa 0:b4815a079a4b 74 bool uMP::set_uint(uint32_t u)
YuuichiAkagawa 0:b4815a079a4b 75 {
YuuichiAkagawa 0:b4815a079a4b 76 if (u <= 0x7f) {
YuuichiAkagawa 0:b4815a079a4b 77 return set_buffer((uint8_t)u);
YuuichiAkagawa 0:b4815a079a4b 78 }
YuuichiAkagawa 0:b4815a079a4b 79 if (u <= 0xff) {
YuuichiAkagawa 0:b4815a079a4b 80 return set_u8((uint8_t)u);
YuuichiAkagawa 0:b4815a079a4b 81 }
YuuichiAkagawa 0:b4815a079a4b 82 if (u <= 0xffff) {
YuuichiAkagawa 0:b4815a079a4b 83 return set_u16((uint16_t)u);
YuuichiAkagawa 0:b4815a079a4b 84 }
YuuichiAkagawa 0:b4815a079a4b 85 if (u <= 0xffffffff) {
YuuichiAkagawa 0:b4815a079a4b 86 return set_u32(u);
YuuichiAkagawa 0:b4815a079a4b 87 }
YuuichiAkagawa 0:b4815a079a4b 88 return false;
YuuichiAkagawa 0:b4815a079a4b 89 }
YuuichiAkagawa 0:b4815a079a4b 90
YuuichiAkagawa 0:b4815a079a4b 91 bool uMP::set_u8(uint8_t u)
YuuichiAkagawa 0:b4815a079a4b 92 {
YuuichiAkagawa 0:b4815a079a4b 93 if (!set_buffer((uint8_t)TAG_U8)) {
YuuichiAkagawa 0:b4815a079a4b 94 return false;
YuuichiAkagawa 0:b4815a079a4b 95 }
YuuichiAkagawa 0:b4815a079a4b 96 return set_buffer(u);
YuuichiAkagawa 0:b4815a079a4b 97 }
YuuichiAkagawa 0:b4815a079a4b 98
YuuichiAkagawa 0:b4815a079a4b 99 bool uMP::set_u16(uint16_t u)
YuuichiAkagawa 0:b4815a079a4b 100 {
YuuichiAkagawa 0:b4815a079a4b 101 if (!set_buffer((uint8_t)TAG_U16)) {
YuuichiAkagawa 0:b4815a079a4b 102 return false;
YuuichiAkagawa 0:b4815a079a4b 103 }
YuuichiAkagawa 0:b4815a079a4b 104
YuuichiAkagawa 0:b4815a079a4b 105 u = to_be16(u);
YuuichiAkagawa 0:b4815a079a4b 106 return set_buffer((uint8_t*)&u, sizeof(uint16_t));
YuuichiAkagawa 0:b4815a079a4b 107 }
YuuichiAkagawa 0:b4815a079a4b 108
YuuichiAkagawa 0:b4815a079a4b 109 bool uMP::set_u32(uint32_t u)
YuuichiAkagawa 0:b4815a079a4b 110 {
YuuichiAkagawa 0:b4815a079a4b 111 if (!set_buffer((uint8_t)TAG_U32)) {
YuuichiAkagawa 0:b4815a079a4b 112 return false;
YuuichiAkagawa 0:b4815a079a4b 113 }
YuuichiAkagawa 0:b4815a079a4b 114
YuuichiAkagawa 0:b4815a079a4b 115 u = to_be32(u);
YuuichiAkagawa 0:b4815a079a4b 116 return set_buffer((uint8_t*)&u, sizeof(uint32_t));
YuuichiAkagawa 0:b4815a079a4b 117 }
YuuichiAkagawa 0:b4815a079a4b 118
YuuichiAkagawa 0:b4815a079a4b 119 bool uMP::set_u64(uint64_t u)
YuuichiAkagawa 0:b4815a079a4b 120 {
YuuichiAkagawa 0:b4815a079a4b 121 if (!set_buffer((uint8_t)TAG_U64)) {
YuuichiAkagawa 0:b4815a079a4b 122 return false;
YuuichiAkagawa 0:b4815a079a4b 123 }
YuuichiAkagawa 0:b4815a079a4b 124
YuuichiAkagawa 0:b4815a079a4b 125 u = to_be64(u);
YuuichiAkagawa 0:b4815a079a4b 126 return set_buffer((uint8_t*)&u, sizeof(uint64_t));
YuuichiAkagawa 0:b4815a079a4b 127 }
YuuichiAkagawa 0:b4815a079a4b 128
YuuichiAkagawa 0:b4815a079a4b 129 bool uMP::set_sint(int32_t i)
YuuichiAkagawa 0:b4815a079a4b 130 {
YuuichiAkagawa 0:b4815a079a4b 131 if (i >=0) {
YuuichiAkagawa 0:b4815a079a4b 132 return set_uint((uint32_t)i);
YuuichiAkagawa 0:b4815a079a4b 133 }
YuuichiAkagawa 0:b4815a079a4b 134 if (i >= -32) {
YuuichiAkagawa 0:b4815a079a4b 135 return set_buffer((uint8_t)i);
YuuichiAkagawa 0:b4815a079a4b 136 }
YuuichiAkagawa 0:b4815a079a4b 137 if (i >= -128) {
YuuichiAkagawa 0:b4815a079a4b 138 return set_s8(i);
YuuichiAkagawa 0:b4815a079a4b 139 }
YuuichiAkagawa 0:b4815a079a4b 140 if (i >= -32768) {
YuuichiAkagawa 0:b4815a079a4b 141 return set_s16(i);
YuuichiAkagawa 0:b4815a079a4b 142 }
YuuichiAkagawa 0:b4815a079a4b 143 if (i >= -2147483648) {
YuuichiAkagawa 0:b4815a079a4b 144 return set_s32(i);
YuuichiAkagawa 0:b4815a079a4b 145 }
YuuichiAkagawa 0:b4815a079a4b 146 return false;
YuuichiAkagawa 0:b4815a079a4b 147 }
YuuichiAkagawa 0:b4815a079a4b 148
YuuichiAkagawa 0:b4815a079a4b 149 bool uMP::set_s8(int8_t i)
YuuichiAkagawa 0:b4815a079a4b 150 {
YuuichiAkagawa 0:b4815a079a4b 151 if (!set_buffer((uint8_t)TAG_S8)) {
YuuichiAkagawa 0:b4815a079a4b 152 return false;
YuuichiAkagawa 0:b4815a079a4b 153 }
YuuichiAkagawa 0:b4815a079a4b 154 return set_buffer((uint8_t)i);
YuuichiAkagawa 0:b4815a079a4b 155 }
YuuichiAkagawa 0:b4815a079a4b 156
YuuichiAkagawa 0:b4815a079a4b 157 bool uMP::set_s16(int16_t i)
YuuichiAkagawa 0:b4815a079a4b 158 {
YuuichiAkagawa 0:b4815a079a4b 159 if (!set_buffer((uint8_t)TAG_S16)) {
YuuichiAkagawa 0:b4815a079a4b 160 return false;
YuuichiAkagawa 0:b4815a079a4b 161 }
YuuichiAkagawa 0:b4815a079a4b 162
YuuichiAkagawa 0:b4815a079a4b 163 i = to_be16(i);
YuuichiAkagawa 0:b4815a079a4b 164 return set_buffer((uint8_t*)&i, sizeof(int16_t));
YuuichiAkagawa 0:b4815a079a4b 165 }
YuuichiAkagawa 0:b4815a079a4b 166
YuuichiAkagawa 0:b4815a079a4b 167 bool uMP::set_s32(int32_t i)
YuuichiAkagawa 0:b4815a079a4b 168 {
YuuichiAkagawa 0:b4815a079a4b 169 if (!set_buffer((uint8_t)TAG_S32)) {
YuuichiAkagawa 0:b4815a079a4b 170 return false;
YuuichiAkagawa 0:b4815a079a4b 171 }
YuuichiAkagawa 0:b4815a079a4b 172
YuuichiAkagawa 0:b4815a079a4b 173 i = to_be32(i);
YuuichiAkagawa 0:b4815a079a4b 174 return set_buffer((uint8_t*)&i, sizeof(int32_t));
YuuichiAkagawa 0:b4815a079a4b 175 }
YuuichiAkagawa 0:b4815a079a4b 176
YuuichiAkagawa 0:b4815a079a4b 177 bool uMP::set_s64(int64_t i)
YuuichiAkagawa 0:b4815a079a4b 178 {
YuuichiAkagawa 0:b4815a079a4b 179 if (!set_buffer((uint8_t)TAG_S64)) {
YuuichiAkagawa 0:b4815a079a4b 180 return false;
YuuichiAkagawa 0:b4815a079a4b 181 }
YuuichiAkagawa 0:b4815a079a4b 182
YuuichiAkagawa 0:b4815a079a4b 183 i = to_be64(i);
YuuichiAkagawa 0:b4815a079a4b 184 return set_buffer((uint8_t*)&i, sizeof(int64_t));
YuuichiAkagawa 0:b4815a079a4b 185 }
YuuichiAkagawa 0:b4815a079a4b 186
YuuichiAkagawa 0:b4815a079a4b 187 bool uMP::set_str(const char *data, uint32_t size)
YuuichiAkagawa 0:b4815a079a4b 188 {
YuuichiAkagawa 0:b4815a079a4b 189 if (size <= 0x1f) {
YuuichiAkagawa 0:b4815a079a4b 190 return set_fixstr(data, size);
YuuichiAkagawa 0:b4815a079a4b 191 }
YuuichiAkagawa 0:b4815a079a4b 192 if (size <= 0xff) {
YuuichiAkagawa 0:b4815a079a4b 193 return set_str8(data, size);
YuuichiAkagawa 0:b4815a079a4b 194 }
YuuichiAkagawa 0:b4815a079a4b 195 return false;
YuuichiAkagawa 0:b4815a079a4b 196 }
YuuichiAkagawa 0:b4815a079a4b 197
YuuichiAkagawa 1:6b1268731465 198 bool uMP::set_str(const std::string& str)
YuuichiAkagawa 1:6b1268731465 199 {
YuuichiAkagawa 1:6b1268731465 200 return set_str(str.c_str(), (uint32_t)str.size());
YuuichiAkagawa 1:6b1268731465 201 }
YuuichiAkagawa 1:6b1268731465 202
YuuichiAkagawa 0:b4815a079a4b 203 bool uMP::set_fixstr(const char *data, uint8_t size)
YuuichiAkagawa 0:b4815a079a4b 204 {
YuuichiAkagawa 0:b4815a079a4b 205 if (size > 0x1f) {
YuuichiAkagawa 0:b4815a079a4b 206 return false;
YuuichiAkagawa 0:b4815a079a4b 207 }
YuuichiAkagawa 0:b4815a079a4b 208 if (!set_buffer((uint8_t)(TAG_FIXSTR | size))) {
YuuichiAkagawa 0:b4815a079a4b 209 return false;
YuuichiAkagawa 0:b4815a079a4b 210 }
YuuichiAkagawa 0:b4815a079a4b 211 if (!set_buffer((uint8_t*)data, size)) {
YuuichiAkagawa 0:b4815a079a4b 212 return false;
YuuichiAkagawa 0:b4815a079a4b 213 }
YuuichiAkagawa 0:b4815a079a4b 214 return true;
YuuichiAkagawa 0:b4815a079a4b 215 }
YuuichiAkagawa 0:b4815a079a4b 216
YuuichiAkagawa 0:b4815a079a4b 217 bool uMP::set_str8(const char *data, uint8_t size)
YuuichiAkagawa 0:b4815a079a4b 218 {
YuuichiAkagawa 0:b4815a079a4b 219 if (size > 0xff) {
YuuichiAkagawa 0:b4815a079a4b 220 return false;
YuuichiAkagawa 0:b4815a079a4b 221 }
YuuichiAkagawa 0:b4815a079a4b 222 if (!set_buffer((uint8_t)TAG_STR8)) {
YuuichiAkagawa 0:b4815a079a4b 223 return false;
YuuichiAkagawa 0:b4815a079a4b 224 }
YuuichiAkagawa 0:b4815a079a4b 225 if (!set_buffer((uint8_t)size)) {
YuuichiAkagawa 0:b4815a079a4b 226 return false;
YuuichiAkagawa 0:b4815a079a4b 227 }
YuuichiAkagawa 0:b4815a079a4b 228 if (!set_buffer((uint8_t*)data, size)) {
YuuichiAkagawa 0:b4815a079a4b 229 return false;
YuuichiAkagawa 0:b4815a079a4b 230 }
YuuichiAkagawa 0:b4815a079a4b 231 return true;
YuuichiAkagawa 0:b4815a079a4b 232 }
YuuichiAkagawa 0:b4815a079a4b 233
YuuichiAkagawa 0:b4815a079a4b 234 bool uMP::set_raw(const char *data, uint8_t size)
YuuichiAkagawa 0:b4815a079a4b 235 {
YuuichiAkagawa 0:b4815a079a4b 236 if (!set_buffer((uint8_t*)data, size)) {
YuuichiAkagawa 0:b4815a079a4b 237 return false;
YuuichiAkagawa 0:b4815a079a4b 238 }
YuuichiAkagawa 0:b4815a079a4b 239 return true;
YuuichiAkagawa 0:b4815a079a4b 240 }
YuuichiAkagawa 0:b4815a079a4b 241
YuuichiAkagawa 0:b4815a079a4b 242 bool uMP::set_float(float f)
YuuichiAkagawa 0:b4815a079a4b 243 {
YuuichiAkagawa 0:b4815a079a4b 244 if (!set_buffer((uint8_t)TAG_FLOAT32)) {
YuuichiAkagawa 0:b4815a079a4b 245 return false;
YuuichiAkagawa 0:b4815a079a4b 246 }
YuuichiAkagawa 0:b4815a079a4b 247 f = to_be32(f);
YuuichiAkagawa 0:b4815a079a4b 248 if (!set_buffer((uint8_t*)&f, sizeof(float))) {
YuuichiAkagawa 0:b4815a079a4b 249 return false;
YuuichiAkagawa 0:b4815a079a4b 250 }
YuuichiAkagawa 0:b4815a079a4b 251 return true;
YuuichiAkagawa 0:b4815a079a4b 252 }
YuuichiAkagawa 0:b4815a079a4b 253
YuuichiAkagawa 0:b4815a079a4b 254 bool uMP::set_double(double d)
YuuichiAkagawa 0:b4815a079a4b 255 {
YuuichiAkagawa 0:b4815a079a4b 256 if (!set_buffer((uint8_t)TAG_FLOAT64)) {
YuuichiAkagawa 0:b4815a079a4b 257 return false;
YuuichiAkagawa 0:b4815a079a4b 258 }
YuuichiAkagawa 0:b4815a079a4b 259 d = to_be64(d);
YuuichiAkagawa 0:b4815a079a4b 260 if (!set_buffer((uint8_t*)&d, sizeof(double))) {
YuuichiAkagawa 0:b4815a079a4b 261 return false;
YuuichiAkagawa 0:b4815a079a4b 262 }
YuuichiAkagawa 0:b4815a079a4b 263 return true;
YuuichiAkagawa 0:b4815a079a4b 264 }
YuuichiAkagawa 0:b4815a079a4b 265
YuuichiAkagawa 0:b4815a079a4b 266 bool uMP::set_buffer(const uint8_t c)
YuuichiAkagawa 0:b4815a079a4b 267 {
YuuichiAkagawa 0:b4815a079a4b 268 //buffer overflow?
YuuichiAkagawa 0:b4815a079a4b 269 if ( _ptr == _nbuf) {
YuuichiAkagawa 0:b4815a079a4b 270 return false;
YuuichiAkagawa 0:b4815a079a4b 271 }
YuuichiAkagawa 0:b4815a079a4b 272 *(_buf+_ptr) = c;
YuuichiAkagawa 0:b4815a079a4b 273 _ptr++;
YuuichiAkagawa 0:b4815a079a4b 274 return true;
YuuichiAkagawa 0:b4815a079a4b 275 }
YuuichiAkagawa 0:b4815a079a4b 276
YuuichiAkagawa 0:b4815a079a4b 277 bool uMP::set_buffer(const uint8_t *c, size_t size)
YuuichiAkagawa 0:b4815a079a4b 278 {
YuuichiAkagawa 0:b4815a079a4b 279 //buffer overflow?
YuuichiAkagawa 0:b4815a079a4b 280 if ( (_ptr+size) > _nbuf) {
YuuichiAkagawa 0:b4815a079a4b 281 return false;
YuuichiAkagawa 0:b4815a079a4b 282 }
YuuichiAkagawa 0:b4815a079a4b 283 while (size--) {
YuuichiAkagawa 0:b4815a079a4b 284 *(_buf+_ptr) = *c++;
YuuichiAkagawa 0:b4815a079a4b 285 _ptr++;
YuuichiAkagawa 0:b4815a079a4b 286 }
YuuichiAkagawa 0:b4815a079a4b 287 return true;
YuuichiAkagawa 0:b4815a079a4b 288 }
YuuichiAkagawa 0:b4815a079a4b 289
YuuichiAkagawa 0:b4815a079a4b 290 //ByteOrder
YuuichiAkagawa 0:b4815a079a4b 291 template<typename T> T uMP::to_be16(T t)
YuuichiAkagawa 0:b4815a079a4b 292 {
YuuichiAkagawa 0:b4815a079a4b 293 uint16_t *x = (uint16_t *)&t;
YuuichiAkagawa 0:b4815a079a4b 294 *x = __REV16(*x);
YuuichiAkagawa 0:b4815a079a4b 295 return t;
YuuichiAkagawa 0:b4815a079a4b 296 }
YuuichiAkagawa 0:b4815a079a4b 297
YuuichiAkagawa 0:b4815a079a4b 298 template<typename T> T uMP::to_be32(T t)
YuuichiAkagawa 0:b4815a079a4b 299 {
YuuichiAkagawa 0:b4815a079a4b 300 uint32_t *x = (uint32_t *)&t;
YuuichiAkagawa 0:b4815a079a4b 301 *x = __REV(*x);
YuuichiAkagawa 0:b4815a079a4b 302 return t;
YuuichiAkagawa 0:b4815a079a4b 303 }
YuuichiAkagawa 0:b4815a079a4b 304
YuuichiAkagawa 0:b4815a079a4b 305 template<typename T> T uMP::to_be64(T t)
YuuichiAkagawa 0:b4815a079a4b 306 {
YuuichiAkagawa 0:b4815a079a4b 307 uint32_t *x = (uint32_t *)&t;
YuuichiAkagawa 0:b4815a079a4b 308 uint32_t h = __REV(*x);
YuuichiAkagawa 0:b4815a079a4b 309 uint32_t l = __REV(*(x+1));
YuuichiAkagawa 0:b4815a079a4b 310 //swap
YuuichiAkagawa 0:b4815a079a4b 311 *x = l;
YuuichiAkagawa 0:b4815a079a4b 312 *(x+1) = h;
YuuichiAkagawa 0:b4815a079a4b 313 return t;
YuuichiAkagawa 0:b4815a079a4b 314 }
YuuichiAkagawa 1:6b1268731465 315
YuuichiAkagawa 1:6b1268731465 316 // map functions
YuuichiAkagawa 1:6b1268731465 317 bool uMP::map(const std::string& k, uint8_t v)
YuuichiAkagawa 1:6b1268731465 318 {
YuuichiAkagawa 1:6b1268731465 319 if( set_str(k) == false )
YuuichiAkagawa 1:6b1268731465 320 return false;
YuuichiAkagawa 1:6b1268731465 321 return set_u8(v);
YuuichiAkagawa 1:6b1268731465 322 }
YuuichiAkagawa 1:6b1268731465 323
YuuichiAkagawa 1:6b1268731465 324 bool uMP::map(const std::string& k, uint16_t v)
YuuichiAkagawa 1:6b1268731465 325 {
YuuichiAkagawa 1:6b1268731465 326 if( set_str(k) == false )
YuuichiAkagawa 1:6b1268731465 327 return false;
YuuichiAkagawa 1:6b1268731465 328 return set_u16(v);
YuuichiAkagawa 1:6b1268731465 329 }
YuuichiAkagawa 1:6b1268731465 330
YuuichiAkagawa 1:6b1268731465 331 bool uMP::map(const std::string& k, uint32_t v)
YuuichiAkagawa 1:6b1268731465 332 {
YuuichiAkagawa 1:6b1268731465 333 if( set_str(k) == false )
YuuichiAkagawa 1:6b1268731465 334 return false;
YuuichiAkagawa 1:6b1268731465 335 return set_uint(v);
YuuichiAkagawa 1:6b1268731465 336 }
YuuichiAkagawa 1:6b1268731465 337
YuuichiAkagawa 1:6b1268731465 338 bool uMP::map(const std::string& k, int8_t v)
YuuichiAkagawa 1:6b1268731465 339 {
YuuichiAkagawa 1:6b1268731465 340 if( set_str(k) == false )
YuuichiAkagawa 1:6b1268731465 341 return false;
YuuichiAkagawa 1:6b1268731465 342 return set_s8(v);
YuuichiAkagawa 1:6b1268731465 343 }
YuuichiAkagawa 1:6b1268731465 344
YuuichiAkagawa 1:6b1268731465 345 bool uMP::map(const std::string& k, int16_t v)
YuuichiAkagawa 1:6b1268731465 346 {
YuuichiAkagawa 1:6b1268731465 347 if( set_str(k) == false )
YuuichiAkagawa 1:6b1268731465 348 return false;
YuuichiAkagawa 1:6b1268731465 349 return set_s16(v);
YuuichiAkagawa 1:6b1268731465 350 }
YuuichiAkagawa 1:6b1268731465 351
YuuichiAkagawa 1:6b1268731465 352 bool uMP::map(const std::string& k, int32_t v)
YuuichiAkagawa 1:6b1268731465 353 {
YuuichiAkagawa 1:6b1268731465 354 if( set_str(k) == false )
YuuichiAkagawa 1:6b1268731465 355 return false;
YuuichiAkagawa 1:6b1268731465 356 return set_sint(v);
YuuichiAkagawa 1:6b1268731465 357 }
YuuichiAkagawa 1:6b1268731465 358
YuuichiAkagawa 1:6b1268731465 359 bool uMP::map(const std::string& k, float v)
YuuichiAkagawa 1:6b1268731465 360 {
YuuichiAkagawa 1:6b1268731465 361 if( set_str(k) == false )
YuuichiAkagawa 1:6b1268731465 362 return false;
YuuichiAkagawa 1:6b1268731465 363 return set_float(v);
YuuichiAkagawa 1:6b1268731465 364 }
YuuichiAkagawa 1:6b1268731465 365
YuuichiAkagawa 1:6b1268731465 366 bool uMP::map(const std::string& k, double v)
YuuichiAkagawa 1:6b1268731465 367 {
YuuichiAkagawa 1:6b1268731465 368 if( set_str(k) == false )
YuuichiAkagawa 1:6b1268731465 369 return false;
YuuichiAkagawa 1:6b1268731465 370 return set_double(v);
YuuichiAkagawa 1:6b1268731465 371 }
YuuichiAkagawa 1:6b1268731465 372
YuuichiAkagawa 1:6b1268731465 373 bool uMP::map(const std::string& k, const char *v)
YuuichiAkagawa 1:6b1268731465 374 {
YuuichiAkagawa 1:6b1268731465 375 if( set_str(k) == false )
YuuichiAkagawa 1:6b1268731465 376 return false;
YuuichiAkagawa 1:6b1268731465 377 return set_str(v);
YuuichiAkagawa 1:6b1268731465 378 }
YuuichiAkagawa 1:6b1268731465 379
YuuichiAkagawa 1:6b1268731465 380 bool uMP::map(const std::string& k, const std::string& v)
YuuichiAkagawa 1:6b1268731465 381 {
YuuichiAkagawa 1:6b1268731465 382 if( set_str(k) == false )
YuuichiAkagawa 1:6b1268731465 383 return false;
YuuichiAkagawa 1:6b1268731465 384 return set_str(v);
YuuichiAkagawa 1:6b1268731465 385 }