<commit_before>#
# Obj-C reference documentation for Table class
#

# INCONSISTENCY index* (row_ndx)
# INCONSISTENCY getTable & insertSubtable
# NAMING deleteRow -> remove,  get -> getInt, set -> setInt (and ndx->row_ndx)
# MISSING lookup
# MISSING where (only possible in typed tables)

ID         : class_dyn_table
TITLE      : Table (dynamic)
SUMMARY    : *g_dyn_table_intro_summary
DESCR      : *g_dyn_table_intro_descr
SEE        :
EXAMPLES   :
- DESCR:
  CODE     : ex_obcj_dyn_table_intro
IGNORE     : []                   # List of method-ids to ignore

CATEGORIES :

- State:
  METHODS:
  - g_dyn_table_size:
      NAME     : count
      SUMMARY  : *g_dyn_table_size_summary
      DESCR    : *g_dyn_table_size_descr
      SIGNATURE: (size_t)count
      RETURN:
        TYPES  : size_t
        DESCR  : *g_dyn_table_size_summary
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_size
        DESCR  :

  - g_dyn_table_is_empty:
      NAME     : isEmpty
      SUMMARY  : *g_dyn_table_is_empty_summary
      DESCR    : *g_dyn_table_is_empty_descr
      SIGNATURE: (BOOL)isEmpty
      RETURN:
        TYPES  : BOOL
        DESCR  : *g_dyn_table_is_empty_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_is_empty
        DESCR  :

  - g_dyn_table_is_valid:
      TODO     : soon

      NAME     : isValid
      SUMMARY  : *g_dyn_table_is_valid_summary
      DESCR    : *g_dyn_table_is_valid_descr
      RETURN:
        TYPES  : BOOL
        DESCR  : *g_dyn_table_is_valid_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_is_valid
        DESCR  :


- Table:
  METHODS:
  - g_dyn_table_clear:
      NAME     : clear
      SUMMARY  : *g_dyn_table_clear_summary
      DESCR    : *g_dyn_table_clear_descr
      SIGNATURE: (void)clear
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_clear
        DESCR  :

  - g_dyn_table_optimize:
      NAME     : optimize
      SUMMARY  : *g_dyn_table_optimize_summary
      DESCR    : *g_dyn_table_optimize_descr
      SIGNATURE: (void)optimize
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_optimize
        DESCR  :

  - g_dyn_table_opertator==:
      NAME     : isEqual
      SUMMARY  : *g_dyn_table_operator_eq_summary
      DESCR    : *g_dyn_table_operator_eq_descr
      SIGNATURE: (BOOL)isEqual:(TightdbTable *)other
      PARAMS:
      - NAME   : other
        TYPES  : TightdbTable *
        DESCR  : *g_dyn_table_operator_eq_table_descr
      RETURN:
        TYPES  : BOOL
        DESCR  : g_dyn_table_operator_eq_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_operator==
        DESCR  :

  - g_dyn_table_opertator!=:
      TODO     : soon    

      NAME     : is???Equal
      SUMMARY  : *g_dyn_table_operator_neq_summary
      DESCR    : *g_dyn_table_operator_neq_descr
      SIGNATURE: (BOOL)isEqual:(TightdbTable *)other
      PARAMS:
      - NAME   : other
        TYPES  : TightdbTable *
        DESCR  : *g_dyn_table_operator_eq_table_descr
      RETURN:
        TYPES  : BOOL
        DESCR  : g_dyn_table_operator_eq_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_operator==
        DESCR  :


- Columns:
  METHODS:
  - g_dyn_table_add_column:
      TODO     : later
  - g_dyn_table_remove_column:
      TODO     : later
  - g_dyn_table_rename_column:
      TODO     : later

  
  - g_dyn_table_get_column_count:
      NAME     : getColumnCount
      SUMMARY  : *g_dyn_table_get_column_count_summary
      DESCR    : *g_dyn_table_get_column_count_descr
      SIGNATURE: (size_t)getColumnCount
      RETURN:
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_column_count_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_get_column_count
        DESCR  :
 
  - g_dyn_table_get_column_name:
      NAME     : getColumnName
      SUMMARY  : *g_dyn_table_get_column_name_summary
      DESCR    : *g_dyn_table_get_column_name_descr
      SIGNATURE: (NSString *)getColumnName:(size_t)ndx
      PARAMS:
      - NAME   : ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_column_name_param1_descr
      RETURN:
        TYPES  : NSString *
        DESCR  : *g_dyn_table_get_column_name_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_get_column_name
        DESCR  :

  - g_dyn_table_get_column_index:
      NAME     : getColumnIndex
      SUMMARY  : *g_dyn_table_get_column_index_summary
      DESCR    : *g_dyn_table_get_column_index_descr
      SIGNATURE: (size_t)getColumnIndex:(NSString *)name
      CONST    : True
      PARAMS:
      - NAME   : name
        TYPES  : NSString *
        DESCR  : *g_dyn_table_name_of_column_descr
      RETURN:
        TYPES  : size_t
        DESCR  : The column index or <code>size_t(-1)</code> if there is no column with the specified name.
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_get_column_index
        DESCR  :
 
  - g_dyn_table_get_column_type:
      NAME     : getColumnType
      SUMMARY  : *g_dyn_table_get_column_type_summary
      DESCR    :
      - TEXT   : *g_dyn_table_get_column_type_descr1
      - TEXT   : >
                 <ul>
                   <li><code>tightdb_Bool</code></li>
                   <li><code>tightdb_Int</code></li>
                   <li><code>tightdb_Float</code></li>
                   <li><code>tightdb_Double</code></li>
                   <li><code>tightdb_String</code></li>
                   <li><code>tightdb_Binary</code></li>
                   <li><code>tightdb_Table</code></li>
                   <li><code>tightdb_Date</code></li>
                   <li><code>tightdb_Mixed</code></li>
                 </ul>
      SIGNATURE: (TightdbType)getColumnType:(size_t)ndx
      PARAMS:
      - NAME   : ndx
        TYPES  : size_t
        DESCR  : g_dyn_table_get_column_type_parm1_descr
      RETURN:
        TYPES  : DataType
        DESCR  : *g_dyn_table_get_column_type_return1_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_get_column_type
        DESCR  :

  - g_dyn_table_add_int:
      TODO     : later


- Rows:
  METHODS:
  - g_dyn_table_add_empty_row:
      NAME     : addRow
      SUMMARY  : *g_dyn_table_add_empty_row_summary
      DESCR    : *g_dyn_table_add_empty_row_descr
      SIGNATURE: (size_t)addRow
      PARAMS:
      - NAME   : num_rows
        TYPES  : size_t
        DESCR  : *g_dyn_table_add_empty_row_parm1_descr

  - g_dyn_table_insert_empty_row:
      TODO     : soon

      NAME     : insertRow 
      SUMMARY  : *g_dyn_table_insert_empty_row_summary
      DESCR    : *g_dyn_table_insert_empty_row_descr
      SIGNATURE: void insert_empty_row(size_t row_ndx, size_t num_rows = 1)
      PARAMS:
      - NAME   : row_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_insert_empty_row_parm1_descr
      - NAME   : num_rows
        TYPES  : size_t
        DESCR  : *g_dyn_table_insert_empty_row_parm2_descr

