#ifndef LIEF_PE_ENUMS_H_
#define LIEF_PE_ENUMS_H_
#include <inttypes.h>
#include <cstddef>
#include "LIEF/enums.hpp"
#include "LIEF/PE/undef.h"

namespace LIEF {
namespace PE {

@LIEF_PE_ENUMS@


// Common section type
enum class PE_SECTION_TYPES : uint8_t {
  TEXT       = 0,
  TLS        = 1,
  IMPORT     = 2,
  DATA       = 3,
  BSS        = 4,
  RESOURCE   = 5,
  RELOCATION = 6,
  EXPORT     = 7,
  DEBUG      = 8,
  LOAD_CONFIG = 9,
  UNKNOWN     = 10
};

enum class PE_TYPE : uint16_t {
    PE32      = 0x10b, ///< 32bits
    PE32_PLUS = 0x20b  ///< 64 bits
};


static const RESOURCE_TYPES resource_types_array[] = {
  RESOURCE_TYPES::CURSOR,
  RESOURCE_TYPES::BITMAP,
  RESOURCE_TYPES::ICON,
  RESOURCE_TYPES::MENU,
  RESOURCE_TYPES::DIALOG,
  RESOURCE_TYPES::STRING,
  RESOURCE_TYPES::FONTDIR,
  RESOURCE_TYPES::FONT,
  RESOURCE_TYPES::ACCELERATOR,
  RESOURCE_TYPES::RCDATA,
  RESOURCE_TYPES::MESSAGETABLE,
  RESOURCE_TYPES::GROUP_CURSOR,
  RESOURCE_TYPES::GROUP_ICON,
  RESOURCE_TYPES::VERSION,
  RESOURCE_TYPES::DLGINCLUDE,
  RESOURCE_TYPES::PLUGPLAY,
  RESOURCE_TYPES::VXD,
  RESOURCE_TYPES::ANICURSOR,
  RESOURCE_TYPES::ANIICON,
  RESOURCE_TYPES::HTML,
  RESOURCE_TYPES::MANIFEST,
};

static const RESOURCE_LANGS resource_langs_array[] = {
  RESOURCE_LANGS::LANG_NEUTRAL,
  RESOURCE_LANGS::LANG_INVARIANT,
  RESOURCE_LANGS::LANG_AFRIKAANS,
  RESOURCE_LANGS::LANG_ALBANIAN,
  RESOURCE_LANGS::LANG_ARABIC,
  RESOURCE_LANGS::LANG_ARMENIAN,
  RESOURCE_LANGS::LANG_ASSAMESE,
  RESOURCE_LANGS::LANG_AZERI,
  RESOURCE_LANGS::LANG_BASQUE,
  RESOURCE_LANGS::LANG_BELARUSIAN,
  RESOURCE_LANGS::LANG_BANGLA,
  RESOURCE_LANGS::LANG_BULGARIAN,
  RESOURCE_LANGS::LANG_CATALAN,
  RESOURCE_LANGS::LANG_CHINESE,
  RESOURCE_LANGS::LANG_CROATIAN,
  RESOURCE_LANGS::LANG_BOSNIAN,
  RESOURCE_LANGS::LANG_CZECH,
  RESOURCE_LANGS::LANG_DANISH,
  RESOURCE_LANGS::LANG_DIVEHI,
  RESOURCE_LANGS::LANG_DUTCH,
  RESOURCE_LANGS::LANG_ENGLISH,
  RESOURCE_LANGS::LANG_ESTONIAN,
  RESOURCE_LANGS::LANG_FAEROESE,
  RESOURCE_LANGS::LANG_FARSI,
  RESOURCE_LANGS::LANG_FINNISH,
  RESOURCE_LANGS::LANG_FRENCH,
  RESOURCE_LANGS::LANG_GALICIAN,
  RESOURCE_LANGS::LANG_GEORGIAN,
  RESOURCE_LANGS::LANG_GERMAN,
  RESOURCE_LANGS::LANG_GREEK,
  RESOURCE_LANGS::LANG_GUJARATI,
  RESOURCE_LANGS::LANG_HEBREW,
  RESOURCE_LANGS::LANG_HINDI,
  RESOURCE_LANGS::LANG_HUNGARIAN,
  RESOURCE_LANGS::LANG_ICELANDIC,
  RESOURCE_LANGS::LANG_INDONESIAN,
  RESOURCE_LANGS::LANG_ITALIAN,
  RESOURCE_LANGS::LANG_JAPANESE,
  RESOURCE_LANGS::LANG_KANNADA,
  RESOURCE_LANGS::LANG_KASHMIRI,
  RESOURCE_LANGS::LANG_KAZAK,
  RESOURCE_LANGS::LANG_KONKANI,
  RESOURCE_LANGS::LANG_KOREAN,
  RESOURCE_LANGS::LANG_KYRGYZ,
  RESOURCE_LANGS::LANG_LATVIAN,
  RESOURCE_LANGS::LANG_LITHUANIAN,
  RESOURCE_LANGS::LANG_MACEDONIAN,
  RESOURCE_LANGS::LANG_MALAY,
  RESOURCE_LANGS::LANG_MALAYALAM,
  RESOURCE_LANGS::LANG_MANIPURI,
  RESOURCE_LANGS::LANG_MARATHI,
  RESOURCE_LANGS::LANG_MONGOLIAN,
  RESOURCE_LANGS::LANG_NEPALI,
  RESOURCE_LANGS::LANG_NORWEGIAN,
  RESOURCE_LANGS::LANG_ORIYA,
  RESOURCE_LANGS::LANG_POLISH,
  RESOURCE_LANGS::LANG_PORTUGUESE,
  RESOURCE_LANGS::LANG_PUNJABI,
  RESOURCE_LANGS::LANG_ROMANIAN,
  RESOURCE_LANGS::LANG_RUSSIAN,
  RESOURCE_LANGS::LANG_SANSKRIT,
  RESOURCE_LANGS::LANG_SERBIAN,
  RESOURCE_LANGS::LANG_SINDHI,
  RESOURCE_LANGS::LANG_SLOVAK,
  RESOURCE_LANGS::LANG_SLOVENIAN,
  RESOURCE_LANGS::LANG_SPANISH,
  RESOURCE_LANGS::LANG_SWAHILI,
  RESOURCE_LANGS::LANG_SWEDISH,
  RESOURCE_LANGS::LANG_SYRIAC,
  RESOURCE_LANGS::LANG_TAMIL,
  RESOURCE_LANGS::LANG_TATAR,
  RESOURCE_LANGS::LANG_TELUGU,
  RESOURCE_LANGS::LANG_THAI,
  RESOURCE_LANGS::LANG_TURKISH,
  RESOURCE_LANGS::LANG_UKRAINIAN,
  RESOURCE_LANGS::LANG_URDU,
  RESOURCE_LANGS::LANG_UZBEK,
  RESOURCE_LANGS::LANG_VIETNAMESE,
  RESOURCE_LANGS::LANG_GAELIC,
  RESOURCE_LANGS::LANG_MALTESE,
  RESOURCE_LANGS::LANG_MAORI,
  RESOURCE_LANGS::LANG_RHAETO_ROMANCE,
  RESOURCE_LANGS::LANG_SAMI,
  RESOURCE_LANGS::LANG_SORBIAN,
  RESOURCE_LANGS::LANG_SUTU,
  RESOURCE_LANGS::LANG_TSONGA,
  RESOURCE_LANGS::LANG_TSWANA,
  RESOURCE_LANGS::LANG_VENDA,
  RESOURCE_LANGS::LANG_XHOSA,
  RESOURCE_LANGS::LANG_ZULU,
  RESOURCE_LANGS::LANG_ESPERANTO,
  RESOURCE_LANGS::LANG_WALON,
  RESOURCE_LANGS::LANG_CORNISH,
  RESOURCE_LANGS::LANG_WELSH,
  RESOURCE_LANGS::LANG_BRETON,
  RESOURCE_LANGS::LANG_INUKTITUT,
  RESOURCE_LANGS::LANG_IRISH,
  RESOURCE_LANGS::LANG_LOWER_SORBIAN,
  RESOURCE_LANGS::LANG_PULAR,
  RESOURCE_LANGS::LANG_QUECHUA,
  RESOURCE_LANGS::LANG_TAMAZIGHT,
  RESOURCE_LANGS::LANG_TIGRINYA,
  RESOURCE_LANGS::LANG_VALENCIAN,
};


static const RESOURCE_SUBLANGS resource_sublangs_array[] = {
  RESOURCE_SUBLANGS::SUBLANG_AFRIKAANS_SOUTH_AFRICA,
  RESOURCE_SUBLANGS::SUBLANG_ALBANIAN_ALBANIA,
  RESOURCE_SUBLANGS::SUBLANG_ALSATIAN_FRANCE,
  RESOURCE_SUBLANGS::SUBLANG_AMHARIC_ETHIOPIA,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_ALGERIA,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_BAHRAIN,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_EGYPT,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_IRAQ,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_JORDAN,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_KUWAIT,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_LEBANON,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_LIBYA,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_MOROCCO,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_OMAN,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_QATAR,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_SAUDI_ARABIA,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_SYRIA,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_TUNISIA,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_UAE,
  RESOURCE_SUBLANGS::SUBLANG_ARABIC_YEMEN,
  RESOURCE_SUBLANGS::SUBLANG_ARMENIAN_ARMENIA,
  RESOURCE_SUBLANGS::SUBLANG_ASSAMESE_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_AZERI_CYRILLIC,
  RESOURCE_SUBLANGS::SUBLANG_AZERI_LATIN,
  RESOURCE_SUBLANGS::SUBLANG_BASHKIR_RUSSIA,
  RESOURCE_SUBLANGS::SUBLANG_BASQUE_BASQUE,
  RESOURCE_SUBLANGS::SUBLANG_BELARUSIAN_BELARUS,
  RESOURCE_SUBLANGS::SUBLANG_BANGLA_BANGLADESH,
  RESOURCE_SUBLANGS::SUBLANG_BANGLA_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC,
  RESOURCE_SUBLANGS::SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN,
  RESOURCE_SUBLANGS::SUBLANG_BRETON_FRANCE,
  RESOURCE_SUBLANGS::SUBLANG_BULGARIAN_BULGARIA,
  RESOURCE_SUBLANGS::SUBLANG_CATALAN_CATALAN,
  RESOURCE_SUBLANGS::SUBLANG_CHINESE_HONGKONG,
  RESOURCE_SUBLANGS::SUBLANG_CHINESE_MACAU,
  RESOURCE_SUBLANGS::SUBLANG_CHINESE_SIMPLIFIED,
  RESOURCE_SUBLANGS::SUBLANG_CHINESE_SINGAPORE,
  RESOURCE_SUBLANGS::SUBLANG_CHINESE_TRADITIONAL,
  RESOURCE_SUBLANGS::SUBLANG_CORSICAN_FRANCE,
  RESOURCE_SUBLANGS::SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN,
  RESOURCE_SUBLANGS::SUBLANG_CROATIAN_CROATIA,
  RESOURCE_SUBLANGS::SUBLANG_CUSTOM_DEFAULT,
  RESOURCE_SUBLANGS::SUBLANG_CUSTOM_UNSPECIFIED,
  RESOURCE_SUBLANGS::SUBLANG_CZECH_CZECH_REPUBLIC,
  RESOURCE_SUBLANGS::SUBLANG_DANISH_DENMARK,
  RESOURCE_SUBLANGS::SUBLANG_DARI_AFGHANISTAN,
  RESOURCE_SUBLANGS::SUBLANG_DEFAULT,
  RESOURCE_SUBLANGS::SUBLANG_DIVEHI_MALDIVES,
  RESOURCE_SUBLANGS::SUBLANG_DUTCH_BELGIAN,
  RESOURCE_SUBLANGS::SUBLANG_DUTCH,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_AUS,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_BELIZE,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_CAN,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_CARIBBEAN,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_EIRE,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_JAMAICA,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_MALAYSIA,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_NZ,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_PHILIPPINES,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_SINGAPORE,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_SOUTH_AFRICA,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_TRINIDAD,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_UK,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_US,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_ZIMBABWE,
  RESOURCE_SUBLANGS::SUBLANG_ENGLISH_IRELAND,
  RESOURCE_SUBLANGS::SUBLANG_ESTONIAN_ESTONIA,
  RESOURCE_SUBLANGS::SUBLANG_FAEROESE_FAROE_ISLANDS,
  RESOURCE_SUBLANGS::SUBLANG_FILIPINO_PHILIPPINES,
  RESOURCE_SUBLANGS::SUBLANG_FINNISH_FINLAND,
  RESOURCE_SUBLANGS::SUBLANG_FRENCH_BELGIAN,
  RESOURCE_SUBLANGS::SUBLANG_FRENCH_CANADIAN,
  RESOURCE_SUBLANGS::SUBLANG_FRENCH_LUXEMBOURG,
  RESOURCE_SUBLANGS::SUBLANG_FRENCH_MONACO,
  RESOURCE_SUBLANGS::SUBLANG_FRENCH_SWISS,
  RESOURCE_SUBLANGS::SUBLANG_FRENCH,
  RESOURCE_SUBLANGS::SUBLANG_FRISIAN_NETHERLANDS,
  RESOURCE_SUBLANGS::SUBLANG_GALICIAN_GALICIAN,
  RESOURCE_SUBLANGS::SUBLANG_GEORGIAN_GEORGIA,
  RESOURCE_SUBLANGS::SUBLANG_GERMAN_AUSTRIAN,
  RESOURCE_SUBLANGS::SUBLANG_GERMAN_LIECHTENSTEIN,
  RESOURCE_SUBLANGS::SUBLANG_GERMAN_LUXEMBOURG,
  RESOURCE_SUBLANGS::SUBLANG_GERMAN_SWISS,
  RESOURCE_SUBLANGS::SUBLANG_GERMAN,
  RESOURCE_SUBLANGS::SUBLANG_GREEK_GREECE,
  RESOURCE_SUBLANGS::SUBLANG_GREENLANDIC_GREENLAND,
  RESOURCE_SUBLANGS::SUBLANG_GUJARATI_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_HAUSA_NIGERIA_LATIN,
  RESOURCE_SUBLANGS::SUBLANG_HEBREW_ISRAEL,
  RESOURCE_SUBLANGS::SUBLANG_HINDI_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_HUNGARIAN_HUNGARY,
  RESOURCE_SUBLANGS::SUBLANG_ICELANDIC_ICELAND,
  RESOURCE_SUBLANGS::SUBLANG_IGBO_NIGERIA,
  RESOURCE_SUBLANGS::SUBLANG_INDONESIAN_INDONESIA,
  RESOURCE_SUBLANGS::SUBLANG_INUKTITUT_CANADA_LATIN,
  RESOURCE_SUBLANGS::SUBLANG_INUKTITUT_CANADA,
  RESOURCE_SUBLANGS::SUBLANG_IRISH_IRELAND,
  RESOURCE_SUBLANGS::SUBLANG_ITALIAN_SWISS,
  RESOURCE_SUBLANGS::SUBLANG_ITALIAN,
  RESOURCE_SUBLANGS::SUBLANG_JAPANESE_JAPAN,
  RESOURCE_SUBLANGS::SUBLANG_KANNADA_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_KASHMIRI_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_KASHMIRI_SASIA,
  RESOURCE_SUBLANGS::SUBLANG_KAZAK_KAZAKHSTAN,
  RESOURCE_SUBLANGS::SUBLANG_KHMER_CAMBODIA,
  RESOURCE_SUBLANGS::SUBLANG_KICHE_GUATEMALA,
  RESOURCE_SUBLANGS::SUBLANG_KINYARWANDA_RWANDA,
  RESOURCE_SUBLANGS::SUBLANG_KONKANI_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_KOREAN,
  RESOURCE_SUBLANGS::SUBLANG_KYRGYZ_KYRGYZSTAN,
  RESOURCE_SUBLANGS::SUBLANG_LAO_LAO,
  RESOURCE_SUBLANGS::SUBLANG_LATVIAN_LATVIA,
  RESOURCE_SUBLANGS::SUBLANG_LITHUANIAN_CLASSIC,
  RESOURCE_SUBLANGS::SUBLANG_LITHUANIAN,
  RESOURCE_SUBLANGS::SUBLANG_LOWER_SORBIAN_GERMANY,
  RESOURCE_SUBLANGS::SUBLANG_LUXEMBOURGISH_LUXEMBOURG,
  RESOURCE_SUBLANGS::SUBLANG_MACEDONIAN_MACEDONIA,
  RESOURCE_SUBLANGS::SUBLANG_MALAY_BRUNEI_DARUSSALAM,
  RESOURCE_SUBLANGS::SUBLANG_MALAY_MALAYSIA,
  RESOURCE_SUBLANGS::SUBLANG_MALAYALAM_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_MALTESE_MALTA,
  RESOURCE_SUBLANGS::SUBLANG_MAORI_NEW_ZEALAND,
  RESOURCE_SUBLANGS::SUBLANG_MAPUDUNGUN_CHILE,
  RESOURCE_SUBLANGS::SUBLANG_MARATHI_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_MOHAWK_MOHAWK,
  RESOURCE_SUBLANGS::SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA,
  RESOURCE_SUBLANGS::SUBLANG_MONGOLIAN_PRC,
  RESOURCE_SUBLANGS::SUBLANG_NEPALI_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_NEPALI_NEPAL,
  RESOURCE_SUBLANGS::SUBLANG_NEUTRAL,
  RESOURCE_SUBLANGS::SUBLANG_NORWEGIAN_BOKMAL,
  RESOURCE_SUBLANGS::SUBLANG_NORWEGIAN_NYNORSK,
  RESOURCE_SUBLANGS::SUBLANG_OCCITAN_FRANCE,
  RESOURCE_SUBLANGS::SUBLANG_ORIYA_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_PASHTO_AFGHANISTAN,
  RESOURCE_SUBLANGS::SUBLANG_PERSIAN_IRAN,
  RESOURCE_SUBLANGS::SUBLANG_POLISH_POLAND,
  RESOURCE_SUBLANGS::SUBLANG_PORTUGUESE_BRAZILIAN,
  RESOURCE_SUBLANGS::SUBLANG_PORTUGUESE,
  RESOURCE_SUBLANGS::SUBLANG_PUNJABI_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_QUECHUA_BOLIVIA,
  RESOURCE_SUBLANGS::SUBLANG_QUECHUA_ECUADOR,
  RESOURCE_SUBLANGS::SUBLANG_QUECHUA_PERU,
  RESOURCE_SUBLANGS::SUBLANG_ROMANIAN_ROMANIA,
  RESOURCE_SUBLANGS::SUBLANG_ROMANSH_SWITZERLAND,
  RESOURCE_SUBLANGS::SUBLANG_RUSSIAN_RUSSIA,
  RESOURCE_SUBLANGS::SUBLANG_SAMI_INARI_FINLAND,
  RESOURCE_SUBLANGS::SUBLANG_SAMI_LULE_NORWAY,
  RESOURCE_SUBLANGS::SUBLANG_SAMI_LULE_SWEDEN,
  RESOURCE_SUBLANGS::SUBLANG_SAMI_NORTHERN_FINLAND,
  RESOURCE_SUBLANGS::SUBLANG_SAMI_NORTHERN_NORWAY,
  RESOURCE_SUBLANGS::SUBLANG_SAMI_NORTHERN_SWEDEN,
  RESOURCE_SUBLANGS::SUBLANG_SAMI_SKOLT_FINLAND,
  RESOURCE_SUBLANGS::SUBLANG_SAMI_SOUTHERN_NORWAY,
  RESOURCE_SUBLANGS::SUBLANG_SAMI_SOUTHERN_SWEDEN,
  RESOURCE_SUBLANGS::SUBLANG_SANSKRIT_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC,
  RESOURCE_SUBLANGS::SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN,
  RESOURCE_SUBLANGS::SUBLANG_SERBIAN_CROATIA,
  RESOURCE_SUBLANGS::SUBLANG_SERBIAN_CYRILLIC,
  RESOURCE_SUBLANGS::SUBLANG_SERBIAN_LATIN,
  RESOURCE_SUBLANGS::SUBLANG_SINDHI_AFGHANISTAN,
  RESOURCE_SUBLANGS::SUBLANG_SINDHI_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_SINDHI_PAKISTAN,
  RESOURCE_SUBLANGS::SUBLANG_SINHALESE_SRI_LANKA,
  RESOURCE_SUBLANGS::SUBLANG_SLOVAK_SLOVAKIA,
  RESOURCE_SUBLANGS::SUBLANG_SLOVENIAN_SLOVENIA,
  RESOURCE_SUBLANGS::SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_ARGENTINA,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_BOLIVIA,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_CHILE,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_COLOMBIA,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_COSTA_RICA,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_DOMINICAN_REPUBLIC,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_ECUADOR,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_EL_SALVADOR,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_GUATEMALA,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_HONDURAS,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_MEXICAN,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_MODERN,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_NICARAGUA,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_PANAMA,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_PARAGUAY,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_PERU,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_PUERTO_RICO,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_URUGUAY,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_US,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH_VENEZUELA,
  RESOURCE_SUBLANGS::SUBLANG_SPANISH,
  RESOURCE_SUBLANGS::SUBLANG_SWAHILI_KENYA,
  RESOURCE_SUBLANGS::SUBLANG_SWEDISH_FINLAND,
  RESOURCE_SUBLANGS::SUBLANG_SWEDISH,
  RESOURCE_SUBLANGS::SUBLANG_SYRIAC_SYRIA,
  RESOURCE_SUBLANGS::SUBLANG_SYS_DEFAULT,
  RESOURCE_SUBLANGS::SUBLANG_TAJIK_TAJIKISTAN,
  RESOURCE_SUBLANGS::SUBLANG_TAMAZIGHT_ALGERIA_LATIN,
  RESOURCE_SUBLANGS::SUBLANG_TAMIL_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_TATAR_RUSSIA,
  RESOURCE_SUBLANGS::SUBLANG_TELUGU_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_THAI_THAILAND,
  RESOURCE_SUBLANGS::SUBLANG_TIBETAN_PRC,
  RESOURCE_SUBLANGS::SUBLANG_TIGRIGNA_ERITREA,
  RESOURCE_SUBLANGS::SUBLANG_TSWANA_SOUTH_AFRICA,
  RESOURCE_SUBLANGS::SUBLANG_TURKISH_TURKEY,
  RESOURCE_SUBLANGS::SUBLANG_TURKMEN_TURKMENISTAN,
  RESOURCE_SUBLANGS::SUBLANG_UI_CUSTOM_DEFAULT,
  RESOURCE_SUBLANGS::SUBLANG_UIGHUR_PRC,
  RESOURCE_SUBLANGS::SUBLANG_UKRAINIAN_UKRAINE,
  RESOURCE_SUBLANGS::SUBLANG_UPPER_SORBIAN_GERMANY,
  RESOURCE_SUBLANGS::SUBLANG_URDU_INDIA,
  RESOURCE_SUBLANGS::SUBLANG_URDU_PAKISTAN,
  RESOURCE_SUBLANGS::SUBLANG_UZBEK_CYRILLIC,
  RESOURCE_SUBLANGS::SUBLANG_UZBEK_LATIN,
  RESOURCE_SUBLANGS::SUBLANG_VIETNAMESE_VIETNAM,
  RESOURCE_SUBLANGS::SUBLANG_WELSH_UNITED_KINGDOM,
  RESOURCE_SUBLANGS::SUBLANG_WOLOF_SENEGAL,
  RESOURCE_SUBLANGS::SUBLANG_XHOSA_SOUTH_AFRICA,
  RESOURCE_SUBLANGS::SUBLANG_YAKUT_RUSSIA,
  RESOURCE_SUBLANGS::SUBLANG_YI_PRC,
  RESOURCE_SUBLANGS::SUBLANG_YORUBA_NIGERIA,
  RESOURCE_SUBLANGS::SUBLANG_ZULU_SOUTH_AFRICA,
};


static const GUARD_CF_FLAGS guard_cf_flags_array[] = {
  GUARD_CF_FLAGS::GCF_INSTRUMENTED,
  GUARD_CF_FLAGS::GCF_W_INSTRUMENTED,
  GUARD_CF_FLAGS::GCF_FUNCTION_TABLE_PRESENT,
  GUARD_CF_FLAGS::GCF_EXPORT_SUPPRESSION_INFO_PRESENT,
  GUARD_CF_FLAGS::GCF_ENABLE_EXPORT_SUPPRESSION,
  GUARD_CF_FLAGS::GCF_LONGJUMP_TABLE_PRESENT,
  GUARD_CF_FLAGS::GRF_INSTRUMENTED,
  GUARD_CF_FLAGS::GRF_ENABLE,
  GUARD_CF_FLAGS::GRF_STRICT,
};

}
}

ENABLE_BITMASK_OPERATORS(LIEF::PE::SECTION_CHARACTERISTICS)
ENABLE_BITMASK_OPERATORS(LIEF::PE::DLL_CHARACTERISTICS)
ENABLE_BITMASK_OPERATORS(LIEF::PE::HEADER_CHARACTERISTICS)
ENABLE_BITMASK_OPERATORS(LIEF::PE::GUARD_CF_FLAGS)
ENABLE_BITMASK_OPERATORS(LIEF::PE::ACCELERATOR_FLAGS)
#endif
