c-lib: add DLL import/export directives

This commit is contained in:
Hugues Delorme 2013-01-15 16:45:01 +01:00
parent 1f0f4a311f
commit 8db6c9d077
10 changed files with 88 additions and 59 deletions

View File

@ -9,10 +9,10 @@ message($$PREFIX_DIR)
TEMPLATE = lib
TARGET = fougstl-c$$TARGET_SUFFIX
DESTDIR = $$PREFIX_DIR/lib
CONFIG *= dll
dll {
DEFINES *= FOUG_STL_DLL FOUG_STL_MAKE_DLL
DEFINES *= FOUG_LIB_DLL FOUG_LIB_MAKE_DLL
DEFINES *= FOUG_DATAEX_LIBSTL_DLL FOUG_DATAEX_LIBSTL_MAKE_DLL
}
#*g++*:QMAKE_CXXFLAGS_RELEASE -= -O2
@ -26,7 +26,7 @@ HEADERS += \
../../../src/c/memory.h \
../../../src/c/stream.h \
../../../src/c/task_control.h \
../../../src/c/libstl/stlb_global.h \
../../../src/c/libstl/stl_global.h \
../../../src/c/libstl/stlb_read.h \
../../../src/c/libstl/stlb_write.h \
../../../src/c/libstl/triangle.h

View File

@ -11,24 +11,24 @@ typedef enum
FOUG_OTHER_ENDIAN
} foug_endianness_t;
foug_endianness_t foug_host_endianness();
FOUG_LIB_EXPORT foug_endianness_t foug_host_endianness();
uint16_t foug_uint16_swap(uint16_t val);
uint16_t foug_uint16_noswap(uint16_t val);
uint16_t foug_decode_uint16_le(const uint8_t* bytes);
uint16_t foug_decode_uint16_be(const uint8_t* bytes);
void foug_encode_uint16_le(uint16_t val, uint8_t* bytes);
FOUG_LIB_EXPORT uint16_t foug_uint16_swap(uint16_t val);
FOUG_LIB_EXPORT uint16_t foug_uint16_noswap(uint16_t val);
FOUG_LIB_EXPORT uint16_t foug_decode_uint16_le(const uint8_t* bytes);
FOUG_LIB_EXPORT uint16_t foug_decode_uint16_be(const uint8_t* bytes);
FOUG_LIB_EXPORT void foug_encode_uint16_le(uint16_t val, uint8_t* bytes);
uint32_t foug_uint32_swap(uint32_t val);
uint32_t foug_uint32_noswap(uint32_t val);
uint32_t foug_decode_uint32_le(const uint8_t* bytes);
uint32_t foug_decode_uint32_me(const uint8_t* bytes);
uint32_t foug_decode_uint32_be(const uint8_t* bytes);
void foug_encode_uint32_le(uint32_t val, uint8_t* bytes);
FOUG_LIB_EXPORT uint32_t foug_uint32_swap(uint32_t val);
FOUG_LIB_EXPORT uint32_t foug_uint32_noswap(uint32_t val);
FOUG_LIB_EXPORT uint32_t foug_decode_uint32_le(const uint8_t* bytes);
FOUG_LIB_EXPORT uint32_t foug_decode_uint32_me(const uint8_t* bytes);
FOUG_LIB_EXPORT uint32_t foug_decode_uint32_be(const uint8_t* bytes);
FOUG_LIB_EXPORT void foug_encode_uint32_le(uint32_t val, uint8_t* bytes);
foug_real32_t foug_decode_real32_le(const uint8_t* bytes);
foug_real32_t foug_decode_real32_me(const uint8_t* bytes);
foug_real32_t foug_decode_real32_be(const uint8_t* bytes);
void foug_encode_real32_le(foug_real32_t val, uint8_t* bytes);
FOUG_LIB_EXPORT foug_real32_t foug_decode_real32_le(const uint8_t* bytes);
FOUG_LIB_EXPORT foug_real32_t foug_decode_real32_me(const uint8_t* bytes);
FOUG_LIB_EXPORT foug_real32_t foug_decode_real32_be(const uint8_t* bytes);
FOUG_LIB_EXPORT void foug_encode_real32_le(foug_real32_t val, uint8_t* bytes);
#endif /* FOUG_ENDIAN_H */

