14 #ifndef TSA_MEM_TABLE__INCLUDED 15 #define TSA_MEM_TABLE__INCLUDED 21 #include "TSADBRecord.h" 22 #include "TSASeriesTemplate.h" 23 #include "TSAStreams.h" 24 #include "TSADataDef.h" 54 std::vector<variant*> m_records;
56 size_t m_total_num_fields;
57 mutable size_t m_cursor_position;
58 std::vector<variant> m_append_record;
59 mutable variant* m_curr_record_ptr;
60 std::vector<std::string> m_field_names;
61 std::vector<type_t> m_field_types;
62 std::vector<size_t> m_field_lengths;
63 size_t m_max_record_count;
65 static const size_t default_max_records;
67 void Deallocate(
void);
68 void Allocate(
size_t num_columns);
107 void operator= (
const table& other);
127 void size_limit(
size_t max);
133 size_t size_limit(
void)
const;
141 bool is_equal(
const mem_table& other,
double fp_allowance = 0.0);
160 variant* operator[](
size_t)
const;
163 virtual class record record(void);
166 void read(
size_t index,
class record&);
172 size_t size(
void)
const;
178 bool empty(
void)
const;
203 const variant& at(
size_t record_pos,
size_t col_pos)
const;
206 void update(
size_t record_pos,
size_t col_pos,
const variant& value);
209 date_time timestamp(
size_t record_pos)
const;
215 void delete_range(
size_t start,
size_t end);
218 void resize__drop_oldest(
size_t newSize);
221 void truncate(
const date_time& new_max_timestamp);
228 void populate_random_records(
size_t num_records);
229 void populate_random_records(
size_t num_records,
bool some_as_nil);
239 void cursor__seek(
size_t index)
const;
242 bool cursor__seek_next(
void)
const;
245 bool cursor__seek_prev(
void)
const;
248 void cursor__seek_last(
void)
const;
251 size_t cursor__position(
void)
const;
257 void cursor__read_record(
date_time& timestamp, std::vector<variant>& rec)
const;
260 const variant& cursor__at(
size_t fieldIndex)
const;
266 bool cursor__is_valid(
void)
const;
269 void cursor__set(
size_t fieldIndex,
const variant& value);
286 void populate_random_records(
size_t numRecords,
const date_time& start,
287 const duration& ts,
bool someAsNIL =
true);
291 void populate_random_ohlcv_records(
size_t numRecords,
const date_time& start,
294 void append_set(
size_t fieldIndex,
const variant& value);
295 void internal_append(
const date_time& timestamp,
297 void Append(
const date_time& appendTime);
306 void reset_column_count(
size_t num_cols);
314 void reset_column_type(
size_t column_pos,
type_t new_type,
size_t length = 5);
321 void rename_column(
size_t column_position,
const std::string& new_name);
330 void reset_column_properties(
size_t column_position,
const std::string& new_name,
type_t new_type,
size_t length = 5);
341 void add_column(
const std::string& name,
const variant& type_and_default_value,
size_t length = 5);
348 const std::string& column_name(
size_t position)
const;
355 type_t column_type(
size_t position)
const;
362 size_t column_position(
const std::string& column_name)
const;
369 bool column_exists(
const std::string& column_name)
const;
375 virtual size_t column_count(
void)
const;
383 size_t column_field_length(
size_t column_position)
const;
389 bool type_conversion_possible(
size_t fieldIndex,
type_t type);
393 bool field_index(
const std::string& fieldName,
size_t& index)
const;
398 void reset_all_values_in_column(
const std::string& column_name,
const variant& value);
401 void reset_all_values_in_column(
size_t columnIndex,
const variant& value);
412 void multiply_all_values_in_column(
size_t columnIndex,
double factor);
415 void add_to_all_values_in_column(
size_t columnIndex,
double value);
419 void fix_string_length(
void);
421 void purge_deleted_records(
void);
422 size_t last_valid_record_index(
void)
const;
423 bool test__curr_record_ptr_is_valid(
void)
const;
424 variant* get_record_ptr(
void)
const;
425 void Read(
date_time& timestamp, std::vector<variant>& InternalRecord);
426 void _ReadWithTimestampAsFirstValue(std::vector<variant>& InternalRecord);
431 void write_to(std::stringstream&)
const;
432 void read_from(std::stringstream&);
437 void print(std::ostream& stream,
size_t maxRec =
tsa::print_no_limit,
size_t FPPrecision = 7);
442 void print_record(
size_t pos, std::ostream&);
443 void print_record_header(std::ostream&);
446 virtual void osa__append(
const date_time&, std::vector<variant>&)
override;
447 virtual void osa__prepare_stream(
const std::string& sourceName,
451 virtual void cmp__evaluate_bar(
const date_time&)
override;
454 virtual void isa__set_position(
const date_time&)
override;
455 virtual bool isa__field_exists(
const std::string&)
override;
456 virtual size_t isa__field_index(
const std::string&)
override;
457 virtual type_t isa__field_type(
size_t)
override;
458 virtual size_t isa__field_count(
void)
override;
459 virtual const std::string& isa__field_name(
size_t _idx)
override;
460 virtual date_time isa__get_record_timestamp(
void)
override;
461 virtual date_time isa__begin(
void)
override;
462 virtual date_time isa__end(
void)
override;
463 virtual size_t isa__size(
void)
override;
464 virtual void isa__on_open(
void);
465 virtual variant isa__get_variant(
size_t idx)
override;
466 virtual double isa__get_double(
size_t idx)
override;
467 virtual void isa__update_value_at_position(
size_t idx)
override;
468 virtual std::string isa__stream_name(
void)
const override;
469 virtual bool isa__get_ohlc_fields_exist(
void)
override;
470 virtual void isa__get_price_bar(
const date_time&, instrument_price_bar&)
override;
471 virtual bool isa__get_time_of_next_bar(
date_time& nextDateTime,
const date_time& currentDateTime)
override;
472 virtual bool isa__implements_scheduling(
void)
const override;
474 bool verify_types_in_column(
size_t col_ndex)
const;
475 bool verify_types(
void)
const;
477 bool VerifyColumnVariantsOfType(
size_t col_index,
type_t type)
const;
478 bool VerifyColumnStringsHaveValidLength(
size_t col_index)
const;
append_flag_type
Values that represent append flag types.
Definition: TSADBRecord.h:32
Throw an exception when a duplicate timestamp is encountered. This is normally the default behaviour...
Definition: TSADBRecord.h:36
Namespace for the 'Trading System API' library.
Definition: original1.TSA3Core.cpp:20
const size_t print_no_limit
flag to print without limiting the number of lines printed.
Definition: TSATypeDef.h:78
Class for managing native timeseries database files. Extremely high speed data access.
Definition: TSADatabase.h:118
seek_result
Return value for seek operations on series tables.
Definition: TSATypeDef.h:156
Defines the columnar structure of a table. Each column has a name, data type and field size...
Definition: TSADataDef.h:88
Supports 'write', 'update', 'delete', and 'read' operations on series_base tables.
Parent class for 'in-stream adaptors'. in_stream object rely on adaptors for access to underlying dat...
Definition: TSAStreams.h:52
Abstract base class for delegates of class out_stream.
Definition: TSAStreams.h:553
variant objects can represent values of different types.
Definition: TSAVariant.h:140
Represents a duration - the difference between two date_time values.
Definition: TSATime.h:945
Replace existing target if it already exists.
Definition: TSAStreams.h:533
_value_types_type
Data type enumeration used throughout the library. Intended to be used via type_t.
Definition: TSATypeDef.h:166
Parent class for many library classes.
Definition: TSATypeDef.h:462
Class representing a database record.
Definition: TSADBRecord.h:52
A data_def object describes the structure of a table.
Represents a database table in fast::database.
Definition: TSADBTable.h:41
Class representing a gregorian-date and time-of-day combination. The time component has microsecond r...
Definition: TSATime.h:428
Represents an object to which a record object can be appended.
Definition: TSADBRecord.h:140
Class mem_table represents a memory based table. mem_table objects can be used in strategies both for...
Definition: TSAMemTable.h:48