code: def _get_var_decl_init_value_single(self, _ctype, child):
          
          init_value = None
          # FIXME: always return (child.kind, child.value)
          log.debug(
              '_get_var_decl_init_value_single: _ctype: %s Child.kind: %s',
              _ctype.kind,
              child.kind)
          # shorcuts.
          if not child.kind.is_expression() and not child.kind.is_declaration():
              raise CursorKindException(child.kind)
          if child.kind == CursorKind.CALL_EXPR:
              raise CursorKindException(child.kind)
          # POD init values handling.
          # As of clang 3.3, int, double literals are exposed.
          # float, long double, char , char* are not exposed directly in level1.
          # but really it depends...
          if child.kind.is_unexposed():
              # recurse until we find a literal kind
              init_value = self._get_var_decl_init_value(_ctype,
                                                         child.get_children())
              if len(init_value) == 0:
                  init_value = None
              elif len(init_value) == 1:
                  init_value = init_value[0]
              else:
                  log.error('_get_var_decl_init_value_single: Unhandled case')
                  assert len(init_value) <= 1
          else:  # literal or others
              _v = self.parse_cursor(child)
              if isinstance(
                      _v, list) and child.kind not in [CursorKind.INIT_LIST_EXPR, CursorKind.STRING_LITERAL]:
                  log.warning(
                      '_get_var_decl_init_value_single: TOKENIZATION BUG CHECK: %s',
                      _v)
                  _v = _v[0]
              init_value = (child.kind, _v)
          log.debug(
              '_get_var_decl_init_value_single: returns %s',
              str(init_value))
          return init_value
docs: Handling of a single child for initialization value.
          Accepted types are expressions and declarations