diff options
Diffstat (limited to 'src/plugins/clangcodemodel/cxraii.h')
| -rw-r--r-- | src/plugins/clangcodemodel/cxraii.h | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/src/plugins/clangcodemodel/cxraii.h b/src/plugins/clangcodemodel/cxraii.h deleted file mode 100644 index f21bb454fd0..00000000000 --- a/src/plugins/clangcodemodel/cxraii.h +++ /dev/null @@ -1,146 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms and -** conditions see http://www.qt.io/terms-conditions. For further information -** use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -****************************************************************************/ - -#ifndef CXRAII_H -#define CXRAII_H - -#include <clang-c/Index.h> - -// Simple RAII types for their CX correspondings - -namespace ClangCodeModel { -namespace Internal { - -template <class CXType_T> -struct ScopedCXType -{ -protected: - typedef void (*DisposeFunction)(CXType_T); - - ScopedCXType(DisposeFunction f) - : m_cx(0), m_disposeFunction(f) - {} - ScopedCXType(const CXType_T &cx, DisposeFunction f) - : m_cx(cx) , m_disposeFunction(f) - {} - -public: - ~ScopedCXType() - { - dispose(); - } - - operator CXType_T() const { return m_cx; } - bool operator!() const { return !m_cx; } - bool isNull() const { return !m_cx; } - void reset(const CXType_T &cx) - { - dispose(); - m_cx = cx; - } - -private: - ScopedCXType(const ScopedCXType &); - const ScopedCXType &operator=(const ScopedCXType &); - - void dispose() - { - if (m_cx) - m_disposeFunction(m_cx); - } - - CXType_T m_cx; - DisposeFunction m_disposeFunction; -}; - -struct ScopedCXIndex : ScopedCXType<CXIndex> -{ - ScopedCXIndex() - : ScopedCXType<CXIndex>(&clang_disposeIndex) - {} - ScopedCXIndex(const CXIndex &index) - : ScopedCXType<CXIndex>(index, &clang_disposeIndex) - {} -}; - -struct ScopedCXTranslationUnit : ScopedCXType<CXTranslationUnit> -{ - ScopedCXTranslationUnit() - : ScopedCXType<CXTranslationUnit>(&clang_disposeTranslationUnit) - {} - ScopedCXTranslationUnit(const CXTranslationUnit &unit) - : ScopedCXType<CXTranslationUnit>(unit, &clang_disposeTranslationUnit) - {} -}; - -struct ScopedCXDiagnostic : ScopedCXType<CXDiagnostic> -{ - ScopedCXDiagnostic() - : ScopedCXType<CXDiagnostic>(&clang_disposeDiagnostic) - {} - ScopedCXDiagnostic(const CXDiagnostic &diagnostic) - : ScopedCXType<CXDiagnostic>(diagnostic, &clang_disposeDiagnostic) - {} -}; - -struct ScopedCXDiagnosticSet : ScopedCXType<CXDiagnostic> -{ - ScopedCXDiagnosticSet() - : ScopedCXType<CXDiagnosticSet>(&clang_disposeDiagnosticSet) - {} - ScopedCXDiagnosticSet(const CXDiagnostic &diagnostic) - : ScopedCXType<CXDiagnosticSet>(diagnostic, &clang_disposeDiagnosticSet) - {} -}; - -struct ScopedCXCodeCompleteResults : ScopedCXType<CXCodeCompleteResults*> -{ - ScopedCXCodeCompleteResults() - : ScopedCXType<CXCodeCompleteResults*>(&clang_disposeCodeCompleteResults) - {} - ScopedCXCodeCompleteResults(CXCodeCompleteResults *results) - : ScopedCXType<CXCodeCompleteResults*>(results, &clang_disposeCodeCompleteResults) - {} - - unsigned size() const - { - return static_cast<CXCodeCompleteResults *>(*this)->NumResults; - } - - const CXCompletionResult &completionAt(unsigned i) - { - return static_cast<CXCodeCompleteResults *>(*this)->Results[i]; - } -}; - -} // Internal -} // ClangCodeModel - -#endif // CXRAII_H |