View File

@ -10,6 +10,16 @@
# define FOUG_DECL_IMPORT
#endif /* WIN */
#ifdef FOUG_LIB_DLL
# ifdef FOUG_LIB_MAKE_DLL
# define FOUG_LIB_EXPORT FOUG_DECL_EXPORT
# else
# define FOUG_LIB_EXPORT FOUG_DECL_IMPORT
# endif /* APP_LIBCORE_MAKE_DLL */
#else
# define FOUG_LIB_EXPORT
#endif /* FOUG_LIB_DLL */
#ifdef FOUG_USE_STDINT_H
# include <stdint.h>
#else

View File

@ -3,6 +3,17 @@
#include "../foug_global.h"
#ifdef FOUG_DATAEX_LIBSTL_DLL
# ifdef FOUG_DATAEX_LIBSTL_MAKE_DLL
# define FOUG_DATAEX_LIBSTL_EXPORT FOUG_DECL_EXPORT
# else
# define FOUG_DATAEX_LIBSTL_EXPORT FOUG_DECL_IMPORT
# endif /* APP_LIBCORE_MAKE_DLL */
#else
# define FOUG_DATAEX_LIBSTL_EXPORT
#endif /* FOUG_DATAEX_LIBSTL_DLL */
/* STLB */
#define FOUG_STLB_HEADER_SIZE 80
#define FOUG_STLB_MIN_CONTENTS_SIZE 284
#define FOUG_STLB_TRIANGLE_SIZE 50 /* 12 * sizeof(foug_real32_t) + sizeof(uint16_t) */

View File

@ -1,5 +1,4 @@
#include "stlb_read.h"
#include "stlb_global.h"
#include "../endian.h"

View File

@ -1,8 +1,8 @@
#ifndef FOUG_C_LIBSTL_STLB_READ_H
#define FOUG_C_LIBSTL_STLB_READ_H
#include "stl_global.h"
#include "triangle.h"
#include "../foug_global.h"
#include "../stream.h"
#include "../task_control.h"
@ -23,10 +23,12 @@ typedef struct
foug_stlb_geom_input_end_triangles_func_t end_triangles_func;
} foug_stlb_geom_input_manip_t;
FOUG_DATAEX_LIBSTL_EXPORT
foug_stlb_geom_input_t* foug_stlb_geom_input_create(foug_malloc_func_t func,
void* data,
foug_stlb_geom_input_manip_t manip);
FOUG_DATAEX_LIBSTL_EXPORT
void* foug_stlb_geom_input_get_cookie(const foug_stlb_geom_input_t* geom);
typedef struct
@ -36,6 +38,8 @@ typedef struct
foug_task_control_t* task_control;
uint32_t buffer_size;
} foug_stlb_read_args_t;
FOUG_DATAEX_LIBSTL_EXPORT
int foug_stlb_read(foug_stlb_read_args_t args);
#define FOUG_STLB_READ_NO_ERROR 0

View File

