///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// Copyright (c) 2000-2018 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_LGenBaseDemo_Definitions
//
//  Purpose:
//    This module contains data structures of the Main component.
//
//  Module Parameters:
//    -
//
//  Module depends on:
//
//  Current Owner:
//    ELSZSKU
//
//  Last Review Date:
//    20 - -
//
//  Detailed Comments:
//
///////////////////////////////////////////////////////////
module EPTF_LGenBaseDemo_Definitions
{
import from EPTF_LGenBaseDemo_CallerDefinitions all
import from EPTF_LGenBaseDemo_ResponderDefinitions all
import from EPTF_CLL_Base_Definitions all

//Component type of the main component of the demo
type component LGenBaseDemo_CT extends EPTF_Base_CT{
  var LGenBaseDemo_Responder_CT v_LGenBaseDemo_responder := null
  var LGenBaseDemo_Caller_CT v_LGenBaseDemo_caller := null
}

}  // end of module
