[F] Fixed c++ support
This commit is contained in:
parent
5ad1ede916
commit
757502a4b8
@ -41,28 +41,30 @@ set(FORT_SOURCES
|
||||
src/table.c
|
||||
src/fort_impl.c)
|
||||
|
||||
if(FORT_CXX_BUILD)
|
||||
SET_SOURCE_FILES_PROPERTIES( ${FORT_SOURCES} PROPERTIES LANGUAGE CXX)
|
||||
endif(FORT_CXX_BUILD)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
set(EXAMPLE_SOURCES
|
||||
example/main.c)
|
||||
add_executable(${PROJECT_NAME}_example
|
||||
example/main.c
|
||||
${EXAMPLE_SOURCES}
|
||||
${FORT_SOURCES})
|
||||
|
||||
|
||||
|
||||
add_executable(${PROJECT_NAME}_test
|
||||
${FORT_SOURCES}
|
||||
set(TEST_SOURCES
|
||||
tests/test.c
|
||||
tests/test_vector.c
|
||||
tests/test_table.c
|
||||
tests/test_string_buffer.c)
|
||||
add_executable(${PROJECT_NAME}_test
|
||||
${FORT_SOURCES}
|
||||
${TEST_SOURCES})
|
||||
|
||||
|
||||
if(FORT_CXX_BUILD)
|
||||
SET_SOURCE_FILES_PROPERTIES( ${FORT_SOURCES} PROPERTIES LANGUAGE CXX)
|
||||
SET_SOURCE_FILES_PROPERTIES( ${EXAMPLE_SOURCES} PROPERTIES LANGUAGE CXX)
|
||||
SET_SOURCE_FILES_PROPERTIES( ${TEST_SOURCES} PROPERTIES LANGUAGE CXX)
|
||||
endif(FORT_CXX_BUILD)
|
||||
|
||||
if(FORT_TEST_BUILD AND NOT FORT_MSVC_BUILD)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
|
||||
|
@ -29,10 +29,10 @@ SOFTWARE.
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <limits.h>
|
||||
|
||||
|
||||
#include "options.h"
|
||||
|
||||
/*
|
||||
* Determine compiler
|
||||
*/
|
||||
@ -51,21 +51,20 @@ SOFTWARE.
|
||||
/*
|
||||
* Declare restrict
|
||||
*/
|
||||
//#if defined(__cplusplus)
|
||||
//#if defined(FT_CLANG_COMPILER)
|
||||
//#define FT_RESTRICT __restrict__
|
||||
//#else
|
||||
//#define FT_RESTRICT __restrict
|
||||
//#endif /* if defined(FT_CLANG_COMPILER) */
|
||||
//#else
|
||||
//#if __STDC_VERSION__ < 199901L
|
||||
//#define FT_RESTRICT
|
||||
//#else
|
||||
//#define FT_RESTRICT restrict
|
||||
//#endif /* __STDC_VERSION__ < 199901L */
|
||||
//#endif /* if defined(__cplusplus) */
|
||||
#if defined(__cplusplus)
|
||||
#if defined(FT_CLANG_COMPILER)
|
||||
#define FT_RESTRICT __restrict__
|
||||
#else
|
||||
#define FT_RESTRICT __restrict
|
||||
#endif /* if defined(FT_CLANG_COMPILER) */
|
||||
#else
|
||||
#if __STDC_VERSION__ < 199901L
|
||||
#define FT_RESTRICT
|
||||
#else
|
||||
#define FT_RESTRICT restrict
|
||||
#endif /* __STDC_VERSION__ < 199901L */
|
||||
#endif /* if defined(__cplusplus) */
|
||||
|
||||
#define FT_RESTRICT
|
||||
|
||||
|
||||
/*
|
||||
@ -269,10 +268,39 @@ FT_EXTERN int ft_add_separator(FTABLE *FT_RESTRICT table);
|
||||
|
||||
|
||||
|
||||
|
||||
FT_EXTERN const char* ft_to_string(const FTABLE *FT_RESTRICT table);
|
||||
|
||||
|
||||
/*
|
||||
* Setting table appearance
|
||||
*/
|
||||
#define FT_ANY_COLUMN (UINT_MAX)
|
||||
#define FT_ANY_ROW (UINT_MAX)
|
||||
|
||||
#define FT_ROW_UNSPEC (UINT_MAX-1)
|
||||
#define FT_COLUMN_UNSPEC (UINT_MAX-1)
|
||||
|
||||
#define FT_OPT_MIN_WIDTH ((uint32_t)(0x01U << (0)))
|
||||
#define FT_OPT_TEXT_ALIGN ((uint32_t)(0x01U << (1)))
|
||||
#define FT_OPT_TOP_PADDING ((uint32_t)(0x01U << (2)))
|
||||
#define FT_OPT_BOTTOM_PADDING ((uint32_t)(0x01U << (3)))
|
||||
#define FT_OPT_LEFT_PADDING ((uint32_t)(0x01U << (4)))
|
||||
#define FT_OPT_RIGHT_PADDING ((uint32_t)(0x01U << (5)))
|
||||
#define FT_OPT_EMPTY_STR_HEIGHT ((uint32_t)(0x01U << (6)))
|
||||
#define FT_OPT_ROW_TYPE ((uint32_t)(0x01U << (7)))
|
||||
|
||||
enum TextAlignment
|
||||
{
|
||||
LeftAligned,
|
||||
CenterAligned,
|
||||
RightAligned
|
||||
};
|
||||
|
||||
enum RowType
|
||||
{
|
||||
Common,
|
||||
Header
|
||||
};
|
||||
|
||||
struct ft_border_chars
|
||||
{
|
||||
@ -308,7 +336,9 @@ FT_EXTERN int ft_set_option(FTABLE * FT_RESTRICT table, unsigned row, unsigned c
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* WChar support
|
||||
*/
|
||||
|
||||
#ifdef FT_HAVE_WCHAR
|
||||
|
||||
|
@ -9,7 +9,6 @@
|
||||
/*****************************************************************************
|
||||
* CELL
|
||||
* ***************************************************************************/
|
||||
|
||||
fort_cell_t * create_cell();
|
||||
|
||||
|
||||
|
@ -6,6 +6,7 @@
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include "fort.h"
|
||||
|
||||
#define FORT_COL_SEPARATOR '|'
|
||||
|
||||
|
@ -5,18 +5,18 @@
|
||||
#include <stdint.h>
|
||||
#include <limits.h>
|
||||
|
||||
enum TextAlignment
|
||||
{
|
||||
LeftAligned,
|
||||
CenterAligned,
|
||||
RightAligned
|
||||
};
|
||||
//enum TextAlignment
|
||||
//{
|
||||
// LeftAligned,
|
||||
// CenterAligned,
|
||||
// RightAligned
|
||||
//};
|
||||
|
||||
enum RowType
|
||||
{
|
||||
Common,
|
||||
Header
|
||||
};
|
||||
//enum RowType
|
||||
//{
|
||||
// Common,
|
||||
// Header
|
||||
//};
|
||||
|
||||
|
||||
struct fort_column_options
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include "fort_impl.h"
|
||||
#include "fort.h"
|
||||
#include "stdarg.h"
|
||||
#include "options.h"
|
||||
|
||||
struct fort_row;
|
||||
typedef struct fort_row fort_row_t;
|
||||
|
@ -5,10 +5,10 @@
|
||||
#include "wchar.h"
|
||||
|
||||
|
||||
size_t strchr_count(const char* str, int ch);
|
||||
size_t strchr_count(const char* str, char ch);
|
||||
size_t wstrchr_count(const wchar_t* str, wchar_t ch);
|
||||
|
||||
const char* str_n_substring_beg(const char* str, int ch, int n);
|
||||
const char* str_n_substring_beg(const char* str, char ch_separator, size_t n);
|
||||
const wchar_t* wstr_n_substring_beg(const wchar_t* str, wchar_t ch_separator, size_t n);
|
||||
|
||||
fort_status_t str_n_substring(const char* str, char ch_separator, size_t n, const char **begin, const char **end);
|
||||
@ -202,44 +202,44 @@ void test_buffer_text_width(void)
|
||||
buffer->type = CharBuf;
|
||||
char *old_value = buffer->str.cstr;
|
||||
|
||||
buffer->str.cstr = "";
|
||||
buffer->str.cstr = (char*)"";
|
||||
assert_true(buffer_text_width(buffer) == 0);
|
||||
|
||||
buffer->str.cstr = "\n\n\n\n";
|
||||
buffer->str.cstr = (char*)"\n\n\n\n";
|
||||
assert_true(buffer_text_width(buffer) == 0);
|
||||
|
||||
buffer->str.cstr = "12345";
|
||||
buffer->str.cstr = (char*)"12345";
|
||||
assert_true(buffer_text_width(buffer) == 5);
|
||||
|
||||
buffer->str.cstr = "12345\n1234567";
|
||||
buffer->str.cstr = (char*)"12345\n1234567";
|
||||
assert_true(buffer_text_width(buffer) == 7);
|
||||
|
||||
buffer->str.cstr = "12345\n1234567\n";
|
||||
buffer->str.cstr = (char*)"12345\n1234567\n";
|
||||
assert_true(buffer_text_width(buffer) == 7);
|
||||
|
||||
buffer->str.cstr = "12345\n1234567\n123";
|
||||
buffer->str.cstr = (char*)"12345\n1234567\n123";
|
||||
assert_true(buffer_text_width(buffer) == 7);
|
||||
|
||||
|
||||
|
||||
buffer->type = WCharBuf;
|
||||
|
||||
buffer->str.wstr = L"";
|
||||
buffer->str.wstr = (wchar_t *)L"";
|
||||
assert_true(buffer_text_width(buffer) == 0);
|
||||
|
||||
buffer->str.wstr = L"\n\n\n\n";
|
||||
buffer->str.wstr = (wchar_t *)L"\n\n\n\n";
|
||||
assert_true(buffer_text_width(buffer) == 0);
|
||||
|
||||
buffer->str.wstr = L"12345";
|
||||
buffer->str.wstr = (wchar_t *)L"12345";
|
||||
assert_true(buffer_text_width(buffer) == 5);
|
||||
|
||||
buffer->str.wstr = L"12345\n1234567";
|
||||
buffer->str.wstr = (wchar_t *)L"12345\n1234567";
|
||||
assert_true(buffer_text_width(buffer) == 7);
|
||||
|
||||
buffer->str.wstr = L"12345\n1234567\n";
|
||||
buffer->str.wstr = (wchar_t *)L"12345\n1234567\n";
|
||||
assert_true(buffer_text_width(buffer) == 7);
|
||||
|
||||
buffer->str.wstr = L"12345\n1234567\n123";
|
||||
buffer->str.wstr = (wchar_t *)L"12345\n1234567\n123";
|
||||
assert_true(buffer_text_width(buffer) == 7);
|
||||
|
||||
|
||||
@ -255,48 +255,48 @@ void test_buffer_text_height(void)
|
||||
buffer->type = CharBuf;
|
||||
char *old_value = buffer->str.cstr;
|
||||
|
||||
buffer->str.cstr = "";
|
||||
buffer->str.cstr = (char*)"";
|
||||
assert_true(buffer_text_height(buffer) == 0);
|
||||
|
||||
buffer->str.cstr = "\n";
|
||||
buffer->str.cstr = (char*)"\n";
|
||||
assert_true(buffer_text_height(buffer) == 2);
|
||||
|
||||
buffer->str.cstr = "\n\n";
|
||||
buffer->str.cstr = (char*)"\n\n";
|
||||
assert_true(buffer_text_height(buffer) == 3);
|
||||
|
||||
buffer->str.cstr = "\n\n\n\n";
|
||||
buffer->str.cstr = (char*)"\n\n\n\n";
|
||||
assert_true(buffer_text_height(buffer) == 5);
|
||||
|
||||
buffer->str.cstr = "12345";
|
||||
buffer->str.cstr = (char*)"12345";
|
||||
assert_true(buffer_text_height(buffer) == 1);
|
||||
|
||||
buffer->str.cstr = "\n12345";
|
||||
buffer->str.cstr = (char*)"\n12345";
|
||||
assert_true(buffer_text_height(buffer) == 2);
|
||||
|
||||
buffer->str.cstr = "\n12345\n\n2";
|
||||
buffer->str.cstr = (char*)"\n12345\n\n2";
|
||||
assert_true(buffer_text_height(buffer) == 4);
|
||||
|
||||
|
||||
buffer->type = WCharBuf;
|
||||
buffer->str.wstr = L"";
|
||||
buffer->str.wstr = (wchar_t *)L"";
|
||||
assert_true(buffer_text_height(buffer) == 0);
|
||||
|
||||
buffer->str.wstr = L"\n";
|
||||
buffer->str.wstr = (wchar_t *)L"\n";
|
||||
assert_true(buffer_text_height(buffer) == 2);
|
||||
|
||||
buffer->str.wstr = L"\n\n";
|
||||
buffer->str.wstr = (wchar_t *)L"\n\n";
|
||||
assert_true(buffer_text_height(buffer) == 3);
|
||||
|
||||
buffer->str.wstr = L"\n\n\n\n";
|
||||
buffer->str.wstr = (wchar_t *)L"\n\n\n\n";
|
||||
assert_true(buffer_text_height(buffer) == 5);
|
||||
|
||||
buffer->str.wstr = L"\xff0fy2345\xff0f";
|
||||
buffer->str.wstr = (wchar_t *)L"\xff0fy2345\xff0f";
|
||||
assert_true(buffer_text_height(buffer) == 1);
|
||||
|
||||
buffer->str.wstr = L"\n12345";
|
||||
buffer->str.wstr = (wchar_t *)L"\n12345";
|
||||
assert_true(buffer_text_height(buffer) == 2);
|
||||
|
||||
buffer->str.wstr = L"\n12345\n\n2";
|
||||
buffer->str.wstr = (wchar_t *)L"\n12345\n\n2";
|
||||
assert_true(buffer_text_height(buffer) == 4);
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user