@ -1,6 +1,5 @@
#include "stlb_write.h"
#include "stlb_global.h"
#include "../endian.h"
#include <string.h>
@ -57,7 +56,7 @@ int foug_stlb_write(foug_stlb_write_args_t args)
memset(header_data, 0, FOUG_STLB_HEADER_SIZE);
if (foug_stream_write(args.stream, header_data, FOUG_STLB_HEADER_SIZE, 1) != 1)
return FOUG_STLB_WRITE_HEADER_ERROR;
return FOUG_STLB_WRITE_STREAM_ERROR;
/* Write facet count */
const uint32_t facet_count = (*(args.geom_output->manip.get_triangle_count_func))(args.geom_output);
@ -102,7 +101,7 @@ int foug_stlb_write(foug_stlb_write_args_t args)
/* Write to stream */
if (foug_stream_write(args.stream, buffer, FOUG_STLB_TRIANGLE_SIZE, 1) != 1)
error = FOUG_STLB_WRITE_NULL_STREAM_ERROR;
error = FOUG_STLB_WRITE_STREAM_ERROR;
/* Task control */
if (foug_stlb_no_error(error)) {

View File

@ -1,13 +1,11 @@
#ifndef FOUG_C_LIBSTL_STLB_WRITE_H
#define FOUG_C_LIBSTL_STLB_WRITE_H
#include "stl_global.h"
#include "triangle.h"
#include "../foug_global.h"
#include "../stream.h"
#include "../task_control.h"
enum { foug_stlb_header_size = 80 };
/* foug_stlb_geom_output : opaque structure */
typedef struct _internal_foug_stlb_geom_output foug_stlb_geom_output_t;
typedef void (*foug_stlb_geom_output_get_header_func_t)(const foug_stlb_geom_output_t*, uint8_t*);
@ -24,10 +22,12 @@ typedef struct
foug_stlb_geom_output_get_triangle_func_t get_triangle_func;
} foug_stlb_geom_output_manip_t;
FOUG_DATAEX_LIBSTL_EXPORT
foug_stlb_geom_output_t* foug_stlb_geom_output_create(foug_malloc_func_t func,
void* data,
foug_stlb_geom_output_manip_t manip);
FOUG_DATAEX_LIBSTL_EXPORT
void* foug_stlb_geom_output_get_cookie(const foug_stlb_geom_output_t* geom);
typedef struct
@ -37,6 +37,8 @@ typedef struct
foug_task_control_t* task_control;
uint32_t buffer_size;
} foug_stlb_write_args_t;
FOUG_DATAEX_LIBSTL_EXPORT
int foug_stlb_write(foug_stlb_write_args_t args);
#define FOUG_STLB_WRITE_NO_ERROR 0
@ -44,12 +46,8 @@ int foug_stlb_write(foug_stlb_write_args_t args);
#define FOUG_STLB_WRITE_NULL_STREAM_ERROR 2
#define FOUG_STLB_WRITE_NULL_GET_TRIANGLE_COUNT_FUNC 3
#define FOUG_STLB_WRITE_NULL_GET_TRIANGLE_FUNC 4
#define FOUG_STLB_WRITE_INVALID_BUFFER_SIZE_ERROR 3
#define FOUG_STLB_WRITE_HEADER_ERROR 4
#define FOUG_STLB_WRITE_FACET_COUNT_ERROR 5
#define FOUG_STLB_WRITE_STREAM_ERROR 6
#define FOUG_STLB_WRITE_TASK_STOPPED_ERROR 7
#define FOUG_STLB_WRITE_STREAM_ERROR 5
#define FOUG_STLB_WRITE_TASK_STOPPED_ERROR 6
#define FOUG_STLB_WRITE_INVALID_BUFFER_SIZE_ERROR 7
#endif /* FOUG_C_LIBSTL_STLB_WRITE_H */

View File

@ -20,16 +20,20 @@ typedef struct
foug_stream_write_func_t write_func;
} foug_stream_manip_t;
foug_stream_manip_t foug_stream_manip_null();
foug_stream_manip_t foug_stream_manip_stdio();
FOUG_LIB_EXPORT foug_stream_manip_t foug_stream_manip_null();
FOUG_LIB_EXPORT foug_stream_manip_t foug_stream_manip_stdio();
/* Services */
foug_stream_t* foug_stream_create(foug_malloc_func_t func, void* data, foug_stream_manip_t manip);
FOUG_LIB_EXPORT foug_stream_t* foug_stream_create(foug_malloc_func_t func,
void* data,
foug_stream_manip_t manip);
foug_bool_t foug_stream_at_end(foug_stream_t* stream);
int foug_stream_error(foug_stream_t* stream);
size_t foug_stream_read(foug_stream_t* stream, void* ptr, size_t item_size, size_t item_count);
size_t foug_stream_write(foug_stream_t* stream, const void* ptr, size_t item_size, size_t item_count);
void* foug_stream_get_cookie(const foug_stream_t* stream);
FOUG_LIB_EXPORT foug_bool_t foug_stream_at_end(foug_stream_t* stream);
FOUG_LIB_EXPORT int foug_stream_error(foug_stream_t* stream);
FOUG_LIB_EXPORT size_t foug_stream_read(foug_stream_t* stream,
void* ptr, size_t item_size, size_t item_count);
FOUG_LIB_EXPORT size_t foug_stream_write(foug_stream_t* stream,
const void* ptr, size_t item_size, size_t item_count);
FOUG_LIB_EXPORT void* foug_stream_get_cookie(const foug_stream_t* stream);
#endif /* FOUG_C_STREAM_H */

