class_docstr: This node replaces a function with fused arguments. It deep-copies the
  function for every permutation of fused types, and allocates a new local
  scope for it. It keeps track of the original function in self.node, and
  the entry of the original function in the symbol table is given the
  'fused_cfunction' attribute which points back to us.
  Then when a function lookup occurs (to e.g. call it), the call can be
  dispatched to the right function.
  
  node    FuncDefNode    the original function
  nodes   [FuncDefNode]  list of copies of node with different specific types
  py_func DefNode        the fused python function subscriptable from
                         Python space
  __signatures__         A DictNode mapping signature specialization strings
                         to PyCFunction nodes
  resulting_fused_function  PyCFunction for the fused DefNode that delegates
                            to specializations
  fused_func_assignment   Assignment of the fused function to the function name
  defaults_tuple          TupleNode of defaults (letting PyCFunctionNode build
                          defaults would result in many different tuples)
  specialized_pycfuncs    List of synthesized pycfunction nodes for the
                          specializations
  code_object             CodeObjectNode shared by all specializations and the
                          fused function
  
  fused_compound_types    All fused (compound) types (e.g. floating[:])
class_docstr_tok: ["This","node","replaces","a","function","with","fused","arguments",".","It","deep-copies","the","function","for","every","permutation","of","fused","types",",","and","allocates","a","new","local","scope","for","it",".","It","keeps","track","of","the","original","function","in","self.node",",","and","the","entry","of","the","original","function","in","the","symbol","table","is","given","the","'fused_cfunction","'","attribute","which","points","back","to","us",".","Then","when","a","function","lookup","occurs","(","to","e.g",".","call","it",")",",","the","call","can","be","dispatched","to","the","right","function",".","node","FuncDefNode","the","original","function","nodes","[","FuncDefNode","]","list","of","copies","of","node","with","different","specific","types","py_func","DefNode","the","fused","python","function","subscriptable","from","Python","space","__signatures__","A","DictNode","mapping","signature","specialization","strings","to","PyCFunction","nodes","resulting_fused_function","PyCFunction","for","the","fused","DefNode","that","delegates","to","specializations","fused_func_assignment","Assignment","of","the","fused","function","to","the","function","name","defaults_tuple","TupleNode","of","defaults","(","letting","PyCFunctionNode","build","defaults","would","result","in","many","different","tuples",")","specialized_pycfuncs","List","of","synthesized","pycfunction","nodes","for","the","specializations","code_object","CodeObjectNode","shared","by","all","specializations","and","the","fused","function","fused_compound_types","All","fused","(","compound",")","types","(","e.g",".","floating","[",":","]",")"]
docstr: If we have any buffer specializations, write out some variable
  declarations and imports.
docstr_tok: ["If","we","have","any","buffer","specializations",",","write","out","some","variable","declarations","and","imports","."]
code: def _buffer_declarations(
      self, pyx_code, decl_code, all_buffer_types, pythran_types
  ):
      """
      If we have any buffer specializations, write out some variable
      declarations and imports.
      """
      decl_code.put_chunk(
          """
                  ctypedef struct {{memviewslice_cname}}:
                      void *memview
  
                  void __PYX_XDEC_MEMVIEW({{memviewslice_cname}} *, int have_gil)
                  bint __pyx_memoryview_check(object)
              """
      )
  
      pyx_code.local_variable_declarations.put_chunk(
          """
                  cdef {{memviewslice_cname}} memslice
                  cdef Py_ssize_t itemsize
                  cdef bint dtype_signed
                  cdef char kind
  
                  itemsize = -1
              """
      )
  
      if pythran_types:
          pyx_code.local_variable_declarations.put_chunk(
              """
                  cdef bint arg_is_pythran_compatible
                  cdef Py_ssize_t cur_stride
              """
          )
  
      pyx_code.imports.put_chunk(
          """
                  cdef type ndarray
                  ndarray = __Pyx_ImportNumPyArrayTypeIfAvailable()
              """
      )
  
      seen_typedefs = set()
      seen_int_dtypes = set()
      for buffer_type in all_buffer_types:
          dtype = buffer_type.dtype
          dtype_name = self._dtype_name(dtype)
          if dtype.is_typedef:
              if dtype_name not in seen_typedefs:
                  seen_typedefs.add(dtype_name)
                  decl_code.putln(
                      'ctypedef %s %s "%s"'
                      % (
                          dtype.resolve(),
                          dtype_name,
                          dtype.empty_declaration_code(),
                      )
                  )
  
          if buffer_type.dtype.is_int:
              if str(dtype) not in seen_int_dtypes:
                  seen_int_dtypes.add(str(dtype))
                  pyx_code.context.update(
                      dtype_name=dtype_name,
                      dtype_type=self._dtype_type(dtype),
                  )
                  pyx_code.local_variable_declarations.put_chunk(
                      """
                              cdef bint {{dtype_name}}_is_signed
                              {{dtype_name}}_is_signed = not (<{{dtype_type}}> -1 > 0)
                          """
                  )
  
imports: from __future__ import absolute_import
  import copy
  from .None import ExprNodes, PyrexTypes, MemoryView, ParseTreeTransforms, StringEncoding, Errors
  from .ExprNodes import CloneNode, ProxyNode, TupleNode
  from .Nodes import FuncDefNode, CFuncDefNode, StatListNode, DefNode
  from ..Utils import OrderedSet
label_desc: Use image node_id 17 for calling the FusedCFuncDefNode obj's underlying member method code with example usage: obj._buffer_declarations(pyx_code, decl_code, all_buffer_types, pythran_types) without return types