/*
 * Copyright (c) Yann Collet, Meta Platforms, Inc.
 * All rights reserved.
 *
 * This source code is licensed under both the BSD-style license (found in the
 * LICENSE file in the root directory of this source tree) and the GPLv2 (found
 * in the COPYING file in the root directory of this source tree).
 * You may select, at your option, one of the above-listed licenses.
 */

#ifndef EXTERNAL_MATCHFINDER
#define EXTERNAL_MATCHFINDER

#define ZSTD_STATIC_LINKING_ONLY
#include "zstd.h"

/* See external_matchfinder.c for details on each test case */
typedef enum {
    EMF_ZERO_SEQS = 0,
    EMF_ONE_BIG_SEQ = 1,
    EMF_LOTS_OF_SEQS = 2,
    EMF_BIG_ERROR = 3,
    EMF_SMALL_ERROR = 4,
    EMF_INVALID_OFFSET = 5,
    EMF_INVALID_MATCHLEN = 6,
    EMF_INVALID_LITLEN = 7,
    EMF_INVALID_LAST_LITS = 8
} EMF_testCase;

size_t zstreamSequenceProducer(
  void* sequenceProducerState,
  ZSTD_Sequence* outSeqs, size_t outSeqsCapacity,
  const void* src, size_t srcSize,
  const void* dict, size_t dictSize,
  int compressionLevel,
  size_t windowSize
);

#endif /* EXTERNAL_MATCHFINDER */