code: def generate_function_types(
      function_info,
      function_types,
      ext_info=None,
      template=None,
      output_dir=None,
      output_format="%s.cpp",
  ):
      if template is None:
          template = join(base, "src/nbla/function/function.cpp.tmpl")
      if output_dir is None:
          output_dir = dirname(template)
      for name, ttypes_list in function_types.items():
          snake = function_info[name]["snake_name"]
          generated = generate_function_types_one(
              template, name, snake, ttypes_list, ext_info=ext_info
          )
          path_o = join(output_dir, output_format % snake)
          check_update(path_o, generated, force=True)
  
imports: from __future__ import print_function
  from collections import OrderedDict
  from os.path import abspath, join, dirname, exists
  from utils.common import check_update
  from utils.type_conv import type_from_proto
  import time
  import yaml
label_desc: Use image node_id 13 for calling a global function with example usage: generate_function_types(function_info, function_types, ext_info, template, output_dir, output_format) without return types