/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
   file Copyright.txt or https://cmake.org/licensing for details.  */
#ifndef bindexplib_h
#define bindexplib_h

#include "cmConfigure.h" // IWYU pragma: keep

#include <set>
#include <string>

#include <stdio.h>

class bindexplib
{
public:
  bindexplib() { NmPath = "nm"; }
  bool AddDefinitionFile(const char* filename);
  bool AddObjectFile(const char* filename);
  void WriteFile(FILE* file);

  void SetNmPath(std::string const& nm);

private:
  std::set<std::string> Symbols;
  std::set<std::string> DataSymbols;
  std::string NmPath;
};
#endif
