9 #ifndef anna_core_functions_hpp 10 #define anna_core_functions_hpp 35 #define s_REGEXP_IPv4_ADDRESSES "\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b" 37 #define s_REGEXP_IPv6_ADDRESSES "s*((([0-9A-Fa-f]{1,4}:){7}(([0-9A-Fa-f]{1,4})|:))|(([0-9A-Fa-f]{1,4}:){6}(:|((25[0-5]|2[0-4]\\d|[01]?\\d{1,2})\ 38 (\\.(25[0-5]|2[0-4]\\d|[01]?\\d{1,2})){3})|(:[0-9A-Fa-f]{1,4})))|(([0-9A-Fa-f]{1,4}:){5}((:((25[0-5]|2[0-4]\\d|[01]?\\d{1,2})(\\.(25[0-5]|2[0-4]\ 39 \\d|[01]?\\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){0,1}((:((25[0-5]|2[0-4]\\d|[01]?\\d{1,2})(\\.(\ 40 25[0-5]|2[0-4]\\d|[01]?\\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){0,2}((:((25[0-5]|2[0-4]\\d|[01]?\ 41 \\d{1,2})(\\.(25[0-5]|2[0-4]\\d|[01]?\\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){0,3}((:((25[0-5]|2\ 42 [0-4]\\d|[01]?\\d{1,2})(\\.(25[0-5]|2[0-4]\\d|[01]?\\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:)(:[0-9A-Fa-f]{1,4}){0,4}((:\ 43 ((25[0-5]|2[0-4]\\d|[01]?\\d{1,2})(\\.(25[0-5]|2[0-4]\\d|[01]?\\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(:(:[0-9A-Fa-f]{1,4}){0,5}((:((25[0-\ 44 5]|2[0-4]\\d|[01]?\\d{1,2})(\\.(25[0-5]|2[0-4]\\d|[01]?\\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(((25[0-5]|2[0-4]\\d|[01]?\\d{1,2})(\\.(25[\ 45 0-5]|2[0-4]\\d|[01]?\\d{1,2})){3})))(%.+)?\\s*" 48 #define STRING_WITH_QUOTATION_MARKS__C_STR(x) ((anna::functions::addQuotationMarks(x)).c_str()) 49 #define ANNA_AS_STRING__C_STR(x) ((anna::functions::asString(x)).c_str()) 58 #define CLOCK_PROCESS_CPUTIME_ID CLOCK_PROCESS_CPUTIME 98 static std::string
asString(
const int number) ;
104 static std::string
asString(
const unsigned int number) ;
122 static const char*
asString(
const bool _bool) {
return (_bool ==
true) ?
"true" :
"false"; }
130 static std::string
asString(
const DataBlock& dataBlock,
const int characterByLine = 16) ;
138 static std::string
asString(
const double v,
const char* format =
"%e") ;
146 static std::string
asString(
const float v,
const char* format =
"%f") ;
153 static std::string
asText(
const char* comment,
const int number)
155 std::string result(comment);
164 static std::string
asText(
const char* comment,
const S64 number)
166 std::string result(comment);
175 static std::string
asText(
const char* comment,
const bool _bool)
177 std::string result(comment);
187 static std::string
asText(
const char* comment,
const DataBlock& dataBlock,
const int characterByLine = 16)
189 std::string result(comment);
190 return result +=
asString(dataBlock, characterByLine);
199 static std::string
asText(
const char* comment,
const float value,
const char* format =
"%f")
201 std::string result(comment);
202 return result +=
asString(value, format);
211 static std::string
asText(
const char* comment,
const double value,
const char* format =
"%e")
213 std::string result(comment);
214 return result +=
asString(value, format);
240 static std::string
asHexText(
const char* comment,
const int number)
242 std::string result(comment);
253 std::string result(comment);
299 static S64 hash(
const char* str) ;
305 static S64 hash(
const std::string& str) {
return hash(str.c_str()); }
317 static std::string
asString(
const char* format, ...) ;
329 template <
typename T>
static std::string
asString(
const T* t)
332 std::string result(T::className());
333 result +=
" { <null> }";
337 return t->asString();
346 static const std::string&
asString(
const std::string& str) {
return str; }
360 Second result(::time(NULL));
370 gettimeofday(&tv, NULL);
381 gettimeofday(&tv, NULL);
398 clock_gettime(CLOCK_MONOTONIC, &ts);
414 static bool asBool(
const char* str) noexcept(
false);
420 static int asInteger(
const char* str) {
return atoi(str); }
453 static bool isLike(
const char* pattern,
const std::string& value) noexcept(
false);
482 static S64 merge(
const char* whatis,
const int n1,
const int n2,
const int bitShift) noexcept(
false);
489 static int log2(
const unsigned int v) ;
540 static std::string
entriesAsString(
int number,
const char * wordForSingular = NULL,
const char * wordForPlural = NULL) ;
578 return(
highlight(
justify(title, jMode, justifyFiller), hMode, highlightFiller, appendCR));
587 static std::string
tab(
const std::string & text,
int tabSpaces = 3) ;
605 template <
typename T>
static T*
componentByName(
const char *className,
const char* fromFile,
const int fromLine)
608 T* result = static_cast <T*>(cm.
find(className));
611 std::string msg(className);
612 msg +=
" | Unregistered component";
633 template <
typename T>
static T*
component(
const char* fromFile,
const int fromLine)
635 return functions::componentByName<T> (T::getClassName(), fromFile, fromLine);
646 static bool endsWith(
const std::string & pattern,
const std::string & suffix) {
648 return endsWith(pattern, suffix, dummy);
654 static bool endsWith(
const std::string & pattern,
const std::string & suffix, std::string & preffix) ;
664 static bool startsWith(
const std::string & pattern,
const std::string & preffix) {
672 static bool startsWith(
const std::string & pattern,
const std::string & preffix, std::string & suffix) ;
685 static std::string
replace(
const std::string & text,
const char *item,
const char *target,
bool all =
true) ;
720 static std::string
asAsciiString(
const char * buffer,
int size,
bool & isFullyPrintable) ;
726 bool isFullyPrintable;
741 bool isFullyPrintable;
823 static std::string
getFQDN(
const char *hostname = NULL,
const char *domainname = NULL) ;
866 static bool isIPv6(
const std::string & ip) ;
875 static std::string
IPv4To6(
const std::string & ipv4) noexcept(
false);
888 static std::string
normalizeIP(
const std::string & ip) noexcept(
false);
898 static bool sameIP(
const std::string & ip1,
const std::string & ip2) noexcept(
false);
908 static bool matchIPv6(
const std::string & ipv6,
const std::string & preffixedIpv6) noexcept(
false);
940 static std::string
rawIpAsString(
const char *buffer,
int bufferLength,
bool normalize =
false) noexcept(
false);
953 static std::string
abbreviateIP(
const std::string & ip) noexcept(
false) {
1002 static const char*
codeInteger(
char* result,
const int n) ;
1010 static const char*
codeShort(
char* result,
const short int n) ;
1026 static const char*
codeFloat(
char* result,
const float n) ;
1034 static const char*
codeDouble(
char* result,
const double n) ;
1108 static std::string
encodeBase64(
const U8* buf,
unsigned int bufLen);
1121 static std::string
decodeBase64(
const std::string & encodedString);
1132 static bool getContentFromFile(
const std::string &pathfile, std::string &content) noexcept(
false);
static const char * codeFloat(char *result, const float n)
static std::string vectorToStringRepresentation(const std::vector< int > &v, const char separator=' ')
_v
Definition: functions.hpp:510
Definition: Millisecond.hpp:24
Definition: functions.hpp:505
S64 type_t
Definition: Microsecond.hpp:24
static int asInteger(const char *str)
Definition: functions.hpp:420
#define WHEN_MULTITHREAD(a)
Definition: defines.hpp:96
static bool isIPv6(const std::string &ip)
static bool getContentFromFile(const std::string &pathfile, std::string &content) noexcept(false)
Definition: functions.hpp:509
static std::string tab(const std::string &text, int tabSpaces=3)
Definition: functions.hpp:502
static void codeIsupNumber(const isup_number_t &isupNumber, bool calledOrCalling, char *buffer, int &length) noexcept(false)
Definition: ComponentManager.hpp:29
static std::string decodeBase64(const std::string &encodedString)
static std::string entriesAsString(int number, const char *wordForSingular=NULL, const char *wordForPlural=NULL)
static socket_v getSocketVectorFromString(const std::string &list)
static DataBlock & fromHexString(const std::string &hexString, DataBlock &target) noexcept(false)
Definition: functions.hpp:513
static std::string asText(const char *comment, const int number)
Definition: functions.hpp:153
static S64 merge(const char *whatis, const int n1, const int n2, const int bitShift) noexcept(false)
static const char * codeShort(char *result, const short int n)
static std::string highlightJustify(const std::string &title, TextHighlightMode::_v hMode=TextHighlightMode::OverAndUnderline, TextJustifyMode::_v jMode=TextJustifyMode::Center, char highlightFiller='=', char justifyFiller=' ', bool appendCR=true)
Definition: functions.hpp:577
static std::string rawIpAsString(const DataBlock &db, bool normalize=false) noexcept(false)
Definition: functions.hpp:927
const char * getData() const
Definition: DataBlock.hpp:86
Definition: functions.hpp:503
static bool supportMultithread()
Definition: functions.hpp:440
static bool isIPv4(const std::string &ip, IPv4Type::_v ipv4Type=IPv4Type::Estrict)
static std::string asAsciiString(const char *buffer, int size, bool &isFullyPrintable)
static S64 decodeInteger64(const char *data)
Definition: Second.hpp:25
static std::string normalizeIP(const std::string &ip) noexcept(false)
static DataBlock rawIpPresentationAsRaw(const std::string &rawPresentation) noexcept(false)
static int bitsize(const S64 n)
Definition: functions.hpp:467
static std::string getFQDN(const char *hostname=NULL, const char *domainname=NULL)
int64_t S64
Definition: defines.hpp:84
static const int DateTimeSizeString
Definition: functions.hpp:72
static const char * codeDouble(char *result, const double n)
Definition: functions.hpp:497
static std::string asText(const char *comment, const S64 number)
Definition: functions.hpp:164
static std::string asString(const int number)
Definition: functions.hpp:501
static const char * codeInteger64(char *result, const S64 n)
static Millisecond millisecond()
Definition: functions.hpp:379
static S64 asInteger64(const char *str)
#define WHEN_SINGLETHREAD(a)
Definition: defines.hpp:97
static std::string asText(const char *comment, const double value, const char *format="%e")
Definition: functions.hpp:211
static std::string encodeBase64(const std::string &str)
Definition: functions.hpp:1109
static std::string highlight(const std::string &title, TextHighlightMode::_v mode=TextHighlightMode::Underline, char filler='-', bool appendCR=true)
Definition: functions.hpp:841
static std::string getArchitecture()
static int decodeInteger(const char *data)
static bool startsWith(const std::string &pattern, const std::string &preffix)
Definition: functions.hpp:664
static bool asBool(const char *str) noexcept(false)
static std::string getDomainname()
static std::string getVersion()
Definition: functions.hpp:843
static std::string socketLiteralAsString(const std::string &address, int port)
static std::string rawIpPresentationToIpAsString(const std::string &rawPresentation, bool normalize=false) noexcept(false)
Definition: functions.hpp:780
static void sleep(const Millisecond &millisecond)
int getSize() const
Definition: DataBlock.hpp:78
static std::string IPv4To6(const std::string &ipv4) noexcept(false)
static const char * asString(const bool _bool)
Definition: functions.hpp:122
static bool isLike(const char *pattern, const std::string &value) noexcept(false)
static bool sameIP(const std::string &ip1, const std::string &ip2) noexcept(false)
static std::string asAsciiString(const DataBlock &db, bool &isFullyPrintable)
Definition: functions.hpp:733
Definition: functions.hpp:65
Definition: functions.hpp:504
static std::string getHostname()
static S64 hash(const char *str)
static bool littleEndian()
Definition: defines.hpp:152
unsigned char U8
Definition: defines.hpp:62
static const char * codeInteger(char *result, const int n)
static Microsecond microsecond()
Definition: functions.hpp:368
static std::string asText(const char *comment, const DataBlock &dataBlock, const int characterByLine=16)
Definition: functions.hpp:187
static std::string socketVectorAsString(const socket_v &socketVector)
static std::string rawIpAsRawIpPresentation(const DataBlock &db) noexcept(false)
static std::string asHexText(const char *comment, const S64 number)
Definition: functions.hpp:251
static std::string asHexString(const int number)
static int bitsize(const int n)
Definition: functions.hpp:460
static const int intBitSize
Definition: functions.hpp:87
static void decodeIsupNumber(const char *buffer, int length, isup_number_t &isupNumber, bool calledOrCalling) noexcept(false)
uint64_t U64
Definition: defines.hpp:81
S64 type_t
Definition: Millisecond.hpp:26
static std::string asHexText(const char *comment, const int number)
Definition: functions.hpp:240
static T * component(const char *fromFile, const int fromLine) noexcept(false)
Definition: functions.hpp:633
static std::string abbreviateIP(const std::string &ip) noexcept(false)
Definition: functions.hpp:953
static const std::string & asString(const std::string &str)
Definition: functions.hpp:346
static bool endsWith(const std::string &pattern, const std::string &suffix)
Definition: functions.hpp:646
_v
Definition: functions.hpp:842
static std::string asAsciiString(const DataBlock &db)
Definition: functions.hpp:740
static pthread_t getCurrentThread()
static std::string getHostnameIP()
static bool matchIPv6(const std::string &ipv6, const std::string &preffixedIpv6) noexcept(false)
static std::string addQuotationMarks(const std::string &str)
static short int decodeShort(const char *data)
static T * componentByName(const char *className, const char *fromFile, const int fromLine) noexcept(false)
Definition: functions.hpp:605
static std::string asText(const char *comment, const bool _bool)
Definition: functions.hpp:175
static std::string asString(const T *t)
Definition: functions.hpp:329
std::vector< socket_t > socket_v
Definition: defines.hpp:109
Definition: functions.hpp:500
Definition: functions.hpp:512
static std::string asHexString(const U64 number)
Definition: functions.hpp:233
static std::string encodeBase64(const U8 *buf, unsigned int bufLen)
static std::string justify(const std::string &title, TextJustifyMode::_v mode=TextJustifyMode::Left, char filler=' ')
static std::string asText(const char *comment, const float value, const char *format="%f")
Definition: functions.hpp:199
static const int int64BitSize
Definition: functions.hpp:92
Definition: RuntimeException.hpp:23
static std::string asAsciiString(const char *buffer, int size)
Definition: functions.hpp:725
static Microsecond hardwareClock()
Definition: functions.hpp:390
static ComponentManager & instantiate()
Definition: Singleton.hpp:81
static void getAddressAndPortFromSocketLiteral(const std::string &literal, std::string &address, int &port)
static int log2(const unsigned int v)
Definition: functions.hpp:844
Definition: functions.hpp:499
Definition: DataBlock.hpp:24
static DataBlock ipAsRaw(const std::string &ip) noexcept(false)
static std::string replace(const std::string &text, const char *item, const char *target, bool all=true)
_v
Definition: functions.hpp:498
Component * find(const char *className)
Definition: Microsecond.hpp:22
static double decodeDouble(const char *data)
static float decodeFloat(const char *data)
static S64 hash(const std::string &str)
Definition: functions.hpp:305
static std::string asDateTime(const Second &second)
static Second second()
Definition: functions.hpp:359