~ubuntu-branches/debian/sid/kdevelop/sid

« back to all changes in this revision

Viewing changes to kdevdesigner/designer/asciivalidator.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jeremy Lainé
  • Date: 2006-05-23 18:39:42 UTC
  • Revision ID: james.westby@ubuntu.com-20060523183942-hucifbvh68k2bwz7
Tags: upstream-3.3.2
Import upstream version 3.3.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**********************************************************************
 
2
** Copyright (C) 2000 Trolltech AS.  All rights reserved.
 
3
**
 
4
** This file is part of Qt Designer.
 
5
**
 
6
** This file may be distributed and/or modified under the terms of the
 
7
** GNU General Public License version 2 as published by the Free Software
 
8
** Foundation and appearing in the file LICENSE.GPL included in the
 
9
** packaging of this file.
 
10
**
 
11
** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
 
12
** licenses may use this file in accordance with the Qt Commercial License
 
13
** Agreement provided with the Software.
 
14
**
 
15
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 
16
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 
17
**
 
18
** See http://www.trolltech.com/gpl/ for GPL licensing information.
 
19
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
 
20
**   information about Qt Commercial License Agreements.
 
21
**
 
22
** Contact info@trolltech.com if any conditions of this licensing are
 
23
** not clear to you.
 
24
**
 
25
**********************************************************************/
 
26
 
 
27
#include "asciivalidator.h"
 
28
 
 
29
#include <qstring.h>
 
30
 
 
31
AsciiValidator::AsciiValidator( QObject * parent, const char *name )
 
32
    : QValidator( parent, name ), functionName( FALSE )
 
33
{
 
34
}
 
35
 
 
36
AsciiValidator::AsciiValidator( bool funcName, QObject * parent, const char *name )
 
37
    : QValidator( parent, name ), functionName( funcName )
 
38
{
 
39
}
 
40
 
 
41
AsciiValidator::AsciiValidator( const QString &allow, QObject * parent, const char *name )
 
42
    : QValidator( parent, name ), functionName( FALSE ), allowedChars( allow )
 
43
{
 
44
}
 
45
 
 
46
AsciiValidator::~AsciiValidator()
 
47
{
 
48
}
 
49
 
 
50
QValidator::State AsciiValidator::validate( QString &s, int & ) const
 
51
{
 
52
    bool inParen = FALSE;
 
53
    bool outParen = FALSE;
 
54
    if ( !s.isEmpty() && s[0].row() == 0 && s[0].cell() >= '0' && s[0].cell() <= '9' )
 
55
        s[0] = '_';
 
56
    for ( int i = 0, j = 0; i < (int) s.length(); i++ ) {
 
57
        uchar r = s[i].row();
 
58
        uchar c = s[i].cell();
 
59
 
 
60
        if ( outParen ) { // check if we have 'const' or 'volatile'
 
61
            static const QString con = " const";
 
62
            static const QString vol = " volatile";
 
63
            QString mid = s.mid( j );
 
64
            if ( !( con.startsWith( mid ) || vol.startsWith( mid ) ) )
 
65
                return QValidator::Invalid;
 
66
        }
 
67
 
 
68
        if ( inParen && c != ')' )
 
69
            continue;
 
70
 
 
71
        if ( r == 0 && ( ( c >= '0' && c <= '9' ) ||
 
72
                         ( c >= 'a' && c <= 'z' ) ||
 
73
                         ( c >= 'A' && c <= 'Z' ) ) )
 
74
            continue;
 
75
        
 
76
        if ( functionName ) {
 
77
            if ( c == '(' ) {
 
78
                inParen = TRUE;
 
79
                continue;
 
80
            }
 
81
            if ( c == ')' ) {
 
82
                outParen = TRUE;
 
83
                j = i + 1;
 
84
                continue;
 
85
            }
 
86
        }
 
87
        
 
88
        if ( allowedChars.find( s[ i ] ) != -1 )
 
89
            continue;
 
90
        
 
91
        s[i] = '_';
 
92
    }
 
93
    return QValidator::Acceptable;
 
94
}