Xmipp  v3.23.11-Nereus
Public Member Functions | Friends | List of all members
MDRowSql Class Reference

#include <metadata_row_sql.h>

Inheritance diagram for MDRowSql:
Inheritance graph
[legend]
Collaboration diagram for MDRowSql:
Collaboration graph
[legend]

Public Member Functions

 MDRowSql ()
 
 ~MDRowSql ()
 
 MDRowSql (const MDRowSql &row)
 
 MDRowSql (const std::vector< MDObject > &values)
 
MDRowoperator= (const MDRow &) override
 
MDRowSqloperator= (const MDRowSql &row)
 
size_t id () const override
 
void set_id (size_t id)
 
bool empty () const override
 
int size () const override
 
void clear () override
 
bool containsLabel (MDLabel label) const override
 
std::vector< MDLabellabels () const override
 
void addLabel (MDLabel label) override
 
MDObjectgetObject (MDLabel label) override
 
const MDObjectgetObject (MDLabel label) const override
 
void setValue (const MDObject &object) override
 
template<typename T >
T & getValue (MDLabel label)
 
template<typename T >
const T & getValue (MDLabel label) const
 
template<typename T >
bool getValue (MDLabel label, T &d) const
 
template<typename T >
const T & getValueOrDefault (MDLabel label, const T &def) const
 
template<typename T >
T & getValueOrDefault (MDLabel label, const T &def)
 
template<typename T , typename T1 >
void getValueOrDefault (MDLabel label, T &d, T1 def) const
 
template<typename T >
void setValue (MDLabel label, const T &d, bool addLabel=true)
 
- Public Member Functions inherited from MDRow
virtual void detach ()
 
virtual ~MDRow ()=default
 
virtual void resetGeo (bool addLabels=true)
 
template<typename T >
T & getValue (MDLabel label)
 
template<typename T >
const T & getValue (MDLabel label) const
 
template<typename T >
bool getValue (MDLabel label, T &d) const
 
bool getValue (MDObject &object) const
 
template<typename T >
const T & getValueOrDefault (MDLabel label, const T &def) const
 
template<typename T >
T & getValueOrDefault (MDLabel label, const T &def)
 
template<typename T , typename T1 >
void getValueOrDefault (MDLabel label, T &d, T1 def) const
 
template<typename T >
void setValue (MDLabel label, const T &d, bool addLabel=true)
 
virtual void setValueFromStr (MDLabel label, const String &value)
 
iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 

Friends

std::ostream & operator<< (std::ostream &out, const MDRowSql &row)
 

Additional Inherited Members

- Public Types inherited from MDRow
using iterator = iterator_ptr< false >
 
using const_iterator = iterator_ptr< true >
 

Detailed Description

Class for holding an entire row of MDObject in MetaDataDb.

Definition at line 36 of file metadata_row_sql.h.

Constructor & Destructor Documentation

◆ MDRowSql() [1/3]

MDRowSql::MDRowSql ( )

Definition at line 31 of file metadata_row_sql.cpp.

31  {
32  _size = 0;
33  _objects.fill(nullptr);
34 }

◆ ~MDRowSql()

MDRowSql::~MDRowSql ( )

Definition at line 60 of file metadata_row_sql.cpp.

60  {
61  for (int _label = MDL_FIRST_LABEL; _label < MDL_LAST_LABEL; ++_label) {
62  if (_objects[_label] != nullptr)
63  delete _objects[_label];
64  }
65 }
The label MDL_OBJID is special and should not be used.

◆ MDRowSql() [2/3]

MDRowSql::MDRowSql ( const MDRowSql row)

Definition at line 36 of file metadata_row_sql.cpp.

36  {
37  _size = 0;
38  _objects.fill(nullptr);
39  copy(row);
40 }

◆ MDRowSql() [3/3]

MDRowSql::MDRowSql ( const std::vector< MDObject > &  values)

Definition at line 52 of file metadata_row_sql.cpp.

52  {
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;
57  }
58 }
#define i

Member Function Documentation

◆ addLabel()

void MDRowSql::addLabel ( MDLabel  label)
overridevirtual

Implements MDRow.

Definition at line 99 of file metadata_row_sql.cpp.

99  {
100  if (_objects[label] == nullptr) {
101  _objects[label] = new MDObject(label);
102  _order[_size] = label;
103  ++_size;
104  }
105 }

◆ clear()

void MDRowSql::clear ( )
overridevirtual

Return number of labels present

Implements MDRow.

Definition at line 75 of file metadata_row_sql.cpp.

75  {
76  _size = 0;
77  for (int _label = MDL_FIRST_LABEL; _label < MDL_LAST_LABEL; ++_label) {
78  if (_objects[_label] != nullptr)
79  delete _objects[_label];
80  _objects[_label] = nullptr;
81  }
82 }
The label MDL_OBJID is special and should not be used.

◆ containsLabel()

bool MDRowSql::containsLabel ( MDLabel  label) const
overridevirtual

Implements MDRow.

Definition at line 84 of file metadata_row_sql.cpp.

84  {
85  return _objects[label] != nullptr;
86 }

◆ empty()

