940 void set(uint04 index, uint04 vector_pos,
bool value)
override { TableColumnBuffer<String>::pullValue(index).insert(vector_pos, String(value)); };
941 void set(uint04 index, uint04 vector_pos, uint01 value)
override { TableColumnBuffer<String>::pullValue(index).insert(vector_pos, String(value)); };
942 void set(uint04 index, uint04 vector_pos, uint02 value)
override { TableColumnBuffer<String>::pullValue(index).insert(vector_pos, String(value)); };
943 void set(uint04 index, uint04 vector_pos, uint04 value)
override { TableColumnBuffer<String>::pullValue(index).insert(vector_pos, String(value)); };
944 void set(uint04 index, uint04 vector_pos, uint08 value)
override { TableColumnBuffer<String>::pullValue(index).insert(vector_pos, String(value)); };
945 void set(uint04 index, uint04 vector_pos, sint01 value)
override { TableColumnBuffer<String>::pullValue(index).insert(vector_pos, String(value)); };
946 void set(uint04 index, uint04 vector_pos, sint02 value)
override { TableColumnBuffer<String>::pullValue(index).insert(vector_pos, String(value)); };
947 void set(uint04 index, uint04 vector_pos, sint04 value)
override { TableColumnBuffer<String>::pullValue(index).insert(vector_pos, String(value)); };
948 void set(uint04 index, uint04 vector_pos, sint08 value)
override { TableColumnBuffer<String>::pullValue(index).insert(vector_pos, String(value)); };
949 void set(uint04 index, uint04 vector_pos, fltp04 value)
override { TableColumnBuffer<String>::pullValue(index).insert(vector_pos, String(value)); };
950 void set(uint04 index, uint04 vector_pos, fltp08 value)
override { TableColumnBuffer<String>::pullValue(index).insert(vector_pos, String(value)); };
952 void set(uint04 index, uint04 vector_pos,
const String& value)
override { TableColumnBuffer<String>::pullValue(index).insert(vector_pos, value); };
954 void set(uint04 index,
bool value)
override { TableColumnBuffer<String>::pullValue(index) = String(value); };
955 void set(uint04 index, uint01 value)
override { TableColumnBuffer<String>::pullValue(index) = String(value); };
956 void set(uint04 index, uint02 value)
override { TableColumnBuffer<String>::pullValue(index) = String(value); };
957 void set(uint04 index, uint04 value)
override { TableColumnBuffer<String>::pullValue(index) = String(value); };
958 void set(uint04 index, uint08 value)
override { TableColumnBuffer<String>::pullValue(index) = String(value); };
959 void set(uint04 index, sint01 value)
override { TableColumnBuffer<String>::pullValue(index) = String(value); };
960 void set(uint04 index, sint02 value)
override { TableColumnBuffer<String>::pullValue(index) = String(value); };
961 void set(uint04 index, sint04 value)
override { TableColumnBuffer<String>::pullValue(index) = String(value); };
962 void set(uint04 index, sint08 value)
override { TableColumnBuffer<String>::pullValue(index) = String(value); };
963 void set(uint04 index, fltp04 value)
override { TableColumnBuffer<String>::pullValue(index) = String(value); };
964 void set(uint04 index, fltp08 value)
override { TableColumnBuffer<String>::pullValue(index) = String(value); };
965 void set(uint04 index,
const String& value)
override { TableColumnBuffer<String>::pullValue(index) = value; };
966 void set(uint04 index, RGBColor value)
override { TableColumnBuffer<String>::pullValue(index) = String(value); };
968 void get(uint04 index, uint04 vector_pos,
bool& value)
const override { value = String(&TableColumnBuffer<String>::pullValue(index)[vector_pos]).getAs<
bool>(); };
969 void get(uint04 index, uint04 vector_pos, uint01& value)
const override { value = String(&TableColumnBuffer<String>::pullValue(index)[vector_pos]).getAs<
uint01>(); };
970 void get(uint04 index, uint04 vector_pos, uint02& value)
const override { value = String(&TableColumnBuffer<String>::pullValue(index)[vector_pos]).getAs<
uint02>(); };
971 void get(uint04 index, uint04 vector_pos, uint04& value)
const override { value = String(&TableColumnBuffer<String>::pullValue(index)[vector_pos]).getAs<
uint04>(); };
972 void get(uint04 index, uint04 vector_pos, uint08& value)
const override { value = String(&TableColumnBuffer<String>::pullValue(index)[vector_pos]).getAs<
uint08>(); };
973 void get(uint04 index, uint04 vector_pos, sint01& value)
const override { value = String(&TableColumnBuffer<String>::pullValue(index)[vector_pos]).getAs<
uint01>(); };
974 void get(uint04 index, uint04 vector_pos, sint02& value)
const override { value = String(&TableColumnBuffer<String>::pullValue(index)[vector_pos]).getAs<
sint02>(); };
975 void get(uint04 index, uint04 vector_pos, sint04& value)
const override { value = String(&TableColumnBuffer<String>::pullValue(index)[vector_pos]).getAs<
sint04>(); };
976 void get(uint04 index, uint04 vector_pos, sint08& value)
const override { value = String(&TableColumnBuffer<String>::pullValue(index)[vector_pos]).getAs<
sint08>(); };
977 void get(uint04 index, uint04 vector_pos, fltp04& value)
const override { value = String(&TableColumnBuffer<String>::pullValue(index)[vector_pos]).getAs<
fltp04>(); };
978 void get(uint04 index, uint04 vector_pos, fltp08& value)
const override { value = String(&TableColumnBuffer<String>::pullValue(index)[vector_pos]).getAs<
fltp08>(); };
979 void get(uint04 index, uint04 vector_pos, String& value)
const override { value = String(&TableColumnBuffer<String>::pullValue(index)[vector_pos]); };
981 void get(uint04 index,
bool& value)
const override { value = TableColumnBuffer<String>::pullValue(index).getAs<
bool>(); };
982 void get(uint04 index, uint01& value)
const override { value = TableColumnBuffer<String>::pullValue(index).getAs<
uint01>(); };
983 void get(uint04 index, uint02& value)
const override { value = TableColumnBuffer<String>::pullValue(index).getAs<
uint02>(); };
984 void get(uint04 index, uint04& value)
const override { value = TableColumnBuffer<String>::pullValue(index).getAs<
uint04>(); };
985 void get(uint04 index, uint08& value)
const override { value = TableColumnBuffer<String>::pullValue(index).getAs<
uint08>(); };
986 void get(uint04 index, sint01& value)
const override { value = TableColumnBuffer<String>::pullValue(index).getAs<
sint01>(); };
987 void get(uint04 index, sint02& value)
const override { value = TableColumnBuffer<String>::pullValue(index).getAs<
sint02>(); };
988 void get(uint04 index, sint04& value)
const override { value = TableColumnBuffer<String>::pullValue(index).getAs<
sint04>(); };
989 void get(uint04 index, sint08& value)
const override { value = TableColumnBuffer<String>::pullValue(index).getAs<
sint08>(); };
990 void get(uint04 index, fltp04& value)
const override { value = TableColumnBuffer<String>::pullValue(index).getAs<
fltp04>(); };
991 void get(uint04 index, fltp08& value)
const override { value = TableColumnBuffer<String>::pullValue(index).getAs<
fltp08>(); };
992 void get(uint04 index, String& value)
const override { value = TableColumnBuffer<String>::pullValue(index); };
993 void get(uint04 index, RGBColor& value)
const override { value = TableColumnBuffer<String>::pullValue(index).getAs<RGBColor>(); };
995 TableColumnString* getSelected(
const Buffer<bool>& selected_indices)
const override {
UNUSED(selected_indices);
return nullptr; };
996 virtual void insertIndices(uint04 location, uint04 size)
override
998 Bounds<1, uint04> update_range = Constant<Bounds<1, uint04>>::Min;
999 for (uint04 i = 1; i < m_buffer.size(); i++)
1002 if (!
IsInvalid(value) && value >= location)
1004 m_buffer[i] = String(value + size);
1005 update_range.addToBounds(i);
1008 if (update_range != Constant<Bounds<1, uint04>>::Min)
1011 m_changes.add(TableChange(TableChange::e_update, update_range[MIN], update_range.span()));
1012 m_modified_time = Time::SystemTime();
1015 uint08 tableHash()
const override
1017 uint08 result = 2166136261U;
1018 for (
const String& s : m_buffer)
1019 result = (127 * result) ^ s.hash();
1022 virtual void removeIndices(uint04 location, uint04 size)
override
1026 Bounds<1, uint04> update_range = Constant<Bounds<1, uint04>>::Min;
1027 for (uint04 i = 1; i < m_buffer.size(); i++)
1030 if (!
IsInvalid(value) && value > location)
1032 if (value < location + size)
1033 m_buffer[i] =
"NaN";
1035 m_buffer[i] = String(value -= size);
1036 update_range.addToBounds(i);
1039 if (update_range != Constant<Bounds<1, uint04>>::Min)
1042 m_changes.add(TableChange(TableChange::e_update, update_range[MIN], update_range.span()));
1043 m_modified_time = Time::SystemTime();
1046 virtual void removeIndices(
const Buffer<uint04>& offset_lookup_list)
override
1048 UNUSED(offset_lookup_list);
1052 virtual void mapFromFile(BinaryFile& file, uint08 version_number)
override
1054 if (version_number >= 1614203273)
1056 if (version_number > 1614739690 && m_compression_object.compression_mode != e_default_compression && m_compression_object.compression_mode != e_string_reference && m_compression_object.compression_mode != e_string_compression)
1058 TableColumnBuffer<String>::mapFromFile(file, version_number);
1062 bool allow_multithreading =
false;
1063 file.readStringBuffer(m_buffer, allow_multithreading);
1068 TableColumnBuffer<String>::mapFromFile(file, version_number);
1071 void setRowSize(uint04 index, uint04 size)
override { m_buffer[index + 1].setSize(size); }
1072 [[nodiscard]]
uint04 getRowSize(uint04 index)
const override {
return m_buffer[index + 1].size(); }
1073 [[nodiscard]]
bool isSame(uint04 index,
const String& value)
const override {
return value == m_buffer[index + 1];}
1074 [[nodiscard]]
bool isSame(uint04 index,
const char* value)
const override {
return value == m_buffer[index + 1]; }
1075 [[nodiscard]]
bool contains(uint04 index,
const String& value,
bool ignore_case)
const final override {
return pullValue(index).hasSubString(value, ignore_case); }
1076 [[nodiscard]]
bool contains(uint04 index,
const char* value,
bool ignore_case)
const final override {
return pullValue(index).hasSubString(value, ignore_case); }
1077 [[nodiscard]]
bool beginsWith(uint04 index,
const String& value,
bool ignore_case)
const final override {
return pullValue(index).beginsWith(value, ignore_case); }
1078 [[nodiscard]]
bool beginsWith(uint04 index,
const char* value,
bool ignore_case)
const final override {
return pullValue(index).beginsWith(value, ignore_case); }