|
CCS Modul E_ARRAY_INI |
$Id: e_array_ini.C,v 1.12 2005/03/24 15:58:50 lehmann Exp $
---------------------------------------------------------------------
Kurzbeschreibung: Initialisierung von Array-Variablen
---------------------------------------------------------------------
Projekt: CCS
Sourcefile: e_array_ini.C
Autor: RtW/TEF72-Juilfs (12.12.95)
Zielsystem: HP9000/V743 (HP-RT 2.0x), /Sxxx (HP-UX 9.0x)
Sprache: C++
---------------------------------------------------------------------
Prototyp:
MPI Schnittstelle
void e_array_ini(
,shm_stringpointer *zeilen_wert
,long index1
,long anzahl)
---------------------------------------------------------------------
Aufruf: im Vectorinterpreter
(*funktionen[modulnummer])
(Ssp_expand_zeile
,Ssp_expand_wert
,p_verwaltung->begin_modulblock
,p_verwaltung->anzahl_modulparameter);
---------------------------------------------------------------------
Funktionsbeschreibung:
Dieses Modul initialisiert eine Variable als langer String oder als
Feld von int / double
Beschreibung der Modulübergabeparameter:1 PRUEFSCHRITTGAUDI Prüfschritt ------------------------------2 POSITION
PAV- Position ------------------------------3 ARRAY
Variablen Name ------------------------------4 ARRAY_TYP
Variablen Typ DOUBLE/STRING/INT/BYTE ------------------------------5 ARRAY_DIM
Wurde der ARRAY_TYP STRING gewaehlt so gibt ARRAY_DIM die Maximallaenge des Strings an. Andernfalls gibt ARRAY_DIM die Anzahl der Arrayelemente an. ------------------------------6 ARRAY_CLEAR
TRUE = der Inhalt der Variable wird bei jedem Programmstart gelöscht.
FALSE = der Inhalt der Variable wird nur beim Laden des Pruefprogrammes gelöscht.
...
---------------------------------------------------------------------
-- pragmas -----------------------------------------------------------
#pragma COPYRIGHT "Robert Bosch GmbH Reutlingen, RtW/TEF72"
#pragma VERSIONID "$Id: e_array_ini.C,v 1.12 2005/03/24 15:58:50 lehmann Exp $"
-- defines -----------------------------------------------------------
#define HEADER "$Id: e_array_ini.C,v 1.12 2005/03/24 15:58:50 lehmann Exp $"
#define EXTERN extern Bei allen Subroutinen
#define ARRAY 2
#define ARRAYN_TYP 3
#define ARRAYN_ANZ_DIM 4
#define ARRAYN_ANZ_CLEAR 5
-- includes ----------------------------------------------------------
#include "shm_syscom.H"
#include <stdlib.h>
#include "libccs.H"
#include "ccl_defines.H" ccl_definition PREINT
-- external functions / variables ------------------------------------
-- global variables (nur im "main" erlaubt) -------------------------
-Begin---------------------------------------------------------------
---------------------------------------------------------------------
int e_array_ini(shm_stringpointer *zeilen_wert
,long index1
,long anzahl)
{
-- local variables ---------------------------------------------------
long dim; // Dimension 1
bool bParamClear; // Parameter clear memory
QString strName; // Variablenname
long typ; // Variablen typ
Variablenverwaltung *V_ADRESS; // Variablenverweis
if( strcmp( Ssp_vi->job.liststate, PREINT ) != 0 )
return 0;
if (Ssp_pp_verwaltung->steuerparameter.variablenTypDekl != 0)
{
error_message (ERR_ERROR_TTNR, HEADER,__LINE__, "e_array_ini ignored; a variables deklaration list exists");
return 0;
}
bParamClear = (*zeilen_wert->ptr[index1 + ARRAYN_ANZ_CLEAR] == "TRUE");
V_ADRESS = (Variablenverwaltung *)zeilen_wert->ptr[index1 + ARRAY];
if (!V_ADRESS->isVariable())
{
error_message (ERR_ERROR_TTNR, HEADER,__LINE__, "parameter array must be a variable");
return -1;
}
if (*zeilen_wert->ptr[index1 + ARRAYN_TYP] == VARMEM_TYPSTR_STRING)
typ = VARMEM_TYP_STRING;
else if (*zeilen_wert->ptr[index1 + ARRAYN_TYP] == VARMEM_TYPSTR_INT)
typ = VARMEM_TYP_INT;
else if (*zeilen_wert->ptr[index1 + ARRAYN_TYP] == VARMEM_TYPSTR_DOUBLE)
typ = VARMEM_TYP_DOUBLE;
else if (*zeilen_wert->ptr[index1 + ARRAYN_TYP] == VARMEM_TYPSTR_BYTE)
typ = VARMEM_TYP_BYTE;
else
{
error_message (ERR_ERROR_TTNR, HEADER,__LINE__,
"wrong type: %s", (const char *)*zeilen_wert->ptr[index1 + ARRAYN_TYP]);
return -1;
}
dim = atoi((const char*)(*zeilen_wert->ptr[index1 + ARRAYN_ANZ_DIM]));
if (!V_ADRESS->mem_ini( typ, dim, bParamClear ))
{
return -1;
}
return 0;
}
-End of file---------------------------------------------------------
Historie: