{"version":3,"file":"c.mjs","sources":["../../../../../../node_modules/highlight.js/lib/languages/c.js"],"sourcesContent":["/*\nLanguage: C\nCategory: common, system\nWebsite: https://en.wikipedia.org/wiki/C_(programming_language)\n*/\n\n/** @type LanguageFn */\nfunction c(hljs) {\n  const regex = hljs.regex;\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  const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\\\\n/ } ] });\n  const DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n  const NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n  const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';\n  const FUNCTION_TYPE_RE = '('\n    + DECLTYPE_AUTO_RE + '|'\n    + regex.optional(NAMESPACE_RE)\n    + '[a-zA-Z_]\\\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE)\n  + ')';\n\n\n  const TYPES = {\n    className: 'type',\n    variants: [\n      { begin: '\\\\b[a-z\\\\d_]*_t\\\\b' },\n      { match: /\\batomic_[a-z]{3,6}\\b/ }\n    ]\n\n  };\n\n  // https://en.cppreference.com/w/cpp/language/escape\n  // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n  const CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n  const STRINGS = {\n    className: 'string',\n    variants: [\n      {\n        begin: '(u8?|U|L)?\"',\n        end: '\"',\n        illegal: '\\\\n',\n        contains: [ hljs.BACKSLASH_ESCAPE ]\n      },\n      {\n        begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + \"|.)\",\n        end: '\\'',\n        illegal: '.'\n      },\n      hljs.END_SAME_AS_BEGIN({\n        begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n        end: /\\)([^()\\\\ ]{0,16})\"/\n      })\n    ]\n  };\n\n  const NUMBERS = {\n    className: 'number',\n    variants: [\n      { begin: '\\\\b(0b[01\\']+)' },\n      { begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)' },\n      { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n    ],\n    relevance: 0\n  };\n\n  const PREPROCESSOR = {\n    className: 'meta',\n    begin: /#\\s*[a-z]+\\b/,\n    end: /$/,\n    keywords: { keyword:\n        'if else elif endif define undef warning error line '\n        + 'pragma _Pragma ifdef ifndef elifdef elifndef include' },\n    contains: [\n      {\n        begin: /\\\\\\n/,\n        relevance: 0\n      },\n      hljs.inherit(STRINGS, { className: 'string' }),\n      {\n        className: 'string',\n        begin: /<.*?>/\n      },\n      C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE\n    ]\n  };\n\n  const TITLE_MODE = {\n    className: 'title',\n    begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE,\n    relevance: 0\n  };\n\n  const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n\n  const C_KEYWORDS = [\n    \"asm\",\n    \"auto\",\n    \"break\",\n    \"case\",\n    \"continue\",\n    \"default\",\n    \"do\",\n    \"else\",\n    \"enum\",\n    \"extern\",\n    \"for\",\n    \"fortran\",\n    \"goto\",\n    \"if\",\n    \"inline\",\n    \"register\",\n    \"restrict\",\n    \"return\",\n    \"sizeof\",\n    \"typeof\",\n    \"typeof_unqual\",\n    \"struct\",\n    \"switch\",\n    \"typedef\",\n    \"union\",\n    \"volatile\",\n    \"while\",\n    \"_Alignas\",\n    \"_Alignof\",\n    \"_Atomic\",\n    \"_Generic\",\n    \"_Noreturn\",\n    \"_Static_assert\",\n    \"_Thread_local\",\n    // aliases\n    \"alignas\",\n    \"alignof\",\n    \"noreturn\",\n    \"static_assert\",\n    \"thread_local\",\n    // not a C keyword but is, for all intents and purposes, treated exactly like one.\n    \"_Pragma\"\n  ];\n\n  const C_TYPES = [\n    \"float\",\n    \"double\",\n    \"signed\",\n    \"unsigned\",\n    \"int\",\n    \"short\",\n    \"long\",\n    \"char\",\n    \"void\",\n    \"_Bool\",\n    \"_BitInt\",\n    \"_Complex\",\n    \"_Imaginary\",\n    \"_Decimal32\",\n    \"_Decimal64\",\n    \"_Decimal96\",\n    \"_Decimal128\",\n    \"_Decimal64x\",\n    \"_Decimal128x\",\n    \"_Float16\",\n    \"_Float32\",\n    \"_Float64\",\n    \"_Float128\",\n    \"_Float32x\",\n    \"_Float64x\",\n    \"_Float128x\",\n    // modifiers\n    \"const\",\n    \"static\",\n    \"constexpr\",\n    // aliases\n    \"complex\",\n    \"bool\",\n    \"imaginary\"\n  ];\n\n  const KEYWORDS = {\n    keyword: C_KEYWORDS,\n    type: C_TYPES,\n    literal: 'true false NULL',\n    // TODO: apply hinting work similar to what was done in cpp.js\n    built_in: 'std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream '\n      + 'auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set '\n      + 'unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos '\n      + 'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp '\n      + 'fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper '\n      + 'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow '\n      + 'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp '\n      + 'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan '\n      + 'vfprintf vprintf vsprintf endl initializer_list unique_ptr',\n  };\n\n  const EXPRESSION_CONTAINS = [\n    PREPROCESSOR,\n    TYPES,\n    C_LINE_COMMENT_MODE,\n    hljs.C_BLOCK_COMMENT_MODE,\n    NUMBERS,\n    STRINGS\n  ];\n\n  const 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      {\n        begin: /=/,\n        end: /;/\n      },\n      {\n        begin: /\\(/,\n        end: /\\)/\n      },\n      {\n        beginKeywords: 'new throw return else',\n        end: /;/\n      }\n    ],\n    keywords: KEYWORDS,\n    contains: EXPRESSION_CONTAINS.concat([\n      {\n        begin: /\\(/,\n        end: /\\)/,\n        keywords: KEYWORDS,\n        contains: EXPRESSION_CONTAINS.concat([ 'self' ]),\n        relevance: 0\n      }\n    ]),\n    relevance: 0\n  };\n\n  const FUNCTION_DECLARATION = {\n    begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n    returnBegin: true,\n    end: /[{;=]/,\n    excludeEnd: true,\n    keywords: 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: KEYWORDS,\n        relevance: 0\n      },\n      {\n        begin: FUNCTION_TITLE,\n        returnBegin: true,\n        contains: [ hljs.inherit(TITLE_MODE, { className: \"title.function\" }) ],\n        relevance: 0\n      },\n      // allow for multiple declarations, e.g.:\n      // extern void f(int), g(char);\n      {\n        relevance: 0,\n        match: /,/\n      },\n      {\n        className: 'params',\n        begin: /\\(/,\n        end: /\\)/,\n        keywords: KEYWORDS,\n        relevance: 0,\n        contains: [\n          C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE,\n          STRINGS,\n          NUMBERS,\n          TYPES,\n          // Count matching parentheses.\n          {\n            begin: /\\(/,\n            end: /\\)/,\n            keywords: KEYWORDS,\n            relevance: 0,\n            contains: [\n              'self',\n              C_LINE_COMMENT_MODE,\n              hljs.C_BLOCK_COMMENT_MODE,\n              STRINGS,\n              NUMBERS,\n              TYPES\n            ]\n          }\n        ]\n      },\n      TYPES,\n      C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      PREPROCESSOR\n    ]\n  };\n\n  return {\n    name: \"C\",\n    aliases: [ 'h' ],\n    keywords: KEYWORDS,\n    // Until differentiations are added between `c` and `cpp`, `c` will\n    // not be auto-detected to avoid auto-detect conflicts between C and C++\n    disableAutodetect: true,\n    illegal: '</',\n    contains: [].concat(\n      EXPRESSION_CONTEXT,\n      FUNCTION_DECLARATION,\n      EXPRESSION_CONTAINS,\n      [\n        PREPROCESSOR,\n        {\n          begin: hljs.IDENT_RE + '::',\n          keywords: KEYWORDS\n        },\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        }\n      ]),\n    exports: {\n      preprocessor: PREPROCESSOR,\n      strings: STRINGS,\n      keywords: KEYWORDS\n    }\n  };\n}\n\nmodule.exports = c;\n"],"names":["c","hljs","regex","C_LINE_COMMENT_MODE","DECLTYPE_AUTO_RE","NAMESPACE_RE","FUNCTION_TYPE_RE","TYPES","STRINGS","NUMBERS","PREPROCESSOR","TITLE_MODE","FUNCTION_TITLE","KEYWORDS","EXPRESSION_CONTAINS","EXPRESSION_CONTEXT","FUNCTION_DECLARATION","c_1"],"mappings":"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","x_google_ignoreList":[0]}