+bool functions::littleEndian()
+throw() {
+ int i = 1;
+ char *p = (char *) &i;
+ if (p[0] == 1) return true;
+ return false;
+}
+
+const char* functions::codeInteger(char* result, const int n)
+throw() {
+ int aux(htonl(n));
+ char* w((char*) &aux);
+ *result = *w;
+ *(result + 1) = *(w + 1);
+ *(result + 2) = *(w + 2);
+ *(result + 3) = *(w + 3);
+ return result;
+}
+
+const char* functions::codeShort(char* result, const short int n)
+throw() {
+ short int aux(htons(n));
+ char* w((char*) &aux);
+ *result = *w;
+ *(result + 1) = *(w + 1);
+ return result;
+}
+
+const char* functions::codeInteger64(char* result, const S64 n)
+throw() {
+ S64 aux(0xffffffff);
+ int n2;
+ aux <<= 32;
+ aux &= n;
+ n2 = (aux >> 32) & 0xffffffff;
+ codeInteger(result, n2);
+ n2 = n & 0xffffffff;
+ codeInteger(result + sizeof(int), n2);
+ return result;
+}
+
+/*static*/
+const char* functions::codeFloat(char* result, const float n)
+throw() {
+ int ii;
+ anna_memcpy(&ii, &n, sizeof(n));
+ return functions::codeInteger(result, ii);
+}
+
+/*static*/
+const char* functions::codeDouble(char* result, const double n)
+throw() {
+ S64 ii;
+ anna_memcpy(&ii, &n, sizeof(n));
+ return functions::codeInteger64(result, ii);
+}
+
+int functions::decodeInteger(const char* data)
+throw() {
+ int result;
+ char* w((char*) &result);
+ *w = *data;
+ *(w + 1) = *(data + 1);
+ *(w + 2) = *(data + 2);
+ *(w + 3) = *(data + 3);
+ return ntohl(result);
+}
+
+short int functions::decodeShort(const char* data)
+throw() {
+ short int result;
+ char* w((char*) &result);
+ *w = *data;
+ *(w + 1) = *(data + 1);
+ return ntohs(result);
+}
+
+S64 functions::decodeInteger64(const char* data)
+throw() {
+ S64 result(decodeInteger(data));
+ result <<= 32;
+ return result |= (decodeInteger(data + sizeof(int)) & 0xffffffff);
+}
+
+/*static*/
+float functions::decodeFloat(const char* data)
+throw() {
+ float result;
+ int ii = functions::decodeInteger(data);
+ anna_memcpy(&result, &ii, sizeof(result));
+ return result;
+}
+
+/*static*/
+double functions::decodeDouble(const char* data)
+throw() {
+ double result;
+ S64 ii = functions::decodeInteger64(data);
+ anna_memcpy(&result, &ii, sizeof(result));
+ return result;
+}
+
+