X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=include%2Fanna%2Fcore%2Ffunctions.hpp;h=512499d5f6da20d620847ea8754193ed5732e4eb;hb=3e258840b15577cb8bda3cdedd0b9b88e16404b3;hp=f41d281485364fd927d033781337b7cfd44f0914;hpb=4e12ac57e93c052f716a6305ad8fc099c45899d1;p=anna.git diff --git a/include/anna/core/functions.hpp b/include/anna/core/functions.hpp index f41d281..512499d 100644 --- a/include/anna/core/functions.hpp +++ b/include/anna/core/functions.hpp @@ -1,4 +1,4 @@ -// ANNA - Anna is Not 'N' Anymore +// ANNA - Anna is Not Nothingness Anymore // // (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo // @@ -117,7 +117,7 @@ struct functions { /* * Indica el número de bits de un entero largo. */ - static const int int64BitSize = sizeof(Integer64) * 8; + static const int int64BitSize = sizeof(S64) * 8; /** \param number Numero a convertir. @@ -141,13 +141,13 @@ struct functions { Devuelve un literal con tel numero convertido a cadena decimal @return Un literal con el numero signo convertido a cadena decimal. */ - static std::string asString(const Integer64 number) throw(); + static std::string asString(const S64 number) throw(); /** Devuelve un literal con tel numero convertido a cadena decimal @return Un literal con el numero signo convertido a cadena decimal. */ - static std::string asString(const Unsigned64 number) throw(); + static std::string asString(const U64 number) throw(); /** \param _bool Booleano a convertir. @@ -195,7 +195,7 @@ struct functions { \param number Numero a convertir. @return Un literal con el numero convertido a cadena decimal. */ - static std::string asText(const char* comment, const Integer64 number) + static std::string asText(const char* comment, const S64 number) throw() { std::string result(comment); return result += asString(number); @@ -258,7 +258,7 @@ struct functions { \param number Numero a convertir. @return Un literal con el numero convertido a cadena hexadecimal. */ - static std::string asHexString(const Integer64 number) throw(); + static std::string asHexString(const S64 number) throw(); /** \param number Numero a convertir. @@ -270,7 +270,7 @@ struct functions { \param number Numero a convertir. @return Un literal con el numero convertido a cadena hexadecimal. */ - static std::string asHexString(const Unsigned64 number) throw() { return asHexString((Integer64) number); } + static std::string asHexString(const U64 number) throw() { return asHexString((S64) number); } /** \param comment Comentario que precede al valor. @@ -288,7 +288,7 @@ struct functions { \param number Numero a convertir. @return Un literal con el numero convertido a cadena decimal. */ - static std::string asHexText(const char* comment, const Integer64 number) + static std::string asHexText(const char* comment, const S64 number) throw() { std::string result(comment); return result += asHexString(number); @@ -336,13 +336,13 @@ struct functions { Calcula la funcion hash de la cadena recibida como parametro. \param str Cadena a la que aplicar la funcion hash. */ - static Integer64 hash(const char* str) throw(); + static S64 hash(const char* str) throw(); /** Calcula la funcion hash de la cadena recibida como parametro. \param str Cadena a la que aplicar la funcion hash. */ - static Integer64 hash(const std::string& str) throw() { return hash(str.c_str()); } + static S64 hash(const std::string& str) throw() { return hash(str.c_str()); } /** Calcula la funcion hash exclusive de la cadena recibida como parametro. @@ -468,7 +468,7 @@ struct functions { Interpreta la cadena recibida como parametro como un entero de 32 bits. \return */ - static Integer64 asInteger64(const char* str) throw(); + static S64 asInteger64(const char* str) throw(); /** Devuelve el identificador de thread desde el que es invocado este metodo. @@ -509,7 +509,7 @@ struct functions { * \param n Valor a estudiar. * \return el número de bits necesarios para representar el valor recibido como parámetro. */ - static int bitsize(const Integer64 n) throw() { + static int bitsize(const S64 n) throw() { register int aux = n >> intBitSize; return (aux != 0) ? (bitsize(aux) + intBitSize) : bitsize((int) n); } @@ -524,7 +524,7 @@ struct functions { * \param bitShift Número de bits a desplazar. * \param n2 Número a combinar con el resultado de la operación (n1 << bitShift). */ - static Integer64 merge(const char* whatis, const int n1, const int n2, const int bitShift) throw(RuntimeException); + static S64 merge(const char* whatis, const int n1, const int n2, const int bitShift) throw(RuntimeException); /** * Calcula el logaritmo en base 2 del número recibo como parámetro. @@ -1033,6 +1033,90 @@ struct functions { */ static std::string socketVectorAsString(const socket_v & socketVector) throw(); + + /** + Endianess of the system + + @result Returns true when the system is little endian, false if big endian + */ + static bool littleEndian() throw(); + + /** + Encodes an integer number with 32 bits over a buffer with at least 4 bytes of length. + @param result Buffer where the number is encoded. + @param n Number to encode. + \return Buffer with the encoded number. + */ + static const char* codeInteger(char* result, const int n) throw(); + + /** + Encodes an integer number with 16 bits over a buffer with at least 2 bytes of length. + @param result Buffer where the number is encoded. + @param n Number to encode. + \return Buffer with the encoded number. + */ + static const char* codeShort(char* result, const short int n) throw(); + + /** + Encodes an integer number with 64 bits over a buffer with at least 8 bytes of length. + @param result Buffer where the number is encoded. + @param n Number to encode. + \return Buffer with the encoded number. + */ + static const char* codeInteger64(char* result, const S64 n) throw(); + + /** + Encodes a floating number with 32 bits (according to the standard IEEE-754) over a buffer with at least 4 bytes of length. + @param result Buffer where the number is encoded. + @param n Number to encode. + \return Buffer with the encoded number. + */ + static const char* codeFloat(char* result, const float n) throw(); + + /** + Encodes a floating number with 64 bits (according to the standard IEEE-754) over a buffer with at least 8 bytes of length. + @param result Buffer where the number is encoded. + @param n Number to encode. + \return Buffer with the encoded number. + */ + static const char* codeDouble(char* result, const double n) throw(); + + /** + Decodes an 32 bits integer number contained in a 4-bytes buffer. + @param data Buffer with the encoded number. + @return Value for the number contained in the buffer. + */ + static int decodeInteger(const char* data) throw(); + + /** + Decodes an 16 bits integer number contained in a 2-bytes buffer. + @param data Buffer with the encoded number. + @return Value for the number contained in the buffer. + */ + static short int decodeShort(const char* data) throw(); + + /** + Decodes an 64 bits integer number contained in a 8-bytes buffer. + @param data Buffer with the encoded number. + @return Value for the number contained in the buffer. + */ + static S64 decodeInteger64(const char* data) throw(); + + /** + Decodes an 32 bits floating number (according to the standard IEEE-754) contained in a 4-bytes buffer. + @param data Buffer with the encoded number. + @return Value for the number contained in the buffer. + */ + static float decodeFloat(const char* data) throw(); + + /** + Decodes an 64 bits floating number (according to the standard IEEE-754) contained in a 8-bytes buffer. + @param data Buffer with the encoded number. + @return Value for the number contained in the buffer. + */ + static double decodeDouble(const char* data) throw(); + + /** * Decodes an ISUP Number (called or calling party number). * @@ -1062,7 +1146,6 @@ struct functions { */ static void codeIsupNumber(const isup_number_t & isupNumber, bool calledOrCalling, std::string & target) throw(RuntimeException); - private: static ExclusiveHash st_stringExclusiveHash; static ExclusiveHash st_string2intExclusiveHash;