1 // Author: Derek Barnett 2 3 #ifndef DATASETBASETYPES_H 4 #define DATASETBASETYPES_H 5 6 #include <string> 7 #include "pbbam/Config.h" 8 #include "pbbam/internal/DataSetElement.h" 9 #include "pbbam/internal/DataSetListElement.h" 10 11 namespace PacBio { 12 namespace BAM { 13 14 class DataSetMetadata; 15 class Extensions; 16 class ExternalResources; 17 class FileIndices; 18 class Filters; 19 class Properties; 20 class Provenance; 21 22 namespace internal { 23 24 class BaseEntityType : public DataSetElement 25 { 26 protected: 27 BaseEntityType(const std::string& label, const XsdType& xsd = XsdType::BASE_DATA_MODEL); 28 29 public: 30 const std::string& CreatedAt() const; 31 const std::string& Description() const; 32 const PacBio::BAM::Extensions& Extensions() const; 33 const std::string& Format() const; 34 const std::string& ModifiedAt() const; 35 const std::string& Name() const; 36 const std::string& ResourceId() const; 37 const std::string& Tags() const; 38 const std::string& Version() const; 39 40 std::string& CreatedAt(); 41 std::string& Description(); 42 PacBio::BAM::Extensions& Extensions(); 43 std::string& Format(); 44 std::string& ModifiedAt(); 45 std::string& Name(); 46 std::string& ResourceId(); 47 std::string& Tags(); 48 std::string& Version(); 49 50 BaseEntityType& CreatedAt(const std::string& createdAt); 51 BaseEntityType& Description(const std::string& description); 52 BaseEntityType& Extensions(const PacBio::BAM::Extensions& extensions); 53 BaseEntityType& Format(const std::string& format); 54 BaseEntityType& ModifiedAt(const std::string& modifiedAt); 55 BaseEntityType& Name(const std::string& name); 56 BaseEntityType& ResourceId(const std::string& resourceId); 57 BaseEntityType& Tags(const std::string& tags); 58 BaseEntityType& Version(const std::string& version); 59 }; 60 61 class DataEntityType : public BaseEntityType 62 { 63 protected: 64 DataEntityType(const std::string& label, const XsdType& xsd = XsdType::BASE_DATA_MODEL); 65 66 public: 67 const std::string& Checksum() const; 68 const std::string& EncodedValue() const; 69 const std::string& MetaType() const; 70 const std::string& SimpleValue() const; 71 const std::string& TimeStampedName() const; 72 const std::string& UniqueId() const; 73 const std::string& ValueDataType() const; 74 75 std::string& Checksum(); 76 std::string& EncodedValue(); 77 std::string& MetaType(); 78 std::string& SimpleValue(); 79 std::string& TimeStampedName(); 80 std::string& UniqueId(); 81 std::string& ValueDataType(); 82 83 DataEntityType& Checksum(const std::string& checksum); 84 DataEntityType& EncodedValue(const std::string& encodedValue); 85 DataEntityType& MetaType(const std::string& metatype); 86 DataEntityType& SimpleValue(const std::string& simpleValue); 87 DataEntityType& TimeStampedName(const std::string& timeStampedName); 88 DataEntityType& UniqueId(const std::string& uuid); 89 DataEntityType& ValueDataType(const std::string& valueDataType); 90 }; 91 92 class StrictEntityType : public BaseEntityType 93 { 94 protected: 95 StrictEntityType(const std::string& metatype, const std::string& label, 96 const XsdType& xsd = XsdType::BASE_DATA_MODEL); 97 98 public: 99 const std::string& MetaType() const; 100 const std::string& TimeStampedName() const; 101 const std::string& UniqueId() const; 102 103 std::string& MetaType(); 104 std::string& TimeStampedName(); 105 std::string& UniqueId(); 106 107 StrictEntityType& MetaType(const std::string& metatype); 108 StrictEntityType& TimeStampedName(const std::string& timeStampedName); 109 StrictEntityType& UniqueId(const std::string& uuid); 110 }; 111 112 class InputOutputDataType : public StrictEntityType 113 { 114 protected: 115 InputOutputDataType(const std::string& metatype, const std::string& filename, 116 const std::string& label, const XsdType& xsd = XsdType::BASE_DATA_MODEL); 117 }; 118 119 class IndexedDataType : public InputOutputDataType 120 { 121 protected: 122 IndexedDataType(const std::string& metatype, const std::string& filename, 123 const std::string& label, const XsdType& xsd = XsdType::BASE_DATA_MODEL); 124 125 public: 126 const PacBio::BAM::FileIndices& FileIndices() const; 127 PacBio::BAM::FileIndices& FileIndices(); 128 IndexedDataType& FileIndices(const PacBio::BAM::FileIndices& indices); 129 }; 130 131 } // namespace internal 132 } // namespace BAM 133 } // namespace PacBio 134 135 #include "pbbam/internal/DataSetBaseTypes.inl" 136 137 #endif // DATASETBASETYPES_H 138