/*
 * Copyright 2024 Aon Cyber Solutions
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

#ifndef LIGHTGREP_C_SEARCH_HIT_H_
#define LIGHTGREP_C_SEARCH_HIT_H_

#include <inttypes.h>

#ifdef __cplusplus
extern "C" {
#endif

// Basic Search Hit struct

  typedef struct {
    uint64_t  Start,        // starting offset of the hit
              End;          // one past the hit, i.e., End - Start = Length
    uint32_t  KeywordIndex; // index of keyword that hit
  } LG_SearchHit;

  // function you specify to handle the search hit, e.g.,
  // void gotASearchHit(void* userData, const LG_SearchHit const* hit) {
  //   print("hit at %d, ending %d, on keyword %d",
  //         hit->Start, hit->End, hit->KeywordIndex);
  // }
  typedef void (*LG_HITCALLBACK_FN)(void* userData, const LG_SearchHit* const hit);


#ifdef __cplusplus
}
#endif

#endif /* LIGHTGREP_C_SEARCH_HIT_H_ */