# TODO: Should this be supported at all?
  - g_dyn_table_insert_bool:
      NAME     : insertBool
  - g_dyn_table_insert_int:
      NAME     : insertInt
  - g_dyn_table_insert_enum:
      INGORED  : "" 
  - g_dyn_table_insert_date:
      NAME     : insertDate
  - g_dyn_table_insert_string:
      NAME     : insertString
  - g_dyn_table_insert_binary:
      NAME     : insertBinary
  - g_dyn_table_insert_mixed:
      NAME     : insertMixed
  - g_dyn_table_insert_subtable:
      NAME     : insertSubtable
  - g_dyn_table_insert_done:
      NAME     : insertDone

      TITLE    : insert*
      SUMMARY  : *g_dyn_table_insert_xxx_summary
      DESCR    : *g_dyn_table_insert_xxx_descr
      SIGNATURE: |
                 (void)insertBool:(size_t)col_ndx ndx:(size_t)ndx value:(BOOL)value
                 (void)insertInt:(size_t)col_ndx ndx:(size_t)ndx value:(int64_t)value
                 (void)insertFloat:(size_t)col_ndx ndx:(size_t)ndx value:(float)value
                 (void)insertDouble:(size_t)col_ndx ndx:(size_t)ndx value:(double)value
                 (void)insertDate:(size_t)col_ndx ndx:(size_t)ndx value:(time_t)value
                 (void)insertString:(size_t)col_ndx ndx:(size_t)ndx value:(NSString *)value
                 (void)insertBinary:(size_t)col_ndx ndx:(size_t)ndx value:(TightdbBinary *)value
                 (void)insertBinary:(size_t)col_ndx ndx:(size_t)ndx data:(const char *)data size:(size_t)size
                 (void)insertMixed:(size_t)col_ndx ndx:(size_t)row_ndx value:(TightdbMixed *)value
                 (void)insertSubtable:(size_t)col_ndx ndx:(size_t)row_ndx
                 (void)insertDone
#TODO: does insertBinary with direct char*/size exist?
      PARAMS:
      - NAME   : ndx, row_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_insert_parm1_descr
      - NAME   : ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_insert_parm2_descr
      - NAME   : value
        TYPES  : [BOOL, int64_t, float, double, time_t, NSString*, TightdbBinary*, const char*, TightdbMixed*]
        DESCR  : *g_dyn_table_insert_parm3_descr
      - NAME   : data
        TYPES  : const char *
        DESCR  : &g_dyn_table_insert_xxx_parm4_descr
                 Pointer to start of binary data.
      - NAME   : size
        TYPES  : size_t
        DESCR  : &g_dyn_table_insert_xxx_parm5_descr
                 Size in bytes of binary data.
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_insert_xxx
        DESCR  :
      SEE      : "For a safe way to insert rows, use {@link g_dyn_table_insert_empty_row}, and then set individual values in the columns."

  - g_dyn_table_remove_row:
      NAME     : remove
      SUMMARY  : *g_dyn_table_remove_row_summary
      DESCR    : *g_dyn_table_remove_row_descr
      SIGNATURE: (void)remove:(size_t)ndx
      PARAMS:
      - NAME   : ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_remove_row_param1_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_remove
        DESCR  :
 
  - g_dyn_table_remove_last_row:
      NAME     : removeLast
      SUMMARY  : *g_dyn_table_remove_last_row_summary
      DESCR    : *g_dyn_table_remove_last_row_descr
      SIGNATURE: (void)removeLast
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_remove_last_row
        DESCR  :

- Values:
  METHODS:
  - g_dyn_table_get_subtable_const:
      IGNORE   : ""
  - g_dyn_table_get_bool:
      NAME     : getBool
  - g_dyn_table_get_int:
      NAME     : get
#TODO: rename to getInt
  - g_dyn_table_get_float:
      NAME     : getFloat
  - g_dyn_table_get_double:
      NAME     : getDouble
  - g_dyn_table_get_date:
      NAME     : getDate
  - g_dyn_table_get_string:
      NAME     : getString
  - g_dyn_table_get_binary:
      NAME     : getBinary
  - g_dyn_table_get_mixed:
      NAME     : getMixed
  - g_dyn_table_get_mixed_type:
      NAME     : getMixedType
  - g_dyn_table_get_subtable:
      NAME     : getSubtable

      TITLE    : get*
      SUMMARY  : *g_dyn_table_get_xxx_summary
      DESCR    : *g_dyn_table_get_xxx_descr
      SIGNATURE: |
                 (BOOL)getBool:(size_t)col_ndx ndx:(size_t)ndx
                 (int64_t)get:(size_t)col_ndx ndx:(size_t)ndx
                 (float)getFloat:(size_t)col_ndx ndx:(size_t)ndx
                 (double)getDouble:(size_t)col_ndx ndx:(size_t)ndx
                 (time_t)getDate:(size_t)col_ndx ndx:(size_t)ndx
                 (NSString *)getString:(size_t)col_ndx ndx:(size_t)ndx
                 (TightdbBinary *)getBinary:(size_t)col_ndx ndx:(size_t)ndx
                 (TightdbMixed *)getMixed:(size_t)col_ndx ndx:(size_t)row_ndx
                 (TightdbType)getMixedType:(size_t)col_ndx ndx:(size_t)row_ndx

                 (TightdbTable *)getSubtable:(size_t)col_ndx ndx:(size_t)ndx
                 (id)getSubtable:(size_t)col_ndx ndx:(size_t)ndx withClass:(__unsafe_unretained Class)classObj
#TODO: What's the last method about?

      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm1_descr
      - NAME   : row_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm2_descr
      RETURN:
        TYPES  : [BOOL, int64_t, float, double, time_t, NSString*, TightdbBinary*, 
                  TightdbMixed*, TightdbType, TightdbTable*]
        DESCR  : *g_dyn_table_get_xxx_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_get_xxx
        DESCR  :

  - g_dyn_table_set_bool:
      NAME     : setBool
  - g_dyn_table_set_int:
      NAME     : set
