{"version":3,"sources":["webpack:///./node_modules/react-syntax-highlighter/node_modules/highlight.js/lib/languages/c-like.js"],"names":["module","exports","hljs","optional","s","C_LINE_COMMENT_MODE","COMMENT","contains","begin","FUNCTION_TYPE_RE","CPP_PRIMITIVE_TYPES","className","STRINGS","variants","end","illegal","BACKSLASH_ESCAPE","END_SAME_AS_BEGIN","NUMBERS","relevance","PREPROCESSOR","keywords","inherit","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-9125289597426b76d5b4.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  } // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does \n  // not include such support nor can we be sure all the grammars depending\n  // on it would desire this behavior\n\n\n  var C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', {\n    contains: [{\n      begin: /\\\\\\n/\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    }, 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 = [PREPROCESSOR, CPP_PRIMITIVE_TYPES, 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: [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', C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE, STRINGS, NUMBERS, CPP_PRIMITIVE_TYPES]\n      }]\n    }, CPP_PRIMITIVE_TYPES, 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: 'enum class struct union',\n      end: /[{;:<>=]/,\n      contains: [{\n        beginKeywords: \"final class struct\"\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":""}