// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SRC_DEVICES_BIN_ACPIDUMP_ACPIDUMP_H_
#define SRC_DEVICES_BIN_ACPIDUMP_ACPIDUMP_H_

#include <optional>
#include <string>

#include <fbl/array.h>
#include <fbl/span.h>

namespace acpidump {

// Parsed command line arguments.
struct Args {
  // Table to dump. If empty, dump all tables.
  std::optional<std::string> table;

  // Should we dump raw binary data?
  bool dump_raw = false;

  // Should we show help?
  bool show_help = false;

  // Should we only show table names, but not content?
  bool table_names_only = false;
};

// Parse the given set of arguments.
//
// On success, fills in |result| with parsed arguments and returns true.
bool ParseArgs(fbl::Span<const char* const> args, Args* result);

// Print the given data in hex to the given file.
void PrintHex(const char* name, const fbl::Array<uint8_t>& data);

// Entry point.
int Main(int argc, const char** argv);

}  // namespace acpidump

#endif  // SRC_DEVICES_BIN_ACPIDUMP_ACPIDUMP_H_