#TODO: Rename to setInt
  - g_dyn_table_set_float:
      NAME     : setFloat
  - g_dyn_table_set_double:
      NAME     : setDouble
  - g_dyn_table_set_enum:
      IGNORE   : ""
  - g_dyn_table_set_date:
      NAME     : setDate
  - g_dyn_table_set_string:
      NAME     : setString
  - g_dyn_table_set_binary:
      NAME     : setBinary
  - g_dyn_table_set_binary_2:
      NAME     : setBinary
  - g_dyn_table_set_mixed:
      NAME     : setMixed

      TITLE    : set*
      SUMMARY  : *g_dyn_table_set_xxx_summary
      DESCR    : *g_dyn_table_set_xxx_descr
      SIGNATURE: |
                 (void)setBool:(size_t)col_ndx ndx:(size_t)ndx value:(BOOL)value
                 (void)set:(size_t)col_ndx ndx:(size_t)ndx value:(int64_t)value
                 (void)setFloat:(size_t)col_ndx ndx:(size_t)ndx value:(float)value
                 (void)setDouble:(size_t)col_ndx ndx:(size_t)ndx value:(double)value
                 (void)setDate:(size_t)col_ndx ndx:(size_t)ndx value:(time_t)value
                 (void)setString:(size_t)col_ndx ndx:(size_t)ndx value:(NSString *)value
                 (void)setBinary:(size_t)col_ndx ndx:(size_t)ndx value:(TightdbBinary *)value
                 (void)setBinary:(size_t)col_ndx ndx:(size_t)ndx data:(const char *)data size:(size_t)size
                 (void)setMixed:(size_t)col_ndx ndx:(size_t)row_ndx value:(TightdbMixed *)value
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm1_descr
      - NAME   : row_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm2_descr
      - NAME   : value
        TYPES  : [BOOL, int64_t, float, double, time_t, NSString*, TightdbBinary*, 
                  const char*, size_t, TightdbMixed*]
        DESCR  : *g_dyn_table_set_xxx_parm3_descr
      - NAME   : data
        TYPES  : const char *
        DESCR  : *g_dyn_table_insert_xxx_parm4_descr
      - NAME   : size
        TYPES  : size_t
        DESCR  : *g_dyn_table_insert_xxx_parm5_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_set_xxx
        DESCR  :

- Sub-tables:
  METHODS:
  - g_dyn_table_get_subtable_size:
      NAME     : getTableSize
      SUMMARY  : *g_dyn_table_get_subtable_size_summary
      DESCR    : *g_dyn_table_get_subtable_size_descr
      SIGNATURE: (size_t)getTableSize:(size_t)col_ndx ndx:(size_t)row_ndx
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm1_descr
      - NAME   : row_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm2_descr
      RETURN:
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_subtable_size_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_get_subtable
        DESCR  :

  - g_dyn_table_clear_subtable:
      NAME     : clearSubtable
      SUMMARY  : *g_dyn_table_clear_subtable_summary
      DESCR    : *g_dyn_table_clear_subtable_descr
      SIGNATURE: (void)clearSubtable:(size_t)col_ndx ndx:(size_t)row_ndx
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm1_descr
      - NAME   : row_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm2_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_clear_subtable
        DESCR  :


- Indexes:
  METHODS:
  - g_dyn_table_set_index:
      NAME     : setIndex
      SUMMARY  : *g_dyn_table_set_index_summary
      DESCR    : *g_dyn_table_set_index_descr
      SIGNATURE: (void)setIndex:(size_t)col_ndx
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm1_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_set_index
        DESCR  :
        
  - g_dyn_table_has_index:
      NAME     : hasIndex
      SUMMARY  : *g_dyn_table_has_index_summary
      DESCR    : *g_dyn_table_has_index_descr
      SIGNATURE: (BOOL)hasIndex:(size_t)col_ndx
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm1_descr
      RETURN:
        TYPES  : BOOL
        DESCR  : *g_dyn_table_has_index_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_has_index
        DESCR  :
        
        
- Searching:
  METHODS:
  - g_dyn_table_lookup:
      TODO     : soon

      NAME     : lookup
      SUMMARY  : *g_dyn_table_lookup_summary
      DESCR    : *g_dyn_table_lookup_descr
      SIGNATURE:
      PARAMS:
      - NAME   : value
        TYPES  : NSString
        DESCR  : *g_dyn_table_lookup_parm1_descr
      RETURN:
        TYPES  : size_t
        DESCR  : "The row index or <code>tightdb::not_found</code> (equal to <code>size_t(-1)</code>) if there is no match."
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_lookup
        DESCR  :

  - g_dyn_table_find_first_bool:
      NAME     : findBool
  - g_dyn_table_find_first_int:
      NAME     : findInt
  - g_dyn_table_find_first_float:
      NAME     : findFloat
  - g_dyn_table_find_first_double:
      NAME     : findDouble
  - g_dyn_table_find_first_date:
      NAME     : findDate
  - g_dyn_table_find_first_string:
      NAME     : findString
  - g_dyn_table_find_first_binary:
      NAME     : findBinary

# TODO: change name to findFirst* ?

      TITLE    : find*
      SUMMARY  : Find first matching row.
      DESCR    : The method finds the first occurence of a given value in a column.
      SIGNATURE: |
                 (size_t)findBool:(size_t)col_ndx value:(BOOL)value
                 (size_t)findInt:(size_t)col_ndx value:(int64_t)value
                 (size_t)findFloat:(size_t)col_ndx value:(float)value
                 (size_t)findDouble:(size_t)col_ndx value:(double)value
                 (size_t)findDate:(size_t)col_ndx value:(time_t)value
                 (size_t)findString:(size_t)col_ndx value:(NSString *)value
                 (size_t)findBinary:(size_t)col_ndx value:(TightdbBinary *)value
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_find_first_xxx_parm1_descr
      - NAME   : value
        TYPES  : [BOOL, int64_t, float, double, time_t, const char*]
        DESCR  : *g_dyn_table_find_first_xxx_parm2_descr
      RETURN:
        TYPES  : size_t
