blob: baafc97885ef41ff2cb8fd80046d175d55f231e1 [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_GenericRingBuffer_Definitions
//
// Purpose:
// This module provides macro type definitions for generic ring buffer container.
//
// Module Parameters:
// (none)
//
// Module depends on:
// <EPTF_CLL_RingBuffer_Definitions>
//
// Current Owner:
// Istvan Falusi (eistfal)
//
// Last Review Date:
// 2007-11-19
//
// Detailed Comments:
// This module contains types for generic ring buffer.
// This file should be included into the module, where the base type
// of the ring buffer is known and the ring buffer is to be created.
//
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
// Type: EPTF_BASE_TYPE
//
// Purpose:
// The user defined TTCN-3 type that the generic ring buffer is built from.
// This type shall be defined by the user of EPTF ring buffer.
//
// Elements:
// User defined.
//
// Detailed Comments:
// To create a ring buffer from any user defined type <EPTF_BASE_TYPE> the
// following TTCN-3 code should be inserted into one of the the user modules:
//
// #define EPTF_BASE_TYPE <EPTF_BASE_TYPE>
//
// //instantiate the code
//
// #include "EPTF_CLL_GenericRingBuffer_Functions.ttcnin"
//
// //undef the type to avoid error in case of multiple careless "#include"-s
//
// #undef EPTF_BASE_TYPE
//
//
///////////////////////////////////////////////////////////
import from EPTF_CLL_RingBuffer_Definitions all;
///////////////////////////////////////////////////////////
// Type: EPTF_BASE_TYPE##List
//
// Purpose:
// Provides generic data list.
//
// Elements:
// *record of* <EPTF_BASE_TYPE>
//
///////////////////////////////////////////////////////////
#define EPTF_RINGBUFFER_DATA_LIST_TYPE_(TYPEARG) type record of TYPEARG TYPEARG##List;
#define EPTF_RINGBUFFER_DATA_LIST_TYPE(TYPEARG) EPTF_RINGBUFFER_DATA_LIST_TYPE_(TYPEARG)
EPTF_RINGBUFFER_DATA_LIST_TYPE(EPTF_BASE_TYPE)
///////////////////////////////////////////////////////////
// Type: EPTF_BASE_TYPE##RingBuffer
//
// Purpose:
// This datastructure the generic ring buffer type
//
// Elements:
// - status - <EPTF_RingBufferStatus> - contains the status information of the ring buffer.
//
// - data- <EPTF_BASE_TYPE##List> - contains the data to be buffered.
//
///////////////////////////////////////////////////////////
#define EPTF_RINGBUFFER_TYPE_(TYPEARG) type record TYPEARG##RingBuffer {EPTF_RingBufferStatus status, TYPEARG##List data}
#define EPTF_RINGBUFFER_TYPE(TYPEARG) EPTF_RINGBUFFER_TYPE_(TYPEARG)
EPTF_RINGBUFFER_TYPE(EPTF_BASE_TYPE)