blob: 8e736c488cba5ffa7fa28a5c9e3250e14e422d5a [file] [log] [blame]
///////////////////////////////////////////////////////////////////////////////
// //
// Copyright (c) 2000-2019 Ericsson Telecom AB //
// //
// All rights reserved. This program and the accompanying materials //
// are made available under the terms of the Eclipse Public License v2.0 //
// which accompanies this distribution, and is available at //
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html //
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
// Module: EPTF_CLL_PoolMgmt_Definitions
//
// Purpose:
// This module provides types for various pool variables.
//
// Module Parameters:
// (none)
//
// Module depends on:
// -
// Current Owner:
// Gabor Ziegler (egbozie)
//
// Last Review Date:
// 2007-06-20
//
// Detailed Comments:
// This module contains types for pool variables.
// This file should be included into the module, where the
// base type of the pool is known and the pool is to be created.
//
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
// Type: EPTF_POOLTYPE
//
// Purpose:
// The user defined TTCN-3 type that the generic pool vector is built from.
// This type is not part of the EPTF PoolMgmt, but should be defined by
// the user of EPTF_PoolMgmt.
//
// Elements:
// User defined.
//
// Detailed Comments:
// To create a pool from any user defined type <EPTF_POOLTYPE> the
// following TTCN-3 code should be inserted into one of the the user modules:
//
// #define EPTF_POOLTYPE <EPTF_POOLTYPE>
//
// //instantiate the code
//
// #include "EPTF_CLL_PoolMgmt_Functions.ttcnin"
//
// //undef the pool type to avoid error in case of multiple careless "#include"-s
//
// #undef EPTF_POOLTYPE
//
//
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
// Type: EPTF_POOLTYPE##Pool
//
// Purpose:
// This datastructure is the base data type for the pool management database
//
// Elements:
// - order - <EPTF_FreeBusyQueue> - contains the ordering of events in the
// busy chain.
//
// - userData- <EPTF_POOLTYPE##List> - contains the data to be pooled.
//
// Detailed Comments:
// Encloses two corresponding <EPTF_FreeBusyQueue> and <EPTF_POOLTYPE##List>.
// The pool of data is used together with a <EPTF_FreeBusyQueue>, which defines
// the list of data efficiently.
//
///////////////////////////////////////////////////////////
#define EPTF_EVENTPOOL_TYPE_(TYPEARG) type record TYPEARG##Pool {EPTF_FreeBusyQueue order, TYPEARG##List userData}
#define EPTF_EVENTPOOL_TYPE(TYPEARG) EPTF_EVENTPOOL_TYPE_(TYPEARG)
EPTF_EVENTPOOL_TYPE(EPTF_POOLTYPE)
///////////////////////////////////////////////////////////
// Type: EPTF_POOLTYPE##List
//
// Purpose:
// Provides generic pool vector.
//
// Elements:
// *record of* <EPTF_POOLTYPE>
//
// Detailed Comments:
///////////////////////////////////////////////////////////
#define EPTF_EVENTPOOLITEM_TYPE_(TYPEARG) type record of TYPEARG TYPEARG##List;
#define EPTF_EVENTPOOLITEM_TYPE(TYPEARG) EPTF_EVENTPOOLITEM_TYPE_(TYPEARG)
EPTF_EVENTPOOLITEM_TYPE(EPTF_POOLTYPE)
///////////////////////////////////////////////////////////
// Constant: c_EPTF_empty##EPTF_POOLTYPE##List
//
// Purpose:
// Empty event vector to init pool.
//
// Type:
// <EPTF_POOLTYPE##List>
//
// Detailed Comments:
///////////////////////////////////////////////////////////
#define C_EMPTYEVENTVECTOR_(TYPEARG) const TYPEARG##List c_EPTF_empty##TYPEARG##List := {};
#define C_EMPTYEVENTVECTOR(TYPEARG) C_EMPTYEVENTVECTOR_(TYPEARG)
C_EMPTYEVENTVECTOR(EPTF_POOLTYPE)