~ubuntu-branches/debian/jessie/ugene/jessie

« back to all changes in this revision

Viewing changes to src/core/src/util_text/TextUtils.cpp

  • Committer: Package Import Robot
  • Author(s): Steffen Moeller
  • Date: 2011-11-02 13:29:07 UTC
  • mfrom: (1.2.1) (3.1.11 natty)
  • Revision ID: package-import@ubuntu.com-20111102132907-o34gwnt0uj5g6hen
Tags: 1.9.8+repack-1
* First release to Debian
  - added README.Debian
  - increased policy version to 3.9.2
  - added URLs for version control system
* Added debug package.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*****************************************************************
2
 
* Unipro UGENE - Integrated Bioinformatics Suite
3
 
* Copyright (C) 2008 Unipro, Russia (http://ugene.unipro.ru)
4
 
* All Rights Reserved
5
 
6
 
*     This source code is distributed under the terms of the
7
 
*     GNU General Public License. See the files COPYING and LICENSE
8
 
*     for details.
9
 
*****************************************************************/
10
 
 
11
 
#include "TextUtils.h"
12
 
 
13
 
#include <assert.h>
14
 
 
15
 
namespace GB2 {
16
 
 
17
 
static QBitArray getAlphas();
18
 
static QBitArray getAlphaNums();
19
 
static QBitArray getNums();
20
 
static QBitArray getWhites();
21
 
static QBitArray getLines();
22
 
static QBitArray getBinary();
23
 
static QByteArray getUpperCaseMap();
24
 
static QByteArray getLowerCaseMap();
25
 
static QByteArray getSpaceLine();
26
 
 
27
 
const QBitArray TextUtils::ALPHAS = getAlphas();
28
 
const QBitArray TextUtils::ALPHA_NUMS = getAlphaNums();
29
 
const QBitArray TextUtils::NUMS = getNums();
30
 
const QBitArray TextUtils::WHITES = getWhites();
31
 
const QBitArray TextUtils::LINE_BREAKS = getLines();
32
 
const QBitArray TextUtils::BINARY = getBinary();
33
 
const QByteArray TextUtils::UPPER_CASE_MAP = getUpperCaseMap();
34
 
const QByteArray TextUtils::LOWER_CASE_MAP = getLowerCaseMap();
35
 
const QByteArray TextUtils::SPACE_LINE = getSpaceLine();
36
 
 
37
 
//TODO: optimize shared data structs access! -> replace it with arrays with bounds checking in debug
38
 
 
39
 
static QBitArray getEmptyBitMap() {
40
 
        return QBitArray(256);
41
 
}
42
 
 
43
 
static QBitArray getBinary() {
44
 
        QBitArray res = getEmptyBitMap();
45
 
        res.fill(true, 0, 31);
46
 
    res &= ~getWhites();
47
 
        return res;
48
 
}
49
 
 
50
 
static QBitArray getAlphaNums() {
51
 
        QBitArray res  = getAlphas();
52
 
        res|= getNums();
53
 
        return res;
54
 
}
55
 
 
56
 
 
57
 
static QBitArray getAlphas() {
58
 
        QBitArray res = getEmptyBitMap();
59
 
        res.fill(true, 'A', 'Z'+1);
60
 
        res.fill(true, 'a', 'z'+1);
61
 
        return res;
62
 
}
63
 
 
64
 
static QBitArray getNums() {
65
 
        QBitArray res = getEmptyBitMap();
66
 
        res.fill(true, '0', '9'+1);
67
 
        return res;
68
 
}
69
 
 
70
 
static QBitArray getWhites() {
71
 
    //'\t', '\n', '\v', '\f', '\r', and ' '
72
 
        QBitArray res = getEmptyBitMap();
73
 
    res['\t']=res['\n']=res['\v']=res['\f']=res['\r']=res[' ']=true;
74
 
        return res;
75
 
}
76
 
 
77
 
QBitArray getLines() {
78
 
        QBitArray res = getEmptyBitMap();
79
 
        res['\r'] = res['\n'] = true;
80
 
        return res;
81
 
}
82
 
 
83
 
QBitArray TextUtils::createBitMap(char c1) {
84
 
        QBitArray res = getEmptyBitMap();
85
 
        res[c1] = true;
86
 
        return res;
87
 
}
88
 
 
89
 
QByteArray TextUtils::createMap(const QBitArray& bits, char defaultChar) {
90
 
        assert(bits.size() == 256);
91
 
        QByteArray res(256, 0);
92
 
        for(int i=0;i<256; i++) {
93
 
                res[i] = bits[i] ? (char)i : defaultChar;
94
 
        }
95
 
        return res;
96
 
}
97
 
 
98
 
static QByteArray getUpperCaseMap() {
99
 
        QByteArray b(256, 0);
100
 
        for(int i=0;i<b.size();i++) {
101
 
                char c = (char)i;
102
 
                if (c >= 'a' && c<='z') {
103
 
                        c-='a'-'A';
104
 
                }
105
 
                b[i] = c;
106
 
        }
107
 
        return b;
108
 
}
109
 
 
110
 
static QByteArray getLowerCaseMap() {
111
 
        QByteArray b(256, 0);
112
 
        for(int i=0;i<b.size();i++) {
113
 
                char c = (char)i;
114
 
                if (c >= 'A' && c<='Z') {
115
 
                        c+='a'-'A';
116
 
                }
117
 
                b[i] = c;
118
 
        }
119
 
        return b;
120
 
}
121
 
 
122
 
 
123
 
static QByteArray getSpaceLine() {
124
 
        QByteArray res(4096, ' ');
125
 
        res[4096]='\0';
126
 
        return res;
127
 
}
128
 
 
129
 
QString TextUtils::variate(const QString& prefix, const QString& sep, const QSet<QString>& filter, bool mustHaveSuffix, int startSeed) {
130
 
    int seed = startSeed;
131
 
    QString res = prefix;
132
 
    if (!mustHaveSuffix && !filter.contains(res)) {
133
 
        return res;
134
 
    }
135
 
    do {
136
 
        res = prefix + sep + QString::number(seed++);
137
 
    } while (filter.contains(res));
138
 
    return res;
139
 
}
140
 
 
141
 
}//namespace