33 _objects.fill(
nullptr);
38 _objects.fill(
nullptr);
48 *
this =
dynamic_cast<const MDRowSql&
>(row);
53 _objects.fill(
nullptr);
54 for (
size_t i = 0;
i < values.size();
i++) {
55 _objects[values[
i].label] =
new MDObject(values[
i]);
56 _order[
i] = values[
i].label;
62 if (_objects[_label] !=
nullptr)
63 delete _objects[_label];
78 if (_objects[_label] !=
nullptr)
79 delete _objects[_label];
80 _objects[_label] =
nullptr;
85 return _objects[label] !=
nullptr;
89 std::vector<MDLabel> res;
91 for (
size_t i = 0;
i < _size; ++
i) {
94 res.emplace_back(label);
100 if (_objects[label] ==
nullptr) {
101 _objects[label] =
new MDObject(label);
102 _order[_size] = label;
108 return _objects[label];
112 return _objects[label];
116 int _label =
object.label;
117 if (_objects[_label] ==
nullptr) {
118 _objects[_label] =
new MDObject(
object);
119 _order[_size] =
object.label;
122 _objects[_label]->copy(
object);
125 void MDRowSql::copy(
const MDRowSql &row) {
129 MDObject ** ptrObjectsLabel=&(_objects[0]);
130 MDObject *
const * ptrRowObjectsLabel=&(row._objects[0]);
132 if (*ptrRowObjectsLabel ==
nullptr) {
133 delete *ptrObjectsLabel;
134 *ptrObjectsLabel =
nullptr;
136 if (*ptrObjectsLabel ==
nullptr)
137 *ptrObjectsLabel =
new MDObject(*(*ptrRowObjectsLabel));
139 (*ptrObjectsLabel)->copy(*(*ptrRowObjectsLabel));
142 ++ptrRowObjectsLabel;
148 MDObject* MDRowSql::iteratorValue(
size_t i) {
149 return _objects[_order[
i]];
152 const MDObject* MDRowSql::iteratorValue(
size_t i)
const {
153 return _objects[_order[
i]];
157 for (
size_t i = 0;
i < row._size; ++
i) {
158 row._objects[row._order[
i]]->toStream(out);
friend std::ostream & operator<<(std::ostream &out, const MDRowSql &row)
int size() const override
std::vector< MDLabel > labels() const override
void setValue(const MDObject &object) override
bool empty() const override
void addLabel(MDLabel label) override
bool containsLabel(MDLabel label) const override
MDRow & operator=(const MDRow &) override
MDObject * getObject(MDLabel label) override