147496e37fd48617077fc142b68540a981f12251
[android/external-libkmsxx.git] / libkms++ / property.h
1 #pragma once
3 #include "drmobject.h"
4 #include <map>
5 #include <vector>
7 namespace kms
8 {
10 struct PropertyPriv;
12 enum class PropertyType
13 {
14         Range,
15         Enum,
16         Blob,
17         Bitmask,
18         Object,
19         SignedRange,
20 };
22 class Property : public DrmObject
23 {
24         friend class Card;
25 public:
26         const std::string& name() const;
28         const std::string to_str(uint64_t val) const;
30         bool is_immutable() const;
31         bool is_pending() const;
33         PropertyType type() const { return m_type; }
34         std::map<uint64_t, std::string> get_enums() const;
35         std::vector<uint64_t> get_values() const;
36         std::vector<uint32_t> get_blob_ids() const;
37 private:
38         Property(Card& card, uint32_t id);
39         ~Property();
41         PropertyType m_type;
43         PropertyPriv* m_priv;
44         std::string m_name;
45 };
46 }