/**
 * csv_policy.h (C interface header file)
 *
 *      Copyright (c) 2026 CHBXUE. All rights reserved.
 *
 * THIS FILE AND THE SOFTWARE CONTAINED HEREIN IS PROVIDED 'AS IS' AND
 * COMES WITH NO WARRANTIES OF ANY KIND.
 */

#ifndef CSV_POLICY_INTERFACE_C_H
#define CSV_POLICY_INTERFACE_C_H

#include "port.h"
#include "handle.h"


#ifdef __cplusplus
extern "C" {
#endif

DYLIB_PORT       char  DYLIB_CALL get_delimiter(CSVPolicyHandle handle);
DYLIB_PORT       bool  DYLIB_CALL set_delimiter(CSVPolicyHandle handle, char delim);
DYLIB_PORT       char  DYLIB_CALL get_quote(CSVPolicyHandle handle);
DYLIB_PORT       void  DYLIB_CALL set_quote(CSVPolicyHandle handle, char quote);
DYLIB_PORT       void  DYLIB_CALL set_no_quote(CSVPolicyHandle handle);
DYLIB_PORT       bool  DYLIB_CALL is_quote_enabled(CSVPolicyHandle handle);
DYLIB_PORT       void  DYLIB_CALL add_trim_char(CSVPolicyHandle handle, char trim_char);
DYLIB_PORT       void  DYLIB_CALL clear_trim_chars(CSVPolicyHandle handle);

DYLIB_PORT       void  DYLIB_CALL ignore_column(CSVPolicyHandle handle, int col);

DYLIB_PORT       char  DYLIB_CALL decimal_symbol(CSVPolicyHandle handle);
DYLIB_PORT       void  DYLIB_CALL set_decimal_symbol(CSVPolicyHandle handle, char symbol);

DYLIB_PORT       char  DYLIB_CALL thousand_separator(CSVPolicyHandle handle);
DYLIB_PORT       void  DYLIB_CALL set_thousand_separator(CSVPolicyHandle handle, char sep);
DYLIB_PORT        int  DYLIB_CALL group_size(CSVPolicyHandle handle);
DYLIB_PORT       void  DYLIB_CALL set_group_size(CSVPolicyHandle handle, int size);

DYLIB_PORT const char* DYLIB_CALL currency_sign(CSVPolicyHandle handle);
DYLIB_PORT       void  DYLIB_CALL set_currency_sign(CSVPolicyHandle handle, const char* sign);

DYLIB_PORT const char* DYLIB_CALL datetime_format(CSVPolicyHandle handle);
DYLIB_PORT       void  DYLIB_CALL set_datetime_format(CSVPolicyHandle handle, const char* fmt);

#ifdef __cplusplus
}
#endif

#endif // CSV_POLICY_INTERFACE_C_H

