///////////////////////////////////////////////////////////////////////////////
// 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                                 //
///////////////////////////////////////////////////////////////////////////////
Format: 1.35


Title: TitanSim R2
SubTitle: CNL 113 512 Rev.R2A02

Footer: Copyright (c) 2000-2019 Ericsson Telecom AB


# --------------------------------------------------------------------------
# 
# Cut and paste the lines below to change the order in which your files
# appear on the menu.  Don't worry about adding or removing files, Natural
# Docs will take care of that.
# 
# You can further organize the menu by grouping the entries.  Add a
# "Group: [name] {" line to start a group, and add a "}" to end it.
# 
# You can add text and web links to the menu by adding "Text: [text]" and
# "Link: [name] ([URL])" lines, respectively.
# 
# The formatting and comments are auto-generated, so don't worry about
# neatness when editing the file.  Natural Docs will clean it up the next
# time it is run.  When working with groups, just deal with the braces and
# forget about the indentation and comments.
# 
# --------------------------------------------------------------------------


Group: Base  {

   File: EPTF_CLL_Base_Definitions.ttcnpp  (Base/EPTF_CLL_Base_Definitions.ttcnpp)
   File: EPTF_CLL_Base_ExternalFunctions.cc  (Base/EPTF_CLL_Base_ExternalFunctions.cc)
   File: EPTF_CLL_Base_Functions.ttcnpp  (Base/EPTF_CLL_Base_Functions.ttcnpp)
   }  # Group: Base

Group: Central scheduling {
File: EPTF_CLL_CS_Admin_Functions.ttcnpp  (CentralScheduling/EPTF_CLL_CS_Admin_Functions.ttcnpp)
File: EPTF_CLL_CS_Definitions.ttcnpp  (CentralScheduling/EPTF_CLL_CS_Definitions.ttcnpp)
File: EPTF_CLL_CS_externalWrapper_Functions.cc  (CentralScheduling/EPTF_CLL_CS_externalWrapper_Functions.cc)
File: EPTF_CLL_CS_LB_Definitions.ttcnpp  (CentralScheduling/EPTF_CLL_CS_LB_Definitions.ttcnpp)
File: EPTF_CLL_CS_LB_Functions.ttcnpp  (CentralScheduling/EPTF_CLL_CS_LB_Functions.ttcnpp)
File: EPTF_CLL_CS_LGen_Functions.ttcnpp  (CentralScheduling/EPTF_CLL_CS_LGen_Functions.ttcnpp)

}
Group: Common  {

   File: EPTF_CLL_Admin_Macros.ttcnin  (Common/EPTF_CLL_Admin_Macros.ttcnin)
   File: EPTF_CLL_Common_Functions.ttcn  (Common/EPTF_CLL_Common_Functions.ttcn)
   File: EPTF_CLL_Definitions.ttcn  (Common/EPTF_CLL_Definitions.ttcn)
   }  # Group: Common

Group: ExecCtrl  {

   File: EPTF_CLL_ExecCtrl_Definitions.ttcn  (ExecCtrl/EPTF_CLL_ExecCtrl_Definitions.ttcn)
   File: EPTF_CLL_ExecCtrl_Functions.ttcn  (ExecCtrl/EPTF_CLL_ExecCtrl_Functions.ttcn)
   }  # Group: ExecCtrl

Group: FreeBusyQueue  {

   File: EPTF_CLL_QueueMgmt_Definitions.ttcn  (FreeBusyQueue/EPTF_CLL_QueueMgmt_Definitions.ttcn)
   File: EPTF_CLL_QueueMgmt_Functions.ttcn  (FreeBusyQueue/EPTF_CLL_QueueMgmt_Functions.ttcnpp)

   Group: FreeBusyQueue_Private  {

      File: EPTF_CLL_QueueMgmt_PrivateFunctions.ttcnpp  (no auto-title, FreeBusyQueue/EPTF_CLL_QueueMgmt_PrivateFunctions.ttcnpp)
      }  # Group: FreeBusyQueue_Private

   }  # Group: FreeBusyQueue

