ESDM
Middleware for Earth System Data
Macros | Functions
auxiliary.c File Reference

Debug adds functionality for logging and inspection of ESDM types during development. More...

#include <errno.h>
#include <esdm-datatypes.h>
#include <esdm-internal.h>
#include <fcntl.h>
#include <glib.h>
#include <limits.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
Include dependency graph for auxiliary.c:

Macros

#define kCharsetBits   6
 
#define defineConverter(destType, sourceType)
 
#define defineConvertersForSourceType(sourceType)
 
#define selectConverterForDest(destType, esdmDestType, sourceType)    if(esdmDestType == requestDestType) return convert_from_##sourceType##_to_##destType;
 
#define selectConvertersForSource(sourceType, esdmSourceType)
 

Functions

bool ea_is_valid_dataset_name (char const *str)
 
int mkdir_recursive (const char *path)
 
int posix_recursive_remove (const char *path)
 
int ea_read_file (char *filepath, char **buf)
 
int ea_write_check (int fd, char *buf, size_t len)
 
int ea_read_check (int fd, char *buf, size_t len)
 
void print_stat (struct stat sb)
 
json_t * load_json (const char *str)
 
int ea_compute_hash_str (const char *str)
 
 _Static_assert (sizeof(kCharset) - 1==1<< kCharsetBits, "wrong number of characters in kCharset")
 
void ea_generate_id (char *str, size_t length)
 
char * ea_make_id (size_t length)
 
void * ea_checked_malloc (size_t size)
 
void * ea_checked_calloc (size_t nmemb, size_t size)
 
void * ea_checked_realloc (void *ptr, size_t size)
 
char * ea_checked_strdup (const char *string)
 
char * ea_checked_strndup (const char *string, size_t n)
 
void * ea_memdup (void *data, size_t size)
 
void ea_start_timer (timer *t1)
 
double ea_timer_subtract (timer number, timer subtract)
 
double ea_stop_timer (timer t1)
 
 defineConvertersForSourceType (int8_t)
 

Detailed Description

Debug adds functionality for logging and inspection of ESDM types during development.

Macro Definition Documentation

◆ defineConverter

#define defineConverter (   destType,
  sourceType 
)
Value:
void* convert_from_##sourceType##_to_##destType(void* vdest, const void* vsource, size_t sourceBytes) { \
sourceType const* source = vsource; \
destType* dest = vdest; \
size_t elementCount = sourceBytes/sizeof*source; \
eassert(elementCount*sizeof(sourceType) == sourceBytes); \
for(size_t i = 0; i < elementCount; i++) dest[i] = (destType)source[i]; \
return dest; \
}

◆ defineConvertersForSourceType

#define defineConvertersForSourceType (   sourceType)
Value:
defineConverter(int8_t, sourceType) \
defineConverter(int16_t, sourceType) \
defineConverter(int32_t, sourceType) \
defineConverter(int64_t, sourceType) \
defineConverter(uint8_t, sourceType) \
defineConverter(uint16_t, sourceType) \
defineConverter(uint32_t, sourceType) \
defineConverter(uint64_t, sourceType) \
defineConverter(float, sourceType) \
defineConverter(double, sourceType)

◆ selectConvertersForSource

#define selectConvertersForSource (   sourceType,
  esdmSourceType 
)
Value:
if(esdmSourceType == requestSourceType) { \
selectConverterForDest(int8_t, SMD_DTYPE_INT8, sourceType) \
selectConverterForDest(int16_t, SMD_DTYPE_INT16, sourceType) \
selectConverterForDest(int32_t, SMD_DTYPE_INT32, sourceType) \
selectConverterForDest(int64_t, SMD_DTYPE_INT64, sourceType) \
selectConverterForDest(uint8_t, SMD_DTYPE_UINT8, sourceType) \
selectConverterForDest(uint16_t, SMD_DTYPE_UINT16, sourceType) \
selectConverterForDest(uint32_t, SMD_DTYPE_UINT32, sourceType) \
selectConverterForDest(uint64_t, SMD_DTYPE_UINT64, sourceType) \
selectConverterForDest(float, SMD_DTYPE_FLOAT, sourceType) \
selectConverterForDest(double, SMD_DTYPE_DOUBLE, sourceType) \
return NULL; \
}

Function Documentation

◆ ea_checked_strdup()

char* ea_checked_strdup ( const char *  string)

Wrapper for strdup() that checks the result for a null-pointer.

◆ ea_checked_strndup()

char* ea_checked_strndup ( const char *  string,
size_t  n 
)

Wrapper for strndup() that checks the result for a null-pointer.

◆ ea_memdup()

void* ea_memdup ( void *  data,
size_t  size 
)

Create a copy of an arbitrary memory buffer. This is essentially a strdup() for non-string data.

Parameters
[in]datapointer to the bytes to copy
[in]sizecount of bytes to copy
Returns
freshly malloc'ed buffer containing a copy of the bytes, must be free'd by the caller

◆ ea_read_check()

int ea_read_check ( int  fd,
char *  buf,
size_t  len 
)

Read while ensuring and retrying until len is read or error occured.

◆ ea_write_check()

int ea_write_check ( int  fd,
char *  buf,
size_t  len 
)

Write while ensuring and retrying until len is written or error occured.

◆ print_stat()

void print_stat ( struct stat  sb)

Print a detailed summary for the stat system call.