Enrollment 28.2.0
Loading...
Searching...
No Matches
ILOSIDTemplateAdapter.h
Go to the documentation of this file.
1
9
10#pragma once
11
21
22namespace inno
23{
27 */
29 {
30 public:
36 */
37 [[nodiscard]] ILOSIDTemplate Adapt(const ANSITemplate& tmpl) const
38 {
39 return ConvertFrom(PrintExecutor::INNO_ANSI_TEMPLATE, tmpl.data);
40 }
46 */
47 [[nodiscard]] ILOSIDTemplate Adapt(const ISONCTemplate& tmpl) const
48 {
49 return ConvertFrom(PrintExecutor::INNO_ISO_NC_TEMPLATE, tmpl.GetData());
50 }
56 */
57 [[nodiscard]] ILOSIDTemplate Adapt(const ISOCCTemplate& tmpl) const
58 {
59 return ConvertFrom(PrintExecutor::INNO_ISO_CC_TEMPLATE, tmpl.GetData());
60 }
66 */
67 [[nodiscard]] ILOSIDTemplate Adapt(const ISOTemplate& tmpl) const
68 {
69 return ConvertFrom(PrintExecutor::INNO_ISO_TEMPLATE, tmpl.data);
70 }
76 */
77 [[nodiscard]] ILOSIDTemplate Adapt(const ICSTemplate& tmpl) const
78 {
79 return ConvertFrom(PrintExecutor::INNO_TT_UNKNOWN_TYPE, tmpl.icsTemplateData);
80 }
86 */
87 [[nodiscard]] ILOSIDTemplate Adapt(const ExtractedPrint& tmpl) const
88 {
89 return ConvertFrom(PrintExecutor::INNO_TT_UNKNOWN_TYPE, tmpl.icsTemplateData);
90 }
96 */
97 [[nodiscard]] ILOSIDTemplate Adapt(const PrintTemplate& tmpl) const
98 {
99 return ConvertFrom(PrintExecutor::INNO_TT_UNKNOWN_TYPE, tmpl.GetICSRepresentation()->icsTemplateData);
100 }
101
105 */
107 : exec(GlobalPrintExecutor::Get())
108 {
109 }
114 */
115 explicit ILOSIDTemplateAdapter(std::shared_ptr<PrintExecutor> executor)
116 : exec(std::move(executor))
117 {
118 if (exec == nullptr)
119 {
120 throw NullArgumentException("Print executor cannot be null in ILOSIDTemplateAdapter");
121 }
122 }
123
124 private:
125 std::shared_ptr<PrintExecutor> exec;
126
127 [[nodiscard]] ILOSIDTemplate ConvertFrom(uint8_t templateType, const std::vector<uint8_t>& input) const
128 {
129 std::vector<uint8_t> data;
130 auto tmplAllocator = +[](void* container, size_t length) -> uint8_t*
131 {
132 // It is "safe" cast because we forward pointer to vector created in "user cpp space"
133 // (the space where this header is compiled) and the "own cpp space" (out compiled shared library)
134 // wil provide it back for us to the same "user cpp space". We have all spaces under control.
135 // It is used to do not have unecessary copy data from "own cpp space" into "user cpp space".
136 std::vector<uint8_t>& vec = *static_cast<std::vector<uint8_t>*>(container);
137 vec.resize(length);
138 return vec.data();
139 };
140 exec->ConvertTemplates(templateType,
141 input.data(),
142 input.size(),
143 PrintExecutor::INNO_ILO_SID_TEMPLATE,
144 tmplAllocator,
145 &data,
146 ThrowOnError{});
147
148 return ILOSIDTemplate(std::move(data));
149 }
150 };
151} // namespace inno
ANSI INCITS 378 print compliant template.
Definition ANSITemplate.h:28
const std::vector< uint8_t > data
Template data.
Definition ANSITemplate.h:31
Print template in ICS format used for biometric operations with Print that was extracted.
Definition ExtractedPrint.h:36
Holds instance of PrintExecutor.
Definition PrintExecutor.h:1300
Print template in ICS format used for biometric operations.
Definition ICSTemplate.h:41
const std::vector< uint8_t > icsTemplateData
template data
Definition ICSTemplate.h:44
ILOSIDTemplate Adapt(const ANSITemplate &tmpl) const
Adapts ANSITemplate to ILOSIDTemplate.
Definition ILOSIDTemplateAdapter.h:36
ILOSIDTemplateAdapter(std::shared_ptr< PrintExecutor > executor)
Creates ILOSIDTemplateAdapter object.
Definition ILOSIDTemplateAdapter.h:114
ILOSIDTemplate Adapt(const ISOTemplate &tmpl) const
Adapts ISOTemplate to ILOSIDTemplate.
Definition ILOSIDTemplateAdapter.h:66
ILOSIDTemplateAdapter()
Creates ILOSIDTemplateAdapter object with GlobalPrintExecutor used to execute template functionality.
Definition ILOSIDTemplateAdapter.h:105
ILOSIDTemplate Adapt(const PrintTemplate &tmpl) const
Adapts PrintTemplate to ILOSIDTemplate.
Definition ILOSIDTemplateAdapter.h:96
ILOSIDTemplate Adapt(const ExtractedPrint &tmpl) const
Adapts ExtractedPrint to ILOSIDTemplate.
Definition ILOSIDTemplateAdapter.h:86
ILOSIDTemplate Adapt(const ISONCTemplate &tmpl) const
Adapts ISONCTemplate to ILOSIDTemplate.
Definition ILOSIDTemplateAdapter.h:46
ILOSIDTemplate Adapt(const ICSTemplate &tmpl) const
Adapts ICSTemplate to ILOSIDTemplate.
Definition ILOSIDTemplateAdapter.h:76
ILOSIDTemplate Adapt(const ISOCCTemplate &tmpl) const
Adapts ISOCCTemplate to ILOSIDTemplate.
Definition ILOSIDTemplateAdapter.h:56
International Labour Organisation Seafarers Identity Document template.
Definition ILOSIDTemplate.h:24
ISO/IEC 19794-2:2005 template, template version 2.0, 3-byte format for minutiae (compact card encodin...
Definition ISOCCTemplate.h:22
std::vector< uint8_t > GetData() const
Provides template data.
Definition ISOCCTemplate.h:28
ISO/IEC 19794-2:2005 template, template version 2.0, 5-byte format for minutiae (normal card encoding...
Definition ISONCTemplate.h:22
std::vector< uint8_t > GetData() const
Provides template data.
Definition ISONCTemplate.h:28
ISO/IEC 19794-2 print compliant template.
Definition ISOTemplate.h:28
const std::vector< uint8_t > data
Template data.
Definition ISOTemplate.h:31
Null argument is not allowed.
Definition EnrollmentException.h:156
Holds various biometric representation types for print.
Definition PrintTemplate.h:26
std::shared_ptr< ICSTemplate > GetICSRepresentation() const
Provides ICS (Innovatrics proprietary extracted template) representation of print.
Definition PrintTemplate.h:72