Group: HashMap  {

   Group: int2int  {

      File: EPTF_CLL_int2int_HashMap.ttcn  (HashMap/EPTF_CLL_int2int_HashMap.ttcn)
      File: EPTF_CLL_int2int_HashMap_external.cc  (HashMap/EPTF_CLL_int2int_HashMap_external.cc)
      }  # Group: int2int

   Group: oct2int  {

      File: EPTF_CLL_oct2int_HashMap.ttcn  (HashMap/EPTF_CLL_oct2int_HashMap.ttcn)
      File: EPTF_CLL_oct2int_HashMap_external.cc  (HashMap/EPTF_CLL_oct2int_HashMap_external.cc)
      }  # Group: oct2int

   Group: str2int  {

      File: EPTF_CLL_str2int_HashMap.ttcn  (HashMap/EPTF_CLL_str2int_HashMap.ttcn)
      File: EPTF_CLL_str2int_HashMap_external.cc  (HashMap/EPTF_CLL_str2int_HashMap_external.cc)
      }  # Group: str2int

   }  # Group: HashMap

Group: HostAdmin  {

   File: EPTF_CLL_HostAdmin_Base_Definitions.ttcn  (HostAdmin/EPTF_CLL_HostAdmin_Base_Definitions.ttcn)
   File: EPTF_CLL_HostAdmin_Base_Functions.ttcnpp  (HostAdmin/EPTF_CLL_HostAdmin_Base_Functions.ttcnpp)
   File: EPTF_CLL_HostAdmin_Definitions.ttcn  (HostAdmin/EPTF_CLL_HostAdmin_Definitions.ttcn)
   File: EPTF_CLL_HostAdmin_Functions.ttcnpp  (HostAdmin/EPTF_CLL_HostAdmin_Functions.ttcnpp)

   Group: SelfLoad  {

      File: selfLoadMeas_PortType.ttcn  (HostAdmin/selfLoad/selfLoadMeas_PortType.ttcn)
      File: selfLoadMeas_PT.cc  (HostAdmin/selfLoad/selfLoadMeas_PT.cc)
      File: selfLoadMeas_PT.hh  (HostAdmin/selfLoad/selfLoadMeas_PT.hh)
      File: selfLoadMeas_Types.ttcn  (HostAdmin/selfLoad/selfLoadMeas_Types.ttcn)
      }  # Group: SelfLoad

   }  # Group: HostAdmin

Group: LGenBase  {

   File: EPTF_CLL_LGenBase_Definitions.ttcn  (LGenBase/EPTF_CLL_LGenBase_Definitions.ttcn)
   File: EPTF_CLL_LGenBase_Functions.ttcn  (LGenBase/EPTF_CLL_LGenBase_Functions.ttcn)
   }  # Group: LGenBase

Group: LoadRegulator  {

   File: EPTF_CLL_LoadRegulator_Definitions.ttcn  (LoadRegulator/EPTF_CLL_LoadRegulator_Definitions.ttcn)
   File: EPTF_CLL_LoadRegulator_Functions.ttcnpp  (LoadRegulator/EPTF_CLL_LoadRegulator_Functions.ttcnpp)
   }  # Group: LoadRegulator

Group: Logging  {

   File: EPTF_CLL_Logging_Definitions.ttcnpp  (Logging/EPTF_CLL_Logging_Definitions.ttcnpp)
   File: EPTF_CLL_Logging_Functions.ttcnpp  (Logging/EPTF_CLL_Logging_Functions.ttcnpp)
   File: EPTF_CLL_Logging_Macros.ttcnin  (Logging/EPTF_CLL_Logging_Macros.ttcnin)
   }  # Group: Logging