bool MDRowSql::empty ( ) const
overridevirtual

Implements MDRow.

Definition at line 67 of file metadata_row_sql.cpp.

67  {
68  return _size == 0;
69 }

◆ getObject() [1/2]

MDObject * MDRowSql::getObject ( MDLabel  label)
overridevirtual

Implements MDRow.

Definition at line 111 of file metadata_row_sql.cpp.

111  {
112  return _objects[label];
113 }

◆ getObject() [2/2]

const MDObject * MDRowSql::getObject ( MDLabel  label) const
overridevirtual

Implements MDRow.

Definition at line 107 of file metadata_row_sql.cpp.

107  {
108  return _objects[label];
109 }

◆ getValue() [1/3]

template<typename T >
T& MDRowSql::getValue ( MDLabel  label)
inline

Definition at line 78 of file metadata_row_sql.h.

78 { return MDRow::getValue<T>(label); }

◆ getValue() [2/3]

template<typename T >
const T& MDRowSql::getValue ( MDLabel  label) const
inline

Definition at line 81 of file metadata_row_sql.h.

81 { return MDRow::getValue<T>(label); }

◆ getValue() [3/3]

template<typename T >
bool MDRowSql::getValue ( MDLabel  label,
T &  d 
) const
inline

Definition at line 84 of file metadata_row_sql.h.

84  { // FIXME: deprecated
85  return MDRow::getValue<T>(label, d);
86  }
doublereal * d

◆ getValueOrDefault() [1/3]

template<typename T >
const T& MDRowSql::getValueOrDefault ( MDLabel  label,
const T &  def 
) const
inline

Definition at line 89 of file metadata_row_sql.h.

89 { return MDRow::getValueOrDefault<T>(label, def); }

◆ getValueOrDefault() [2/3]

template<typename T >
T& MDRowSql::getValueOrDefault ( MDLabel  label,
const T &  def 
)
inline

Definition at line 92 of file metadata_row_sql.h.

92 { return MDRow::getValueOrDefault<T>(label, def); }

◆ getValueOrDefault() [3/3]

template<typename T , typename T1 >
void MDRowSql::getValueOrDefault ( MDLabel  label,
T &  d,
T1  def 
) const
inline

Definition at line 95 of file metadata_row_sql.h.

95  { // FIXME: deprecated
96  return MDRow::getValueOrDefault<T, T1>(label, d, def);
97  }
doublereal * d

◆ id()

size_t MDRowSql::id ( ) const
inlineoverridevirtual

Reimplemented from MDRow.

Definition at line 57 of file metadata_row_sql.h.

57 { return this->_id; }

◆ labels()

std::vector< MDLabel > MDRowSql::labels ( ) const
overridevirtual

Implements MDRow.

Definition at line 88 of file metadata_row_sql.cpp.

88  {
89  std::vector<MDLabel> res;
90  res.reserve(_size);
91  for (size_t i = 0; i < _size; ++i) {
92  const MDLabel &label = _order[i];
93  if (containsLabel(label))
94  res.emplace_back(label);
95  }
96  return res;
97 }
#define i
bool containsLabel(MDLabel label) const override
MDLabel

◆ operator=() [1/2]

MDRow & MDRowSql::operator= ( const MDRow row)
overridevirtual

Implements MDRow.

Definition at line 47 of file metadata_row_sql.cpp.

47  {
48  *this = dynamic_cast<const MDRowSql&>(row);
49  return *this;
50 }

◆ operator=() [2/2]

MDRowSql & MDRowSql::operator= ( const MDRowSql row)

Definition at line 42 of file metadata_row_sql.cpp.

42  {
43  copy(row);
44  return *this;
45 }

◆ set_id()

void MDRowSql::set_id ( size_t  id)
inline

Definition at line 58 of file metadata_row_sql.h.

58 { this->_id = id; }
size_t id() const override

◆ setValue() [1/2]

void MDRowSql::setValue ( const MDObject object)
overridevirtual

Implements MDRow.

Definition at line 115 of file metadata_row_sql.cpp.

115  {
116  int _label = object.label;
117  if (_objects[_label] == nullptr) {
118  _objects[_label] = new MDObject(object);
119  _order[_size] = object.label;
120  ++_size;
121  } else
122  _objects[_label]->copy(object);
123 }

◆ setValue() [2/2]

template<typename T >
void MDRowSql::setValue ( MDLabel  label,
const T &  d,
bool  addLabel = true 
)
inline

Definition at line 100 of file metadata_row_sql.h.

100 { return MDRow::setValue<T>(label, d, addLabel); }
doublereal * d
void addLabel(MDLabel label) override

◆ size()

int MDRowSql::size ( ) const
overridevirtual

Implements MDRow.

Definition at line 71 of file metadata_row_sql.cpp.

71  {
72  return _size;
73 }

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  out,
const MDRowSql row 
)
friend

Definition at line 156 of file metadata_row_sql.cpp.

156  {
157  for (size_t i = 0; i < row._size; ++i) {
158  row._objects[row._order[i]]->toStream(out);
159  out << " ";
160  }
161  return out;
162 }
#define i

The documentation for this class was generated from the following files: