Slow shaping
This commit is contained in:
parent
46097ddcae
commit
1a676c541a
46
CNS.cpp
46
CNS.cpp
|
@ -1,16 +1,11 @@
|
|||
#include "CNS.h"
|
||||
|
||||
cnsp::CNS cnsp::dati_CNS_to_cpp() {
|
||||
cnsp::CNS data;
|
||||
|
||||
void CNS::fromSmartCard(void) {
|
||||
char* buffer;
|
||||
size_t len;
|
||||
int rv = read_dati_personali_c(&buffer, &len);
|
||||
std::clog << "[D] " << rv << std::endl;
|
||||
if (rv != 0) throw ExPCSC("can not read_dati_personali_c()");
|
||||
|
||||
//std::clog << "[D] " << len << '\t' << buffer << std::endl;
|
||||
|
||||
std::vector<std::string> field;
|
||||
|
||||
for (int i = 12; i < len; ) {
|
||||
|
@ -27,24 +22,33 @@ cnsp::CNS cnsp::dati_CNS_to_cpp() {
|
|||
free(buffer);
|
||||
|
||||
for (int i = 0; i < field.size(); ++i) {
|
||||
std::clog << i << '\t' << field[i] << std::endl;
|
||||
qDebug() << i << '\t' << field[i].data();
|
||||
switch (i) {
|
||||
case 0: data.dataRilascio = QDate::fromString(QString(field[i].data()), "ddMMyyyy"); break;
|
||||
case 1: data.dataScadenza = QDate::fromString(QString(field[i].data()), "ddMMyyyy"); break;
|
||||
case 2: data.cognome = QString(field[i].data()); break;
|
||||
case 3: data.nome = QString(field[i].data()); break;
|
||||
case 4: data.dataNascita = QDate::fromString(QString(field[i].data()), "ddMMyyyy"); break;
|
||||
case 5: data.sesso = field[i] == "F" ? cnsp::F : cnsp::M; break; /* TODO what about other genders? */
|
||||
case 7: data.codiceFiscale = QString(field[i].data()); break;
|
||||
case 9: data.comuneNascita = QString(field[i].data()); break;
|
||||
case 12: data.comuneResidenza = QString(field[i].data()); break;
|
||||
case 0: this->dataRilascio = QDate::fromString(QString(field[i].data()), "ddMMyyyy"); break;
|
||||
case 1: this->dataScadenza = QDate::fromString(QString(field[i].data()), "ddMMyyyy"); break;
|
||||
case 2: this->cognome = QString(field[i].data()); break;
|
||||
case 3: this->nome = QString(field[i].data()); break;
|
||||
case 4: this->dataNascita = QDate::fromString(QString(field[i].data()), "ddMMyyyy"); break;
|
||||
case 5: this->sesso = field[i] == "F" ? F : M; break; /* TODO what about other genders? */
|
||||
case 7: this->codiceFiscale = QString(field[i].data()); break;
|
||||
case 9: this->comuneNascita = QString(field[i].data()); break;
|
||||
case 12: this->comuneResidenza = QString(field[i].data()); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
QTextStream& operator<< (QTextStream& os, const CNS& cns) {
|
||||
os << "DataRilascio:\t" << cns.dataRilascio.year() << '-' << cns.dataRilascio.month() << '-' << cns.dataRilascio.day() << endl;
|
||||
os << "DataScadenza:\t" << cns.dataScadenza.year() << '-' << cns.dataScadenza.month() << '-' << cns.dataScadenza.day() << endl;
|
||||
os << "Nome:\t" << cns.nome << endl;
|
||||
os << "Cognome:\t" << cns.cognome << endl;
|
||||
os << "DataNascita:\t" << cns.dataNascita.year() << '-' << cns.dataNascita.month() << '-' << cns.dataNascita.day() << endl;
|
||||
os << "ComuneNascita:\t" << cns.comuneNascita << endl;
|
||||
os << "ComuneResidenza:\t" << cns.comuneResidenza << endl;
|
||||
os << "CodiceFiscale:\t" << cns.codiceFiscale << endl;
|
||||
os << "Sesso:\t" << ((cns.sesso == F) ? 'F' : 'M') << endl;
|
||||
|
||||
return os;
|
||||
}
|
24
CNS.h
24
CNS.h
|
@ -7,19 +7,21 @@
|
|||
#include <vector>
|
||||
|
||||
#include <QDate>
|
||||
#include <QDebug>
|
||||
#include <QString>
|
||||
#include <QTextStream>
|
||||
|
||||
#include "Ex.h"
|
||||
|
||||
#include "read_dati_personali.h"
|
||||
#include "read_dati_personali_c.h"
|
||||
|
||||
namespace cnsp {
|
||||
enum Sex {
|
||||
F,
|
||||
M
|
||||
};
|
||||
enum Sex {
|
||||
F,
|
||||
M
|
||||
};
|
||||
|
||||
struct CNS {
|
||||
class CNS {
|
||||
private:
|
||||
QString nome;
|
||||
QString cognome;
|
||||
QDate dataNascita;
|
||||
|
@ -29,10 +31,10 @@ namespace cnsp {
|
|||
Sex sesso;
|
||||
QDate dataRilascio;
|
||||
QDate dataScadenza;
|
||||
};
|
||||
|
||||
CNS dati_CNS_to_cpp(void);
|
||||
}
|
||||
public:
|
||||
void fromSmartCard(void);
|
||||
friend QTextStream& operator<<(QTextStream& os, const CNS& cns);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
|
1
Ex.cpp
1
Ex.cpp
|
@ -18,7 +18,6 @@ Ex::Ex(const char* msg, int n) {
|
|||
}
|
||||
*/
|
||||
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const Ex& e) {
|
||||
os << e.msg;
|
||||
return os;
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
=======================================================================
|
||||
=== CNSPARSER ===
|
||||
=======================================================================
|
||||
|
||||
A parser for Dati Personali contained in your Italian Carta Nazionale dei Servizi.
|
||||
|
||||
= Compile =
|
||||
$ cd $REPO
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
$ qmake ..
|
||||
$ make -j$(nproc)
|
||||
|
||||
= Disable debugging =
|
||||
QT_LOGGING_RULES="*.debug=false;"
|
|
@ -27,12 +27,12 @@ SOURCES += \
|
|||
main.cpp \
|
||||
CNS.cpp \
|
||||
Ex.cpp \
|
||||
read_dati_personali.cpp
|
||||
read_dati_personali_c.cpp
|
||||
|
||||
HEADERS += \
|
||||
CNS.h \
|
||||
Ex.h \
|
||||
read_dati_personali.h
|
||||
read_dati_personali_c.h
|
||||
|
||||
QMAKE_CXXFLAGS += $(shell pkg-config --cflags libpcsclite)
|
||||
QMAKE_LFLAGS += $(shell pkg-config --libs libpcsclite)
|
||||
|
|
15
main.cpp
15
main.cpp
|
@ -5,21 +5,14 @@
|
|||
#include "CNS.h"
|
||||
|
||||
int main(void) {
|
||||
cnsp::CNS cns;
|
||||
CNS cns;
|
||||
int r = 0;
|
||||
|
||||
try {
|
||||
cns = cnsp::dati_CNS_to_cpp();
|
||||
cns.fromSmartCard();
|
||||
|
||||
QTextStream(stdout) << "Data Rilascio:\t" << cns.dataRilascio.year() << '-' << cns.dataRilascio.month() << '-' << cns.dataRilascio.day() << endl;
|
||||
QTextStream(stdout) << "Data Scadenza:\t" << cns.dataScadenza.year() << '-' << cns.dataScadenza.month() << '-' << cns.dataScadenza.day() << endl;
|
||||
QTextStream(stdout) << "Nome:\t" << cns.nome << endl;
|
||||
QTextStream(stdout) << "Cognome:\t" << cns.cognome << endl;
|
||||
QTextStream(stdout) << "Data Nascita:\t" << cns.dataNascita.year() << '-' << cns.dataNascita.month() << '-' << cns.dataNascita.day() << endl;
|
||||
QTextStream(stdout) << "Comune Nascita:\t" << cns.comuneNascita << endl;
|
||||
QTextStream(stdout) << "Comune Residenza:\t" << cns.comuneResidenza << endl;
|
||||
QTextStream(stdout) << "Codice Fiscale:\t" << cns.codiceFiscale << endl;
|
||||
QTextStream(stdout) << "Sesso:\t" << cns.sesso << endl;
|
||||
QTextStream out(stdout);
|
||||
out << cns << endl;
|
||||
|
||||
r = 0;
|
||||
} catch (Ex e) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#include "read_dati_personali.h"
|
||||
#include "read_dati_personali_c.h"
|
||||
|
||||
/*
|
||||
``
|
Loading…
Reference in New Issue