1
0
Fork 0
libfort/src/fort_impl.h

148 lines
3.3 KiB
C
Raw Normal View History

2018-01-17 19:22:57 +01:00
#ifndef FORT_IMPL_H
#define FORT_IMPL_H
2018-04-17 19:14:50 +02:00
#if defined(_MSC_VER)
#define _CRT_SECURE_NO_WARNINGS /* To disable warnings for unsafe functions */
#endif
2018-01-17 19:22:57 +01:00
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <stdio.h>
2018-03-18 10:17:33 +01:00
#include "fort.h"
2018-01-17 19:22:57 +01:00
2018-04-17 19:14:50 +02:00
2018-04-16 20:01:45 +02:00
2018-01-17 19:22:57 +01:00
#define FORT_COL_SEPARATOR '|'
2018-05-02 16:55:29 +02:00
#define FORT_COL_SEPARATOR_LENGTH 1
2018-01-17 19:22:57 +01:00
#define FORT_UNUSED __attribute__((unused))
#define F_MALLOC fort_malloc
#define F_FREE fort_free
#define F_CALLOC fort_calloc
#define F_REALLOC fort_realloc
2018-01-17 19:22:57 +01:00
#define F_STRDUP fort_strdup
2018-03-05 19:08:14 +01:00
#define F_WCSDUP fort_wcsdup
2018-01-17 19:22:57 +01:00
#define F_CREATE(type) ((type *)F_CALLOC(sizeof(type), 1))
#define MAX(a,b) ((a) > (b) ? (a) : b)
#define MIN(a,b) ((a) < (b) ? (a) : b)
enum PolicyOnNull
{
Create,
DoNotCreate
};
enum F_BOOL
{
F_FALSE = 0,
F_TRUE = 1
};
#define STR_2_CAT_(arg1, arg2) \
arg1##arg2
#define STR_2_CAT(arg1, arg2) \
STR_2_CAT_(arg1, arg2)
#define UNIQUE_NAME_(prefix) \
STR_2_CAT(prefix,__COUNTER__)
#define UNIQUE_NAME(prefix) \
UNIQUE_NAME_(prefix)
/*****************************************************************************
* LOGGER
*****************************************************************************/
#define SYS_LOG_ERROR(...)
/*****************************************************************************
* DEFAULT_SIZES
* ***************************************************************************/
#define DEFAULT_STR_BUF_SIZE 1024
#define DEFAULT_VECTOR_CAPACITY 10
struct fort_table_options;
struct fort_column_options;
struct fort_row;
struct vector;
struct fort_cell;
struct string_buffer;
2018-02-04 14:21:04 +01:00
struct separator
{
int enabled;
};
2018-01-17 19:22:57 +01:00
typedef struct fort_table_options fort_table_options_t;
2018-02-26 19:42:48 +01:00
struct fort_context
{
fort_table_options_t *table_options;
size_t row;
size_t column;
};
typedef struct fort_context context_t;
2018-01-17 19:22:57 +01:00
typedef struct fort_column_options fort_column_options_t;
typedef struct vector vector_t;
typedef struct fort_cell fort_cell_t;
typedef struct string_buffer string_buffer_t;
typedef struct fort_row fort_row_t;
typedef struct fort_table FTABLE;
2018-02-04 14:21:04 +01:00
typedef struct separator separator_t;
2018-01-17 19:22:57 +01:00
2018-05-02 16:55:29 +02:00
enum CellType
{
CommonCell,
GroupMasterCell,
GroupSlaveCell
};
2018-01-17 19:22:57 +01:00
/*****************************************************************************
* LIBFORT helpers
*****************************************************************************/
extern void *(*fort_malloc)(size_t size);
extern void (*fort_free)(void *ptr);
extern void *(*fort_calloc)(size_t nmemb, size_t size);
extern void *(*fort_realloc)(void *ptr, size_t size);
void set_memory_funcs(void *(*f_malloc)(size_t size), void (*f_free)(void *ptr));
2018-01-17 19:22:57 +01:00
char *fort_strdup(const char* str);
2018-03-05 19:08:14 +01:00
wchar_t *fort_wcsdup(const wchar_t* str);
2018-01-17 19:22:57 +01:00
size_t number_of_columns_in_format_string(const char *fmt);
2018-04-24 20:36:07 +02:00
size_t number_of_columns_in_format_wstring(const wchar_t *fmt);
2018-01-17 19:22:57 +01:00
int snprint_n_chars(char *buf, size_t length, size_t n, char ch);
2018-03-05 19:08:14 +01:00
int wsnprint_n_chars(wchar_t *buf, size_t length, size_t n, wchar_t ch);
2018-01-17 19:22:57 +01:00
2018-03-31 16:54:01 +02:00
#define CHCK_RSLT_ADD_TO_WRITTEN(statement) \
do { \
tmp = statement; \
if (tmp < 0) {\
goto clear; \
} \
written += tmp; \
} while(0)
2018-04-16 21:33:05 +02:00
#define CHECK_NOT_NEGATIVE(x) \
do { if (x < 0) goto fort_fail; } while (0)
2018-03-09 10:44:16 +01:00
#endif /* FORT_IMPL_H */