Atoms Crowd  4.1.0
Metadata.h
1 #pragma once
2 // ===========================================================================
3 // Copyright (c) 2015 Toolchefs Ltd. All rights reserved.
4 //
5 // Use of this software is subject to the terms of the Toolchefs license
6 // agreement provided at the time of installation or download, or which
7 // otherwise accompanies this software in either electronic or hard copy form.
8 // ===========================================================================
9 
10 #include <AtomsCore/Globals.h>
11 #include <AtomsCore/Serialiser.h>
12 #include <AtomsCore/Hash.h>
13 #include <sstream>
14 #include <string>
15 #include <vector>
16 
17 namespace AtomsCore
18 {
20 
23  class ATOMSCORE_EXPORT Metadata
24  {
25  public:
26 
28 
32  virtual std::string typeStr() const = 0;
33 
35 
39  virtual unsigned int typeId() const = 0;
40 
43 
45  virtual ~Metadata() = 0;
46 
48 
51  virtual void copy(Metadata*) = 0;
52 
54 
57  virtual AtomsPtr<Metadata> clone() const = 0;
58 
60 
63  virtual size_t memSize() const = 0;
64 
66  /*
67  \return true if the operation was successfull, false otherwise
68  */
69  virtual bool setWithValuesAndWeights(const std::vector<AtomsPtr<Metadata>> &values, const std::vector<double> &weights);
70  virtual bool setWithValuesAndWeights(const std::vector<Metadata *> &values, const std::vector<double> &weights);
71 
73  virtual void hash(MurmurHash3& hasher) const = 0;
74 
76  virtual bool isEqual(Metadata* right, double err = 0.0) const;
77 
79  virtual bool isGreater(Metadata* right) const;
80 
81  virtual bool isLess(Metadata* right) const;
82 
83  virtual bool isArray() const;
84 
85  public:
86 
88  virtual bool serialise(Archive& outArchive) const = 0;
89 
91  virtual bool deserialise(Archive& inArchive) = 0;
92 
94  virtual void toString(std::stringstream& ss) const = 0;
95 
96  private:
97 
99  Metadata(const Metadata&);
100 
102 
105  Metadata& operator=(const Metadata&);
106  };
107 
108 
109 
110 }
AtomsCore::Metadata::copy
virtual void copy(Metadata *)=0
copy value
AtomsCore::Metadata::typeStr
virtual std::string typeStr() const =0
Type string.
AtomsCore::Metadata::deserialise
virtual bool deserialise(Archive &inArchive)=0
Deserialise.
AtomsCore::Metadata
Base Metadata class.
Definition: Metadata.h:24
AtomsCore::Metadata::isEqual
virtual bool isEqual(Metadata *right, double err=0.0) const
Equal function.
AtomsCore::Archive
Archive class.
Definition: Serialiser.h:29
AtomsCore::Metadata::serialise
virtual bool serialise(Archive &outArchive) const =0
Serialise.
AtomsCore::Metadata::typeId
virtual unsigned int typeId() const =0
Type id.
AtomsCore::Metadata::toString
virtual void toString(std::stringstream &ss) const =0
String conversion.
AtomsCore::Metadata::hash
virtual void hash(MurmurHash3 &hasher) const =0
Hash function.
AtomsCore
AtomsCore namespace.
Definition: AtomsMath.h:24
AtomsCore::Metadata::clone
virtual AtomsPtr< Metadata > clone() const =0
clone object
AtomsCore::Metadata::~Metadata
virtual ~Metadata()=0
Virtual destructor.
AtomsCore::Metadata::setWithValuesAndWeights
virtual bool setWithValuesAndWeights(const std::vector< AtomsPtr< Metadata >> &values, const std::vector< double > &weights)
Set with weighted values.
AtomsCore::Metadata::Metadata
Metadata()
constructor
AtomsCore::Metadata::memSize
virtual size_t memSize() const =0
Memory size.
AtomsCore::MurmurHash3
Definition: Hash.h:23