/**
 * csv_policy.hxx
 *
 *      Copyright (c) 2025 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_CPP_INTERFACE_H
#define CSV_POLICY_CPP_INTERFACE_H

#include "port.h"


namespace oo {

struct iCSVPolicy
{
    virtual       char  get_delimiter() const = 0;
    virtual       bool  set_delimiter(char delim) = 0;
    virtual       char  get_quote() const = 0;
    virtual       void  set_quote(char quote) = 0;
    virtual       void  set_no_quote() = 0;
    virtual       bool  is_quote_enabled() const = 0;
    virtual       void  add_trim_char(char trim_char) = 0;
    virtual       void  clear_trim_chars() = 0;

    virtual       void  ignore_column(int col) = 0;

    virtual       char  decimal_symbol() const = 0;
    virtual       void  set_decimal_symbol(char symbol) = 0;

    virtual       char  thousand_separator() const = 0;
    virtual       void  set_thousand_separator(char sep) = 0;
    virtual        int  group_size() const = 0;
    virtual       void  set_group_size(int size) = 0;

    virtual const char* currency_sign() const = 0;
    virtual       void  set_currency_sign(const char* sign) = 0;

    virtual const char* datetime_format() const = 0;
    virtual       void  set_datetime_format(const char* fmt) = 0;

};

}

#endif

