genie-sys 0.1.1

A rust binding for `Genie` (A Open Source MPEG-G Codec).
#ifndef SRC_GENIESYS_LIB_H_
#define SRC_GENIESYS_LIB_H_

#include "cxx.h"
#include "genie/util/runtime-exception.h"

namespace geniesys {

constexpr size_t BLOCKSIZE = 256000;

/**
 * @brief Convert FASTQ file into MPEG-G format
 *
 * @param input_file path to FASTQ file
 * @param output_file path to MPEG-G file to be written to. The file will be open in append mode by default.
 */
void convert_fastq(rust::String input_file, rust::String output_file, size_t threads = 1);

/**
 * @brief Convert FASTQ files pair reads into MPEG-G format
 *
 * @param input_file path to FASTQ file (typically, the file storing 5' to 3' read).
 * @param input_file2 path to FASTQ file of pair read (typically, the file storing 3' to 5' read).
 * @param output_file path to MPEG-G file to be written to. The file will be open in append mode by default.
 */
void convert_fastq(rust::String input_file1, rust::String input_file2, rust::String output_file, size_t threads = 1);

/**
 * @brief  Convert MPEG-G into FASTQ/FASTA format
 *
 * @param input_file path to MPEG-G file.
 * @param output_file1 path to FASTQ/FASTA output file. The file will be open in append mode by default.
 * @param output_file2 path to FASTQ output file for storing pair read. The file will be open in append mode by default.
 */
void convert_mgrec(rust::String input_file, rust::String output_file1, rust::String output_file2 = "",
                   size_t threads = 1);

}  // namespace geniesys
#endif