libsesstype  2.0.0
Library for Session Types programming.
Namespaces | Classes | Typedefs | Functions
sesstype Namespace Reference

namespace for Session Types. More...

Namespaces

namespace  tests
 

Namespace for unit tests.


Classes

class  Import
 Import statement. More...
class  ModuleTmpl
 Module is a container class for multiple logically related Sessions. More...
class  MsgPayload
 Message Payload. More...
class  MsgSig
 Message Signature. More...
class  BlockNodeTmpl
 Block of statements (Node instances). More...
class  ChoiceNodeTmpl
 Choice blocks. More...
class  ContinueNodeTmpl
 Continue statements. More...
class  InteractionNodeTmpl
 Interaction (message-passing) statements. More...
class  InterruptibleNodeTmpl
 Interruptible blocks. More...
class  NestedNodeTmpl
 Nested session type. More...
class  ParNodeTmpl
 Parallel blocks. More...
class  RecurNodeTmpl
 Recursion statements. More...
class  Node
 Session Type statements (st_node). More...
class  Role
 Role (participant) of a protocol or session. More...
class  SessionTmpl
 Session (st_tree) class encapsulates a single session. More...

Typedefs

typedef Import st_import
typedef Module st_module
typedef MsgSig st_msg
typedef MsgPayload st_msg_payload
typedef Node st_node
typedef Role st_role
typedef Session st_tree

Functions

st_nodest_node_append_child (st_node *const parent, st_node *child)
unsigned int st_node_num_children (st_node *const parent)
st_nodest_node_get_child (st_node *const parent, unsigned int index)
st_nodest_mk_choice_node_init ()
st_nodest_mk_choice_node (st_role *at)
st_rolest_choice_node_get_at (st_node *const node)
st_nodest_choice_node_set_at (st_node *const node, st_role *at)
st_nodest_mk_continue_node (char *label)
st_nodest_continue_node_set_label (st_node *node, char *label)
const char * st_continue_node_get_label (st_node *node)
st_importst_import_mk_init (const char *name)
st_importst_import_mk_alias (const char *name, const char *from, const char *as)
void st_import_free (st_import *import)
st_nodest_mk_interaction_node_init ()
st_nodest_mk_interaction_node (st_msg *msg)
st_nodest_interaction_node_set_msg (st_node *const node, st_msg *msg)
st_msgst_interaction_node_get_msg (st_node *const node)
st_nodest_interaction_node_set_from (st_node *const node, st_role *from)
Rolest_interaction_node_get_from (st_node *const node)
st_nodest_interaction_node_add_to (st_node *const node, st_role *to)
unsigned int st_interaction_node_num_tos (st_node *const node)
st_rolest_interaction_node_get_to (st_node *const node, unsigned int index)
st_nodest_mk_interruptible_node_init ()
st_nodest_mk_interruptible_node_scoped (char *scope)
st_nodest_interruptible_node_add_interrupt (st_node *const node, st_role *role, st_msg *msg)
unsigned int st_interruptible_node_num_interrupts (st_node *const node, st_role *role)
st_msgst_interruptible_node_interrupt (st_node *const node, st_role *role, unsigned int index)
st_nodest_interruptible_node_add_throw (st_node *const node, st_role *role, st_msg *msg)
unsigned int st_interruptible_node_num_throws (st_node *const node, st_role *role)
st_msgst_interruptible_node_throw (st_node *const node, st_role *role, unsigned int index)
st_nodest_interruptible_node_add_catch (st_node *const node, st_role *role, st_msg *msg)
unsigned int st_interruptible_node_num_catches (st_node *const node, st_role *role)
st_msgst_interruptible_node_catch (st_node *const node, st_role *role, unsigned int index)
st_module * st_module_mk_init (const char *name)
const char * st_module_get_name (st_module *const module)
st_module * st_module_add_tree (st_module *const module, st_tree *tree)
st_tree * st_module_get_tree (st_module *const module, const char *name)
st_tree * st_module_get_tree_at_idx (st_module *const module, unsigned int index)
st_module * st_module_import (st_module *const module, st_import *import)
void st_module_free (st_module *module)
st_msgst_msg_mk_init (const char *op)
st_msgst_msg_add_payload (st_msg *msg, st_msg_payload *payload)
void st_msg_free (st_msg *msg)
st_msg_payloadst_msg_payload_mk_init (const char *type)
st_msg_payloadst_msg_payload_mk_annotated (const char *name, const char *type)
void st_msg_payload_free (st_msg_payload *payload)
st_nodest_mk_nested_node (char *protocol_name)
st_nodest_mk_nested_node_scoped (char *protocol_name, char *scope_name)
st_nodest_nested_node_add_arg (st_node *const node, st_msg *arg)
unsigned int st_nested_node_num_args (st_node *const node)
st_msgst_nested_node_get_arg (st_node *const node, unsigned int index)
st_nodest_nested_node_add_rolearg (st_node *const node, st_role *rolearg)
unsigned int st_nested_node_num_roleargs (st_node *const node)
st_rolest_nested_node_get_rolearg (st_node *const node, unsigned int index)
st_nodest_node_project (st_node *const node, st_role *const endpoint)
void st_node_print (st_node *const node)
std::ostream & operator<< (std::ostream &os, Node &node)
void st_node_free (st_node *node)
st_nodest_mk_par_node_init ()
st_nodest_par_node_add_parallel (st_node *const node, st_node *par_blk)
st_nodest_mk_recur_node (char *label)
st_nodest_recur_node_set_label (st_node *const node, char *label)
const char * st_recur_node_get_label (st_node *const node)
st_rolest_role_init (const char *name)
 Create a Role.