#TODO: is that the same in objc?
        DESCR  : "The row index or <code>tightdb::not_found</code> (equal to <code>std::size_t(-1)</code>) if there is no match."
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_find_first_xxx
        DESCR  :

  - g_dyn_table_find_all_bool_const:
      IGNORE   : ""
  - g_dyn_table_find_all_int_const:
      IGNORE   : ""
  - g_dyn_table_find_all_date_const:
      IGNORE   : ""
  - g_dyn_table_find_all_string_const:
      IGNORE   : ""
  - g_dyn_table_find_all_float_const:
      IGNORE   : ""
  - g_dyn_table_find_all_double_const:
      IGNORE   : ""

  - g_dyn_table_find_all_bool:
      TODO     : soon
  - g_dyn_table_find_all_date:
      TODO     : soon
  - g_dyn_table_find_all_string:
      TODO     : soon
  - g_dyn_table_find_all_float:
      TODO     : soon
  - g_dyn_table_find_all_double:
      TODO     : soon
  - g_dyn_table_find_all_int:
      NAMES    : findAll
      TITLE    : findAll*
      SUMMARY  : *g_dyn_table_find_all_xxx_summary
      DESCR    : >
                 The method finds all occurences of a given value in a specific column.
                 The rows are returned as a {@link class_dyn_tableview} object.
      SIGNATURE: |
                 (TightdbView *)findAll:(TightdbView *)view column:(size_t)col_ndx value:(int64_t)value
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_find_all_xxx_parm1_descr
      - NAME   : value
        TYPES  : [BOOL, int64_t, float, double, time_t, NSString]
        DESCR  : *g_dyn_table_find_all_xxx_parm2_descr
      RETURN:
        TYPES  : TightdbView *
        DESCR  : *g_dyn_table_find_all_xxx_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_find_all_xxx
        DESCR  :

  - g_dyn_table_find_sorted_int:
      TODO     : later


  - g_dyn_table_get_sorted_view_const:
      IGNORE   : ""
  - g_dyn_table_get_sorted_view:
      TODO     : later

      NAME     : getSortedView
      SUMMARY  : *g_dyn_table_get_sorted_view_summary
      DESCR    : *g_dyn_table_get_sorted_view_desc
      SIGNATURE: TableView get_sorted_view(size_t column_ndx, bool ascending=true);
      PARAMS:
      - NAME   : column_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_sorted_view_parm1_descr
      - NAME   : ascending
        TYPES  : BOOL
        DESCR  : *cpp_dyn_table_get_sorted_view_parm2_descr
      RETURN:
        TYPES  : TightdbView *
        DESCR  : *g_dyn_table_get_sorted_view_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_get_sorted_view
        DESCR  :

  - g_dyn_table_distinct_const:
      IGNORE   : ""
  - g_dyn_table_distinct:
      TODO     : later

      NAMES    : distinct
      SUMMARY  : *g_dyn_table_distinct_summary
      DESCR    : *g_dyn_table_distinct_desc
      SIGNATURE: TableView distinct(size_t column_ndx);
      PARAMS:
      - NAME   : column_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_distinct_parm1_desc
      RETURN:
        TYPES  : TableView
        DESCR  : *g_dyn_table_distinct_return_desc
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_distinct
        DESCR  :

  - g_dyn_table_where_const:
      IGNORE   : ""
  - g_dyn_table_where:
      TODO     : later
      
      NAME     : where
      SIGNATURE: Query where()
      SUMMARY  : *g_dyn_table_where_summary
      DESCR    : *g_dyn_table_where_descr
      RETURN:
        TYPES  : Query
        DESCR  : *g_dyn_table_where_return_descr
      EXAMPLES:
      - DESCR  :
        CODE   : ex_objc_dyn_table_where


- Aggregates:
  METHODS:
  - g_dyn_table_count_int:
      NAME     : countInt
  - g_dyn_table_count_float:
      NAME     : countFloat
  - g_dyn_table_count_double:
      NAME     : countDouble
  - g_dyn_table_count_string:
      NAME     : countString
      TITLE    : count*
      SUMMARY  : *g_dyn_table_count_summary
      DESCR    : *g_dyn_table_count_descr
      SIGNATURE: |
                 (size_t)countInt:(size_t)col_ndx target:(int64_t)target
                 (size_t)countFloat:(size_t)col_ndx target:(float)target
                 (size_t)countDouble:(size_t)col_ndx target:(double)target
                 (size_t)countString:(size_t)col_ndx target:(NSString *)target
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_count_parm1_descr
      - NAME   : target
        TYPES  : int64_t
        DESCR  : *g_dyn_table_count_parm2_descr
      RETURN:
        TYPES  : size_t
        DESCR  : *g_dyn_table_count_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_count
        DESCR  :

  - g_dyn_table_sum_int:
  - g_dyn_table_sum_float:
  - g_dyn_table_sum_double:
      NAMES    : [sumInt, sumFloat, sumDouble]
      TITLE    : sum*
      SUMMARY  : *g_dyn_table_sum_summary
      DESCR    : *g_dyn_table_sum_descr
      SIGNATURE: |
                 (int64_t)sumInt:(size_t)col_ndx
                 (double)sumFloat:(size_t)col_ndx
                 (double)sumDouble:(size_t)col_ndx
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_sum_parm1_descr
      RETURN:
        TYPES  : [int64_t, double]
        DESCR  : *g_dyn_table_sum_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_sum
        DESCR  :

  - g_dyn_table_maximum_int:
  - g_dyn_table_maximum_float:
  - g_dyn_table_maximum_double:
      NAMES    : [maxInt, maxFloat, maximumDouble]
      TITLE    : max*
      SUMMARY  : *g_dyn_table_maximum_summary
      DESCR    : *g_dyn_table_maximum_descr
      SIGNATURE: |
                 (int64_t)maxInt:(size_t)col_ndx
                 (float)maxFloat:(size_t)col_ndx
                 (double)maxDouble:(size_t)col_ndx
      CONST    : True
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : Column index.
      RETURN:
        TYPES  : [int64_t, float, double]
        DESCR  : The maximum value.
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_maximum
        DESCR  :
        
  - g_dyn_table_minimum_int:
  - g_dyn_table_minimum_float:
  - g_dyn_table_minimum_double:
      NAMES    : [minInt, minimumFloat, minimumDouble]
      TITLE    : min*
      SUMMARY  : *g_dyn_table_minimum_summary
      DESCR    : *g_dyn_table_minimum_descr
      SIGNATURE: |
                 (int64_t)minInt:(size_t)col_ndx
                 (float)minFloat:(size_t)col_ndx
                 (double)minDouble:(size_t)col_ndx
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_maximum_parm1_descr
      RETURN:
        TYPES  : [int64_t, float, double]
        DESCR  : *g_dyn_table_minimum_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_minimum
        DESCR  :

  - g_dyn_table_average_int:
  - g_dyn_table_average_float:
  - g_dyn_table_average_double:
      NAMES    : [avgInt, averageFloat, averageDouble]
      SUMMARY  : *g_dyn_table_average_summary
      DESCR    : *g_dyn_table_average_descr
      SIGNATURE: |
                 (double)avgInt:(size_t)col_ndx
                 (double)avgFloat:(size_t)col_ndx
                 (double)avgDouble:(size_t)col_ndx
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_maximum_parm1_descr
      RETURN:
        TYPES  : double
        DESCR  : *g_dyn_table_average_return1_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_average
        DESCR  :
        
        
- Dump:
  METHODS:
  - g_dyn_table_to_json:
      TODO     : later

      NAMES    : toJSON
      SUMMARY  : *g_dyn_table_to_json_summary
      DESCR    : *g_dyn_table_to_json_descr
      PARAMS:
      - NAME   : out
        TYPES  : std::ostream&
        DESCR  : Output stream.
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_to_json
        DESCR  :

  - g_dyn_table_to_string:
      TODO     : later

      NAMES    : toString
      SUMMARY  : *g_dyn_table_to_string_summary
      DESCR    : *g_dyn_table_to_string_descr
      PARAMS:
      - NAME   : out
        TYPES  : std::ostream&
        DESCR  : Output stream.
      - NAME   : limit
        TYPES  : size_t
        DESCR  : *g_dyn_table_to_string_parm2_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_to_string
        DESCR  :

  - g_dyn_table_row_to_string:
      TODO     : later
<commit_msg>is_valid -> is_attached<commit_after>#
# Obj-C reference documentation for Table class
#

# INCONSISTENCY index* (row_ndx)
# INCONSISTENCY getTable & insertSubtable
# NAMING deleteRow -> remove,  get -> getInt, set -> setInt (and ndx->row_ndx)
# MISSING lookup
# MISSING where (only possible in typed tables)

