///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// 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_Common_IndexArrayDefinitions
// 
//  Purpose:
//    This module provides the <EPTF_Common_IndexArray> record type
//    to help quick storage and retrieval indexes from a list
// 
//  Module Parameters:
//    -
// 
//  Module depends on:
//    <EPTF_CLL_Common_IndexArrayDefinitions>
//
//  Current Owner:    ELSZSKU
// 
//  Last Review Date:
//    2009--
// 
///////////////////////////////////////////////////////////
module EPTF_CLL_Common_IndexArrayDefinitions
{
import from EPTF_CLL_Common_Definitions all;

///////////////////////////////////////////////////////////
//  type: EPTF_Common_IndexArray
// 
//  Purpose:
//    Record type to help quick storage and retrieval indexes from a list
// 
//  Detailed comment
//    The data type with the associated functions is practical when
//    the count of the elements to be handled are less or about 10-20.
//     
///////////////////////////////////////////////////////////
type record EPTF_Common_IndexArray{
  EPTF_IntegerList values,
  integer firstBusy
}
const EPTF_Common_IndexArray c_EPTF_emptyCommon_IndexArray := {
  {},
  -1
}

}  // end of module