st_rolest_role_copy (const st_role *const role)
 Create a copy of a Role.
const char * st_role_name (st_role *const role)
 Get a name of the Role.
st_rolest_role_set_name (st_role *const role, const char *name)
 Set the name of the Role.
void st_role_free (st_role *role)
 Free a previously allocated Role.
st_tree * st_tree_mk_init (const char *name)
st_tree * st_tree_add_role (st_tree *tree, st_role *role)
st_tree * st_tree_set_root (st_tree *tree, st_node *root)
st_nodest_tree_get_root (st_tree *tree)
void st_tree_free (st_tree *tree)
st_msgst_mk_msg (const char *op)
st_msg_payloadst_mk_msg_payload (const char *type)
st_msg_payloadst_mk_msg_payload_annotated (const char *type, const char *name)
st_role ** st_interaction_node_get_tos (st_node *const node)

Detailed Description

namespace for Session Types.

Tests for sesstype::MsgSig and sesstype::MsgPayload.

Forward declaration of Node and friends.

Visitor implemented with C++11 variadic templating black magic.


Function Documentation

void sesstype::st_import_free ( st_import *  import)
Parameters:
[in,out]importobject to destroy.
st_import * sesstype::st_import_mk_alias ( const char *  name,
const char *  from,
const char *  as 
)
Parameters:
[in]nameof the Import.
[in]frommodule of the Import.
[in]asalias name of the Import.
Returns:
pointer to Import object allocated dynamically.
st_import * sesstype::st_import_mk_init ( const char *  name)
Parameters:
[in]nameof the Import.
Returns:
pointer to Import object allocated dynamically.
st_msg* sesstype::st_mk_msg ( const char *  op)
Parameters:
[in]opoperator/label of the message.
Returns:
pointer to MsgSig object allocated dynamically.
Parameters:
[in]typeof the message payload.
Returns:
pointer to MsgPayload object allocated dynamically.
st_msg_payload* sesstype::st_mk_msg_payload_annotated ( const char *  type,
const char *  name 
)
Parameters:
[in]typeof the message payload.
[in]nameof the message payload.
Returns:
pointer to MsgPayload objected allocated dynamically.
st_module * sesstype::st_module_add_tree ( st_module *const  module,
st_tree *  tree 
)
Parameters:
[in,out]moduleto contain tree.
[in]treeto add.
Returns:
modified module.
void sesstype::st_module_free ( st_module *  module)
Parameters:
[in,out]moduleobject to destroy.
const char * sesstype::st_module_get_name ( st_module *const  module)
Parameters:
[in]moduleto query.
st_module * sesstype::st_module_import ( st_module *const  module,
st_import *  import 
)
Parameters:
[in,out]moduleto contain import.
[in]importto add.
Returns:
modified module.
st_module * sesstype::st_module_mk_init ( const char *  name)
Parameters:
[in]nameof the Module (name can include dots).
Returns:
pointer to Module object allocated dynamically.
st_msg * sesstype::st_msg_add_payload ( st_msg *  msg,
st_msg_payload *  payload 
)
Parameters:
[in,out]msgmessage to modify.
[in]payloadof message to add to message.
void sesstype::st_msg_free ( st_msg *  msg)
Parameters:
[in,out]msgobject to destroy.
void sesstype::st_msg_payload_free ( st_msg_payload *  payload)
Parameters:
[in,out]payloadobject to destroy.
st_role * sesstype::st_role_copy ( const st_role *const  role)

Create a copy of a Role.

Parameters:
[in]nameof Role.
Returns:
pointer to newly allocated copy of Role.
void sesstype::st_role_free ( st_role *  role)

Free a previously allocated Role.

Parameters:
[in]rolepointer.
st_role * sesstype::st_role_init ( const char *  name)

Create a Role.

Parameters:
[in]nameof Role.
Returns:
newly allocated Role.
const char * sesstype::st_role_name ( st_role *const  role)

Get a name of the Role.

Parameters:
[in]rolepointer.
Returns:
string name of Role.
st_role * sesstype::st_role_set_name ( st_role *const  role,
const char *  name 
)

Set the name of the Role.

Parameters:
[in,out]rolepointer.
[in]nameto use.
Returns:
the modified Role.
st_tree * sesstype::st_tree_add_role ( st_tree *  tree,
st_role *  role 
)
Parameters:
[in,out]treepointer to session object.
[in]roleof the local session.
Returns:
pointer to modified session object.
void sesstype::st_tree_free ( st_tree *  tree)
Parameters:
[in,out]sessionobject to destroy.
st_node * sesstype::st_tree_get_root ( st_tree *  tree)
Parameters:
[in,out]treepointer to session object.
Returns:
pointer to root (body of session).
st_tree * sesstype::st_tree_mk_init ( const char *  name)
Parameters:
[in]nameof the session.
Returns:
pointer to session object allocated dynamically.
st_tree * sesstype::st_tree_set_root ( st_tree *  tree,
st_node *  root 
)
Parameters:
[in,out]treepointer to session object. [in] root to use.
Returns:
pointer to modified session object.
 All Classes Namespaces Files Functions