ID         : class_dyn_table
TITLE      : Table (dynamic)
SUMMARY    : *g_dyn_table_intro_summary
DESCR      : *g_dyn_table_intro_descr
SEE        :
EXAMPLES   :
- DESCR:
  CODE     : ex_obcj_dyn_table_intro
IGNORE     : []                   # List of method-ids to ignore

CATEGORIES :

- State:
  METHODS:
  - g_dyn_table_size:
      NAME     : count
      SUMMARY  : *g_dyn_table_size_summary
      DESCR    : *g_dyn_table_size_descr
      SIGNATURE: (size_t)count
      RETURN:
        TYPES  : size_t
        DESCR  : *g_dyn_table_size_summary
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_size
        DESCR  :

  - g_dyn_table_is_empty:
      NAME     : isEmpty
      SUMMARY  : *g_dyn_table_is_empty_summary
      DESCR    : *g_dyn_table_is_empty_descr
      SIGNATURE: (BOOL)isEmpty
      RETURN:
        TYPES  : BOOL
        DESCR  : *g_dyn_table_is_empty_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_is_empty
        DESCR  :

  - g_dyn_table_is_valid:
      TODO     : soon

      NAME     : isValid
      SUMMARY  : *g_dyn_table_is_attached_summary
      DESCR    : *g_dyn_table_is_attached_descr
      RETURN:
        TYPES  : BOOL
        DESCR  : *g_dyn_table_is_attached_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_is_attached
        DESCR  :


- Table:
  METHODS:
  - g_dyn_table_clear:
      NAME     : clear
      SUMMARY  : *g_dyn_table_clear_summary
      DESCR    : *g_dyn_table_clear_descr
      SIGNATURE: (void)clear
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_clear
        DESCR  :

  - g_dyn_table_optimize:
      NAME     : optimize
      SUMMARY  : *g_dyn_table_optimize_summary
      DESCR    : *g_dyn_table_optimize_descr
      SIGNATURE: (void)optimize
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_optimize
        DESCR  :

  - g_dyn_table_opertator==:
      NAME     : isEqual
      SUMMARY  : *g_dyn_table_operator_eq_summary
      DESCR    : *g_dyn_table_operator_eq_descr
      SIGNATURE: (BOOL)isEqual:(TightdbTable *)other
      PARAMS:
      - NAME   : other
        TYPES  : TightdbTable *
        DESCR  : *g_dyn_table_operator_eq_table_descr
      RETURN:
        TYPES  : BOOL
        DESCR  : g_dyn_table_operator_eq_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_operator==
        DESCR  :

  - g_dyn_table_opertator!=:
      TODO     : soon    

      NAME     : is???Equal
      SUMMARY  : *g_dyn_table_operator_neq_summary
      DESCR    : *g_dyn_table_operator_neq_descr
      SIGNATURE: (BOOL)isEqual:(TightdbTable *)other
      PARAMS:
      - NAME   : other
        TYPES  : TightdbTable *
        DESCR  : *g_dyn_table_operator_eq_table_descr
      RETURN:
        TYPES  : BOOL
        DESCR  : g_dyn_table_operator_eq_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_operator==
        DESCR  :


- Columns:
  METHODS:
  - g_dyn_table_add_column:
      TODO     : later
  - g_dyn_table_remove_column:
      TODO     : later
  - g_dyn_table_rename_column:
      TODO     : later

  
  - g_dyn_table_get_column_count:
      NAME     : getColumnCount
      SUMMARY  : *g_dyn_table_get_column_count_summary
      DESCR    : *g_dyn_table_get_column_count_descr
      SIGNATURE: (size_t)getColumnCount
      RETURN:
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_column_count_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_get_column_count
        DESCR  :
 
  - g_dyn_table_get_column_name:
      NAME     : getColumnName
      SUMMARY  : *g_dyn_table_get_column_name_summary
      DESCR    : *g_dyn_table_get_column_name_descr
      SIGNATURE: (NSString *)getColumnName:(size_t)ndx
      PARAMS:
      - NAME   : ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_column_name_param1_descr
      RETURN:
        TYPES  : NSString *
        DESCR  : *g_dyn_table_get_column_name_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_get_column_name
        DESCR  :

  - g_dyn_table_get_column_index:
      NAME     : getColumnIndex
      SUMMARY  : *g_dyn_table_get_column_index_summary
      DESCR    : *g_dyn_table_get_column_index_descr
      SIGNATURE: (size_t)getColumnIndex:(NSString *)name
      CONST    : True
      PARAMS:
      - NAME   : name
        TYPES  : NSString *
        DESCR  : *g_dyn_table_name_of_column_descr
      RETURN:
        TYPES  : size_t
        DESCR  : The column index or <code>size_t(-1)</code> if there is no column with the specified name.
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_get_column_index
        DESCR  :
 
  - g_dyn_table_get_column_type:
      NAME     : getColumnType
      SUMMARY  : *g_dyn_table_get_column_type_summary
      DESCR    :
      - TEXT   : *g_dyn_table_get_column_type_descr1
      - TEXT   : >
                 <ul>
                   <li><code>tightdb_Bool</code></li>
                   <li><code>tightdb_Int</code></li>
                   <li><code>tightdb_Float</code></li>
                   <li><code>tightdb_Double</code></li>
                   <li><code>tightdb_String</code></li>
                   <li><code>tightdb_Binary</code></li>
                   <li><code>tightdb_Table</code></li>
                   <li><code>tightdb_Date</code></li>
                   <li><code>tightdb_Mixed</code></li>
                 </ul>
      SIGNATURE: (TightdbType)getColumnType:(size_t)ndx
      PARAMS:
      - NAME   : ndx
        TYPES  : size_t
        DESCR  : g_dyn_table_get_column_type_parm1_descr
      RETURN:
        TYPES  : DataType
        DESCR  : *g_dyn_table_get_column_type_return1_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_get_column_type
        DESCR  :

  - g_dyn_table_add_int:
      TODO     : later


- Rows:
  METHODS:
  - g_dyn_table_add_empty_row:
      NAME     : addRow
      SUMMARY  : *g_dyn_table_add_empty_row_summary
      DESCR    : *g_dyn_table_add_empty_row_descr
      SIGNATURE: (size_t)addRow
      PARAMS:
      - NAME   : num_rows
        TYPES  : size_t
        DESCR  : *g_dyn_table_add_empty_row_parm1_descr

  - g_dyn_table_insert_empty_row:
      TODO     : soon

      NAME     : insertRow 
      SUMMARY  : *g_dyn_table_insert_empty_row_summary
      DESCR    : *g_dyn_table_insert_empty_row_descr
      SIGNATURE: void insert_empty_row(size_t row_ndx, size_t num_rows = 1)
      PARAMS:
      - NAME   : row_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_insert_empty_row_parm1_descr
      - NAME   : num_rows
        TYPES  : size_t
        DESCR  : *g_dyn_table_insert_empty_row_parm2_descr

