1 """Instantiate a namespace.""" 
   13     Instantiate the classes and other elements in the `namespace` content and 
   14     assign it back to the namespace content attribute. 
   16     @param[in/out] namespace The namespace whose content will be replaced with 
   17         the instantiated content. 
   19     instantiated_content = []
 
   22     for element 
in namespace.content:
 
   24             original_class = element
 
   25             if not original_class.template:
 
   26                 instantiated_content.append(
 
   33                 for instantiations 
in itertools.product(
 
   34                         *original_class.template.instantiations):
 
   35                     instantiated_content.append(
 
   37                                           list(instantiations)))
 
   39         elif isinstance(element, parser.GlobalFunction):
 
   40             original_func = element
 
   41             if not original_func.template:
 
   42                 instantiated_content.append(
 
   47                 for instantiations 
in itertools.product(
 
   48                         *original_func.template.instantiations):
 
   49                     instantiated_content.append(
 
   51                                                    list(instantiations)))
 
   53         elif isinstance(element, parser.TypedefTemplateInstantiation):
 
   56             typedef_inst = element
 
   57             top_level = namespace.top_level()
 
   58             original_element = top_level.find_class_or_function(
 
   59                 typedef_inst.typename)
 
   64                 typedef_content.append(
 
   66                                       typedef_inst.typename.instantiations,
 
   67                                       typedef_inst.new_name))
 
   68             elif isinstance(original_element, parser.GlobalFunction):
 
   69                 typedef_content.append(
 
   71                         original_element, typedef_inst.typename.instantiations,
 
   72                         typedef_inst.new_name))
 
   73             elif isinstance(original_element, parser.ForwardDeclaration):
 
   74                 typedef_content.append(
 
   76                         original_element, typedef_inst.typename.instantiations,
 
   77                         typedef_inst.new_name))
 
   81             instantiated_content.append(element)
 
   83             instantiated_content.append(element)
 
   85     instantiated_content.extend(typedef_content)
 
   86     namespace.content = instantiated_content