Keyple Card Calypso C++ Library 2.1.0
Reference Terminal Reader API for C++
FileHeaderAdapter.h
Go to the documentation of this file.
1/**************************************************************************************************
2 * Copyright (c) 2022 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 <ostream>
17#include <vector>
18
19/* Calypsonet Terminal Calypso */
20#include "FileHeader.h"
21
22namespace keyple {
23namespace card {
24namespace calypso {
25
26using namespace calypsonet::terminal::calypso::card;
27
34class FileHeaderAdapter final : public FileHeader {
35public:
43 public:
47 friend class FileHeaderAdapter;
48
57 FileHeaderBuilder lid(const uint16_t lid);
58
68
78
87 FileHeaderBuilder type(const ElementaryFile::Type type);
88
97 FileHeaderBuilder accessConditions(const std::vector<uint8_t>& accessConditions);
98
107 FileHeaderBuilder keyIndexes(const std::vector<uint8_t>& keyIndexes);
108
117 FileHeaderBuilder dfStatus(const uint8_t dfStatus);
118
128
136 std::shared_ptr<FileHeaderAdapter> build();
137
138 private:
142 uint16_t mLid;
143
147 int mRecordsNumber;
148
152 int mRecordSize;
153
157 ElementaryFile::Type mType;
158
162 std::vector<uint8_t> mAccessConditions;
163
167 std::vector<uint8_t> mKeyIndexes;
168
172 std::shared_ptr<uint8_t> mDfStatus;
173
177 std::shared_ptr<uint16_t> mSharedReference;
178
183 };
184
188 friend class FileHeaderBuilder;
189
195 uint16_t getLid() const override;
196
202 int getRecordsNumber() const override;
203
209 int getRecordSize() const override;
210
216 ElementaryFile::Type getEfType() const override;
217
223 const std::vector<uint8_t>& getAccessConditions() const override;
224
230 const std::vector<uint8_t>& getKeyIndexes() const override;
231
237 const std::shared_ptr<uint8_t> getDfStatus() const override ;
238
244 const std::shared_ptr<uint16_t> getSharedReference() const override;
245
253 static std::shared_ptr<FileHeaderBuilder> builder();
254
262 FileHeaderAdapter(const std::shared_ptr<FileHeader> source);
263
271 void updateMissingInfoFrom(const std::shared_ptr<FileHeader> source);
272
280 bool operator==(const FileHeaderAdapter& o) const;
281
282
290 bool operator==(const std::shared_ptr<FileHeaderAdapter> o) const;
291
295 friend std::ostream& operator<<(std::ostream& os, const FileHeaderAdapter& fha);
296
297private:
301 const std::uint16_t mLid;
302
306 const int mRecordsNumber;
307
311 const int mRecordSize;
312
316 const ElementaryFile::Type mType;
317
321 std::vector<uint8_t> mAccessConditions;
322
326 std::vector<uint8_t> mKeyIndexes;
327
331 std::shared_ptr<uint8_t> mDfStatus;
332
336 std::shared_ptr<uint16_t> mSharedReference;
337
342};
343
344}
345}
346}
FileHeaderBuilder recordsNumber(const int recordsNumber)
FileHeaderBuilder type(const ElementaryFile::Type type)
FileHeaderBuilder keyIndexes(const std::vector< uint8_t > &keyIndexes)
FileHeaderBuilder sharedReference(const uint16_t sharedReference)
FileHeaderBuilder accessConditions(const std::vector< uint8_t > &accessConditions)
FileHeaderBuilder dfStatus(const uint8_t dfStatus)
ElementaryFile::Type getEfType() const override
void updateMissingInfoFrom(const std::shared_ptr< FileHeader > source)
FileHeaderAdapter(const std::shared_ptr< FileHeader > source)
bool operator==(const FileHeaderAdapter &o) const
const std::shared_ptr< uint16_t > getSharedReference() const override
friend std::ostream & operator<<(std::ostream &os, const FileHeaderAdapter &fha)
const std::vector< uint8_t > & getKeyIndexes() const override
static std::shared_ptr< FileHeaderBuilder > builder()
const std::vector< uint8_t > & getAccessConditions() const override
const std::shared_ptr< uint8_t > getDfStatus() const override
FileHeaderAdapter::FileHeaderBuilder FileHeaderBuilder