#ifndef _VGMSTREAM_CLI_H_
#define _VGMSTREAM_CLI_H_

#include "../src/api.h"
#include "../src/vgmstream.h"

#define CLI_PATH_LIMIT 4096

typedef struct {
    char** infilenames;
    int infilenames_count;
    const char* infilename;

    const char* outfilename_config;
    const char* outfilename;

    int sample_buffer_size;

    // playback config
    double loop_count;
    double fade_time;
    double fade_delay;
    bool ignore_fade;
    bool ignore_loop;
    bool force_loop;
    bool really_force_loop;

    bool play_forever;
    bool play_sdtout;
    bool play_wreckless;

    // subsongs
    int subsong_index;
    int subsong_end;

    // wav config
    bool write_lwav;
    bool write_original_wav;

    // print flags
    bool print_metaonly;
    bool print_adxencd;
    bool print_oggenc;
    bool print_batchvar;
    bool print_title;
    bool print_metajson;
    const char* tag_filename;

    // debug stuff
    bool decode_only;
    bool test_reset;
    bool validate_extensions;
    int seek_samples1;
    int seek_samples2;
    int downmix_channels;
    int stereo_track;


    /* not quite config but eh */
    int lwav_loop_start;
    int lwav_loop_end;
} cli_config_t;


void replace_filename(char* dst, size_t dstsize, cli_config_t* cfg, VGMSTREAM* vgmstream);
void print_info(VGMSTREAM* vgmstream, cli_config_t* cfg);
void print_tags(cli_config_t* cfg);
void print_title(VGMSTREAM* vgmstream, cli_config_t* cfg);

void print_json_version(const char* vgmstream_version);
void print_json_info(VGMSTREAM* vgm, cli_config_t* cfg, const char* vgmstream_version);


#endif