# TODO: Should this be supported at all?
  - g_dyn_table_insert_bool:
      NAME     : insertBool
  - g_dyn_table_insert_int:
      NAME     : insertInt
  - g_dyn_table_insert_enum:
      INGORED  : "" 
  - g_dyn_table_insert_date:
      NAME     : insertDate
  - g_dyn_table_insert_string:
      NAME     : insertString
  - g_dyn_table_insert_binary:
      NAME     : insertBinary
  - g_dyn_table_insert_mixed:
      NAME     : insertMixed
  - g_dyn_table_insert_subtable:
      NAME     : insertSubtable
  - g_dyn_table_insert_done:
      NAME     : insertDone

      TITLE    : insert*
      SUMMARY  : *g_dyn_table_insert_xxx_summary
      DESCR    : *g_dyn_table_insert_xxx_descr
      SIGNATURE: |
                 (void)insertBool:(size_t)col_ndx ndx:(size_t)ndx value:(BOOL)value
                 (void)insertInt:(size_t)col_ndx ndx:(size_t)ndx value:(int64_t)value
                 (void)insertFloat:(size_t)col_ndx ndx:(size_t)ndx value:(float)value
                 (void)insertDouble:(size_t)col_ndx ndx:(size_t)ndx value:(double)value
                 (void)insertDate:(size_t)col_ndx ndx:(size_t)ndx value:(time_t)value
                 (void)insertString:(size_t)col_ndx ndx:(size_t)ndx value:(NSString *)value
                 (void)insertBinary:(size_t)col_ndx ndx:(size_t)ndx value:(TightdbBinary *)value
                 (void)insertBinary:(size_t)col_ndx ndx:(size_t)ndx data:(const char *)data size:(size_t)size
                 (void)insertMixed:(size_t)col_ndx ndx:(size_t)row_ndx value:(TightdbMixed *)value
                 (void)insertSubtable:(size_t)col_ndx ndx:(size_t)row_ndx
                 (void)insertDone
#TODO: does insertBinary with direct char*/size exist?
      PARAMS:
      - NAME   : ndx, row_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_insert_parm1_descr
      - NAME   : ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_insert_parm2_descr
      - NAME   : value
        TYPES  : [BOOL, int64_t, float, double, time_t, NSString*, TightdbBinary*, const char*, TightdbMixed*]
        DESCR  : *g_dyn_table_insert_parm3_descr
      - NAME   : data
        TYPES  : const char *
        DESCR  : &g_dyn_table_insert_xxx_parm4_descr
                 Pointer to start of binary data.
      - NAME   : size
        TYPES  : size_t
        DESCR  : &g_dyn_table_insert_xxx_parm5_descr
                 Size in bytes of binary data.
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_insert_xxx
        DESCR  :
      SEE      : "For a safe way to insert rows, use {@link g_dyn_table_insert_empty_row}, and then set individual values in the columns."

  - g_dyn_table_remove_row:
      NAME     : remove
      SUMMARY  : *g_dyn_table_remove_row_summary
      DESCR    : *g_dyn_table_remove_row_descr
      SIGNATURE: (void)remove:(size_t)ndx
      PARAMS:
      - NAME   : ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_remove_row_param1_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_remove
        DESCR  :
 
  - g_dyn_table_remove_last_row:
      NAME     : removeLast
      SUMMARY  : *g_dyn_table_remove_last_row_summary
      DESCR    : *g_dyn_table_remove_last_row_descr
      SIGNATURE: (void)removeLast
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_remove_last_row
        DESCR  :

- Values:
  METHODS:
  - g_dyn_table_get_subtable_const:
      IGNORE   : ""
  - g_dyn_table_get_bool:
      NAME     : getBool
  - g_dyn_table_get_int:
      NAME     : get
#TODO: rename to getInt
  - g_dyn_table_get_float:
      NAME     : getFloat
  - g_dyn_table_get_double:
      NAME     : getDouble
  - g_dyn_table_get_date:
      NAME     : getDate
  - g_dyn_table_get_string:
      NAME     : getString
  - g_dyn_table_get_binary:
      NAME     : getBinary
  - g_dyn_table_get_mixed:
      NAME     : getMixed
  - g_dyn_table_get_mixed_type:
      NAME     : getMixedType
  - g_dyn_table_get_subtable:
      NAME     : getSubtable

      TITLE    : get*
      SUMMARY  : *g_dyn_table_get_xxx_summary
      DESCR    : *g_dyn_table_get_xxx_descr
      SIGNATURE: |
                 (BOOL)getBool:(size_t)col_ndx ndx:(size_t)ndx
                 (int64_t)get:(size_t)col_ndx ndx:(size_t)ndx
                 (float)getFloat:(size_t)col_ndx ndx:(size_t)ndx
                 (double)getDouble:(size_t)col_ndx ndx:(size_t)ndx
                 (time_t)getDate:(size_t)col_ndx ndx:(size_t)ndx
                 (NSString *)getString:(size_t)col_ndx ndx:(size_t)ndx
                 (TightdbBinary *)getBinary:(size_t)col_ndx ndx:(size_t)ndx
                 (TightdbMixed *)getMixed:(size_t)col_ndx ndx:(size_t)row_ndx
                 (TightdbType)getMixedType:(size_t)col_ndx ndx:(size_t)row_ndx

                 (TightdbTable *)getSubtable:(size_t)col_ndx ndx:(size_t)ndx
                 (id)getSubtable:(size_t)col_ndx ndx:(size_t)ndx withClass:(__unsafe_unretained Class)classObj
#TODO: What's the last method about?

      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm1_descr
      - NAME   : row_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm2_descr
      RETURN:
        TYPES  : [BOOL, int64_t, float, double, time_t, NSString*, TightdbBinary*, 
                  TightdbMixed*, TightdbType, TightdbTable*]
        DESCR  : *g_dyn_table_get_xxx_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_get_xxx
        DESCR  :

  - g_dyn_table_set_bool:
      NAME     : setBool
  - g_dyn_table_set_int:
      NAME     : set
