@ 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/DEX/EnumToString.hpp"
#include "frozen.hpp"


namespace LIEF::DEX {

const char* to_string(MapItem::TYPES e) {
  CONST_MAP(MapItem::TYPES, const char*, 20)
  enumStrings{
      {MapItem::TYPES::HEADER, "HEADER"},
      {MapItem::TYPES::STRING_ID, "STRING_ID"},
      {MapItem::TYPES::TYPE_ID, "TYPE_ID"},
      {MapItem::TYPES::PROTO_ID, "PROTO_ID"},
      {MapItem::TYPES::FIELD_ID, "FIELD_ID"},
      {MapItem::TYPES::METHOD_ID, "METHOD_ID"},
      {MapItem::TYPES::CLASS_DEF, "CLASS_DEF"},
      {MapItem::TYPES::CALL_SITE_ID, "CALL_SITE_ID"},
      {MapItem::TYPES::METHOD_HANDLE, "METHOD_HANDLE"},
      {MapItem::TYPES::MAP_LIST, "MAP_LIST"},
      {MapItem::TYPES::TYPE_LIST, "TYPE_LIST"},
      {MapItem::TYPES::ANNOTATION_SET_REF_LIST, "ANNOTATION_SET_REF_LIST"},
      {MapItem::TYPES::ANNOTATION_SET, "ANNOTATION_SET"},
      {MapItem::TYPES::CLASS_DATA, "CLASS_DATA"},
      {MapItem::TYPES::CODE, "CODE"},
      {MapItem::TYPES::STRING_DATA, "STRING_DATA"},
      {MapItem::TYPES::DEBUG_INFO, "DEBUG_INFO"},
      {MapItem::TYPES::ANNOTATION, "ANNOTATION"},
      {MapItem::TYPES::ENCODED_ARRAY, "ENCODED_ARRAY"},
      {MapItem::TYPES::ANNOTATIONS_DIRECTORY, "ANNOTATIONS_DIRECTORY"},
  };
  const auto it = enumStrings.find(e);
  return it == enumStrings.end() ? "UNKNOWN" : it->second;
}


const char* to_string(ACCESS_FLAGS e) {
  CONST_MAP(ACCESS_FLAGS, const char*, 18)
  enumStrings{
      {ACCESS_FLAGS::ACC_UNKNOWN, "UNKNOWN"},
      {ACCESS_FLAGS::ACC_PUBLIC, "PUBLIC"},
      {ACCESS_FLAGS::ACC_PRIVATE, "PRIVATE"},
      {ACCESS_FLAGS::ACC_PROTECTED, "PROTECTED"},
      {ACCESS_FLAGS::ACC_STATIC, "STATIC"},
      {ACCESS_FLAGS::ACC_FINAL, "FINAL"},
      {ACCESS_FLAGS::ACC_SYNCHRONIZED, "SYNCHRONIZED"},
      {ACCESS_FLAGS::ACC_VOLATILE, "VOLATILE"},
      {ACCESS_FLAGS::ACC_VARARGS, "VARARGS"},
      {ACCESS_FLAGS::ACC_NATIVE, "NATIVE"},
      {ACCESS_FLAGS::ACC_INTERFACE, "INTERFACE"},
      {ACCESS_FLAGS::ACC_ABSTRACT, "ABSTRACT"},
      {ACCESS_FLAGS::ACC_STRICT, "STRICT"},
      {ACCESS_FLAGS::ACC_SYNTHETIC, "SYNTHETIC"},
      {ACCESS_FLAGS::ACC_ANNOTATION, "ANNOTATION"},
      {ACCESS_FLAGS::ACC_ENUM, "ENUM"},
      {ACCESS_FLAGS::ACC_CONSTRUCTOR, "CONSTRUCTOR"},
      {ACCESS_FLAGS::ACC_DECLARED_SYNCHRONIZED, "DECLARED_SYNCHRONIZED"},
  };
  const auto it = enumStrings.find(e);
  return it == enumStrings.end() ? "UNKNOWN" : it->second;
}

const char* to_string(Type::TYPES e) {
  CONST_MAP(Type::TYPES, const char*, 4)
  enumStrings{
      {Type::TYPES::UNKNOWN, "UNKNOWN"},
      {Type::TYPES::ARRAY, "ARRAY"},
      {Type::TYPES::CLASS, "CLASS"},
      {Type::TYPES::PRIMITIVE, "PRIMITIVE"},
  };
  const auto it = enumStrings.find(e);
  return it == enumStrings.end() ? "UNKNOWN" : it->second;
}


const char* to_string(Type::PRIMITIVES e) {
  CONST_MAP(Type::PRIMITIVES, const char*, 9)
  enumStrings{
      {Type::PRIMITIVES::VOID_T, "VOID_T"}, {Type::PRIMITIVES::BOOLEAN, "BOOLEAN"},
      {Type::PRIMITIVES::INT, "INT"},       {Type::PRIMITIVES::SHORT, "SHORT"},
      {Type::PRIMITIVES::LONG, "LONG"},     {Type::PRIMITIVES::CHAR, "CHAR"},
      {Type::PRIMITIVES::DOUBLE, "DOUBLE"}, {Type::PRIMITIVES::FLOAT, "FLOAT"},
      {Type::PRIMITIVES::BYTE, "BYTE"},
  };
  const auto it = enumStrings.find(e);
  return it == enumStrings.end() ? "UNKNOWN" : it->second;
}

} // namespace LIEF::DEX