14#include "keyple/card/calypso/FileHeaderAdapter.hpp"
16#include "keyple/card/calypso/FileHeaderAdapter.hpp"
17#include "keyple/core/util/cpp/KeypleStd.hpp"
23FileHeaderAdapter::FileHeaderBuilder::FileHeaderBuilder()
27FileHeaderAdapter::FileHeaderBuilder&
28FileHeaderAdapter::FileHeaderBuilder::lid(std::uint16_t lid)
35FileHeaderAdapter::FileHeaderBuilder&
36FileHeaderAdapter::FileHeaderBuilder::recordsNumber(
int recordsNumber)
38 mRecordsNumber = recordsNumber;
43FileHeaderAdapter::FileHeaderBuilder&
44FileHeaderAdapter::FileHeaderBuilder::FileHeaderBuilder::recordSize(
47 mRecordSize = recordSize;
52FileHeaderAdapter::FileHeaderBuilder&
53FileHeaderAdapter::FileHeaderBuilder::type(ElementaryFile::Type type)
60FileHeaderAdapter::FileHeaderBuilder&
61FileHeaderAdapter::FileHeaderBuilder::accessConditions(
62 const std::vector<uint8_t>& accessConditions)
64 mAccessConditions = accessConditions;
69FileHeaderAdapter::FileHeaderBuilder&
70FileHeaderAdapter::FileHeaderBuilder::keyIndexes(
71 const std::vector<uint8_t>& keyIndexes)
73 mKeyIndexes = keyIndexes;
78FileHeaderAdapter::FileHeaderBuilder&
79FileHeaderAdapter::FileHeaderBuilder::dfStatus(std::uint8_t dfStatus)
81 mDfStatus = std::make_shared<uint8_t>(dfStatus);
86FileHeaderAdapter::FileHeaderBuilder&
87FileHeaderAdapter::FileHeaderBuilder::sharedReference(
88 std::uint16_t sharedReference)
90 mSharedReference = std::make_shared<uint16_t>(sharedReference);
95std::shared_ptr<FileHeaderAdapter>
96FileHeaderAdapter::FileHeaderBuilder::build()
98 return std::shared_ptr<FileHeaderAdapter>(
new FileHeaderAdapter(
this));
102FileHeaderAdapter::getLid()
const
108FileHeaderAdapter::getRecordsNumber()
const
110 return mRecordsNumber;
114FileHeaderAdapter::getRecordSize()
const
120FileHeaderAdapter::getEfType()
const
125const std::vector<std::uint8_t>&
126FileHeaderAdapter::getAccessConditions()
const
128 return mAccessConditions;
131const std::vector<std::uint8_t>&
132FileHeaderAdapter::getKeyIndexes()
const
137const std::shared_ptr<std::uint8_t>&
138FileHeaderAdapter::getDfStatus()
const
143const std::shared_ptr<std::uint16_t>
144FileHeaderAdapter::getSharedReference()
const
146 return mSharedReference;
149std::shared_ptr<FileHeaderAdapter::FileHeaderBuilder>
150FileHeaderAdapter::builder()
152 return std::shared_ptr<FileHeaderBuilder>(
new FileHeaderBuilder());
155FileHeaderAdapter::FileHeaderAdapter(
const std::shared_ptr<FileHeader>& source)
156: mLid(source->getLid())
157, mRecordsNumber(source->getRecordsNumber())
158, mRecordSize(source->getRecordSize())
159, mType(source->getEfType())
160, mAccessConditions(source->getAccessConditions())
161, mKeyIndexes(source->getKeyIndexes())
162, mDfStatus(source->getDfStatus())
163, mSharedReference(source->getSharedReference())
168FileHeaderAdapter::updateMissingInfoFrom(
const FileHeader& source)
170 if (mAccessConditions.empty()) {
171 mAccessConditions = source.getAccessConditions();
174 if (mKeyIndexes.empty()) {
175 mKeyIndexes = source.getKeyIndexes();
178 if (mDfStatus ==
nullptr) {
179 mDfStatus = source.getDfStatus();
182 if (mSharedReference ==
nullptr) {
183 mSharedReference = source.getSharedReference();
188FileHeaderAdapter::operator==(
const FileHeaderAdapter& o)
const
190 return mLid == o.mLid;
194FileHeaderAdapter::operator==(
const std::shared_ptr<FileHeaderAdapter> o)
const
200 if (
this == o.get()) {
204 return *
this == *o.get();
208operator<<(std::ostream& os,
const FileHeaderAdapter& fha)
210 os <<
"FILE_HEADER_ADAPTER: {"
211 <<
"LID = " << fha.mLid <<
", "
212 <<
"RECORDS_NUMBER = " << fha.mRecordsNumber <<
", "
213 <<
"RECORD_SIZE = " << fha.mRecordSize <<
", "
214 <<
"TYPE = " << fha.mType <<
", "
215 <<
"ACCESS_CONDITIONS = " << fha.mAccessConditions <<
", "
216 <<
"KEY_INDEXES = " << fha.mKeyIndexes <<
", "
217 <<
"DF_STATUS = " << fha.mDfStatus <<
", "
218 <<
"SHARED_REFERENCE = " << fha.mSharedReference <<
"}";
224operator<<(std::ostream& os,
const std::shared_ptr<FileHeaderAdapter> fha)
226 if (fha ==
nullptr) {
227 os <<
"FILE_HEADER_ADAPTER: {null}";
235FileHeaderAdapter::FileHeaderAdapter(FileHeaderBuilder* builder)
237, mRecordsNumber(builder->mRecordsNumber)
238, mRecordSize(builder->mRecordSize)
239, mType(builder->mType)
240, mAccessConditions(builder->mAccessConditions)
241, mKeyIndexes(builder->mKeyIndexes)
242, mDfStatus(builder->mDfStatus)
243, mSharedReference(builder->mSharedReference)
std::ostream & operator<<(std::ostream &os, const std::shared_ptr< FileHeaderAdapter > fha)