/*
Description: 排序需要用到的一些参数

Copyright : All right reserved by ICT

Author : Zhang Zhonghai
Date : 2023/10/23
*/
#pragma once

#include <string>
#include <vector>

using std::string;
using std::vector;

namespace nsmd {
/* How strict to be when reading a SAM or BAM, beyond bare minimum validation.
 */
/* 计算reads分数的方式（比那个read得分更高） */
enum QueryNameType { NATURAL, ASCII, PICARD };

enum SortType { COORDINATE, NAME };
/* 索引文件的格式 （bai或者csi） */
enum IndexFormat { BAI, CSI };
}  // namespace nsmd

/* markduplicate 需要的参数*/
struct SortArg {

    string INPUT_FILE;  // input bam filename

    string OUTPUT_FILE;  // output bam filename

    int NUM_THREADS = 1;

    int C_LEVEL = -1;  // compression level, from 0 (uncompressed) to 9 (best)

    size_t MAX_MEM = ((size_t)1) << 32;  // maximum memory for all threads; suffix K/M/G recognized [768M x num_threads]

    bool DUPLEX_IO = true;  // 同时读写

    int QUERY_NAME_TYPE = nsmd::QueryNameType::PICARD;

    bool SORT_COORIDINATE = true;

    bool CREATE_INDEX = false;

    nsmd::IndexFormat INDEX_FORMAT = nsmd::IndexFormat::BAI;

    // 命令行字符串
    string CLI_STR;

    // 开始运行时间
    string START_TIME;
};