double mql_result_rows_get_floating(mql_result_t *r, int colidx, int rowidx) { result_rows_t *rslt = (result_rows_t *)r; void *addr; double v = 0; MDB_CHECKARG(rslt && rslt->type == mql_result_rows && colidx >= 0 && colidx < rslt->ncol && rowidx >= 0 && rowidx < rslt->nrow, 0.0); if ((addr = get_column_address(rslt, colidx, rowidx))) { switch (get_column_type(rslt, colidx)) { case mqi_varchar: v = strtod(*(char **)addr, NULL); break; case mqi_integer: v = *(int32_t *)addr; break; case mqi_unsignd: v = *(uint32_t *)addr; break; case mqi_floating: v = *(double *)addr; break; default: v = 0; break; } } return v; }
inline ConstSubspecRef Spec::get_subtable_spec(size_t column_ndx) const noexcept { REALM_ASSERT(column_ndx < get_column_count()); REALM_ASSERT(get_column_type(column_ndx) == col_type_Table); size_t subspec_ndx = get_subspec_ndx(column_ndx); return ConstSubspecRef(&m_subspecs, subspec_ndx); }
void lar_solver::fill_column_types() { m_lar_core_solver_params.m_column_types.clear(); m_lar_core_solver_params.m_column_types.resize(m_map_from_var_index_to_column_info_with_cls.size(), free_column); for (auto t : m_set_of_canonic_left_sides) { var_index additional_vj = t->m_additional_var_index; unsigned j = get_column_index_from_var_index(additional_vj); lean_assert(is_valid(j)); m_lar_core_solver_params.m_column_types[j] = get_column_type(get_column_info_from_var_index(additional_vj)); } }
const char *mql_result_rows_get_string(mql_result_t *r, int colidx, int rowidx, char *buf, int len) { result_rows_t *rslt = (result_rows_t *)r; void *addr; char *v = NULL; MDB_CHECKARG(rslt && rslt->type == mql_result_rows && colidx >= 0 && colidx < rslt->ncol && rowidx >= 0 && rowidx < rslt->nrow && (!buf || (buf && len > 0)), NULL); if ((v = buf)) *v = '\0'; if ((addr = get_column_address(rslt, colidx, rowidx))) { switch (get_column_type(rslt, colidx)) { case mqi_varchar: if (!v) v = *(char **)addr; else { strncpy(v, *(char **)addr, len); v[len-1] = '\0'; } break; case mqi_integer: if (!v) v = ""; else snprintf(v, len, "%d", *(int32_t *)addr); break; case mqi_unsignd: if (!v) v = ""; else snprintf(v, len, "%u", *(uint32_t *)addr); break; case mqi_floating: if (!v) v = ""; else snprintf(v, len, "%lf", *(double *)addr); break; default: v = ""; break; } } return v; }
inline void Descriptor::set_link_type(size_t col_ndx, LinkType link_type) { typedef _impl::TableFriend tf; if (REALM_UNLIKELY(!is_attached())) throw LogicError(LogicError::detached_accessor); if (REALM_UNLIKELY(col_ndx >= get_column_count())) throw LogicError(LogicError::column_index_out_of_range); if (REALM_UNLIKELY(!tf::is_link_type(ColumnType(get_column_type(col_ndx))))) throw LogicError(LogicError::illegal_type); tf::set_link_type(*get_root_table(), col_ndx, link_type); // Throws }