Group: LoggingUI  {

   File: EPTF_CLL_LoggingUI_Definitions.ttcn  (LoggingUI/EPTF_CLL_LoggingUI_Definitions.ttcn)
   File: EPTF_CLL_LoggingUI_Functions.ttcn  (LoggingUI/EPTF_CLL_LoggingUI_Functions.ttcn)

   Group: LoggingUI_Private  {

      File: EPTF_CLL_LoggingUI_Private_Functions.ttcn  (no auto-title, LoggingUI/EPTF_CLL_LoggingUI_Private_Functions.ttcn)
      }  # Group: LoggingUI_Private

   File: EPTF_CLL_LoggingUIClient_Functions.ttcn  (LoggingUI/EPTF_CLL_LoggingUIClient_Functions.ttcn)
   }  # Group: LoggingUI

Group: NameService  {

   File: EPTF_CLL_NameService_Client_Functions.ttcnpp  (NameService/EPTF_CLL_NameService_Client_Functions.ttcnpp)
   File: EPTF_CLL_NameService_Definitions.ttcnpp  (NameService/EPTF_CLL_NameService_Definitions.ttcnpp)
   File: EPTF_CLL_NameService_ExternalFunctions.cc  (NameService/EPTF_CLL_NameService_ExternalFunctions.cc)
   File: EPTF_CLL_NameService_Functions.ttcnpp  (NameService/EPTF_CLL_NameService_Functions.ttcnpp)
   }  # Group: NameService

Group: RedBlackTree  {

   Group: FloatRedBlackTree  {

      Group: FloatRedBlackTree_Private  {

         File: EPTF_CLL_FloatRBtree_PrivateFunctions.ttcnpp  (no auto-title, RedBlackTree/EPTF_CLL_FloatRBtree_PrivateFunctions.ttcnpp)
         }  # Group: FloatRedBlackTree_Private

      File: EPTF_CLL_FloatRBtree_Functions.ttcnpp  (no auto-title, RedBlackTree/EPTF_CLL_FloatRBtree_Functions.ttcnpp)
      }  # Group: FloatRedBlackTree

   Group: IntegerRedBlackTree  {

      Group: IntegerRedBlackTree_Private  {

         File: EPTF_CLL_IntegerRBtree_PrivateFunctions.ttcnpp  (no auto-title, RedBlackTree/EPTF_CLL_IntegerRBtree_PrivateFunctions.ttcnpp)
         }  # Group: IntegerRedBlackTree_Private

      File: EPTF_CLL_IntegerRBtree_Functions.ttcnpp  (no auto-title, RedBlackTree/EPTF_CLL_IntegerRBtree_Functions.ttcnpp)
      }  # Group: IntegerRedBlackTree

   File: EPTF_CLL_RBtree_Definitions.ttcn  (RedBlackTree/EPTF_CLL_RBtree_Definitions.ttcn)
   File: EPTF_CLL_RBtree_Functions.ttcnpp  (RedBlackTree/EPTF_CLL_RBtree_Functions.ttcnpp)

   Group: RedBlackTree_Private  {

      File: EPTF_CLL_RBtree_PrivateFunctions.ttcnpp  (no auto-title, RedBlackTree/EPTF_CLL_RBtree_PrivateFunctions.ttcnpp)
      }  # Group: RedBlackTree_Private

   }  # Group: RedBlackTree

Group: RingBuffer  {

   Group: IntegerRingBuffer  {

      File: EPTF_CLL_IntegerRingBuffer_Functions.ttcn  (no auto-title, RingBuffer/EPTF_CLL_IntegerRingBuffer_Functions.ttcn)
      }  # Group: IntegerRingBuffer

   Group: GenericRingBuffer  {

      File: EPTF_CLL_GenericRingBuffer_Functions.ttcnin  (RingBuffer/EPTF_CLL_GenericRingBuffer_Functions.ttcnin)
      File: EPTF_CLL_GenericRingBuffer_Definitions.ttcnin  (RingBuffer/EPTF_CLL_GenericRingBuffer_Definitions.ttcnin)
      }  # Group: GenericRingBuffer

   Group: RingBuffer_Private  {

      File: EPTF_CLL_RingBuffer_PrivateFunctions.ttcn  (no auto-title, RingBuffer/EPTF_CLL_RingBuffer_PrivateFunctions.ttcn)
      }  # Group: RingBuffer_Private

   File: EPTF_CLL_RingBuffer_Definitions.ttcn  (no auto-title, RingBuffer/EPTF_CLL_RingBuffer_Definitions.ttcn)
   }  # Group: RingBuffer