#TODO: Rename to setInt
  - g_dyn_table_set_float:
      NAME     : setFloat
  - g_dyn_table_set_double:
      NAME     : setDouble
  - g_dyn_table_set_enum:
      IGNORE   : ""
  - g_dyn_table_set_date:
      NAME     : setDate
  - g_dyn_table_set_string:
      NAME     : setString
  - g_dyn_table_set_binary:
      NAME     : setBinary
  - g_dyn_table_set_binary_2:
      NAME     : setBinary
  - g_dyn_table_set_mixed:
      NAME     : setMixed

      TITLE    : set*
      SUMMARY  : *g_dyn_table_set_xxx_summary
      DESCR    : *g_dyn_table_set_xxx_descr
      SIGNATURE: |
                 (void)setBool:(size_t)col_ndx ndx:(size_t)ndx value:(BOOL)value
                 (void)set:(size_t)col_ndx ndx:(size_t)ndx value:(int64_t)value
                 (void)setFloat:(size_t)col_ndx ndx:(size_t)ndx value:(float)value
                 (void)setDouble:(size_t)col_ndx ndx:(size_t)ndx value:(double)value
                 (void)setDate:(size_t)col_ndx ndx:(size_t)ndx value:(time_t)value
                 (void)setString:(size_t)col_ndx ndx:(size_t)ndx value:(NSString *)value
                 (void)setBinary:(size_t)col_ndx ndx:(size_t)ndx value:(TightdbBinary *)value
                 (void)setBinary:(size_t)col_ndx ndx:(size_t)ndx data:(const char *)data size:(size_t)size
                 (void)setMixed:(size_t)col_ndx ndx:(size_t)row_ndx value:(TightdbMixed *)value
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm1_descr
      - NAME   : row_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm2_descr
      - NAME   : value
        TYPES  : [BOOL, int64_t, float, double, time_t, NSString*, TightdbBinary*, 
                  const char*, size_t, TightdbMixed*]
        DESCR  : *g_dyn_table_set_xxx_parm3_descr
      - NAME   : data
        TYPES  : const char *
        DESCR  : *g_dyn_table_insert_xxx_parm4_descr
      - NAME   : size
        TYPES  : size_t
        DESCR  : *g_dyn_table_insert_xxx_parm5_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_set_xxx
        DESCR  :

- Sub-tables:
  METHODS:
  - g_dyn_table_get_subtable_size:
      NAME     : getTableSize
      SUMMARY  : *g_dyn_table_get_subtable_size_summary
      DESCR    : *g_dyn_table_get_subtable_size_descr
      SIGNATURE: (size_t)getTableSize:(size_t)col_ndx ndx:(size_t)row_ndx
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm1_descr
      - NAME   : row_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm2_descr
      RETURN:
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_subtable_size_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_get_subtable
        DESCR  :

  - g_dyn_table_clear_subtable:
      NAME     : clearSubtable
      SUMMARY  : *g_dyn_table_clear_subtable_summary
      DESCR    : *g_dyn_table_clear_subtable_descr
      SIGNATURE: (void)clearSubtable:(size_t)col_ndx ndx:(size_t)row_ndx
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm1_descr
      - NAME   : row_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm2_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_clear_subtable
        DESCR  :


- Indexes:
  METHODS:
  - g_dyn_table_set_index:
      NAME     : setIndex
      SUMMARY  : *g_dyn_table_set_index_summary
      DESCR    : *g_dyn_table_set_index_descr
      SIGNATURE: (void)setIndex:(size_t)col_ndx
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm1_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_set_index
        DESCR  :
        
  - g_dyn_table_has_index:
      NAME     : hasIndex
      SUMMARY  : *g_dyn_table_has_index_summary
      DESCR    : *g_dyn_table_has_index_descr
      SIGNATURE: (BOOL)hasIndex:(size_t)col_ndx
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_xxx_parm1_descr
      RETURN:
        TYPES  : BOOL
        DESCR  : *g_dyn_table_has_index_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_has_index
        DESCR  :
        
        
- Searching:
  METHODS:
  - g_dyn_table_lookup:
      TODO     : soon

      NAME     : lookup
      SUMMARY  : *g_dyn_table_lookup_summary
      DESCR    : *g_dyn_table_lookup_descr
      SIGNATURE:
      PARAMS:
      - NAME   : value
        TYPES  : NSString
        DESCR  : *g_dyn_table_lookup_parm1_descr
      RETURN:
        TYPES  : size_t
        DESCR  : "The row index or <code>tightdb::not_found</code> (equal to <code>size_t(-1)</code>) if there is no match."
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_lookup
        DESCR  :

  - g_dyn_table_find_first_bool:
      NAME     : findBool
  - g_dyn_table_find_first_int:
      NAME     : findInt
  - g_dyn_table_find_first_float:
      NAME     : findFloat
  - g_dyn_table_find_first_double:
      NAME     : findDouble
  - g_dyn_table_find_first_date:
      NAME     : findDate
  - g_dyn_table_find_first_string:
      NAME     : findString
  - g_dyn_table_find_first_binary:
      NAME     : findBinary

# TODO: change name to findFirst* ?

      TITLE    : find*
      SUMMARY  : Find first matching row.
      DESCR    : The method finds the first occurence of a given value in a column.
      SIGNATURE: |
                 (size_t)findBool:(size_t)col_ndx value:(BOOL)value
                 (size_t)findInt:(size_t)col_ndx value:(int64_t)value
                 (size_t)findFloat:(size_t)col_ndx value:(float)value
                 (size_t)findDouble:(size_t)col_ndx value:(double)value
                 (size_t)findDate:(size_t)col_ndx value:(time_t)value
                 (size_t)findString:(size_t)col_ndx value:(NSString *)value
                 (size_t)findBinary:(size_t)col_ndx value:(TightdbBinary *)value
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_find_first_xxx_parm1_descr
      - NAME   : value
        TYPES  : [BOOL, int64_t, float, double, time_t, const char*]
        DESCR  : *g_dyn_table_find_first_xxx_parm2_descr
      RETURN:
        TYPES  : size_t
#TODO: is that the same in objc?
        DESCR  : "The row index or <code>tightdb::not_found</code> (equal to <code>std::size_t(-1)</code>) if there is no match."
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_find_first_xxx
        DESCR  :

  - g_dyn_table_find_all_bool_const:
      IGNORE   : ""
  - g_dyn_table_find_all_int_const:
      IGNORE   : ""
  - g_dyn_table_find_all_date_const:
      IGNORE   : ""
  - g_dyn_table_find_all_string_const:
      IGNORE   : ""
  - g_dyn_table_find_all_float_const:
      IGNORE   : ""
  - g_dyn_table_find_all_double_const:
      IGNORE   : ""

  - g_dyn_table_find_all_bool:
      TODO     : soon
  - g_dyn_table_find_all_date:
      TODO     : soon
  - g_dyn_table_find_all_string:
      TODO     : soon
  - g_dyn_table_find_all_float:
      TODO     : soon
  - g_dyn_table_find_all_double:
      TODO     : soon
  - g_dyn_table_find_all_int:
      NAMES    : findAll
      TITLE    : findAll*
      SUMMARY  : *g_dyn_table_find_all_xxx_summary
      DESCR    : >
                 The method finds all occurences of a given value in a specific column.
                 The rows are returned as a {@link class_dyn_tableview} object.
      SIGNATURE: |
                 (TightdbView *)findAll:(TightdbView *)view column:(size_t)col_ndx value:(int64_t)value
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_find_all_xxx_parm1_descr
      - NAME   : value
        TYPES  : [BOOL, int64_t, float, double, time_t, NSString]
        DESCR  : *g_dyn_table_find_all_xxx_parm2_descr
      RETURN:
        TYPES  : TightdbView *
        DESCR  : *g_dyn_table_find_all_xxx_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_find_all_xxx
        DESCR  :

  - g_dyn_table_find_sorted_int:
      TODO     : later


  - g_dyn_table_get_sorted_view_const:
      IGNORE   : ""
  - g_dyn_table_get_sorted_view:
      TODO     : later

      NAME     : getSortedView
      SUMMARY  : *g_dyn_table_get_sorted_view_summary
      DESCR    : *g_dyn_table_get_sorted_view_desc
      SIGNATURE: TableView get_sorted_view(size_t column_ndx, bool ascending=true);
      PARAMS:
      - NAME   : column_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_get_sorted_view_parm1_descr
      - NAME   : ascending
        TYPES  : BOOL
        DESCR  : *cpp_dyn_table_get_sorted_view_parm2_descr
      RETURN:
        TYPES  : TightdbView *
        DESCR  : *g_dyn_table_get_sorted_view_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_get_sorted_view
        DESCR  :

  - g_dyn_table_distinct_const:
      IGNORE   : ""
  - g_dyn_table_distinct:
      TODO     : later

      NAMES    : distinct
      SUMMARY  : *g_dyn_table_distinct_summary
      DESCR    : *g_dyn_table_distinct_desc
      SIGNATURE: TableView distinct(size_t column_ndx);
      PARAMS:
      - NAME   : column_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_distinct_parm1_desc
      RETURN:
        TYPES  : TableView
        DESCR  : *g_dyn_table_distinct_return_desc
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_distinct
        DESCR  :

  - g_dyn_table_where_const:
      IGNORE   : ""
  - g_dyn_table_where:
      TODO     : later
      
      NAME     : where
      SIGNATURE: Query where()
      SUMMARY  : *g_dyn_table_where_summary
      DESCR    : *g_dyn_table_where_descr
      RETURN:
        TYPES  : Query
        DESCR  : *g_dyn_table_where_return_descr
      EXAMPLES:
      - DESCR  :
        CODE   : ex_objc_dyn_table_where


