@ 261107.7
current
/* Copyright 2017 - 2026 R. Thomas
 * Copyright 2017 - 2026 Quarkslab
 *
 * 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.
 */
#include "LIEF/OAT/enums.hpp"
#include "LIEF/OAT/EnumToString.hpp"

#include "frozen.hpp"


namespace LIEF::OAT {

const char* to_string(OAT_CLASS_TYPES e) {
  CONST_MAP(OAT_CLASS_TYPES, const char*, 3)
  enumStrings{
      {OAT_CLASS_TYPES::OAT_CLASS_ALL_COMPILED, "ALL_COMPILED"},
      {OAT_CLASS_TYPES::OAT_CLASS_SOME_COMPILED, "SOME_COMPILED"},
      {OAT_CLASS_TYPES::OAT_CLASS_NONE_COMPILED, "NONE_COMPILED"},

  };
  const auto it = enumStrings.find(e);
  return it == enumStrings.end() ? "UNDEFINED" : it->second;
}

const char* to_string(OAT_CLASS_STATUS e) {
  CONST_MAP(OAT_CLASS_STATUS, const char*, 13)
  enumStrings{
      {OAT_CLASS_STATUS::STATUS_RETIRED, "RETIRED"},
      {OAT_CLASS_STATUS::STATUS_ERROR, "ERROR"},
      {OAT_CLASS_STATUS::STATUS_NOTREADY, "NOTREADY"},
      {OAT_CLASS_STATUS::STATUS_IDX, "IDX"},
      {OAT_CLASS_STATUS::STATUS_LOADED, "LOADED"},
      {OAT_CLASS_STATUS::STATUS_RESOLVING, "RESOLVING"},
      {OAT_CLASS_STATUS::STATUS_RESOLVED, "RESOLVED"},
      {OAT_CLASS_STATUS::STATUS_VERIFYING, "VERIFYING"},
      {OAT_CLASS_STATUS::STATUS_RETRY_VERIFICATION_AT_RUNTIME,
       "VERIFICATION_AT_RUNTIME"},
      {OAT_CLASS_STATUS::STATUS_VERIFYING_AT_RUNTIME, "VERIFYING_AT_RUNTIME"},
      {OAT_CLASS_STATUS::STATUS_VERIFIED, "VERIFIED"},
      {OAT_CLASS_STATUS::STATUS_INITIALIZING, "INITIALIZING"},
      {OAT_CLASS_STATUS::STATUS_INITIALIZED, "INITIALIZED"},

  };
  const auto it = enumStrings.find(e);
  return it == enumStrings.end() ? "UNDEFINED" : it->second;
}


const char* to_string(HEADER_KEYS e) {
  CONST_MAP(HEADER_KEYS, const char*, 11)
  enumStrings{
      {HEADER_KEYS::KEY_IMAGE_LOCATION, "IMAGE_LOCATION"},
      {HEADER_KEYS::KEY_DEX2OAT_CMD_LINE, "DEX2OAT_CMD_LINE"},
      {HEADER_KEYS::KEY_DEX2OAT_HOST, "DEX2OAT_HOST"},
      {HEADER_KEYS::KEY_PIC, "PIC"},
      {HEADER_KEYS::KEY_HAS_PATCH_INFO, "HAS_PATCH_INFO"},
      {HEADER_KEYS::KEY_DEBUGGABLE, "DEBUGGABLE"},
      {HEADER_KEYS::KEY_NATIVE_DEBUGGABLE, "NATIVE_DEBUGGABLE"},
      {HEADER_KEYS::KEY_COMPILER_FILTER, "COMPILER_FILTER"},
      {HEADER_KEYS::KEY_CLASS_PATH, "CLASS_PATH"},
      {HEADER_KEYS::KEY_BOOT_CLASS_PATH, "BOOT_CLASS_PATH"},
      {HEADER_KEYS::KEY_CONCURRENT_COPYING, "CONCURRENT_COPYING"},

  };
  const auto it = enumStrings.find(e);
  return it == enumStrings.end() ? "UNDEFINED" : it->second;
}


const char* to_string(INSTRUCTION_SETS e) {
  CONST_MAP(INSTRUCTION_SETS, const char*, 8)
  enumStrings{
      {INSTRUCTION_SETS::INST_SET_NONE, "NONE"},
      {INSTRUCTION_SETS::INST_SET_ARM, "ARM"},
      {INSTRUCTION_SETS::INST_SET_ARM_64, "ARM_64"},
      {INSTRUCTION_SETS::INST_SET_THUMB2, "THUMB2"},
      {INSTRUCTION_SETS::INST_SET_X86, "X86"},
      {INSTRUCTION_SETS::INST_SET_X86_64, "X86_64"},
      {INSTRUCTION_SETS::INST_SET_MIPS, "MIPS"},
      {INSTRUCTION_SETS::INST_SET_MIPS_64, "MIPS_64"},

  };
  const auto it = enumStrings.find(e);
  return it == enumStrings.end() ? "UNDEFINED" : it->second;
}


} // namespace LIEF::OAT