View File

@ -16,37 +16,41 @@ typedef struct
foug_task_control_handle_progress_update_func handle_progress_update_func;
} foug_task_control_manip_t;
void foug_task_control_manip_init(foug_task_control_manip_t* manip);
FOUG_LIB_EXPORT void foug_task_control_manip_init(foug_task_control_manip_t* manip);
foug_task_control_t* foug_task_control_create(foug_malloc_func_t func,
void* data, foug_task_control_manip_t manip);
FOUG_LIB_EXPORT foug_task_control_t* foug_task_control_create(foug_malloc_func_t func,
void* data,
foug_task_control_manip_t manip);
/* Range */
foug_real32_t foug_task_control_get_range_min(const foug_task_control_t* ctrl);
foug_real32_t foug_task_control_get_range_max(const foug_task_control_t* ctrl);
void foug_task_control_set_range(foug_task_control_t* ctrl, foug_real32_t min, foug_real32_t max);
FOUG_LIB_EXPORT foug_real32_t foug_task_control_get_range_min(const foug_task_control_t* ctrl);
FOUG_LIB_EXPORT foug_real32_t foug_task_control_get_range_max(const foug_task_control_t* ctrl);
FOUG_LIB_EXPORT void foug_task_control_set_range(foug_task_control_t* ctrl,
foug_real32_t min, foug_real32_t max);
/* Step id */
int32_t foug_task_control_get_step_id(const foug_task_control_t* ctrl);
void foug_task_control_set_step_id(foug_task_control_t* ctrl, int32_t step_id);
FOUG_LIB_EXPORT int32_t foug_task_control_get_step_id(const foug_task_control_t* ctrl);
FOUG_LIB_EXPORT void foug_task_control_set_step_id(foug_task_control_t* ctrl, int32_t step_id);
/* Progress */
foug_real32_t foug_task_control_get_progress_as_pc(const foug_task_control_t* ctrl);
foug_real32_t foug_task_control_get_progress(const foug_task_control_t* ctrl);
void foug_task_control_set_progress(foug_task_control_t* ctrl, foug_real32_t v);
FOUG_LIB_EXPORT foug_real32_t foug_task_control_get_progress_as_pc(const foug_task_control_t* ctrl);
FOUG_LIB_EXPORT foug_real32_t foug_task_control_get_progress(const foug_task_control_t* ctrl);
FOUG_LIB_EXPORT void foug_task_control_set_progress(foug_task_control_t* ctrl, foug_real32_t v);
FOUG_LIB_EXPORT
foug_real32_t foug_task_control_get_progress_update_threshold(const foug_task_control_t* ctrl);
void foug_task_control_set_progress_update_threshold(foug_task_control_t* ctrl, foug_real32_t v);
FOUG_LIB_EXPORT void foug_task_control_set_progress_update_threshold(foug_task_control_t* ctrl,
foug_real32_t v);
/* Reset */
void foug_task_control_reset(foug_task_control_t* ctrl);
FOUG_LIB_EXPORT void foug_task_control_reset(foug_task_control_t* ctrl);
/* Task stop */
void foug_task_control_async_stop(foug_task_control_t* ctrl);
void foug_task_control_handle_stop(foug_task_control_t* ctrl);
foug_bool_t foug_task_control_is_stop_requested(const foug_task_control_t* ctrl);
FOUG_LIB_EXPORT void foug_task_control_async_stop(foug_task_control_t* ctrl);
FOUG_LIB_EXPORT void foug_task_control_handle_stop(foug_task_control_t* ctrl);
FOUG_LIB_EXPORT foug_bool_t foug_task_control_is_stop_requested(const foug_task_control_t* ctrl);
/* Cookie */
void* foug_task_control_get_cookie(const foug_task_control_t* ctrl);
FOUG_LIB_EXPORT void* foug_task_control_get_cookie(const foug_task_control_t* ctrl);
#endif /* FOUG_C_TASK_CONTROL_H */