Remove unique pointer
This commit is contained in:
parent
f4c9f9067c
commit
8601bb11c3
6
Makefile
6
Makefile
|
@ -10,5 +10,9 @@ all: iban.so
|
||||||
|
|
||||||
iban.so: iban.cc
|
iban.so: iban.cc
|
||||||
$(CC) $(CFLAGS) -o iban.o -c iban.cc $(INCLUDEDIRS)
|
$(CC) $(CFLAGS) -o iban.o -c iban.cc $(INCLUDEDIRS)
|
||||||
$(CC) -shared -o iban.so iban.o $(LIBDIR) -lpq -lm
|
$(CC) -Wl,--gc-sections -shared -o iban.so iban.o $(LIBDIR) -lpq -lm -lstdc++
|
||||||
# cp iban.so $(LIBINSTALL)
|
# cp iban.so $(LIBINSTALL)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@$(RM) -rf *.o
|
||||||
|
@$(RM) -rf iban.so
|
||||||
|
|
544
iban.cc
544
iban.cc
|
@ -24,8 +24,8 @@ extern "C"
|
||||||
extern Datum iban_validate(PG_FUNCTION_ARGS);
|
extern Datum iban_validate(PG_FUNCTION_ARGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Validate::addSpecification(std::unique_ptr<Specification> specPtr) {
|
void Validate::addSpecification(Specification* specPtr) {
|
||||||
this->specifications[specPtr->countryCode] = std::move(specPtr);
|
this->specifications[specPtr->countryCode] = specPtr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -105,285 +105,291 @@ std::regex parseStructure(std::string structure) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Validate::setSelectedSpecification(std::string countryCode) {
|
void Validate::setSelectedSpecification(std::string countryCode) {
|
||||||
this->selectedSpec = std::move(this->specifications[countryCode]);
|
this->selectedSpec = this->specifications[countryCode];
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Validate::isValid(std::string arg) {
|
bool Validate::isValid(std::string arg) {
|
||||||
std::unique_ptr<Specification> spec;
|
Specification* spec = new Specification("", 0, "", arg);
|
||||||
spec = (std::make_unique<Specification>("", 0, "", arg));
|
|
||||||
if (!this->selectedSpec) {
|
if (!this->selectedSpec) {
|
||||||
std::transform(spec->example.begin(), spec->example.end(),
|
std::transform(spec->example.begin(), spec->example.end(), spec->example.begin(), toupper);
|
||||||
spec->example.begin(), toupper);
|
|
||||||
spec->countryCode = spec->example.substr(0, 2);
|
spec->countryCode = spec->example.substr(0, 2);
|
||||||
spec->length = spec->example.length();
|
spec->length = spec->example.length();
|
||||||
setSelectedSpecification(spec->countryCode);
|
setSelectedSpecification(spec->countryCode);
|
||||||
}
|
}
|
||||||
if (!(this->selectedSpec == nullptr)) {
|
if (!(this->selectedSpec == nullptr)) {
|
||||||
std::string shortened = spec->example.substr(4, spec->example.length());
|
std::string shortened = spec->example.substr(4, spec->example.length());
|
||||||
return this->selectedSpec->length == spec->length
|
bool result = this->selectedSpec->length == spec->length
|
||||||
&& this->selectedSpec->countryCode.compare(
|
&& this->selectedSpec->countryCode.compare(spec->countryCode) == 0
|
||||||
spec->countryCode) == 0
|
&& std::regex_match(shortened, parseStructure(this->selectedSpec->structure))
|
||||||
&& std::regex_match(shortened, parseStructure(
|
&& iso7064Mod97_10(spec->example);
|
||||||
this->selectedSpec->structure))
|
delete spec;
|
||||||
&& iso7064Mod97_10(spec->example);
|
return result;
|
||||||
} else {
|
} else {
|
||||||
|
delete spec;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Validate::~Validate() {
|
||||||
|
for (auto it = specifications.begin(); it != specifications.end(); it++) {
|
||||||
|
delete it->second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Validate::Validate() {
|
Validate::Validate() {
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"AD", 24, "F04F04A12",
|
"AD", 24, "F04F04A12",
|
||||||
"AD1200012030200359100100")));
|
"AD1200012030200359100100"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"AE", 23, "F03F16",
|
"AE", 23, "F03F16",
|
||||||
"AE070331234567890123456")));
|
"AE070331234567890123456"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"AL", 28, "F08A16",
|
"AL", 28, "F08A16",
|
||||||
"AL47212110090000000235698741")));
|
"AL47212110090000000235698741"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"AT", 20, "F05F11",
|
"AT", 20, "F05F11",
|
||||||
"AT611904300234573201")));
|
"AT611904300234573201"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"AZ", 28, "U04A20",
|
"AZ", 28, "U04A20",
|
||||||
"AZ21NABZ00000000137010001944")));
|
"AZ21NABZ00000000137010001944"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"BA", 20, "F03F03F08F02",
|
"BA", 20, "F03F03F08F02",
|
||||||
"BA391290079401028494")));
|
"BA391290079401028494"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"BE", 16, "F03F07F02",
|
"BE", 16, "F03F07F02",
|
||||||
"BE68539007547034")));
|
"BE68539007547034"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"BG", 22, "U04F04F02A08",
|
"BG", 22, "U04F04F02A08",
|
||||||
"BG80BNBG96611020345678")));
|
"BG80BNBG96611020345678"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"BH", 22, "U04A14",
|
"BH", 22, "U04A14",
|
||||||
"BH67BMAG00001299123456")));
|
"BH67BMAG00001299123456"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"BR", 29, "F08F05F10U01A01",
|
"BR", 29, "F08F05F10U01A01",
|
||||||
"BR9700360305000010009795493P1")));
|
"BR9700360305000010009795493P1"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"CH", 21, "F05A12",
|
"CH", 21, "F05A12",
|
||||||
"CH9300762011623852957")));
|
"CH9300762011623852957"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"CR", 21, "F03F14",
|
"CR", 21, "F03F14",
|
||||||
"CR0515202001026284066")));
|
"CR0515202001026284066"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"CY", 28, "F03F05A16",
|
"CY", 28, "F03F05A16",
|
||||||
"CY17002001280000001200527600")));
|
"CY17002001280000001200527600"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"CZ", 24, "F04F06F10",
|
"CZ", 24, "F04F06F10",
|
||||||
"CZ6508000000192000145399")));
|
"CZ6508000000192000145399"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"DE", 22, "F08F10",
|
"DE", 22, "F08F10",
|
||||||
"DE89370400440532013000")));
|
"DE89370400440532013000"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"DK", 18, "F04F09F01",
|
"DK", 18, "F04F09F01",
|
||||||
"DK5000400440116243")));
|
"DK5000400440116243"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"DO", 28, "U04F20",
|
"DO", 28, "U04F20",
|
||||||
"DO28BAGR00000001212453611324")));
|
"DO28BAGR00000001212453611324"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"EE", 20, "F02F02F11F01",
|
"EE", 20, "F02F02F11F01",
|
||||||
"EE382200221020145685")));
|
"EE382200221020145685"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"ES", 24, "F04F04F01F01F10",
|
"ES", 24, "F04F04F01F01F10",
|
||||||
"ES9121000418450200051332")));
|
"ES9121000418450200051332"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"FI", 18, "F06F07F01",
|
"FI", 18, "F06F07F01",
|
||||||
"FI2112345600000785")));
|
"FI2112345600000785"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"FO", 18, "F04F09F01",
|
"FO", 18, "F04F09F01",
|
||||||
"FO6264600001631634")));
|
"FO6264600001631634"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"FR", 27, "F05F05A11F02",
|
"FR", 27, "F05F05A11F02",
|
||||||
"FR1420041010050500013M02606")));
|
"FR1420041010050500013M02606"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"GB", 22, "U04F06F08",
|
"GB", 22, "U04F06F08",
|
||||||
"GB29NWBK60161331926819")));
|
"GB29NWBK60161331926819"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"GE", 22, "U02F16",
|
"GE", 22, "U02F16",
|
||||||
"GE29NB0000000101904917")));
|
"GE29NB0000000101904917"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"GI", 23, "U04A15",
|
"GI", 23, "U04A15",
|
||||||
"GI75NWBK000000007099453")));
|
"GI75NWBK000000007099453"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"GL", 18, "F04F09F01",
|
"GL", 18, "F04F09F01",
|
||||||
"GL8964710001000206")));
|
"GL8964710001000206"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"GR", 27, "F03F04A16",
|
"GR", 27, "F03F04A16",
|
||||||
"GR1601101250000000012300695")));
|
"GR1601101250000000012300695"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"GT", 28, "A04A20",
|
"GT", 28, "A04A20",
|
||||||
"GT82TRAJ01020000001210029690")));
|
"GT82TRAJ01020000001210029690"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"HR", 21, "F07F10",
|
"HR", 21, "F07F10",
|
||||||
"HR1210010051863000160")));
|
"HR1210010051863000160"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"HU", 28, "F03F04F01F15F01",
|
"HU", 28, "F03F04F01F15F01",
|
||||||
"HU42117730161111101800000000")));
|
"HU42117730161111101800000000"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"IE", 22, "U04F06F08",
|
"IE", 22, "U04F06F08",
|
||||||
"IE29AIBK93115212345678")));
|
"IE29AIBK93115212345678"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"IL", 23, "F03F03F13",
|
"IL", 23, "F03F03F13",
|
||||||
"IL620108000000099999999")));
|
"IL620108000000099999999"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"IS", 26, "F04F02F06F10",
|
"IS", 26, "F04F02F06F10",
|
||||||
"IS140159260076545510730339")));
|
"IS140159260076545510730339"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"IT", 27, "U01F05F05A12",
|
"IT", 27, "U01F05F05A12",
|
||||||
"IT60X0542811101000000123456")));
|
"IT60X0542811101000000123456"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"KW", 30, "U04A22",
|
"KW", 30, "U04A22",
|
||||||
"KW81CBKU0000000000001234560101")));
|
"KW81CBKU0000000000001234560101"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"KZ", 20, "F03A13",
|
"KZ", 20, "F03A13",
|
||||||
"KZ86125KZT5004100100")));
|
"KZ86125KZT5004100100"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"LB", 28, "F04A20",
|
"LB", 28, "F04A20",
|
||||||
"LB62099900000001001901229114")));
|
"LB62099900000001001901229114"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"LC", 32, "U04F24",
|
"LC", 32, "U04F24",
|
||||||
"LC07HEMM000100010012001200013015")));
|
"LC07HEMM000100010012001200013015"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"LI", 21, "F05A12",
|
"LI", 21, "F05A12",
|
||||||
"LI21088100002324013AA")));
|
"LI21088100002324013AA"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"LT", 20, "F05F11",
|
"LT", 20, "F05F11",
|
||||||
"LT121000011101001000")));
|
"LT121000011101001000"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"LU", 20, "F03A13",
|
"LU", 20, "F03A13",
|
||||||
"LU280019400644750000")));
|
"LU280019400644750000"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"LV", 21, "U04A13",
|
"LV", 21, "U04A13",
|
||||||
"LV80BANK0000435195001")));
|
"LV80BANK0000435195001"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"MC", 27, "F05F05A11F02",
|
"MC", 27, "F05F05A11F02",
|
||||||
"MC5811222000010123456789030")));
|
"MC5811222000010123456789030"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"MD", 24, "U02A18",
|
"MD", 24, "U02A18",
|
||||||
"MD24AG000225100013104168")));
|
"MD24AG000225100013104168"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"ME", 22, "F03F13F02",
|
"ME", 22, "F03F13F02",
|
||||||
"ME25505000012345678951")));
|
"ME25505000012345678951"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"MK", 19, "F03A10F02",
|
"MK", 19, "F03A10F02",
|
||||||
"MK07250120000058984")));
|
"MK07250120000058984"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"MR", 27, "F05F05F11F02",
|
"MR", 27, "F05F05F11F02",
|
||||||
"MR1300020001010000123456753")));
|
"MR1300020001010000123456753"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"MT", 31, "U04F05A18",
|
"MT", 31, "U04F05A18",
|
||||||
"MT84MALT011000012345MTLCAST001S")));
|
"MT84MALT011000012345MTLCAST001S"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"MU", 30, "U04F02F02F12F03U03",
|
"MU", 30, "U04F02F02F12F03U03",
|
||||||
"MU17BOMM0101101030300200000MUR")));
|
"MU17BOMM0101101030300200000MUR"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"NL", 18, "U04F10",
|
"NL", 18, "U04F10",
|
||||||
"NL91ABNA0417164300")));
|
"NL91ABNA0417164300"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"NO", 15, "F04F06F01",
|
"NO", 15, "F04F06F01",
|
||||||
"NO9386011117947")));
|
"NO9386011117947"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"PK", 24, "U04A16",
|
"PK", 24, "U04A16",
|
||||||
"PK36SCBL0000001123456702")));
|
"PK36SCBL0000001123456702"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"PL", 28, "F08F16",
|
"PL", 28, "F08F16",
|
||||||
"PL61109010140000071219812874")));
|
"PL61109010140000071219812874"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"PS", 29, "U04A21",
|
"PS", 29, "U04A21",
|
||||||
"PS92PALS000000000400123456702")));
|
"PS92PALS000000000400123456702"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"PT", 25, "F04F04F11F02",
|
"PT", 25, "F04F04F11F02",
|
||||||
"PT50000201231234567890154")));
|
"PT50000201231234567890154"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"RO", 24, "U04A16",
|
"RO", 24, "U04A16",
|
||||||
"RO49AAAA1B31007593840000")));
|
"RO49AAAA1B31007593840000"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"RS", 22, "F03F13F02",
|
"RS", 22, "F03F13F02",
|
||||||
"RS35260005601001611379")));
|
"RS35260005601001611379"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"SA", 24, "F02A18",
|
"SA", 24, "F02A18",
|
||||||
"SA0380000000608010167519")));
|
"SA0380000000608010167519"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"SE", 24, "F03F16F01",
|
"SE", 24, "F03F16F01",
|
||||||
"SE4550000000058398257466")));
|
"SE4550000000058398257466"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"SI", 19, "F05F08F02",
|
"SI", 19, "F05F08F02",
|
||||||
"SI56263300012039086")));
|
"SI56263300012039086"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"SK", 24, "F04F06F10",
|
"SK", 24, "F04F06F10",
|
||||||
"SK3112000000198742637541")));
|
"SK3112000000198742637541"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"SM", 27, "U01F05F05A12",
|
"SM", 27, "U01F05F05A12",
|
||||||
"SM86U0322509800000000270100")));
|
"SM86U0322509800000000270100"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"ST", 25, "F08F11F02",
|
"ST", 25, "F08F11F02",
|
||||||
"ST68000100010051845310112")));
|
"ST68000100010051845310112"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"TL", 23, "F03F14F02",
|
"TL", 23, "F03F14F02",
|
||||||
"TL380080012345678910157")));
|
"TL380080012345678910157"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"TN", 24, "F02F03F13F02",
|
"TN", 24, "F02F03F13F02",
|
||||||
"TN5910006035183598478831")));
|
"TN5910006035183598478831"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"TR", 26, "F05F01A16",
|
"TR", 26, "F05F01A16",
|
||||||
"TR330006100519786457841326")));
|
"TR330006100519786457841326"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"VG", 24, "U04F16",
|
"VG", 24, "U04F16",
|
||||||
"VG96VPVG0000012345678901")));
|
"VG96VPVG0000012345678901"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"XK", 20, "F04F10F02",
|
"XK", 20, "F04F10F02",
|
||||||
"XK051212012345678906")));
|
"XK051212012345678906"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"AO", 25, "F21",
|
"AO", 25, "F21",
|
||||||
"AO69123456789012345678901")));
|
"AO69123456789012345678901"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"BF", 27, "F23",
|
"BF", 27, "F23",
|
||||||
"BF2312345678901234567890123")));
|
"BF2312345678901234567890123"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"BI", 16, "F12",
|
"BI", 16, "F12",
|
||||||
"BI41123456789012")));
|
"BI41123456789012"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"BJ", 28, "F24",
|
"BJ", 28, "F24",
|
||||||
"BJ39123456789012345678901234")));
|
"BJ39123456789012345678901234"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"CI", 28, "U01F23",
|
"CI", 28, "U01F23",
|
||||||
"CI17A12345678901234567890123")));
|
"CI17A12345678901234567890123"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"CM", 27, "F23",
|
"CM", 27, "F23",
|
||||||
"CM9012345678901234567890123")));
|
"CM9012345678901234567890123"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"CV", 25, "F21",
|
"CV", 25, "F21",
|
||||||
"CV30123456789012345678901")));
|
"CV30123456789012345678901"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"DZ", 24, "F20",
|
"DZ", 24, "F20",
|
||||||
"DZ8612345678901234567890")));
|
"DZ8612345678901234567890"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"IR", 26, "F22",
|
"IR", 26, "F22",
|
||||||
"IR861234568790123456789012")));
|
"IR861234568790123456789012"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"JO", 30, "A04F22",
|
"JO", 30, "A04F22",
|
||||||
"JO15AAAA1234567890123456789012")));
|
"JO15AAAA1234567890123456789012"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"MG", 27, "F23",
|
"MG", 27, "F23",
|
||||||
"MG1812345678901234567890123")));
|
"MG1812345678901234567890123"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"ML", 28, "U01F23",
|
"ML", 28, "U01F23",
|
||||||
"ML15A12345678901234567890123")));
|
"ML15A12345678901234567890123"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"MZ", 25, "F21",
|
"MZ", 25, "F21",
|
||||||
"MZ25123456789012345678901")));
|
"MZ25123456789012345678901"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"QA", 29, "U04A21",
|
"QA", 29, "U04A21",
|
||||||
"QA30AAAA123456789012345678901")));
|
"QA30AAAA123456789012345678901"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"SN", 28, "U01F23",
|
"SN", 28, "U01F23",
|
||||||
"SN52A12345678901234567890123")));
|
"SN52A12345678901234567890123"));
|
||||||
addSpecification(std::move(std::make_unique<Specification>(
|
addSpecification(new Specification(
|
||||||
"UA", 29, "F25",
|
"UA", 29, "F25",
|
||||||
"UA511234567890123456789012345")));
|
"UA511234567890123456789012345"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
@ -393,7 +399,13 @@ bool account_validate(text *iban) {
|
||||||
Validate val;
|
Validate val;
|
||||||
ciban = text_to_cstring(iban);
|
ciban = text_to_cstring(iban);
|
||||||
|
|
||||||
return val.isValid(std::string(ciban));
|
elog(DEBUG1, "Evaluating '%s'", ciban);
|
||||||
|
|
||||||
|
bool r = val.isValid(std::string(ciban));
|
||||||
|
|
||||||
|
elog(DEBUG1, "Result %d", r);
|
||||||
|
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,12 +4,13 @@
|
||||||
#include "specification.h"
|
#include "specification.h"
|
||||||
|
|
||||||
class Validate {
|
class Validate {
|
||||||
public:
|
public:
|
||||||
Validate();
|
Validate();
|
||||||
|
~Validate();
|
||||||
bool isValid(std::string arg);
|
bool isValid(std::string arg);
|
||||||
void addSpecification(std::unique_ptr<Specification> specPtr);
|
void addSpecification(Specification* specPtr);
|
||||||
void setSelectedSpecification(std::string countryCode);
|
void setSelectedSpecification(std::string countryCode);
|
||||||
|
|
||||||
std::map<std::string, std::unique_ptr<Specification>> specifications;
|
std::map<std::string, Specification*> specifications;
|
||||||
std::unique_ptr<Specification> selectedSpec;
|
Specification* selectedSpec;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue