XROAD
xroad_conv.h File Reference
#include "xroad_string.h"
#include <stdint.h>
#include <stdbool.h>
#include <cache/xroad_objects_types.h>
Include dependency graph for xroad_conv.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define xroad_conv_itoa(v, ...)
 
#define xroad_conv_itosql(v, not_null)
 
#define xroad_conv_dtosql(v, not_null)
 

Functions

uint32_t xroad_conv_numdigits (int64_t val)
 
uint32_t xroad_conv_precision (xroad_double_t val)
 
uint64_t xroad_conv_lpow10 (uint32_t n)
 
uint32_t xroad_conv_i64toa (int64_t val, char *buf, uint32_t buf_len, char pad_sym)
 
uint32_t xroad_conv_u64toa (uint64_t val, char *buf, uint32_t buf_len, char pad_sym)
 
uint32_t xroad_conv_dtoa (double val, uint32_t prec, char *buf, uint32_t buf_len, char pad_sym, bool trim)
 
uint32_t xroad_conv_atou32 (xroad_str_t str, int32_t *cnt)
 
int32_t xroad_conv_atoi32 (xroad_str_t str, int32_t *cnt)
 
uint64_t xroad_conv_atou64 (xroad_str_t str, int32_t *cnt)
 
int64_t xroad_conv_atoi64 (xroad_str_t str, int32_t *cnt)
 
double xroad_conv_atod (xroad_str_t str, int32_t *cnt)
 

Detailed Description

Macro Definition Documentation

◆ xroad_conv_dtosql

#define xroad_conv_dtosql (   v,
  not_null 
)
Value:
({ \
char* buf = "NULL"; \
uint32_t len = 4; \
double _v = (v); \
if (isnan(_v) || not_null) \
{ \
len = 64; \
buf = alloca(len); \
len = xroad_conv_dtoa(_v, 8, buf, len, 0, true); \
} \
xroad_str_len(buf, len); \
})
uint32_t xroad_conv_dtoa(double val, uint32_t prec, char *buf, uint32_t buf_len, char pad_sym, bool trim)

convert double to SQL representation string (e.g. NULL, '100')

Parameters
[in]v- integer to convert
[in]not_null- false - value interpreted as NULL
Returns
SQL string

◆ xroad_conv_itoa

#define xroad_conv_itoa (   v,
  ... 
)
Value:
_Generic((v), \
int8_t: xroad_conv_i64toa, \
int16_t: xroad_conv_i64toa, \
int32_t: xroad_conv_i64toa, \
int64_t: xroad_conv_i64toa, \
uint8_t: xroad_conv_u64toa, \
uint16_t: xroad_conv_u64toa, \
uint32_t: xroad_conv_u64toa, \
uint64_t: xroad_conv_u64toa, \
default: xroad_conv_i64toa \
)(v, __VA_ARGS__)
uint32_t xroad_conv_u64toa(uint64_t val, char *buf, uint32_t buf_len, char pad_sym)
uint32_t xroad_conv_i64toa(int64_t val, char *buf, uint32_t buf_len, char pad_sym)

generic itoa, see xroad_conv_i(u)64toa

◆ xroad_conv_itosql

#define xroad_conv_itosql (   v,
  not_null 
)
Value:
({ \
char* buf = "NULL"; \
uint32_t len = 4; \
if (not_null) \
{ \
__typeof__ (v) _v = (v); \
len = xroad_conv_numdigits(_v); \
buf = alloca(len); \
xroad_conv_itoa(_v, buf, len, 0); \
} \
xroad_str_len(buf, len); \
})
uint32_t xroad_conv_numdigits(int64_t val)

convert integer to SQL representation string (e.g. NULL, '100')

Parameters
[in]v- integer to convert
[in]not_null- false - value interpreted as NULL
Returns
SQL string

Function Documentation

◆ xroad_conv_atod()

double xroad_conv_atod ( xroad_str_t  str,
int32_t *  cnt 
)

convert string to double

Parameters
[in]str- string value to convert
[out]cnt- how many characters processed
Returns
converted value

◆ xroad_conv_atoi32()

int32_t xroad_conv_atoi32 ( xroad_str_t  str,
int32_t *  cnt 
)

convert string to 32-bit number

Parameters
[in]str- string value to convert
[out]cnt- how many characters processed
Returns
converted value

◆ xroad_conv_atoi64()

int64_t xroad_conv_atoi64 ( xroad_str_t  str,
int32_t *  cnt 
)

convert string to 64-bit number

Parameters
[in]str- string value to convert
[out]cnt- how many characters processed
Returns
converted value

◆ xroad_conv_atou32()

uint32_t xroad_conv_atou32 ( xroad_str_t  str,
int32_t *  cnt 
)

convert string to 32-bit unsigned number

Parameters
[in]str- string value to convert
[out]cnt- how many characters processed
Returns
converted value

◆ xroad_conv_atou64()

uint64_t xroad_conv_atou64 ( xroad_str_t  str,
int32_t *  cnt 
)

convert string to 64-bit unsigned number

Parameters
[in]str- string value to convert
[out]cnt- how many characters processed
Returns
converted value

◆ xroad_conv_dtoa()

uint32_t xroad_conv_dtoa ( double  val,
uint32_t  prec,
char *  buf,
uint32_t  buf_len,
char  pad_sym,
bool  trim 
)

convert double to string

Parameters
[in]val- converted value
[in]prec- value precision
[out]buf- bufer with converted value
[in]buf_len- length of bufer
[in]pad_sym- padding symbol
[in]trim- trim zeroes from right
Returns
how many characters written (can be written). If this value greater than buf_len, value converted incompletely

◆ xroad_conv_i64toa()

uint32_t xroad_conv_i64toa ( int64_t  val,
char *  buf,
uint32_t  buf_len,
char  pad_sym 
)

convert int64 value into string

Parameters
[in]val- converted value
[out]buf- bufer with converted value
[in]buf_len- length of bufer
[in]pad_sym- padding symbol
Returns
how many characters written (can be written). If this value greater than buf_len, value converted incompletely

◆ xroad_conv_lpow10()

uint64_t xroad_conv_lpow10 ( uint32_t  n)

pow10 calculation

◆ xroad_conv_numdigits()

uint32_t xroad_conv_numdigits ( int64_t  val)

return number of digits. E.g. 10221 -> 5

Parameters
[in]val- numeric value
Returns
number of digits

◆ xroad_conv_precision()

uint32_t xroad_conv_precision ( xroad_double_t  val)

return number of digits after dot. E.g. 1.234 -> 3, 1 -> 0

Parameters
[in]val- float value
Returns
number of digits

◆ xroad_conv_u64toa()

uint32_t xroad_conv_u64toa ( uint64_t  val,
char *  buf,
uint32_t  buf_len,
char  pad_sym 
)

convert uint64 value into string

Parameters
[in]val- converted value
[out]buf- bufer with converted value
[in]buf_len- length of bufer
[in]pad_sym- padding symbol
Returns
how many characters written (can be written). If this value greater than buf_len, value converted incompletely