#include <sqlrelay/sqlrserver.h>
#include <rudiments/charstring.h>
#include <rudiments/character.h>
using namespace rudiments;
class SQLRSERVER_DLLSPEC reversecase : public sqlrpwdenc {
public:
reversecase(xmldomnode *parameters);
char *encrypt(const char *value);
char *decrypt(const char *value);
private:
char *reverse(const char *value);
};
reversecase::reversecase(xmldomnode *parameters) : sqlrpwdenc(parameters) {
}
char *reversecase::encrypt(const char *value) {
return reverse(value);
}
char *reversecase::decrypt(const char *value) {
return reverse(value);
}
char *reversecase::reverse(const char *value) {
char *retval=charstring::duplicate(value);
for (char *c=retval; *c; c++) {
if (character::isUpperCase(*c)) {
*c=character::toLowerCase(*c);
} else if (character::isLowerCase(*c)) {
*c=character::toUpperCase(*c);
}
}
return retval;
}
extern "C" {
sqlrpwdenc SQLRSERVER_DLLSPEC *new_reversecase(xmldomnode *parameters) {
return new reversecase(parameters);
}
}