Keyple Card Calypso C++ Library 2.1.0
Reference Terminal Reader API for C++
DirectoryHeaderAdapter.h
Go to the documentation of this file.
1/**************************************************************************************************
2 * Copyright (c) 2021 Calypso Networks Association https://calypsonet.org/ *
3 * *
4 * See the NOTICE file(s) distributed with this work for additional information regarding *
5 * copyright ownership. *
6 * *
7 * This program and the accompanying materials are made available under the terms of the Eclipse *
8 * Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0 *
9 * *
10 * SPDX-License-Identifier: EPL-2.0 *
11 **************************************************************************************************/
12
13#pragma once
14
15#include <cstdint>
16#include <map>
17#include <memory>
18#include <vector>
19
20/* Calypsonet Terminal Calypso */
21#include "DirectoryHeader.h"
22#include "WriteAccessLevel.h"
23
24namespace keyple {
25namespace card {
26namespace calypso {
27
28using namespace calypsonet::terminal::calypso;
29using namespace calypsonet::terminal::calypso::card;
30
37class DirectoryHeaderAdapter final : public DirectoryHeader {
38public:
46 : public std::enable_shared_from_this<DirectoryHeaderBuilder> {
47 public:
52
61 DirectoryHeaderBuilder& lid(const uint16_t lid);
62
71 DirectoryHeaderBuilder& accessConditions(const std::vector<uint8_t>& accessConditions);
72
81 DirectoryHeaderBuilder& keyIndexes(const std::vector<uint8_t>& keyIndexes);
82
92
102 DirectoryHeaderBuilder& kif(const WriteAccessLevel level, const uint8_t kif);
103
113 DirectoryHeaderBuilder& kvc(const WriteAccessLevel level, const uint8_t kvc);
114
122 const std::shared_ptr<DirectoryHeader> build();
123
127 friend class DirectoryHeaderAdapter;
128
129 private:
133 uint16_t mLid;
134
138 std::vector<uint8_t> mAccessConditions;
139
143 std::vector<uint8_t> mKeyIndexes;
144
148 uint8_t mDfStatus;
149
153 std::map<const WriteAccessLevel, const uint8_t> mKif;
154
158 std::map<const WriteAccessLevel, const uint8_t> mKvc;
159
164
165 };
166
170 uint16_t getLid() const override;
171
175 const std::vector<uint8_t>& getAccessConditions() const override;
176
180 const std::vector<uint8_t>& getKeyIndexes() const override;
181
185 uint8_t getDfStatus() const override;
186
190 uint8_t getKif(const WriteAccessLevel writeAccessLevel) const override;
191
195 uint8_t getKvc(const WriteAccessLevel writeAccessLevel) const override;
196
204 static std::shared_ptr<DirectoryHeaderBuilder> builder();
205
206private:
210 const uint16_t mLid;
211
215 const std::vector<uint8_t> mAccessConditions;
216
220 const std::vector<uint8_t> mKeyIndexes;
221
225 const uint8_t mDfStatus;
226
230 const std::map<const WriteAccessLevel, const uint8_t> mKif;
231
235 const std::map<const WriteAccessLevel, const uint8_t> mKvc;
236
240 static const std::string LEVEL_STR;
241
245 DirectoryHeaderAdapter(const std::shared_ptr<DirectoryHeaderBuilder> builder);
246};
247
248}
249}
250}
DirectoryHeaderBuilder & kif(const WriteAccessLevel level, const uint8_t kif)
DirectoryHeaderBuilder & accessConditions(const std::vector< uint8_t > &accessConditions)
DirectoryHeaderBuilder & keyIndexes(const std::vector< uint8_t > &keyIndexes)
DirectoryHeaderBuilder & kvc(const WriteAccessLevel level, const uint8_t kvc)
uint8_t getKvc(const WriteAccessLevel writeAccessLevel) const override
const std::vector< uint8_t > & getKeyIndexes() const override
uint8_t getKif(const WriteAccessLevel writeAccessLevel) const override
const std::vector< uint8_t > & getAccessConditions() const override
static std::shared_ptr< DirectoryHeaderBuilder > builder()
DirectoryHeaderAdapter::DirectoryHeaderBuilder DirectoryHeaderBuilder