1717 **************************************************************************/
1818
1919#include < realm/string_compressor.hpp>
20+ #include < realm/string_interner.hpp>
2021#include < realm/string_data.hpp>
2122
22- #include < realm/array_unsigned.hpp>
23-
2423#include < iostream>
2524namespace realm {
2625
2726StringCompressor::StringCompressor (Allocator& alloc, Array& parent, size_t index, bool writable)
27+ : m_data(alloc)
2828{
2929 m_compression_map.resize (16 ); // start with a very small compression map
3030 m_symbols.reserve (65536 );
31- m_data = std::make_unique<ArrayUnsigned>(alloc);
32- m_data->set_parent (&parent, index);
31+ m_data.set_parent (&parent, index);
3332 refresh (writable);
3433}
3534
3635void StringCompressor::refresh (bool writable)
3736{
3837 // we assume that compressors are only created from a valid parent.
3938 // String interners in 'dead' mode should never instantiate a string compressor.
40- if (m_data-> get_ref_from_parent () == 0 ) {
39+ if (m_data. get_ref_from_parent () == 0 ) {
4140 REALM_ASSERT (writable);
42- m_data-> create (0 , 65535 );
43- m_data-> update_parent ();
41+ m_data. create (0 , 65535 );
42+ m_data. update_parent ();
4443 }
4544 else {
46- if (m_data-> is_attached ())
47- m_data-> update_from_parent ();
45+ if (m_data. is_attached ())
46+ m_data. update_from_parent ();
4847 else
49- m_data-> init_from_ref (m_data-> get_ref_from_parent ());
48+ m_data. init_from_ref (m_data. get_ref_from_parent ());
5049 }
5150 rebuild_internal ();
5251}
@@ -111,7 +110,7 @@ void StringCompressor::expand_compression_map()
111110
112111void StringCompressor::rebuild_internal ()
113112{
114- auto num_symbols = m_data-> size ();
113+ auto num_symbols = m_data. size ();
115114 if (num_symbols == m_symbols.size ())
116115 return ;
117116 if (num_symbols < m_symbols.size ()) {
@@ -132,7 +131,7 @@ void StringCompressor::rebuild_internal()
132131 }
133132 // we have new symbols to add
134133 for (size_t i = m_symbols.size (); i < num_symbols; ++i) {
135- auto pair = m_data-> get (i);
134+ auto pair = m_data. get (i);
136135 SymbolDef def;
137136 def.id = (CompressionSymbol)(i + 256 );
138137 def.expansion_a = 0xFFFF & (pair >> 16 );
@@ -198,13 +197,13 @@ CompressedString StringCompressor::compress(StringData sd, bool learn)
198197 if (m_symbols.size () < (65536 - 256 ) && learn) {
199198 // define a new symbol for this entry and use it.
200199 REALM_ASSERT_DEBUG (m_compression_map[hash].id == 0 );
201- REALM_ASSERT_DEBUG (m_symbols.size () == m_data-> size ());
202- REALM_ASSERT_DEBUG (m_data-> is_attached ());
200+ REALM_ASSERT_DEBUG (m_symbols.size () == m_data. size ());
201+ REALM_ASSERT_DEBUG (m_data. is_attached ());
203202 CompressionSymbol id = (CompressionSymbol)(256 + m_symbols.size ());
204203 SymbolDef def{id, from[0 ], from[1 ]};
205204 m_compression_map[hash] = def;
206205 add_expansion (def);
207- m_data-> add (((uint64_t )from[0 ]) << 16 | from[1 ]);
206+ m_data. add (((uint64_t )from[0 ]) << 16 | from[1 ]);
208207 // std::cerr << id << " = {" << from[0] << ", " << from[1] << "}" << std::endl;
209208 *to++ = id;
210209 from += 2 ;
0 commit comments