Group: Scheduler  {

   File: EPTF_CLL_FBQScheduler_Definitions.ttcnpp  (Scheduler/EPTF_CLL_FBQScheduler_Definitions.ttcnpp)
   File: EPTF_CLL_FBQScheduler_Functions.ttcnpp  (Scheduler/EPTF_CLL_FBQScheduler_Functions.ttcnpp)
   File: EPTF_CLL_RBTScheduler_Definitions.ttcnpp  (Scheduler/EPTF_CLL_RBTScheduler_Definitions.ttcnpp)
   File: EPTF_CLL_RBTScheduler_Functions.ttcnpp  (Scheduler/EPTF_CLL_RBTScheduler_Functions.ttcnpp)
   File: EPTF_CLL_Scheduler_Definitions.ttcn  (Scheduler/EPTF_CLL_Scheduler_Definitions.ttcn)
   File: EPTF_CLL_Scheduler_Definitions.ttcnin  (Scheduler/EPTF_CLL_Scheduler_Definitions.ttcnin)
   File: EPTF_CLL_Scheduler_Functions.ttcnin  (Scheduler/EPTF_CLL_Scheduler_Functions.ttcnin)
   }  # Group: Scheduler

Group: Semaphore  {

   File: EPTF_CLL_Semaphore_Definitions.ttcn  (Semaphore/EPTF_CLL_Semaphore_Definitions.ttcn)
   File: EPTF_CLL_Semaphore_Functions.ttcn  (Semaphore/EPTF_CLL_Semaphore_Functions.ttcn)
   }  # Group: Semaphore

Group: StatCapture  {

  File: EPTF_CLL_StatCapture_Definitions.ttcnpp  (StatCapture/EPTF_CLL_StatCapture_Definitions.ttcnpp)
  File: EPTF_CLL_StatCaptureControl_Definitions.ttcnpp  (StatCapture/EPTF_CLL_StatCaptureControl_Definitions.ttcnpp)
  File: EPTF_CLL_StatCapture_Functions.ttcnpp  (StatCapture/EPTF_CLL_StatCapture_Functions.ttcnpp)
  File: EPTF_CLL_StatCaptureControl_Functions.ttcnpp  (StatCapture/EPTF_CLL_StatCaptureControl_Functions.ttcnpp)
  File: EPTF_CLL_StatCapture_External.cc  (StatCapture/EPTF_CLL_StatCapture_External.cc)
   }  # Group: StatCapture

Group: StatMeasure  {

   File: EPTF_CLL_StatMeasure_Definitions.ttcn  (StatMeasure/EPTF_CLL_StatMeasure_Definitions.ttcn)
   File: EPTF_CLL_StatMeasure_Functions.ttcn  (StatMeasure/EPTF_CLL_StatMeasure_Functions.ttcn)
   }  # Group: StatMeasure

Group: StatReplay  {

   File: EPTF_CLL_StatReplay_Definitions.ttcnpp  (StatReplay/EPTF_CLL_StatReplay_Definitions.ttcnpp)
   File: EPTF_CLL_StatReplay_Execution.ttcn  (StatReplay/EPTF_CLL_StatReplay_Execution.ttcn)
   File: EPTF_CLL_StatReplay_ExternalFunctions.cc  (StatReplay/EPTF_CLL_StatReplay_ExternalFunctions.cc)
   File: EPTF_CLL_StatReplay_Functions.ttcn  (StatReplay/EPTF_CLL_StatReplay_Functions.ttcn)
   }  # Group: StatReplay

