code: def test_domain_c_ast_type_definitions():
      check("type", "{key}T", {1: "T"})
  
      check("type", "{key}bool *b", {1: "b"}, key="typedef")
      check("type", "{key}bool *const b", {1: "b"}, key="typedef")
      check("type", "{key}bool *const *b", {1: "b"}, key="typedef")
      check("type", "{key}bool *volatile *b", {1: "b"}, key="typedef")
      check("type", "{key}bool *restrict *b", {1: "b"}, key="typedef")
      check(
          "type", "{key}bool *volatile const b", {1: "b"}, key="typedef"
      )
      check(
          "type", "{key}bool *volatile const b", {1: "b"}, key="typedef"
      )
      check(
          "type",
          "{key}bool *volatile const *b",
          {1: "b"},
          key="typedef",
      )
      check("type", "{key}bool b[]", {1: "b"}, key="typedef")
      check("type", "{key}long long int foo", {1: "foo"}, key="typedef")
      # test decl specs on right
      check("type", "{key}bool const b", {1: "b"}, key="typedef")
  
      # from breathe#267 (named function parameters for function pointers
      check(
          "type",
          "{key}void (*gpio_callback_t)(struct device *port, uint32_t pin)",
          {1: "gpio_callback_t"},
          key="typedef",
      )
  
imports: import itertools
  import zlib
  from xml.etree import ElementTree
  import pytest
  from sphinx import addnodes
  from sphinx.addnodes import desc, desc_content, desc_name, desc_parameter, desc_parameterlist, desc_sig_name, desc_sig_space, desc_signature, desc_signature_line, pending_xref
  from sphinx.domains.c import DefinitionError, DefinitionParser, Symbol, _id_prefix, _macroKeywords, _max_id
  from sphinx.ext.intersphinx import load_mappings, normalize_intersphinx_mapping
  from sphinx.testing import restructuredtext
  from sphinx.testing.util import assert_node
  from sphinx.writers.text import STDINDENT
label_desc: Use image node_id 6 for calling a global function with example usage: test_domain_c_ast_type_definitions() without return types