summaryrefslogtreecommitdiff
path: root/ext/googlemock/scripts/generator/cpp/keywords.py
diff options
context:
space:
mode:
authorGiacomo Travaglini <giacomo.travaglini@arm.com>2018-11-14 18:41:19 +0000
committerGiacomo Travaglini <giacomo.travaglini@arm.com>2018-12-06 11:52:57 +0000
commit44551545affd785804a3dde8f0e88b3bcf9bf904 (patch)
tree1621afabed0443eed2a5108878b4d5436e6c5f3c /ext/googlemock/scripts/generator/cpp/keywords.py
parent3b7f8c22f4cca8de7222432066273912b65424e3 (diff)
downloadgem5-44551545affd785804a3dde8f0e88b3bcf9bf904.tar.xz
ext: Import googlemock, release version 1.8.0
gtest 1.8.0 is already part of gem5; this patch adds a matching gmock so that it is possible to create Mocks in gem5 unit tests. Please note: the commit is just importing the source code as it is without adding any SConscript; it is hence unbuildable at the moment. Next commits will integrate the mocking framework into the gem5 build system Change-Id: Iaf05ad91b1964aac7ea37085f839027a8d34ba3e Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-by: Ciro Santilli <ciro.santilli@arm.com> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/14695 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com> Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'ext/googlemock/scripts/generator/cpp/keywords.py')
-rwxr-xr-xext/googlemock/scripts/generator/cpp/keywords.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/ext/googlemock/scripts/generator/cpp/keywords.py b/ext/googlemock/scripts/generator/cpp/keywords.py
new file mode 100755
index 000000000..f694450e3
--- /dev/null
+++ b/ext/googlemock/scripts/generator/cpp/keywords.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python
+#
+# Copyright 2007 Neal Norwitz
+# Portions Copyright 2007 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""C++ keywords and helper utilities for determining keywords."""
+
+__author__ = 'nnorwitz@google.com (Neal Norwitz)'
+
+
+try:
+ # Python 3.x
+ import builtins
+except ImportError:
+ # Python 2.x
+ import __builtin__ as builtins
+
+
+if not hasattr(builtins, 'set'):
+ # Nominal support for Python 2.3.
+ from sets import Set as set
+
+
+TYPES = set('bool char int long short double float void wchar_t unsigned signed'.split())
+TYPE_MODIFIERS = set('auto register const inline extern static virtual volatile mutable'.split())
+ACCESS = set('public protected private friend'.split())
+
+CASTS = set('static_cast const_cast dynamic_cast reinterpret_cast'.split())
+
+OTHERS = set('true false asm class namespace using explicit this operator sizeof'.split())
+OTHER_TYPES = set('new delete typedef struct union enum typeid typename template'.split())
+
+CONTROL = set('case switch default if else return goto'.split())
+EXCEPTION = set('try catch throw'.split())
+LOOP = set('while do for break continue'.split())
+
+ALL = TYPES | TYPE_MODIFIERS | ACCESS | CASTS | OTHERS | OTHER_TYPES | CONTROL | EXCEPTION | LOOP
+
+
+def IsKeyword(token):
+ return token in ALL
+
+def IsBuiltinType(token):
+ if token in ('virtual', 'inline'):
+ # These only apply to methods, they can't be types by themselves.
+ return False
+ return token in TYPES or token in TYPE_MODIFIERS