Group: PTCDeployment  {

   File: EPTF_CLL_PTCDeployment_Definitions.ttcn  (PTCDeployment/EPTF_CLL_PTCDeployment_Definitions.ttcn)
   File: EPTF_CLL_PTCDeployment_Functions.ttcn  (PTCDeployment/EPTF_CLL_PTCDeployment_Functions.ttcn)

   Group: PTCDeployment_Private  {

      File: EPTF_CLL_PTCDeployment_Private_Functions.ttcn  (no auto-title, PTCDeployment/EPTF_CLL_PTCDeployment_Private_Functions.ttcn)
      }  # Group: PTCDeployment_Private

   }  # Group: PTCDeployment

Group: RendezVous  {

   File: EPTF_CLL_Rendezvous_Definitions.ttcn  (RendezVous/EPTF_CLL_Rendezvous_Definitions.ttcn)
   File: EPTF_CLL_Rendezvous_Functions.ttcn  (RendezVous/EPTF_CLL_Rendezvous_Functions.ttcn)
   File: EPTF_CLL_RendezvousClient_Functions.ttcn  (RendezVous/EPTF_CLL_RendezvousClient_Functions.ttcn)
   }  # Group: RendezVous

Group: UIHandler  {

   Group: CLI  {

      File: EPTF_CLL_UIHandler_CLI_Definitions.ttcn  (UIHandler/EPTF_CLL_UIHandler_CLI_Definitions.ttcn)
      File: EPTF_CLL_UIHandler_CLI_Functions.ttcn  (UIHandler/EPTF_CLL_UIHandler_CLI_Functions.ttcn)
      File: EPTF_CLL_UIHandler_CLI_Commands.ttcn  (UIHandler/EPTF_CLL_UIHandler_CLI_Commands.ttcn)
      }  # Group: CLI

   File: EPTF_CLL_UIHandler_Convert_Functions.ttcn  (UIHandler/EPTF_CLL_UIHandler_Convert_Functions.ttcn)
   File: EPTF_CLL_UIHandler_Definitions.ttcn  (UIHandler/EPTF_CLL_UIHandler_Definitions.ttcn)
   File: EPTF_CLL_UIHandler_Msgs.ttcn  (UIHandler/EPTF_CLL_UIHandler_Msgs.ttcn)

   Group: UIHandler_Private  {

      File: EPTF_CLL_UIHandler_Private_Functions.ttcn  (no auto-title, UIHandler/EPTF_CLL_UIHandler_Private_Functions.ttcn)
      }  # Group: UIHandler_Private

   File: EPTF_CLL_UIHandler_Widget_Functions.ttcn  (UIHandler/EPTF_CLL_UIHandler_Widget_Functions.ttcn)
   File: EPTF_CLL_UIXTDP_Templates.ttcn  (UIHandler/EPTF_CLL_UIXTDP_Templates.ttcn)
   Group: UIHandlerClient  {
      File: EPTF_CLL_UIHandlerClient_Definitions.ttcn  (UIHandler/EPTF_CLL_UIHandlerClient_Definitions.ttcn)
      File: EPTF_CLL_UIHandlerClient_Functions.ttcn  (UIHandler/EPTF_CLL_UIHandlerClient_Functions.ttcn)
      }
   }  # Group: UIHandler

Group: Variable  {

   File: EPTF_CLL_Variable_Definitions.ttcnpp  (Variable/EPTF_CLL_Variable_Definitions.ttcnpp)
   File: EPTF_CLL_Variable_ExternalFunctions.cc  (Variable/EPTF_CLL_Variable_ExternalFunctions.cc)
   File: EPTF_CLL_Variable_Functions.ttcnpp  (Variable/EPTF_CLL_Variable_Functions.ttcnpp)
   }  # Group: Variable


Group: Index  {

   Altstep Index: Altsteps
   Component Index: Components
   Constant Index: Constants
   Index: Everything
   File Index: Files
   Function Index: Functions
   Private Function Index: Private Functions
   Template Index: Templates
   Type Index: Types
   Variable Index: Variables
   }  # Group: Index

