Added function to convert legacy to modern version as well.
Also add test for conversion and merge test fixtures for symbol table
tests.
Refs #2833
Change-Id: I59dab5e19a6fc4ab86933b178cb2d729b72c4f7a
return table.at(entry);
}
+void StringTable::copyToLegacySymtab(struct t_symtab* symtab) const
+{
+ for (const auto& entry : table_)
+ {
+ put_symtab(symtab, entry.c_str());
+ }
+}
+
// Old code for legacy data structure starts below.
//! Maximum size of character string in table.
constexpr int c_trimSize = 1024;
//! Print human readable format of storage.
void printStringTableStorageToFile(FILE* fp, int indent, const char* title) const;
+ /*! \brief
+ * Copy data in new datastructure to legacy version.
+ *
+ * The legacy datastructures need to be already initialized.
+ *
+ * \param[in] symtab Legacy symbol table to add entries to.
+ */
+ void copyToLegacySymtab(struct t_symtab* symtab) const;
+
friend class StringTableBuilder;
private:
+++ /dev/null
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
-<ReferenceData>
- <Sequence Name="Complete dump of SymbolTable">
- <Int Name="Length">8</Int>
- <String>Symtab[0]="0"</String>
- <String>Symtab[1]="1"</String>
- <String>Symtab[2]="2"</String>
- <String>Symtab[3]="3"</String>
- <String>Symtab[4]="4"</String>
- <String>Symtab[5]="5"</String>
- <String>Symtab[6]="6"</String>
- <String>Symtab[7]="foobar"</String>
- </Sequence>
-</ReferenceData>
+++ /dev/null
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
-<ReferenceData>
- <Sequence Name="Complete dump of SymbolTable">
- <Int Name="Length">15</Int>
- <String>Symtab[0]="0"</String>
- <String>Symtab[1]="1"</String>
- <String>Symtab[2]="2"</String>
- <String>Symtab[3]="3"</String>
- <String>Symtab[4]="4"</String>
- <String>Symtab[5]="5"</String>
- <String>Symtab[6]="6"</String>
- <String>Symtab[7]="baz"</String>
- <String>Symtab[8]="7"</String>
- <String>Symtab[9]="8"</String>
- <String>Symtab[10]="9"</String>
- <String>Symtab[11]="10"</String>
- <String>Symtab[12]="11"</String>
- <String>Symtab[13]="12"</String>
- <String>Symtab[14]="13"</String>
- </Sequence>
-</ReferenceData>
*/
/*! \internal \file
* \brief
- * Tests for legacy symbol table
+ * Tests for legacy symbol table and replacement.
*
* \author Paul Bauer <paul.bauer.q@gmail.com>
*/
checkTable(table);
}
+
TEST_F(StringTableTest, CanWriteToBuffer)
{
builder().addString("foo");
EXPECT_EQ(*(finalTable.at(2)), *(deserializedEntries[2]));
}
+TEST_F(StringTableTest, CanCopyToLegacyTable)
+{
+ auto fooSymbol = builder().addString("foo");
+ auto barSymbol = builder().addString("Bar");
+
+ StringTable finalTable = builder().build();
+
+ t_symtab legacySymtab;
+ open_symtab(&legacySymtab);
+ finalTable.copyToLegacySymtab(&legacySymtab);
+ int fooEntryIndex = readIndexFromSerializer(fooSymbol);
+ int barEntryIndex = readIndexFromSerializer(barSymbol);
+ EXPECT_STREQ(finalTable.at(fooEntryIndex)->c_str(), *get_symtab_handle(&legacySymtab, fooEntryIndex));
+ EXPECT_STREQ(finalTable.at(barEntryIndex)->c_str(), *get_symtab_handle(&legacySymtab, barEntryIndex));
+ done_symtab(&legacySymtab);
+}
namespace
{
t_atomtypes atomtypes;
//! Groups of atoms for different purposes
SimulationGroups groups;
- //! The symbol table
+ //! The legacy symbol table
t_symtab symtab;
//! Tells whether we have valid molecule indices
bool haveMoleculeIndices = false;