blob: 971950012570da1561daf9d1c27c4c26585f2044 [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_LGenBase_TemplateDefinitions
//
// Purpose:
// This module provides data types for handling templates on TitanSim load generator
//
// Module Parameters:
// -
//
// Module depends on:
// <EPTF_CLL_Common_Definitions>
// <EPTF_CLL_Base_Definitions>
// <EPTF_CLL_LGenBase_LoggingDefinitions>
//
// Current Owner:
// Janos Zoltan Svaner (EJNOSVN)
//
// Last Review Date:
// 2009-02-12
//
// Detailed Comments:
//
///////////////////////////////////////////////////////////
module EPTF_CLL_LGenBase_TemplateDefinitions
{
import from EPTF_CLL_Common_Definitions all;
import from EPTF_CLL_HashMap_Definitions all;
import from EPTF_CLL_LGenBase_LoggingDefinitions all;
///////////////////////////////////////////////////////////
// Module parameter:
// tsp_LGenBase_extTemplLoadList
//
// Detailed description:
// This parameter defines the initial list of external templates,
// which are loded by initialising of component.
///////////////////////////////////////////////////////////
modulepar EPTF_LGenBase_ExtTemplLoadList tsp_LGenBase_extTemplLoadList := {}
///////////////////////////////////////////////////////////
// Module parameter:
// tsp_LGenBase_templParamOpentoken
// tsp_LGenBase_templParamClosetoken
//
// Detailed description:
// This parameter defines the opening and closing strings
// of template parameters
///////////////////////////////////////////////////////////
modulepar charstring tsp_LGenBase_templParamOpentoken := "$(";
modulepar charstring tsp_LGenBase_templParamClosetoken := ")";
///////////////////////////////////////////////////////////
// Module parameter:
// tsp_LGenBase_extTemplRemoveLastNewLine
//
// Detailed description:
// If this paramter is true then the last new line will be removed from the external template
//
///////////////////////////////////////////////////////////
modulepar boolean tsp_LGenBase_extTemplRemoveLastNewLine := false;
//////////////////////////////////////////////////////////////////////////////////////////
// Module parameter:
// tsp_LGenBase_enableDefaultArithmeticOperationsInExtTemplate
//
// Detailed description:
// This parameter controls the default arithmetic operation of the
// Template parameter substitution process. If false, the default process
// is switched off, only the other registered functions in the
// TemplateMissingParameterCallbackList will be run.
//////////////////////////////////////////////////////////////////////////////////////////
modulepar boolean tsp_LGenBase_enableDefaultArithmeticOperationsInExtTemplate := false;
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_ExtTemplateList
//
// Purpose:
// Type for storing loaded external templates.
//
///////////////////////////////////////////////////////////
type record of EPTF_LGenBase_ExtTemplate EPTF_LGenBase_ExtTemplateList;
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_ExtTemplate
//
// Purpose:
// Type for describing an external template.
//
///////////////////////////////////////////////////////////
type record EPTF_LGenBase_ExtTemplate
{
charstring name,
EPTF_LGenBase_ExtTemplateRepr repr,
EPTF_LGenBase_ExtTemplateFixedPosRepr reprFixedPos
}
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_ExtTemplateRepr
//
// Purpose:
// Type for parsed representation of an external template.
///////////////////////////////////////////////////////////
type record EPTF_LGenBase_ExtTemplateRepr
{
EPTF_LGenBase_ExtTemplateFragment_List fragmentList,
charstring lastFragment,
EPTF_CharstringList paramNames
}
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_ExtTemplateFixedPosFragment
//
// Purpose:
// Type for parsed representation of an external template
// for fixed position variation
///////////////////////////////////////////////////////////
type record EPTF_LGenBase_ExtTemplateFixedPosFragment
{
charstring text,
EPTF_IntegerList paramPositions
}
// list of fragments
type record of EPTF_LGenBase_ExtTemplateFixedPosFragment EPTF_LGenBase_ExtTemplateFixedPosRepr;
type record of EPTF_LGenBase_ExtTemplateFragment EPTF_LGenBase_ExtTemplateFragment_List;
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_ExtTemplateFragment
//
// Purpose:
// Type for representing one fraggment of an external template.
///////////////////////////////////////////////////////////
type record EPTF_LGenBase_ExtTemplateFragment
{
charstring text, // text fragmment
integer paramPosition // true if it will be replaced, false if it won't
}
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_ExtTemplLoadList
//
// Purpose:
// Type for defining a list of external templates to load from file system.
//
///////////////////////////////////////////////////////////
type record of EPTF_LGenBase_ExtTemplLoadItem EPTF_LGenBase_ExtTemplLoadList;
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_ExtTemplLoadItem
//
// Purpose:
// Type for defining an external template to load from file system.
//
///////////////////////////////////////////////////////////
type record EPTF_LGenBase_ExtTemplLoadItem
{
charstring name,
charstring path,
boolean convertLF2CRLF
}
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateTypeList
//
// Purpose:
// Type for storing declared template types.
//
///////////////////////////////////////////////////////////
type record of EPTF_LGenBase_TemplateTypeDeclaration EPTF_LGenBase_TemplateTypeList
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateTypeDeclaration
//
// Purpose:
// Type for internal representation of a template type declaration.
//
///////////////////////////////////////////////////////////
type record EPTF_LGenBase_TemplateTypeDeclaration
{
EPTF_LGenBase_TemplateTypeKey templateTypeKey,
EPTF_LGenBase_TemplateParameterList compulsoryParams,
EPTF_LGenBase_TemplateParameterList optionalParams,
EPTF_LGenBase_TemplateCallback startCallback optional,
EPTF_LGenBase_TemplateCallback finishCallback optional
}
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateTypeKey
//
// Purpose:
// Type for defineing a template type key.
// A template type is defined by behaviour type and template name.
//
///////////////////////////////////////////////////////////
type record EPTF_LGenBase_TemplateTypeKey
{
charstring behaviourType,
charstring templateName
}
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateCallback
//
// Purpose:
// Function type can be used for defining start and finish
// callback by substitution of templates
///////////////////////////////////////////////////////////
type function EPTF_LGenBase_TemplateCallback(inout EPTF_IntegerList pl_contextArgs, inout EPTF_CharstringList pl_params) runs on self;
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateParameterCallback
//
// Purpose:
// Function type can be used for defining callback
// by substitution of a parameter of a template
///////////////////////////////////////////////////////////
type function EPTF_LGenBase_TemplateParameterCallback(inout EPTF_IntegerList pl_contextArgs, inout charstring pl_param) runs on self;
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateParameterCallbackList
//
// Purpose:
// List of <EPTF_LGenBase_TemplateParameterCallback>
///////////////////////////////////////////////////////////
type record of EPTF_LGenBase_TemplateParameterCallback EPTF_LGenBase_TemplateParameterCallbackList;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateMissingParameterCallback
//
// Purpose:
// Function type can be used for defining callback, which is called for a template parameter not known.
// This way, application can modify the template if it has more info than LGenBase.
//
// Parameters:
//
// - inout pl_paramValue - *charstring* - the output value that should be changed
// in the template
// - in pl_dictionary - <EPTF_LGenBase_TemplParamSubstList> - the parameters values according to
// the output should be changed
//
// Return value:
// - boolean : true if value is modified by the function.
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
type function EPTF_LGenBase_TemplateMissingParameterCallback( inout charstring pl_paramValue,
in EPTF_LGenBase_TemplParamSubstList pl_dictionary)
runs on self return boolean;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateMissingParameterCallbackList
//
// Purpose:
// List of <EPTF_LGenBase_TemplateMissingParameterCallback>
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
type record of EPTF_LGenBase_TemplateMissingParameterCallback EPTF_LGenBase_TemplateMissingParameterCallbackList;
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateParameter
//
// Purpose:
// Type for defining a parameter name and a callback for it
///////////////////////////////////////////////////////////
type record EPTF_LGenBase_TemplateParameter
{
charstring parameter,
EPTF_LGenBase_TemplateParameterCallback callback optional
}
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateParameterList
//
// Purpose:
// List of template parameters
///////////////////////////////////////////////////////////
type record of EPTF_LGenBase_TemplateParameter EPTF_LGenBase_TemplateParameterList;
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateSetList
//
// Purpose:
// Type for storing template sets.
//
///////////////////////////////////////////////////////////
type record of EPTF_LGenBase_TemplateSet EPTF_LGenBase_TemplateSetList;
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateSet
//
// Purpose:
// Type to define a template set.
//
///////////////////////////////////////////////////////////
type record of EPTF_LGenBase_TemplateSetItem EPTF_LGenBase_TemplateSet;
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateSetItem
//
// Purpose:
// Type to define an item of template set.
//
///////////////////////////////////////////////////////////
type record EPTF_LGenBase_TemplateSetItem
{
integer templateTypeIdx,
integer externalTemplateIdx,
EPTF_LGenBase_PositionJumpList posJumpTable
}
///////////////////////////////////////////////////////////
// Type: EPTF_EPTF_LGenBase_PositionJumpList
//
// Purpose:
// Jump table for supporting conversion of parameter posisitions.
///////////////////////////////////////////////////////////
type record of integer EPTF_LGenBase_PositionJumpList;
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateList
//
// Purpose:
// Allows configuration of a template set.
//
///////////////////////////////////////////////////////////
type record of EPTF_LGenBase_AssignedTemplate EPTF_LGenBase_TemplateList;
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplParamSubstList
//
// Purpose:
// Defines a list of parameter substitutions in a template.
//
///////////////////////////////////////////////////////////
type record EPTF_LGenBase_AssignedTemplate
{
charstring behaviourType,
charstring templateName,
charstring externalTemplateName
}
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplParamSubstList
//
// Purpose:
// Defines a list of parameter substitutions in a template.
//
///////////////////////////////////////////////////////////
type record of EPTF_LGenBase_TemplParamSubst EPTF_LGenBase_TemplParamSubstList;
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplParamSubst
//
// Purpose:
// Defines a parameter substitution in a template.
//
///////////////////////////////////////////////////////////
type record EPTF_LGenBase_TemplParamSubst
{
charstring paramName,
charstring paramValue
}
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_getTemplateContent_FT
//
// Purpose:
// Funtion type to get the actual template content
//
// Parameters:
// - pl_extTemplateIdx - *in* *integer* - index of external template in the dictionary
// - pl_dictionary - *in* <EPTF_LGenBase_TemplParamSubstList> - dictionary of fixed order parameter names and values
// - pl_content - *inout* *charstring* - the substituted template content
//
// Return value
// *boolean* - true, if substitution succeeded, otherwise false
//
// Detailed comments:
// -
//
///////////////////////////////////////////////////////////
type function EPTF_LGenBase_getTemplateContent_FT(
in integer pl_extTemplateIdx,
in EPTF_LGenBase_TemplParamSubstList pl_dictionary,
inout charstring pl_content
)
runs on self
return boolean
//////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateGetterMode
//
// Purpose:
// A union for different external template handling parameters
//
// Elements:
// - defaultGetter - <EPTF_LGenBase_TemplateGetter_Default> - default external template handling parameters
// - fixedPosGetter - <EPTF_LGenBase_TemplateGetter_FixedPos> - fixed position external template handling parameters
//
///////////////////////////////////////////////////////////
type union EPTF_LGenBase_TemplateGetterMode
{
EPTF_LGenBase_TemplateGetter_Default defaultGetter,
EPTF_LGenBase_TemplateGetter_FixedPos fixedPosGetter
}
//////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateGetter_Default
//
// Purpose:
// Empty parameter for default external template handling.
//
///////////////////////////////////////////////////////////
type record EPTF_LGenBase_TemplateGetter_Default
{
}
//////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_TemplateGetter_FixedPos
//
// Purpose:
// Defines a parameter for fixed position external template handling.
//
///////////////////////////////////////////////////////////
type record EPTF_LGenBase_TemplateGetter_FixedPos
{
EPTF_CharstringList orderedMacroNameList
}
///////////////////////////////////////////////////////////
// Type: EPTF_LGenBase_extTemplate_CT
//
// Extends: -
//
// Purpose:
// Component type for the External Template feature of TitanSim
//
/////////////////////////////////////////////////////////
type component EPTF_LGenBase_extTemplate_CT extends EPTF_LGenBase_Logging_CT, EPTF_HashMap_CT
{
private var boolean v_LGenBase_extTemplate_initialized := false;
private var EPTF_LGenBase_ExtTemplateList v_LGenBase_extTemplateDB := {};
private var EPTF_LGenBase_TemplateTypeList v_LGenBase_templateTypeDB := {};
private var EPTF_LGenBase_TemplateSetList v_LGenBase_templateSetDB := {};
private var integer v_LGenBase_extTemplHashMapId := -1; // hashmap to store external template indexes
private var integer v_LGenBase_templTypeHashMapId := -1; // hashmap to store template type indexes
private var integer v_LGenBase_extTemplFixedPos_hashMapId := -1; // hashmap to store template param fixed position
private var boolean v_LGenBase_extTemplFixedPos_initialized := false;
private var boolean v_LGenBase_extTemplRemoveLastNewLine := false;
private var EPTF_LGenBase_getTemplateContent_FT vf_EPTF_LGenBase_getTemplateContent := null;
private var EPTF_LGenBase_TemplateMissingParameterCallbackList v_LGenBase_TemplateMissingParameterCallbackList := {};
}
///////////////////////////////////////////////////////////
// Constants:
// - c_EPTF_LGenBase_extTemplHashMapName - *charstring* -
// name of hasmap for storing external template names
// - c_EPTF_LGenBase_templTypeHashMapName - *charstring* -
// name of hasmap for storing template type names
// - c_EPTF_LGenBase_extTemplFixedPosHashMapName - *charstring* -
// name of hasmap for storing fixed position macro name - position
// index pairs
// - c_EPTF_LGenBase_hashKeyDelimiter *charstring* -
// delimiter pattern used in template type keys
////////////////////////////////////////////////////////////
const charstring c_EPTF_LGenBase_extTemplHashMapName := "LGenBase_externalTemplateHashMap";
const charstring c_EPTF_LGenBase_templTypeHashMapName := "LGenBase_templateTypeHashMap";
const charstring c_EPTF_LGenBase_extTemplFixedPosHashMapName := "LGenBase_extTemplFixedPosHashMapName";
const charstring c_EPTF_LGenBase_hashKeyDelimiter := "###";
} // end of module