// rdidvalidator.cpp
//
// Validate a string as being valid for a MySQL identifier.
//   See http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
//
//   (C) Copyright 2014,2016 Fred Gleason <fredg@paravelsystems.com>
//
//   This program is free software; you can redistribute it and/or modify
//   it under the terms of the GNU General Public License version 2 as
//   published by the Free Software Foundation.
//
//   This program is distributed in the hope that it will be useful,
//   but WITHOUT ANY WARRANTY; without even the implied warranty of
//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//   GNU General Public License for more details.
//
//   You should have received a copy of the GNU General Public
//   License along with this program; if not, write to the Free Software
//   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//

#include <rdidvalidator.h>

RDIdValidator::RDIdValidator(QObject *parent)
  : QValidator(parent)
{
  banned_chars.push_back('/');
  banned_chars.push_back('\\');
  banned_chars.push_back('.');
  banned_chars.push_back(96);    // Apostrophe Quote
}


QValidator::State RDIdValidator::validate(QString &input,int &pos) const
{
  if(input.length()==0) {
    return QValidator::Acceptable;
  }
  for(unsigned i=0;i<banned_chars.size();i++) {
    if(input.contains(banned_chars.at(i))) {
      return QValidator::Invalid;
    }
  }
  return QValidator::Acceptable;
}


void RDIdValidator::addBannedChar(char c)
{
  banned_chars.push_back(c);
}