Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
68552b8f
Commit
68552b8f
authored
Feb 05, 2009
by
Roberto Raggi
Browse files
Added fast lookup of objc type qualifiers.
parent
ad5bdf69
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/shared/cplusplus/ObjectiveCTypeQualifiers.cpp
0 → 100644
View file @
68552b8f
/***************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Qt Software Information (qt-info@nokia.com)
**
**
** Non-Open Source Usage
**
** Licensees may use this file in accordance with the Qt Beta Version
** License Agreement, Agreement version 2.2 provided with the Software or,
** alternatively, in accordance with the terms contained in a written
** agreement between you and Nokia.
**
** GNU General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU General
** Public License versions 2.0 or 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the packaging
** of this file. Please review the following information to ensure GNU
** General Public Licensing requirements will be met:
**
** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
** http://www.gnu.org/copyleft/gpl.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt GPL Exception
** version 1.3, included in the file GPL_EXCEPTION.txt in this package.
**
***************************************************************************/
#include "ObjectiveCTypeQualifiers.h"
CPLUSPLUS_BEGIN_NAMESPACE
static
inline
int
classify2
(
const
char
*
s
)
{
if
(
s
[
0
]
==
'i'
)
{
if
(
s
[
1
]
==
'n'
)
{
return
Token_in
;
}
}
return
Token_identifier
;
}
static
inline
int
classify3
(
const
char
*
s
)
{
if
(
s
[
0
]
==
'o'
)
{
if
(
s
[
1
]
==
'u'
)
{
if
(
s
[
2
]
==
't'
)
{
return
Token_out
;
}
}
}
return
Token_identifier
;
}
static
inline
int
classify5
(
const
char
*
s
)
{
if
(
s
[
0
]
==
'b'
)
{
if
(
s
[
1
]
==
'y'
)
{
if
(
s
[
2
]
==
'r'
)
{
if
(
s
[
3
]
==
'e'
)
{
if
(
s
[
4
]
==
'f'
)
{
return
Token_byref
;
}
}
}
}
}
else
if
(
s
[
0
]
==
'i'
)
{
if
(
s
[
1
]
==
'n'
)
{
if
(
s
[
2
]
==
'o'
)
{
if
(
s
[
3
]
==
'u'
)
{
if
(
s
[
4
]
==
't'
)
{
return
Token_inout
;
}
}
}
}
}
return
Token_identifier
;
}
static
inline
int
classify6
(
const
char
*
s
)
{
if
(
s
[
0
]
==
'b'
)
{
if
(
s
[
1
]
==
'y'
)
{
if
(
s
[
2
]
==
'c'
)
{
if
(
s
[
3
]
==
'o'
)
{
if
(
s
[
4
]
==
'p'
)
{
if
(
s
[
5
]
==
'y'
)
{
return
Token_bycopy
;
}
}
}
}
}
}
else
if
(
s
[
0
]
==
'o'
)
{
if
(
s
[
1
]
==
'n'
)
{
if
(
s
[
2
]
==
'e'
)
{
if
(
s
[
3
]
==
'w'
)
{
if
(
s
[
4
]
==
'a'
)
{
if
(
s
[
5
]
==
'y'
)
{
return
Token_oneway
;
}
}
}
}
}
}
return
Token_identifier
;
}
int
classifyObjectiveCTypeQualifiers
(
const
char
*
s
,
int
n
)
{
switch
(
n
)
{
case
2
:
return
classify2
(
s
);
case
3
:
return
classify3
(
s
);
case
5
:
return
classify5
(
s
);
case
6
:
return
classify6
(
s
);
default:
return
Token_identifier
;
}
// switch
}
CPLUSPLUS_END_NAMESPACE
src/shared/cplusplus/ObjectiveCTypeQualifiers.h
0 → 100644
View file @
68552b8f
/***************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Qt Software Information (qt-info@nokia.com)
**
**
** Non-Open Source Usage
**
** Licensees may use this file in accordance with the Qt Beta Version
** License Agreement, Agreement version 2.2 provided with the Software or,
** alternatively, in accordance with the terms contained in a written
** agreement between you and Nokia.
**
** GNU General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU General
** Public License versions 2.0 or 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the packaging
** of this file. Please review the following information to ensure GNU
** General Public Licensing requirements will be met:
**
** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
** http://www.gnu.org/copyleft/gpl.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt GPL Exception
** version 1.3, included in the file GPL_EXCEPTION.txt in this package.
**
***************************************************************************/
#ifndef CPLUSPLUS_OBJC_TYPEQUALIFIERS_H
#define CPLUSPLUS_OBJC_TYPEQUALIFIERS_H
#include "CPlusPlusForwardDeclarations.h"
CPLUSPLUS_BEGIN_HEADER
CPLUSPLUS_BEGIN_NAMESPACE
enum
{
Token_in
,
Token_out
,
Token_byref
,
Token_inout
,
Token_bycopy
,
Token_oneway
,
Token_identifier
};
CPLUSPLUS_EXPORT
int
classifyObjectiveCTypeQualifiers
(
const
char
*
s
,
int
n
);
CPLUSPLUS_END_NAMESPACE
CPLUSPLUS_END_HEADER
#endif // CPLUSPLUS_OBJC_TYPEQUALIFIERS_H
src/shared/cplusplus/Parser.cpp
View file @
68552b8f
...
...
@@ -56,6 +56,7 @@
#include "Control.h"
#include "AST.h"
#include "Literals.h"
#include "ObjectiveCTypeQualifiers.h"
#include <cstdlib>
#include <cstring>
#include <cassert>
...
...
@@ -4043,16 +4044,11 @@ bool Parser::parseObjCTypeQualifiers()
return
false
;
Identifier
*
id
=
tok
().
identifier
;
if
(
!
strcmp
(
"in"
,
id
->
chars
())
||
!
strcmp
(
"out"
,
id
->
chars
())
||
!
strcmp
(
"inout"
,
id
->
chars
())
||
!
strcmp
(
"bycopy"
,
id
->
chars
())
||
!
strcmp
(
"byref"
,
id
->
chars
())
||
!
strcmp
(
"oneway"
,
id
->
chars
()))
{
consumeToken
();
return
true
;
}
return
false
;
const
int
k
=
classifyObjectiveCTypeQualifiers
(
id
->
chars
(),
id
->
size
());
if
(
k
==
Token_identifier
)
return
false
;
consumeToken
();
return
true
;
}
// objc-end: T_AT_END
...
...
src/shared/cplusplus/cplusplus.pri
View file @
68552b8f
...
...
@@ -36,8 +36,8 @@ HEADERS += \
$$PWD/TranslationUnit.h \
$$PWD/Type.h \
$$PWD/TypeVisitor.h \
$$PWD/PrettyPrinter.h
$$PWD/PrettyPrinter.h
\
$$PWD/ObjectiveCTypeQualifiers.h
SOURCES += \
$$PWD/AST.cpp \
...
...
@@ -55,6 +55,7 @@ SOURCES += \
$$PWD/FullySpecifiedType.cpp \
$$PWD/Keywords.cpp \
$$PWD/ObjectiveCAtKeywords.cpp \
$$PWD/ObjectiveCTypeQualifiers.cpp \
$$PWD/Lexer.cpp \
$$PWD/LiteralTable.cpp \
$$PWD/Literals.cpp \
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment