/* * Copyright (C) 2007-2012 Siemens AG * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . */ /******************************************************************* * * @author Daniel.Peintner.EXT@siemens.com * @version 0.7 * @contact Joerg.Heuer@siemens.com * *

Code generated by EXIdizer.com

********************************************************************/ #ifndef STRING_TABLE_C #define STRING_TABLE_C #include #include "StringTable.h" #include "NameTableEntries.h" #include "ErrorCodes.h" #ifndef __GNUC__ #pragma warning( disable : 4100 ) /* warning unreferenced parameter 'runtimeTable' */ #endif /* __GNUC__ */ int exiGetUriSize(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t* uriLength) { *uriLength = prepopulatedTable->len; return 0; } #ifndef __GNUC__ #pragma warning( default : 4100 ) /* warning unreferenced parameter 'runtimeTable' */ #endif /* __GNUC__ */ int exiGetLocalNameSize(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t uriID, uint16_t* localNameLength) { *localNameLength = 0; /* 1. pre-populated entries*/ if (uriID < prepopulatedTable->len) { (*localNameLength) += prepopulatedTable->localNames[uriID]; } else { /* range check */ if (uriID >= ( prepopulatedTable->len + runtimeTable->addedUriEntries )) { return EXI_ERROR_OUT_OF_BOUNDS; } } /* 2. runtime entries */ if (runtimeTable->addedLocalNameEntries > 0 ) { int i; for(i=0; i<(runtimeTable->addedUriEntries+runtimeTable->addedLocalNameEntries); i++) { if ( runtimeTable->namePartitionsEntries[i].namePartitionType == EXI_NAME_PARTITION_LOCALNAME && runtimeTable->namePartitionsEntries[i].entry.localNamePartition.uriID == uriID ) { (*localNameLength)++; } } } return 0; } /* inline */ /* static int _max(int a, int b) { return (a > b) ? a : b; } */ int exiInitNameTableRuntime(exi_name_table_runtime_t* runtimeTable) { /*runtimeTable->numberOfUsedCharacters = 0;*/ runtimeTable->addedLocalNameEntries = 0; runtimeTable->addedUriEntries = 0; return 0; } int exiAddUri(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable) { /* , char* uri) { */ /*if (runtimeTable->addedUriEntries < EXI_RESERVED_NUMBER_URI_PARTITION_ENTRIES || runtimeTable->addedUriEntries < (EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES - _max( runtimeTable->addedLocalNameEntries, EXI_RESERVED_NUMBER_LOCALNAME_PARTITION_ENTRIES))) {*/ uint16_t index = runtimeTable->addedUriEntries + runtimeTable->addedLocalNameEntries; /*int charsIndex = runtimeTable->numberOfUsedCharacters+runtimeTable->addedUriEntries+runtimeTable->addedLocalNameEntries;*/ runtimeTable->namePartitionsEntries[index].namePartitionType = EXI_NAME_PARTITION_URI; /* strcpy(runtimeTable->characters+charsIndex, uri); */ /*runtimeTable->namePartitionsEntries[index].entry.uriPartition.uri = runtimeTable->characters+charsIndex;*/ runtimeTable->namePartitionsEntries[index].entry.uriPartition.uriID = prepopulatedTable->len + runtimeTable->addedUriEntries; runtimeTable->addedUriEntries++; /* runtimeTable->numberOfUsedCharacters += strlen(uri); */ return 0; /*} else { return -1; }*/ } int exiAddLocalName(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t uriID, uint16_t* localNameID) { /* ,char* localName) { */ /*if (runtimeTable->addedUriEntries < EXI_RESERVED_NUMBER_LOCALNAME_PARTITION_ENTRIES || runtimeTable->addedLocalNameEntries < (EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES - _max( runtimeTable->addedUriEntries, EXI_RESERVED_NUMBER_URI_PARTITION_ENTRIES))) {*/ uint16_t index = runtimeTable->addedUriEntries + runtimeTable->addedLocalNameEntries; /*int charsIndex = runtimeTable->numberOfUsedCharacters+runtimeTable->addedUriEntries+runtimeTable->addedLocalNameEntries;*/ /*uint16_t localNameID;*/ int errn = exiGetLocalNameSize(prepopulatedTable, runtimeTable, uriID, localNameID); if (errn < 0) { return errn; } runtimeTable->namePartitionsEntries[index].namePartitionType = EXI_NAME_PARTITION_LOCALNAME; /*strcpy(runtimeTable->characters+charsIndex, localName);*/ /*runtimeTable->namePartitionsEntries[index].entry.localNamePartition.localName = runtimeTable->characters+charsIndex;*/ runtimeTable->namePartitionsEntries[index].entry.localNamePartition.localNameID = *localNameID; runtimeTable->namePartitionsEntries[index].entry.localNamePartition.uriID = uriID; runtimeTable->addedLocalNameEntries++; /*runtimeTable->numberOfUsedCharacters += strlen(localName);*/ return errn; /*} else { return -1; }*/ } #endif