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

namespace LIEF::PE {
const char* to_string(CODE_PAGES e) {
#define ENTRY(X) std::pair(CODE_PAGES::X, #X)
  STRING_MAP enums2str{
      ENTRY(IBM037),
      ENTRY(IBM437),
      ENTRY(IBM500),
      ENTRY(ASMO_708),
      ENTRY(DOS_720),
      ENTRY(IBM737),
      ENTRY(IBM775),
      ENTRY(IBM850),
      ENTRY(IBM852),
      ENTRY(IBM855),
      ENTRY(IBM857),
      ENTRY(IBM00858),
      ENTRY(IBM860),
      ENTRY(IBM861),
      ENTRY(DOS_862),
      ENTRY(IBM863),
      ENTRY(IBM864),
      ENTRY(IBM865),
      ENTRY(CP866),
      ENTRY(IBM869),
      ENTRY(IBM870),
      ENTRY(WINDOWS_874),
      ENTRY(CP875),
      ENTRY(SHIFT_JIS),
      ENTRY(GB2312),
      ENTRY(KS_C_5601_1987),
      ENTRY(BIG5),
      ENTRY(IBM1026),
      ENTRY(IBM01047),
      ENTRY(IBM01140),
      ENTRY(IBM01141),
      ENTRY(IBM01142),
      ENTRY(IBM01143),
      ENTRY(IBM01144),
      ENTRY(IBM01145),
      ENTRY(IBM01146),
      ENTRY(IBM01147),
      ENTRY(IBM01148),
      ENTRY(IBM01149),
      ENTRY(UTF_16),
      ENTRY(UNICODEFFFE),
      ENTRY(WINDOWS_1250),
      ENTRY(WINDOWS_1251),
      ENTRY(WINDOWS_1252),
      ENTRY(WINDOWS_1253),
      ENTRY(WINDOWS_1254),
      ENTRY(WINDOWS_1255),
      ENTRY(WINDOWS_1256),
      ENTRY(WINDOWS_1257),
      ENTRY(WINDOWS_1258),
      ENTRY(JOHAB),
      ENTRY(MACINTOSH),
      ENTRY(X_MAC_JAPANESE),
      ENTRY(X_MAC_CHINESETRAD),
      ENTRY(X_MAC_KOREAN),
      ENTRY(X_MAC_ARABIC),
      ENTRY(X_MAC_HEBREW),
      ENTRY(X_MAC_GREEK),
      ENTRY(X_MAC_CYRILLIC),
      ENTRY(X_MAC_CHINESESIMP),
      ENTRY(X_MAC_ROMANIAN),
      ENTRY(X_MAC_UKRAINIAN),
      ENTRY(X_MAC_THAI),
      ENTRY(X_MAC_CE),
      ENTRY(X_MAC_ICELANDIC),
      ENTRY(X_MAC_TURKISH),
      ENTRY(X_MAC_CROATIAN),
      ENTRY(UTF_32),
      ENTRY(UTF_32BE),
      ENTRY(X_CHINESE_CNS),
      ENTRY(X_CP20001),
      ENTRY(X_CHINESE_ETEN),
      ENTRY(X_CP20003),
      ENTRY(X_CP20004),
      ENTRY(X_CP20005),
      ENTRY(X_IA5),
      ENTRY(X_IA5_GERMAN),
      ENTRY(X_IA5_SWEDISH),
      ENTRY(X_IA5_NORWEGIAN),
      ENTRY(US_ASCII),
      ENTRY(X_CP20261),
      ENTRY(X_CP20269),
      ENTRY(IBM273),
      ENTRY(IBM277),
      ENTRY(IBM278),
      ENTRY(IBM280),
      ENTRY(IBM284),
      ENTRY(IBM285),
      ENTRY(IBM290),
      ENTRY(IBM297),
      ENTRY(IBM420),
      ENTRY(IBM423),
      ENTRY(IBM424),
      ENTRY(X_EBCDIC_KOREANEXTENDED),
      ENTRY(IBM_THAI),
      ENTRY(KOI8_R),
      ENTRY(IBM871),
      ENTRY(IBM880),
      ENTRY(IBM905),
      ENTRY(IBM00924),
      ENTRY(EUC_JP_JIS),
      ENTRY(X_CP20936),
      ENTRY(X_CP20949),
      ENTRY(CP1025),
      ENTRY(KOI8_U),
      ENTRY(ISO_8859_1),
      ENTRY(ISO_8859_2),
      ENTRY(ISO_8859_3),
      ENTRY(ISO_8859_4),
      ENTRY(ISO_8859_5),
      ENTRY(ISO_8859_6),
      ENTRY(ISO_8859_7),
      ENTRY(ISO_8859_8),
      ENTRY(ISO_8859_9),
      ENTRY(ISO_8859_13),
      ENTRY(ISO_8859_15),
      ENTRY(X_EUROPA),
      ENTRY(ISO_8859_8_I),
      ENTRY(ISO_2022_JP),
      ENTRY(CSISO2022JP),
      ENTRY(ISO_2022_JP_JIS),
      ENTRY(ISO_2022_KR),
      ENTRY(X_CP50227),
      ENTRY(EUC_JP),
      ENTRY(EUC_CN),
      ENTRY(EUC_KR),
      ENTRY(HZ_GB_2312),
      ENTRY(GB18030),
      ENTRY(X_ISCII_DE),
      ENTRY(X_ISCII_BE),
      ENTRY(X_ISCII_TA),
      ENTRY(X_ISCII_TE),
      ENTRY(X_ISCII_AS),
      ENTRY(X_ISCII_OR),
      ENTRY(X_ISCII_KA),
      ENTRY(X_ISCII_MA),
      ENTRY(X_ISCII_GU),
      ENTRY(X_ISCII_PA),
      ENTRY(UTF_7),
      ENTRY(UTF_8),
  };
#undef ENTRY

  if (auto it = enums2str.find(e); it != enums2str.end()) {
    return it->second;
  }
  return "UNKNOWN";
}

}