| /////////////////////////////////////////////////////////////////////////////// |
| // // |
| // 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 |