- Aggregates:
  METHODS:
  - g_dyn_table_count_int:
      NAME     : countInt
  - g_dyn_table_count_float:
      NAME     : countFloat
  - g_dyn_table_count_double:
      NAME     : countDouble
  - g_dyn_table_count_string:
      NAME     : countString
      TITLE    : count*
      SUMMARY  : *g_dyn_table_count_summary
      DESCR    : *g_dyn_table_count_descr
      SIGNATURE: |
                 (size_t)countInt:(size_t)col_ndx target:(int64_t)target
                 (size_t)countFloat:(size_t)col_ndx target:(float)target
                 (size_t)countDouble:(size_t)col_ndx target:(double)target
                 (size_t)countString:(size_t)col_ndx target:(NSString *)target
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_count_parm1_descr
      - NAME   : target
        TYPES  : int64_t
        DESCR  : *g_dyn_table_count_parm2_descr
      RETURN:
        TYPES  : size_t
        DESCR  : *g_dyn_table_count_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_count
        DESCR  :

  - g_dyn_table_sum_int:
  - g_dyn_table_sum_float:
  - g_dyn_table_sum_double:
      NAMES    : [sumInt, sumFloat, sumDouble]
      TITLE    : sum*
      SUMMARY  : *g_dyn_table_sum_summary
      DESCR    : *g_dyn_table_sum_descr
      SIGNATURE: |
                 (int64_t)sumInt:(size_t)col_ndx
                 (double)sumFloat:(size_t)col_ndx
                 (double)sumDouble:(size_t)col_ndx
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_sum_parm1_descr
      RETURN:
        TYPES  : [int64_t, double]
        DESCR  : *g_dyn_table_sum_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_sum
        DESCR  :

  - g_dyn_table_maximum_int:
  - g_dyn_table_maximum_float:
  - g_dyn_table_maximum_double:
      NAMES    : [maxInt, maxFloat, maximumDouble]
      TITLE    : max*
      SUMMARY  : *g_dyn_table_maximum_summary
      DESCR    : *g_dyn_table_maximum_descr
      SIGNATURE: |
                 (int64_t)maxInt:(size_t)col_ndx
                 (float)maxFloat:(size_t)col_ndx
                 (double)maxDouble:(size_t)col_ndx
      CONST    : True
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : Column index.
      RETURN:
        TYPES  : [int64_t, float, double]
        DESCR  : The maximum value.
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_maximum
        DESCR  :
        
  - g_dyn_table_minimum_int:
  - g_dyn_table_minimum_float:
  - g_dyn_table_minimum_double:
      NAMES    : [minInt, minimumFloat, minimumDouble]
      TITLE    : min*
      SUMMARY  : *g_dyn_table_minimum_summary
      DESCR    : *g_dyn_table_minimum_descr
      SIGNATURE: |
                 (int64_t)minInt:(size_t)col_ndx
                 (float)minFloat:(size_t)col_ndx
                 (double)minDouble:(size_t)col_ndx
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_maximum_parm1_descr
      RETURN:
        TYPES  : [int64_t, float, double]
        DESCR  : *g_dyn_table_minimum_return_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_minimum
        DESCR  :

  - g_dyn_table_average_int:
  - g_dyn_table_average_float:
  - g_dyn_table_average_double:
      NAMES    : [avgInt, averageFloat, averageDouble]
      SUMMARY  : *g_dyn_table_average_summary
      DESCR    : *g_dyn_table_average_descr
      SIGNATURE: |
                 (double)avgInt:(size_t)col_ndx
                 (double)avgFloat:(size_t)col_ndx
                 (double)avgDouble:(size_t)col_ndx
      PARAMS:
      - NAME   : col_ndx
        TYPES  : size_t
        DESCR  : *g_dyn_table_maximum_parm1_descr
      RETURN:
        TYPES  : double
        DESCR  : *g_dyn_table_average_return1_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_average
        DESCR  :
        
        
- Dump:
  METHODS:
  - g_dyn_table_to_json:
      TODO     : later

      NAMES    : toJSON
      SUMMARY  : *g_dyn_table_to_json_summary
      DESCR    : *g_dyn_table_to_json_descr
      PARAMS:
      - NAME   : out
        TYPES  : std::ostream&
        DESCR  : Output stream.
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_to_json
        DESCR  :

  - g_dyn_table_to_string:
      TODO     : later

      NAMES    : toString
      SUMMARY  : *g_dyn_table_to_string_summary
      DESCR    : *g_dyn_table_to_string_descr
      PARAMS:
      - NAME   : out
        TYPES  : std::ostream&
        DESCR  : Output stream.
      - NAME   : limit
        TYPES  : size_t
        DESCR  : *g_dyn_table_to_string_parm2_descr
      EXAMPLES:
      - CODE   : ex_objc_dyn_table_to_string
        DESCR  :

  - g_dyn_table_row_to_string:
      TODO     : later

{'fraction_non_alphanumeric': 0.07027007457823474, 'fraction_numerical': 0.0029686481789877634, 'mean_word_length': 1.9555424780654826, 'pattern_counts': {'":': 0, '<': 99, '<?xml version=': 0, '>': 112, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6589487', 'n_tokens_mistral': 22082, 'n_tokens_neox': 20040, 'n_words': 2973}