/* * %CopyrightBegin% * * Copyright Ericsson AB 1998-2016. All Rights Reserved. * * Licensed 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. * * %CopyrightEnd% * */ #ifndef _PUTGET_H #define _PUTGET_H #define put8(s,n) do { \ (s)[0] = (char)((n) & 0xff); \ (s) += 1; \ } while (0) #define put16le(s,n) do { \ (s)[0] = (n) & 0xff; \ (s)[1] = ((n) >> 8) & 0xff; \ (s) += 2; \ } while (0) \ #define put32le(s,n) do { \ (s)[0] = (n) & 0xff; \ (s)[1] = ((n) >> 8) & 0xff; \ (s)[2] = ((n) >> 16) & 0xff; \ (s)[3] = ((n) >> 24) & 0xff; \ (s) += 4; \ } while (0) #define put16be(s,n) do { \ (s)[0] = ((n) >> 8) & 0xff; \ (s)[1] = (n) & 0xff; \ (s) += 2; \ } while (0) #define put32be(s,n) do { \ (s)[0] = ((n) >> 24) & 0xff; \ (s)[1] = ((n) >> 16) & 0xff; \ (s)[2] = ((n) >> 8) & 0xff; \ (s)[3] = (n) & 0xff; \ (s) += 4; \ } while (0) #define put64be(s,n) do { \ (s)[0] = ((n) >> 56) & 0xff; \ (s)[1] = ((n) >> 48) & 0xff; \ (s)[2] = ((n) >> 40) & 0xff; \ (s)[3] = ((n) >> 32) & 0xff; \ (s)[4] = ((n) >> 24) & 0xff; \ (s)[5] = ((n) >> 16) & 0xff; \ (s)[6] = ((n) >> 8) & 0xff; \ (s)[7] = (n) & 0xff; \ (s) += 8; \ } while (0) #define get8(s) \ ((s) += 1, \ ((unsigned char *)(s))[-1] & 0xff) #define get16le(s) \ ((s) += 2, \ (((((unsigned char *)(s))[-1] << 8) | \ ((unsigned char *)(s))[-2])) & 0xffff) #define get32le(s) \ ((s) += 4, \ ((((unsigned char *)(s))[-1] << 24) | \ (((unsigned char *)(s))[-2] << 16) | \ (((unsigned char *)(s))[-3] << 8) | \ ((unsigned char *)(s))[-4])) #define get16be(s) \ ((s) += 2, \ (((((unsigned char *)(s))[-2] << 8) | \ ((unsigned char *)(s))[-1])) & 0xffff) #define get32be(s) \ ((s) += 4, \ ((((unsigned char *)(s))[-4] << 24) | \ (((unsigned char *)(s))[-3] << 16) | \ (((unsigned char *)(s))[-2] << 8) | \ ((unsigned char *)(s))[-1])) #define get64be(s) \ ((s) += 8, \ (((EI_ULONGLONG)((unsigned char *)(s))[-8] << 56) | \ ((EI_ULONGLONG)((unsigned char *)(s))[-7] << 48) | \ ((EI_ULONGLONG)((unsigned char *)(s))[-6] << 40) | \ ((EI_ULONGLONG)((unsigned char *)(s))[-5] << 32) | \ ((EI_ULONGLONG)((unsigned char *)(s))[-4] << 24) | \ ((EI_ULONGLONG)((unsigned char *)(s))[-3] << 16) | \ ((EI_ULONGLONG)((unsigned char *)(s))[-2] << 8) | \ (EI_ULONGLONG)((unsigned char *)(s))[-1])) int utf8_to_latin1(char* dst, const char* src, int slen, int destlen, erlang_char_encoding* res_encp); int latin1_to_utf8(char* dst, const char* src, int slen, int destlen, erlang_char_encoding* res_encp); int ei_internal_get_atom(const char** bufp, char* p, erlang_char_encoding*); int ei_internal_put_atom(char** bufp, const char* p, int slen, erlang_char_encoding); #define get_atom ei_internal_get_atom #define put_atom ei_internal_put_atom typedef union float_ext { double d; EI_ULONGLONG val; } FloatExt; #endif /* _PUTGET_H */