{"version":3,"sources":["webpack:///./node_modules/react-syntax-highlighter/node_modules/highlight.js/lib/languages/c-like.js"],"names":["module","exports","hljs","optional","s","FUNCTION_TYPE_RE","CPP_PRIMITIVE_TYPES","className","begin","STRINGS","variants","end","illegal","contains","BACKSLASH_ESCAPE","END_SAME_AS_BEGIN","NUMBERS","relevance","PREPROCESSOR","keywords","inherit","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","TITLE_MODE","IDENT_RE","FUNCTION_TITLE","CPP_KEYWORDS","keyword","built_in","literal","EXPRESSION_CONTAINS","EXPRESSION_CONTEXT","beginKeywords","concat","FUNCTION_DECLARATION","returnBegin","excludeEnd","aliases","disableAutodetect","preprocessor","strings"],"mappings":"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","file":"react-syntax-highlighter_languages_highlight_cLike-6b5e6e16ca97a0c0d8d0.js","sourcesContent":["/*\nLanguage: C-like foundation grammar for C/C++ grammars\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>, Zaven Muradyan <megalivoithos@gmail.com>, Roel Deckers <admin@codingcat.nl>, Sam Wu <samsam2310@gmail.com>, Jordi Petit <jordi.petit@gmail.com>, Pieter Vantorre <pietervantorre@gmail.com>, Google Inc. (David Benjamin) <davidben@google.com>\nCategory: common, system\n*/\n\n/* In the future the intention is to split out the C/C++ grammars distinctly\nsince they are separate languages.  They will likely share a common foundation\nthough, and this file sets the groundwork for that - so that we get the breaking\nchange in v10 and don't have to change the requirements again later.\n\nSee: https://github.com/highlightjs/highlight.js/issues/2146\n*/\n\n/** @type LanguageFn */\nfunction cLike(hljs) {\n  function optional(s) {\n    return '(?:' + s + ')?';\n  }\n\n  var DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n  var NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n  var TEMPLATE_ARGUMENT_RE = '<.*?>';\n  var FUNCTION_TYPE_RE = '(' + DECLTYPE_AUTO_RE + '|' + optional(NAMESPACE_RE) + '[a-zA-Z_]\\\\w*' + optional(TEMPLATE_ARGUMENT_RE) + ')';\n  var CPP_PRIMITIVE_TYPES = {\n    className: 'keyword',\n    begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n  }; // https://en.cppreference.com/w/cpp/language/escape\n  // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n\n  var CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n  var STRINGS = {\n    className: 'string',\n    variants: [{\n      begin: '(u8?|U|L)?\"',\n      end: '\"',\n      illegal: '\\\\n',\n      contains: [hljs.BACKSLASH_ESCAPE]\n    }, {\n      begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + \"|.)\",\n      end: '\\'',\n      illegal: '.'\n    }, hljs.END_SAME_AS_BEGIN({\n      begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n      end: /\\)([^()\\\\ ]{0,16})\"/\n    })]\n  };\n  var NUMBERS = {\n    className: 'number',\n    variants: [{\n      begin: '\\\\b(0b[01\\']+)'\n    }, {\n      begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)'\n    }, {\n      begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)'\n    }],\n    relevance: 0\n  };\n  var PREPROCESSOR = {\n    className: 'meta',\n    begin: /#\\s*[a-z]+\\b/,\n    end: /$/,\n    keywords: {\n      'meta-keyword': 'if else elif endif define undef warning error line ' + 'pragma _Pragma ifdef ifndef include'\n    },\n    contains: [{\n      begin: /\\\\\\n/,\n      relevance: 0\n    }, hljs.inherit(STRINGS, {\n      className: 'meta-string'\n    }), {\n      className: 'meta-string',\n      begin: /<.*?>/,\n      end: /$/,\n      illegal: '\\\\n'\n    }, hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE]\n  };\n  var TITLE_MODE = {\n    className: 'title',\n    begin: optional(NAMESPACE_RE) + hljs.IDENT_RE,\n    relevance: 0\n  };\n  var FUNCTION_TITLE = optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n  var CPP_KEYWORDS = {\n    keyword: 'int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof ' + 'dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace ' + 'unsigned long volatile static protected bool template mutable if public friend ' + 'do goto auto void enum else break extern using asm case typeid wchar_t ' + 'short reinterpret_cast|10 default double register explicit signed typename try this ' + 'switch continue inline delete alignas alignof constexpr consteval constinit decltype ' + 'concept co_await co_return co_yield requires ' + 'noexcept static_assert thread_local restrict final override ' + 'atomic_bool atomic_char atomic_schar ' + 'atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong ' + 'atomic_ullong new throw return ' + 'and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq',\n    built_in: 'std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream ' + 'auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set ' + 'unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos ' + 'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp ' + 'fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper ' + 'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow ' + 'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp ' + 'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan ' + 'vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary',\n    literal: 'true false nullptr NULL'\n  };\n  var EXPRESSION_CONTAINS = [CPP_PRIMITIVE_TYPES, hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE, NUMBERS, STRINGS];\n  var EXPRESSION_CONTEXT = {\n    // This mode covers expression context where we can't expect a function\n    // definition and shouldn't highlight anything that looks like one:\n    // `return some()`, `else if()`, `(x*sum(1, 2))`\n    variants: [{\n      begin: /=/,\n      end: /;/\n    }, {\n      begin: /\\(/,\n      end: /\\)/\n    }, {\n      beginKeywords: 'new throw return else',\n      end: /;/\n    }],\n    keywords: CPP_KEYWORDS,\n    contains: EXPRESSION_CONTAINS.concat([{\n      begin: /\\(/,\n      end: /\\)/,\n      keywords: CPP_KEYWORDS,\n      contains: EXPRESSION_CONTAINS.concat(['self']),\n      relevance: 0\n    }]),\n    relevance: 0\n  };\n  var FUNCTION_DECLARATION = {\n    className: 'function',\n    begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n    returnBegin: true,\n    end: /[{;=]/,\n    excludeEnd: true,\n    keywords: CPP_KEYWORDS,\n    illegal: /[^\\w\\s\\*&:<>]/,\n    contains: [{\n      // to prevent it from being confused as the function title\n      begin: DECLTYPE_AUTO_RE,\n      keywords: CPP_KEYWORDS,\n      relevance: 0\n    }, {\n      begin: FUNCTION_TITLE,\n      returnBegin: true,\n      contains: [TITLE_MODE],\n      relevance: 0\n    }, {\n      className: 'params',\n      begin: /\\(/,\n      end: /\\)/,\n      keywords: CPP_KEYWORDS,\n      relevance: 0,\n      contains: [hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE, STRINGS, NUMBERS, CPP_PRIMITIVE_TYPES, // Count matching parentheses.\n      {\n        begin: /\\(/,\n        end: /\\)/,\n        keywords: CPP_KEYWORDS,\n        relevance: 0,\n        contains: ['self', hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE, STRINGS, NUMBERS, CPP_PRIMITIVE_TYPES]\n      }]\n    }, CPP_PRIMITIVE_TYPES, hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE, PREPROCESSOR]\n  };\n  return {\n    aliases: ['c', 'cc', 'h', 'c++', 'h++', 'hpp', 'hh', 'hxx', 'cxx'],\n    keywords: CPP_KEYWORDS,\n    // the base c-like language will NEVER be auto-detected, rather the\n    // derivitives: c, c++, arduino turn auto-detect back on for themselves\n    disableAutodetect: true,\n    illegal: '</',\n    contains: [].concat(EXPRESSION_CONTEXT, FUNCTION_DECLARATION, EXPRESSION_CONTAINS, [PREPROCESSOR, {\n      // containers: ie, `vector <int> rooms (9);`\n      begin: '\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<',\n      end: '>',\n      keywords: CPP_KEYWORDS,\n      contains: ['self', CPP_PRIMITIVE_TYPES]\n    }, {\n      begin: hljs.IDENT_RE + '::',\n      keywords: CPP_KEYWORDS\n    }, {\n      className: 'class',\n      beginKeywords: 'class struct',\n      end: /[{;:]/,\n      contains: [{\n        begin: /</,\n        end: />/,\n        contains: ['self']\n      }, // skip generic stuff\n      hljs.TITLE_MODE]\n    }]),\n    exports: {\n      preprocessor: PREPROCESSOR,\n      strings: STRINGS,\n      keywords: CPP_KEYWORDS\n    }\n  };\n}\n\nmodule.exports = cLike;"],"sourceRoot":""}