libutap
Public Member Functions | Public Attributes | List of all members
UTAP::instance_t Struct Reference

Partial instance of a template. More...

#include <system.h>

Inheritance diagram for UTAP::instance_t:
UTAP::instanceLine_t UTAP::template_t

Public Member Functions

std::string writeMapping () const
 
std::string writeParameters () const
 
std::string writeArguments () const
 

Public Attributes

symbol_t uid
 The name. More...
 
frame_t parameters
 The parameters. More...
 
std::map< symbol_t, expression_tmapping
 The arguments. More...
 
size_t arguments
 
size_t unbound
 
struct template_ttempl
 
std::set< symbol_trestricted
 Restricted variables. More...
 

Detailed Description

Partial instance of a template.

Every template is also a partial instance of itself and therefore template_t is derived from instance_t. A complete instance is just a partial instance without any parameters.

Even though it is possible to make partial instances of partial instances, they are not represented hierarchically: All parameters and arguments are merged into this one struct. Therefore parameters contains both bound and unbound symbols: Unbound symbols are parameters of this instance. Bound symbols are inherited from another instance. Symbols in parameters are ordered such that unbound symbols are listed first, i.e., uid.getType().size() == parameters.getSize().

mapping binds parameters to expressions.

arguments is the number of arguments given by the partial instance. The first arguments bound symbols of parameters are the corresponding parameters. For templates, arguments is obviously 0.

Restricted variables are those that are used either directly or indirectly in the definition of array sizes. Any restricted parameters have restriction on the kind of arguments they accept (they must not depend on any free process parameters).

If i is an instance, then i.uid.getData() == i.

Member Function Documentation

std::string instance_t::writeArguments ( ) const
std::string instance_t::writeMapping ( ) const
std::string instance_t::writeParameters ( ) const

Member Data Documentation

size_t UTAP::instance_t::arguments
std::map<symbol_t, expression_t> UTAP::instance_t::mapping
frame_t UTAP::instance_t::parameters
std::set<symbol_t> UTAP::instance_t::restricted
struct template_t* UTAP::instance_t::templ
symbol_t UTAP::instance_t::uid
size_t UTAP::instance_t::unbound

The documentation for this struct was generated from the following files: