Merge lp:~xavi-garcia-mena/unity-scopes-api/utils-qt into lp:unity-scopes-api

Proposed by Xavi Garcia
Status: Merged
Approved by: Michi Henning
Approved revision: 569
Merged at revision: 300
Proposed branch: lp:~xavi-garcia-mena/unity-scopes-api/utils-qt
Merge into: lp:unity-scopes-api
Diff against target: 15841 lines (+14778/-73)
148 files modified
_clang-format (+0/-48)
data/CMakeLists.txt (+4/-0)
data/libunity-scopes-qt.pc.in (+28/-0)
debian/control (+32/-0)
debian/libunity-scopes-dev.install (+4/-2)
debian/libunity-scopes-qt-dev.debhelper.log (+4/-0)
debian/libunity-scopes-qt-dev.install (+3/-0)
debian/libunity-scopes-qt-doc.debhelper.log (+4/-0)
debian/libunity-scopes-qt-doc.install (+1/-0)
debian/libunity-scopes-qt.debhelper.log (+30/-0)
debian/libunity-scopes-qt.install (+1/-0)
debian/libunity-scopes-qt.symbols (+411/-0)
doc/Doxyfile-scopes-qt.in (+1797/-0)
doc/Doxyfile.in (+1/-1)
include/unity/scopes/CMakeLists.txt (+1/-0)
include/unity/scopes/qt/CMakeLists.txt (+3/-0)
include/unity/scopes/qt/HttpAsyncReader.h (+310/-0)
include/unity/scopes/qt/JsonAsyncReader.h (+363/-0)
include/unity/scopes/qt/JsonReader.h (+86/-0)
include/unity/scopes/qt/QActionMetadata.h (+145/-0)
include/unity/scopes/qt/QCannedQuery.h (+155/-0)
include/unity/scopes/qt/QCategorisedResult.h (+92/-0)
include/unity/scopes/qt/QCategory.h (+112/-0)
include/unity/scopes/qt/QColumnLayout.h (+133/-0)
include/unity/scopes/qt/QDepartment.h (+196/-0)
include/unity/scopes/qt/QPreviewQueryBase.h (+136/-0)
include/unity/scopes/qt/QPreviewQueryBaseAPI.h (+127/-0)
include/unity/scopes/qt/QPreviewReply.h (+103/-0)
include/unity/scopes/qt/QPreviewReplyProxy.h (+42/-0)
include/unity/scopes/qt/QPreviewWidget.h (+198/-0)
include/unity/scopes/qt/QResult.h (+264/-0)
include/unity/scopes/qt/QScopeBase.h (+155/-0)
include/unity/scopes/qt/QScopeBaseAPI.h (+116/-0)
include/unity/scopes/qt/QSearchMetadata.h (+168/-0)
include/unity/scopes/qt/QSearchQueryBase.h (+164/-0)
include/unity/scopes/qt/QSearchQueryBaseAPI.h (+126/-0)
include/unity/scopes/qt/QSearchReply.h (+164/-0)
include/unity/scopes/qt/QSearchReplyProxy.h (+42/-0)
include/unity/scopes/qt/QUtils.h (+46/-0)
include/unity/scopes/qt/QVariantBuilder.h (+125/-0)
include/unity/scopes/qt/XmlAsyncReader.h (+311/-0)
include/unity/scopes/qt/XmlReader.h (+86/-0)
include/unity/scopes/qt/internal/QActionMetadataImpl.h (+151/-0)
include/unity/scopes/qt/internal/QCannedQueryImpl.h (+88/-0)
include/unity/scopes/qt/internal/QCategorisedResultImpl.h (+95/-0)
include/unity/scopes/qt/internal/QCategoryImpl.h (+102/-0)
include/unity/scopes/qt/internal/QColumnLayoutImpl.h (+125/-0)
include/unity/scopes/qt/internal/QDepartmentImpl.h (+80/-0)
include/unity/scopes/qt/internal/QPreviewQueryBaseImpl.h (+86/-0)
include/unity/scopes/qt/internal/QPreviewReplyImpl.h (+104/-0)
include/unity/scopes/qt/internal/QPreviewWidgetImpl.h (+196/-0)
include/unity/scopes/qt/internal/QResultImpl.h (+263/-0)
include/unity/scopes/qt/internal/QScopeBaseAPIImpl.h (+121/-0)
include/unity/scopes/qt/internal/QScopeBaseImpl.h (+65/-0)
include/unity/scopes/qt/internal/QScopeVariant.h (+88/-0)
include/unity/scopes/qt/internal/QSearchMetadataImpl.h (+170/-0)
include/unity/scopes/qt/internal/QSearchQueryBaseImpl.h (+120/-0)
include/unity/scopes/qt/internal/QSearchReplyImpl.h (+160/-0)
include/unity/scopes/qt/internal/QVariantBuilderImpl.h (+70/-0)
include/unity/scopes/testing/Benchmark.h (+1/-1)
include/unity/scopes/testing/Category.h (+1/-1)
include/unity/scopes/testing/InProcessBenchmark.h (+1/-1)
include/unity/scopes/testing/MockPreviewReply.h (+1/-1)
include/unity/scopes/testing/MockRegistry.h (+1/-1)
include/unity/scopes/testing/MockSearchReply.h (+1/-1)
include/unity/scopes/testing/OutOfProcessBenchmark.h (+1/-1)
include/unity/scopes/testing/Result.h (+1/-1)
include/unity/scopes/testing/ScopeMetadataBuilder.h (+1/-1)
include/unity/scopes/testing/Statistics.h (+1/-1)
include/unity/scopes/testing/TypedScopeFixture.h (+1/-1)
src/scopes/CMakeLists.txt (+1/-0)
src/scopes/qt/CMakeLists.txt (+176/-0)
src/scopes/qt/HttpAsyncReader.cpp (+93/-0)
src/scopes/qt/JsonAsyncReader.cpp (+61/-0)
src/scopes/qt/JsonReader.cpp (+95/-0)
src/scopes/qt/QActionMetadata.cpp (+93/-0)
src/scopes/qt/QCannedQuery.cpp (+118/-0)
src/scopes/qt/QCategorisedResult.cpp (+66/-0)
src/scopes/qt/QCategory.cpp (+70/-0)
src/scopes/qt/QColumnLayout.cpp (+80/-0)
src/scopes/qt/QDepartment.cpp (+121/-0)
src/scopes/qt/QPreviewQueryBase.cpp (+50/-0)
src/scopes/qt/QPreviewQueryBaseAPI.cpp (+159/-0)
src/scopes/qt/QPreviewReply.cpp (+48/-0)
src/scopes/qt/QPreviewWidget.cpp (+110/-0)
src/scopes/qt/QResult.cpp (+164/-0)
src/scopes/qt/QScopeBase.cpp (+44/-0)
src/scopes/qt/QScopeBaseAPI.cpp (+57/-0)
src/scopes/qt/QSearchMetadata.cpp (+97/-0)
src/scopes/qt/QSearchQueryBase.cpp (+90/-0)
src/scopes/qt/QSearchQueryBaseAPI.cpp (+155/-0)
src/scopes/qt/QSearchReply.cpp (+57/-0)
src/scopes/qt/QUtils.cpp (+145/-0)
src/scopes/qt/QVariantBuilder.cpp (+68/-0)
src/scopes/qt/XmlAsyncReader.cpp (+58/-0)
src/scopes/qt/XmlReader.cpp (+96/-0)
src/scopes/qt/internal/QActionMetadataImpl.cpp (+130/-0)
src/scopes/qt/internal/QCannedQueryImpl.cpp (+108/-0)
src/scopes/qt/internal/QCategorisedResultImpl.cpp (+68/-0)
src/scopes/qt/internal/QCategoryImpl.cpp (+75/-0)
src/scopes/qt/internal/QColumnLayoutImpl.cpp (+108/-0)
src/scopes/qt/internal/QDepartmentImpl.cpp (+126/-0)
src/scopes/qt/internal/QPreviewQueryBaseImpl.cpp (+54/-0)
src/scopes/qt/internal/QPreviewReplyImpl.cpp (+66/-0)
src/scopes/qt/internal/QPreviewWidgetImpl.cpp (+123/-0)
src/scopes/qt/internal/QResultImpl.cpp (+247/-0)
src/scopes/qt/internal/QScopeBaseAPIImpl.cpp (+187/-0)
src/scopes/qt/internal/QScopeBaseImpl.cpp (+31/-0)
src/scopes/qt/internal/QScopeVariant.cpp (+133/-0)
src/scopes/qt/internal/QSearchMetadataImpl.cpp (+140/-0)
src/scopes/qt/internal/QSearchQueryBaseImpl.cpp (+91/-0)
src/scopes/qt/internal/QSearchReplyImpl.cpp (+68/-0)
src/scopes/qt/internal/QVariantBuilderImpl.cpp (+77/-0)
src/scopes/qt/unity-scopes-qt.map (+15/-0)
test/gtest/scopes/CMakeLists.txt (+1/-0)
test/gtest/scopes/qt/CMakeLists.txt (+8/-0)
test/gtest/scopes/qt/JsonAsyncReader/CMakeLists.txt (+15/-0)
test/gtest/scopes/qt/JsonAsyncReader/JsonAsyncReader_test.cpp (+193/-0)
test/gtest/scopes/qt/XmlAsyncReader/CMakeLists.txt (+15/-0)
test/gtest/scopes/qt/XmlAsyncReader/XmlAsyncReader_test.cpp (+214/-0)
test/gtest/scopes/qt/qt-bindings/CMakeLists.txt (+205/-0)
test/gtest/scopes/qt/qt-bindings/FakeScope.h (+79/-0)
test/gtest/scopes/qt/qt-bindings/QActionMetadata_test.cpp (+78/-0)
test/gtest/scopes/qt/qt-bindings/QCannedQuery_test.cpp (+76/-0)
test/gtest/scopes/qt/qt-bindings/QCategorisedResult_test.cpp (+87/-0)
test/gtest/scopes/qt/qt-bindings/QColumnLayout_test.cpp (+72/-0)
test/gtest/scopes/qt/qt-bindings/QDepartment_test.cpp (+79/-0)
test/gtest/scopes/qt/qt-bindings/QEventTypeMatcher.h (+57/-0)
test/gtest/scopes/qt/qt-bindings/QMockScope.h (+58/-0)
test/gtest/scopes/qt/qt-bindings/QPreviewQueryBaseAPI_test.cpp (+117/-0)
test/gtest/scopes/qt/qt-bindings/QScopeBaseAPIImpl_test.cpp (+69/-0)
test/gtest/scopes/qt/qt-bindings/QScopeBaseAPIMock.h (+43/-0)
test/gtest/scopes/qt/qt-bindings/QScopeCreation_test.cpp (+88/-0)
test/gtest/scopes/qt/qt-bindings/QSearchMetadata_test.cpp (+69/-0)
test/gtest/scopes/qt/qt-bindings/QSearchQueryBaseAPI_test.cpp (+108/-0)
test/gtest/scopes/qt/qt-bindings/QVariantBuilder_test.cpp (+53/-0)
test/gtest/scopes/qt/qt-bindings/TestSetup.h (+83/-0)
test/gtest/scopes/qt/server/queries/json_bad_formed.txt (+1/-0)
test/gtest/scopes/qt/server/queries/json_chart_gettoptracks.txt (+1/-0)
test/gtest/scopes/qt/server/queries/not_found.txt (+9/-0)
test/gtest/scopes/qt/server/queries/xml_bad_formed_chart_gettoptracks.txt (+72/-0)
test/gtest/scopes/qt/server/queries/xml_chart_gettoptracks.txt (+105/-0)
test/gtest/scopes/qt/server/server.py (+81/-0)
test/gtest/scopes/testing/IsolatedScope/scope.h (+1/-1)
test/gtest/scopes/testing/IsolatedScopeBenchmark/scope.h (+1/-1)
test/headers/CMakeLists.txt (+19/-4)
test/headers/compile_headers.py (+16/-4)
test/headers/includechecker.py (+2/-1)
To merge this branch: bzr merge lp:~xavi-garcia-mena/unity-scopes-api/utils-qt
Reviewer Review Type Date Requested Status
Michi Henning (community) Approve
Pete Woods Pending
Review via email: mp+244953@code.launchpad.net

Commit message

Added library using Qt.
The library is packed in a separated debian package.

It now cointains a few helpers to retrieve json and xml documents from the web.

Description of the change

Added library using Qt.
The library is packed in a separated debian package.

It now cointains a few helpers to retrieve json and xml documents from the web.

To post a comment you must log in.
Revision history for this message
Michi Henning (michihenning) wrote :

Nice job!

I have a few niggles , but I don't think we should let that stop us. Rather, let's deal with the niggles as separate MRs. Otherwise, it'll get too difficult to coddle this branch along and keep it synced.

Looking at the symbols file, there are tons of symbols in there that aren't ours. I'm not totally sure why that's happening just yet. It will need fixing eventually. For now, it's good enough.

We have a naming discrepancy between the namespaces and the directory hierarchy. They need to be the same. The namespaces are unity::scopes::qt (which is fine), but the directories are "scopes/scopes-qt". It should be "scopes/qt" instead. The idea is that we have consistent naming everywhere, so if I see a symbol, I immediately know where in the file system I'll be able to find the source, headers, and tests, without having to run a grep.

Thanks for adding all the doc! I haven't read it in detail yet, but will :-)

One thing about the doc: doxygen spits out a bunch of warnings about undocumented things. I suspect that most of these are bogus. If you look for @cond and @endcond in the existing code, you'll find examples of what we suppress and why.

In general, I want all builds to be completely free of warnings. That's simply because, if we allow warnings to slip through, eventually, we'll miss a new warning that we really should have paid attention to. (I went through this exercise once in a code base that produced 8,500 warnings for the build. I dealt systematically with all of them. Most were harmless and could be avoided with very minor code changes. But it took two days to work though it all. By the end of it, there were five different warnings left. Each of them an absolutely guaranteed core dump. The bugs were never detected because of way insufficient test coverage...)

review: Approve
570. By Xavi Garcia

directories scopes-qt renamed to qt

571. By Xavi Garcia

Documentation warnings removed

572. By Xavi Garcia

Added Qt-bindings classes

573. By Xavi Garcia

Code formated

574. By Xavi Garcia

Updated symbols file

575. By Xavi Garcia

Changed VariantMap to QVariantMap in QResult class

576. By Xavi Garcia

Changed VariantMap to QVariantMap and removed unnecessary includes

577. By Xavi Garcia

Added unit tests for qt bindings, erased codumentation from pimpl classes

578. By Xavi Garcia

Code style script passed, Added qt headers to the headers test

579. By Xavi Garcia

QScopeVariant moved to internal classes

580. By Xavi Garcia

Changed QScopeBaseAPIImpl to call start and stop methods from the main QThread

581. By Xavi Garcia

Client's scope instance moved to the main Qt Thread

582. By Xavi Garcia

Added test to verify that start and stop methods for the client scope are called from the main Qt thread

583. By Xavi Garcia

Added functor to create the user's scope instance from the Qt Thread

584. By Xavi Garcia

Added unit test to check that the user's scope is created in the Qt thread

585. By Xavi Garcia

Typo fixed

586. By Xavi Garcia

Symbols moved to the unity::scopes::qt namespace

587. By Xavi Garcia

Fixed Reply internal copy and using qt emit to launch query

588. By Xavi Garcia

Version in debian symbols file changed to 0replaceme

589. By Xavi Garcia

Removed symbols file because of lots of conflicts with previous one

590. By Xavi Garcia

Symbols file for qt library re-added

591. By Xavi Garcia

Removing file again, as conflicts are still present

592. By Xavi Garcia

Re-added symbols file after completely rebuild it

593. By Xavi Garcia

Changed Thomas Voss surname to not include non-ascii character. The Beta character generates an error when running compile_headers.py in Jenkins

594. By Xavi Garcia

added UTF-8 encoding when opening header files

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file '_clang-format'
--- _clang-format 1970-01-01 00:00:00 +0000
+++ _clang-format 2015-02-05 11:31:47 +0000
@@ -0,0 +1,48 @@
1---
2AccessModifierOffset: -4
3AlignEscapedNewlinesLeft: true
4AlignTrailingComments: true
5AllowAllParametersOfDeclarationOnNextLine: true
6AllowShortFunctionsOnASingleLine: false
7AllowShortIfStatementsOnASingleLine: false
8AllowShortLoopsOnASingleLine: false
9AlwaysBreakBeforeMultilineStrings: true
10AlwaysBreakTemplateDeclarations: true
11BinPackParameters: false
12BreakBeforeBinaryOperators: false
13BreakBeforeBraces: Allman
14BreakBeforeTernaryOperators: false
15BreakConstructorInitializersBeforeComma: true
16ColumnLimit: 120
17ConstructorInitializerAllOnOneLineOrOnePerLine: false
18ConstructorInitializerIndentWidth: 4
19ContinuationIndentWidth: 4
20Cpp11BracedListStyle: true
21DerivePointerBinding: true
22ExperimentalAutoDetectBinPacking: false
23IndentCaseLabels: true
24IndentFunctionDeclarationAfterType: true
25IndentWidth: 4
26Language: Cpp
27MaxEmptyLinesToKeep: 1
28NamespaceIndentation: None
29ObjCSpaceBeforeProtocolList: false
30PenaltyBreakBeforeFirstCallParameter: 1
31PenaltyBreakComment: 60
32PenaltyBreakFirstLessLess: 120
33PenaltyBreakString: 1000
34PenaltyExcessCharacter: 1000000
35PenaltyReturnTypeOnItsOwnLine: 200
36PointerBindsToType: true
37SpaceBeforeAssignmentOperators: true
38SpaceBeforeParens: ControlStatements
39SpaceInEmptyParentheses: false
40SpacesBeforeTrailingComments: 2
41SpacesInAngles: false
42SpacesInCStyleCastParentheses: false
43SpacesInParentheses: false
44Standard: Cpp11
45TabWidth: 8
46UseTab: Never
47...
48
049
=== removed file '_clang-format'
--- _clang-format 2014-01-03 00:30:13 +0000
+++ _clang-format 1970-01-01 00:00:00 +0000
@@ -1,48 +0,0 @@
1---
2AccessModifierOffset: -4
3AlignEscapedNewlinesLeft: true
4AlignTrailingComments: true
5AllowAllParametersOfDeclarationOnNextLine: true
6AllowShortFunctionsOnASingleLine: false
7AllowShortIfStatementsOnASingleLine: false
8AllowShortLoopsOnASingleLine: false
9AlwaysBreakBeforeMultilineStrings: true
10AlwaysBreakTemplateDeclarations: true
11BinPackParameters: false
12BreakBeforeBinaryOperators: false
13BreakBeforeBraces: Allman
14BreakBeforeTernaryOperators: false
15BreakConstructorInitializersBeforeComma: true
16ColumnLimit: 120
17ConstructorInitializerAllOnOneLineOrOnePerLine: false
18ConstructorInitializerIndentWidth: 4
19ContinuationIndentWidth: 4
20Cpp11BracedListStyle: true
21DerivePointerBinding: true
22ExperimentalAutoDetectBinPacking: false
23IndentCaseLabels: true
24IndentFunctionDeclarationAfterType: true
25IndentWidth: 4
26Language: Cpp
27MaxEmptyLinesToKeep: 1
28NamespaceIndentation: None
29ObjCSpaceBeforeProtocolList: false
30PenaltyBreakBeforeFirstCallParameter: 1
31PenaltyBreakComment: 60
32PenaltyBreakFirstLessLess: 120
33PenaltyBreakString: 1000
34PenaltyExcessCharacter: 1000000
35PenaltyReturnTypeOnItsOwnLine: 200
36PointerBindsToType: true
37SpaceBeforeAssignmentOperators: true
38SpaceBeforeParens: ControlStatements
39SpaceInEmptyParentheses: false
40SpacesBeforeTrailingComments: 2
41SpacesInAngles: false
42SpacesInCStyleCastParentheses: false
43SpacesInParentheses: false
44Standard: Cpp11
45TabWidth: 8
46UseTab: Never
47...
48
490
=== modified file 'data/CMakeLists.txt'
--- data/CMakeLists.txt 2014-05-06 09:00:45 +0000
+++ data/CMakeLists.txt 2015-02-05 11:31:47 +0000
@@ -2,6 +2,10 @@
2configure_file(lib${UNITY_SCOPES_LIB}.pc.in lib${UNITY_SCOPES_LIB}.pc @ONLY)2configure_file(lib${UNITY_SCOPES_LIB}.pc.in lib${UNITY_SCOPES_LIB}.pc @ONLY)
3install(FILES ${CMAKE_CURRENT_BINARY_DIR}/lib${UNITY_SCOPES_LIB}.pc DESTINATION ${LIB_INSTALL_PREFIX}/pkgconfig)3install(FILES ${CMAKE_CURRENT_BINARY_DIR}/lib${UNITY_SCOPES_LIB}.pc DESTINATION ${LIB_INSTALL_PREFIX}/pkgconfig)
44
5# Set up package config.
6configure_file(lib${LIB_QT}.pc.in lib${LIB_QT}.pc @ONLY)
7install(FILES ${CMAKE_CURRENT_BINARY_DIR}/lib${LIB_QT}.pc DESTINATION ${LIB_INSTALL_PREFIX}/pkgconfig)
8
5# upstart job for smart scopes proxy9# upstart job for smart scopes proxy
6configure_file(smart-scopes-proxy.conf.in smart-scopes-proxy.conf @ONLY)10configure_file(smart-scopes-proxy.conf.in smart-scopes-proxy.conf @ONLY)
7install(FILES ${CMAKE_CURRENT_BINARY_DIR}/smart-scopes-proxy.conf DESTINATION ${CMAKE_INSTALL_DATADIR}/upstart/sessions)11install(FILES ${CMAKE_CURRENT_BINARY_DIR}/smart-scopes-proxy.conf DESTINATION ${CMAKE_INSTALL_DATADIR}/upstart/sessions)
812
=== added file 'data/libunity-scopes-qt.pc.in'
--- data/libunity-scopes-qt.pc.in 1970-01-01 00:00:00 +0000
+++ data/libunity-scopes-qt.pc.in 2015-02-05 11:31:47 +0000
@@ -0,0 +1,28 @@
1#
2# Copyright (C) 2014 Canonical Ltd
3#
4# This program is free software: you can redistribute it and/or modify
5# it under the terms of the GNU Lesser General Public License version 3 as
6# published by the Free Software Foundation.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU Lesser General Public License for more details.
12#
13# You should have received a copy of the GNU Lesser General Public License
14# along with this program. If not, see <http://www.gnu.org/licenses/>.
15#
16# Authored by: Xavi Garcia <xavi.garcia.mena@canonical.com>
17#
18
19prefix=@CMAKE_INSTALL_PREFIX@
20includedir=${prefix}/@HDR_INSTALL_DIR@/unity/scopes/qt
21libdir=${prefix}/@LIBDIR@
22
23Name: lib@LIB_QT@
24Description: Unity Scopes API QT library
25Requires: libunity-api, lib@UNITY_SCOPES_LIB@
26Version: @UNITY_SCOPES_QT_MAJOR@.@UNITY_SCOPES_QT_MINOR@.@UNITY_SCOPES_QT_MICRO@
27Libs: -L${libdir} -l@LIB_QT@
28Cflags: -I${includedir}
029
=== modified file 'debian/control'
--- debian/control 2015-01-26 08:10:59 +0000
+++ debian/control 2015-02-05 11:31:47 +0000
@@ -35,6 +35,8 @@
35 pkg-config,35 pkg-config,
36 python3:any,36 python3:any,
37 valgrind,37 valgrind,
38 libnet-cpp-dev (>=1.1.0),
39 python-tornado
38Standards-Version: 3.9.540Standards-Version: 3.9.5
39XS-Testsuite: autopkgtest41XS-Testsuite: autopkgtest
40Section: libs42Section: libs
@@ -90,3 +92,33 @@
90Depends: ${misc:Depends},92Depends: ${misc:Depends},
91Description: Documentation for Unity scopes API93Description: Documentation for Unity scopes API
92 Library to integrate scopes with the Unity shell (documentation)94 Library to integrate scopes with the Unity shell (documentation)
95
96Package: libunity-scopes-qt
97Architecture: any
98Multi-Arch: same
99Pre-Depends: ${misc:Pre-Depends},
100Depends: ${misc:Depends},
101 ${shlibs:Depends}
102Description: Qt library for Unity scopes API
103 Library that integrates classes based on Qt for convenience
104
105Package: libunity-scopes-qt-dev
106Section: libdevel
107Architecture: any
108Multi-Arch: same
109Pre-Depends: ${misc:Pre-Depends},
110Depends: libunity-scopes-dev (= ${binary:Version}),
111 libunity-scopes-qt (= ${binary:Version}),
112 libnet-cpp-dev (>=1.1.0),
113 ${misc:Depends},
114 ${shlibs:Depends}
115Description: Header files for Qt library for Unity scopes API
116 Library that integrates classes based on Qt for convenience (dev files)
117
118Package: libunity-scopes-qt-doc
119Section: doc
120Architecture: all
121Multi-Arch: foreign
122Depends: ${misc:Depends},
123Description: Documentation for Unity Qt library
124 Library that integrates classes based on Qt for convenience (documentation)
93125
=== modified file 'debian/libunity-scopes-dev.install'
--- debian/libunity-scopes-dev.install 2014-01-23 14:03:01 +0000
+++ debian/libunity-scopes-dev.install 2015-02-05 11:31:47 +0000
@@ -1,4 +1,6 @@
1usr/include/unity-scopes-0/unity/scopes/*1usr/include/unity-scopes-0/unity/scopes/*.h
2usr/include/unity-scopes-0/unity/scopes/testing
3usr/include/unity-scopes-0/unity/scopes/utility
2usr/include/unity-scopes-0/unity-scopes.h4usr/include/unity-scopes-0/unity-scopes.h
3usr/lib/*/libunity-scopes.so5usr/lib/*/libunity-scopes.so
4usr/lib/*/pkgconfig/*.pc6usr/lib/*/pkgconfig/libunity-scopes.pc
57
=== added file 'debian/libunity-scopes-qt-dev.debhelper.log'
--- debian/libunity-scopes-qt-dev.debhelper.log 1970-01-01 00:00:00 +0000
+++ debian/libunity-scopes-qt-dev.debhelper.log 2015-02-05 11:31:47 +0000
@@ -0,0 +1,4 @@
1override_dh_auto_configure dh_auto_configure
2dh_auto_configure
3dh_auto_build
4dh_auto_test
05
=== added file 'debian/libunity-scopes-qt-dev.install'
--- debian/libunity-scopes-qt-dev.install 1970-01-01 00:00:00 +0000
+++ debian/libunity-scopes-qt-dev.install 2015-02-05 11:31:47 +0000
@@ -0,0 +1,3 @@
1usr/include/unity-scopes-0/unity/scopes/qt
2usr/lib/*/libunity-scopes-qt.so
3usr/lib/*/pkgconfig/libunity-scopes-qt.pc
04
=== added file 'debian/libunity-scopes-qt-doc.debhelper.log'
--- debian/libunity-scopes-qt-doc.debhelper.log 1970-01-01 00:00:00 +0000
+++ debian/libunity-scopes-qt-doc.debhelper.log 2015-02-05 11:31:47 +0000
@@ -0,0 +1,4 @@
1override_dh_auto_configure dh_auto_configure
2dh_auto_configure
3dh_auto_build
4dh_auto_test
05
=== added file 'debian/libunity-scopes-qt-doc.install'
--- debian/libunity-scopes-qt-doc.install 1970-01-01 00:00:00 +0000
+++ debian/libunity-scopes-qt-doc.install 2015-02-05 11:31:47 +0000
@@ -0,0 +1,1 @@
1usr/share/doc/unity-scopes-qt/*
02
=== added file 'debian/libunity-scopes-qt.debhelper.log'
--- debian/libunity-scopes-qt.debhelper.log 1970-01-01 00:00:00 +0000
+++ debian/libunity-scopes-qt.debhelper.log 2015-02-05 11:31:47 +0000
@@ -0,0 +1,30 @@
1override_dh_auto_configure dh_auto_configure
2dh_auto_configure
3dh_auto_build
4dh_auto_test
5dh_prep
6dh_auto_install
7dh_install
8override_dh_click dh_click
9dh_click
10dh_installdocs
11dh_installchangelogs
12dh_perl
13dh_link
14dh_compress
15dh_fixperms
16dh_strip
17dh_makeshlibs
18dh_shlibdeps
19dh_installdeb
20dh_gencontrol
21dh_md5sums
22dh_builddeb
23dh_builddeb
24dh_builddeb
25dh_builddeb
26dh_builddeb
27dh_builddeb
28dh_builddeb
29dh_builddeb
30dh_auto_test
031
=== added file 'debian/libunity-scopes-qt.install'
--- debian/libunity-scopes-qt.install 1970-01-01 00:00:00 +0000
+++ debian/libunity-scopes-qt.install 2015-02-05 11:31:47 +0000
@@ -0,0 +1,1 @@
1usr/lib/*/libunity-scopes-qt.so.*
02
=== added file 'debian/libunity-scopes-qt.symbols'
--- debian/libunity-scopes-qt.symbols 1970-01-01 00:00:00 +0000
+++ debian/libunity-scopes-qt.symbols 2015-02-05 11:31:47 +0000
@@ -0,0 +1,411 @@
1libunity-scopes-qt.so.01 libunity-scopes-qt #MINVER#
2 (c++)"unity::scopes::qt::JsonReader::JsonReader()@Base" 0replaceme
3 (c++)"unity::scopes::qt::JsonReader::JsonReader()@Base" 0replaceme
4 (c++)"unity::scopes::qt::QScopeBase::qt_metacall(QMetaObject::Call, int, void**)@Base" 0replaceme
5 (c++)"unity::scopes::qt::QScopeBase::qt_metacast(char const*)@Base" 0replaceme
6 (c++)"unity::scopes::qt::QScopeBase::staticMetaObject@Base" 0replaceme
7 (c++)"unity::scopes::qt::QScopeBase::stop()@Base" 0replaceme
8 (c++)"unity::scopes::qt::QScopeBase::start(QString const&)@Base" 0replaceme
9 (c++)"unity::scopes::qt::QScopeBase::QScopeBase(QObject*)@Base" 0replaceme
10 (c++)"unity::scopes::qt::QScopeBase::QScopeBase(QObject*)@Base" 0replaceme
11 (c++)"unity::scopes::qt::QScopeBase::~QScopeBase()@Base" 0replaceme
12 (c++)"unity::scopes::qt::QScopeBase::~QScopeBase()@Base" 0replaceme
13 (c++)"unity::scopes::qt::QScopeBase::~QScopeBase()@Base" 0replaceme
14 (c++)"unity::scopes::qt::QDepartment::add_subdepartment(std::shared_ptr<unity::scopes::qt::QDepartment const> const&)@Base" 0replaceme
15 (c++)"unity::scopes::qt::QDepartment::set_subdepartments(QList<QSharedPointer<unity::scopes::qt::QDepartment const> > const&)@Base" 0replaceme
16 (c++)"unity::scopes::qt::QDepartment::set_alternate_label(QString const&)@Base" 0replaceme
17 (c++)"unity::scopes::qt::QDepartment::set_has_subdepartments(bool)@Base" 0replaceme
18 (c++)"unity::scopes::qt::QDepartment::create(QString const&, unity::scopes::qt::QCannedQuery const&, QString const&)@Base" 0replaceme
19 (c++)"unity::scopes::qt::QDepartment::create(unity::scopes::qt::QCannedQuery const&, QString const&)@Base" 0replaceme
20 (c++)"unity::scopes::qt::QDepartment::QDepartment(unity::scopes::qt::QDepartment&&)@Base" 0replaceme
21 (c++)"unity::scopes::qt::QDepartment::QDepartment(unity::scopes::qt::internal::QDepartmentImpl*)@Base" 0replaceme
22 (c++)"unity::scopes::qt::QDepartment::QDepartment(unity::scopes::qt::QDepartment const&)@Base" 0replaceme
23 (c++)"unity::scopes::qt::QDepartment::QDepartment(unity::scopes::qt::QDepartment&&)@Base" 0replaceme
24 (c++)"unity::scopes::qt::QDepartment::QDepartment(unity::scopes::qt::internal::QDepartmentImpl*)@Base" 0replaceme
25 (c++)"unity::scopes::qt::QDepartment::QDepartment(unity::scopes::qt::QDepartment const&)@Base" 0replaceme
26 (c++)"unity::scopes::qt::QDepartment::~QDepartment()@Base" 0replaceme
27 (c++)"unity::scopes::qt::QDepartment::~QDepartment()@Base" 0replaceme
28 (c++)"unity::scopes::qt::QDepartment::operator=(unity::scopes::qt::QDepartment&&)@Base" 0replaceme
29 (c++)"unity::scopes::qt::QDepartment::operator=(unity::scopes::qt::QDepartment const&)@Base" 0replaceme
30 (c++)"unity::scopes::qt::QCannedQuery::set_filter_state(unity::scopes::FilterState const&)@Base" 0replaceme
31 (c++)"unity::scopes::qt::QCannedQuery::set_query_string(QString const&)@Base" 0replaceme
32 (c++)"unity::scopes::qt::QCannedQuery::set_department_id(QString const&)@Base" 0replaceme
33 (c++)"unity::scopes::qt::QCannedQuery::from_uri(QString const&)@Base" 0replaceme
34 (c++)"unity::scopes::qt::QCannedQuery::QCannedQuery(unity::scopes::qt::QCannedQuery&&)@Base" 0replaceme
35 (c++)"unity::scopes::qt::QCannedQuery::QCannedQuery(unity::scopes::qt::internal::QCannedQueryImpl*)@Base" 0replaceme
36 (c++)"unity::scopes::qt::QCannedQuery::QCannedQuery(QString const&)@Base" 0replaceme
37 (c++)"unity::scopes::qt::QCannedQuery::QCannedQuery(QString const&, QString const&, QString const&)@Base" 0replaceme
38 (c++)"unity::scopes::qt::QCannedQuery::QCannedQuery(unity::scopes::CannedQuery const&)@Base" 0replaceme
39 (c++)"unity::scopes::qt::QCannedQuery::QCannedQuery(unity::scopes::qt::QCannedQuery const&)@Base" 0replaceme
40 (c++)"unity::scopes::qt::QCannedQuery::QCannedQuery(unity::scopes::qt::QCannedQuery&&)@Base" 0replaceme
41 (c++)"unity::scopes::qt::QCannedQuery::QCannedQuery(unity::scopes::qt::internal::QCannedQueryImpl*)@Base" 0replaceme
42 (c++)"unity::scopes::qt::QCannedQuery::QCannedQuery(QString const&)@Base" 0replaceme
43 (c++)"unity::scopes::qt::QCannedQuery::QCannedQuery(QString const&, QString const&, QString const&)@Base" 0replaceme
44 (c++)"unity::scopes::qt::QCannedQuery::QCannedQuery(unity::scopes::CannedQuery const&)@Base" 0replaceme
45 (c++)"unity::scopes::qt::QCannedQuery::QCannedQuery(unity::scopes::qt::QCannedQuery const&)@Base" 0replaceme
46 (c++)"unity::scopes::qt::QCannedQuery::~QCannedQuery()@Base" 0replaceme
47 (c++)"unity::scopes::qt::QCannedQuery::~QCannedQuery()@Base" 0replaceme
48 (c++)"unity::scopes::qt::QCannedQuery::operator=(unity::scopes::qt::QCannedQuery&&)@Base" 0replaceme
49 (c++)"unity::scopes::qt::QCannedQuery::operator=(unity::scopes::qt::QCannedQuery const&)@Base" 0replaceme
50 (c++)"unity::scopes::qt::QSearchReply::qt_metacall(QMetaObject::Call, int, void**)@Base" 0replaceme
51 (c++)"unity::scopes::qt::QSearchReply::qt_metacast(char const*)@Base" 0replaceme
52 (c++)"unity::scopes::qt::QSearchReply::staticMetaObject@Base" 0replaceme
53 (c++)"unity::scopes::qt::QSearchReply::register_category(QString const&, QString const&, QString const&, unity::scopes::CategoryRenderer const&)@Base" 0replaceme
54 (c++)"unity::scopes::qt::QSearchReply::register_departments(std::shared_ptr<unity::scopes::qt::QDepartment const> const&)@Base" 0replaceme
55 (c++)"unity::scopes::qt::QSearchReply::push(unity::scopes::qt::QCategorisedResult const&)@Base" 0replaceme
56 (c++)"unity::scopes::qt::QSearchReply::error(std::__exception_ptr::exception_ptr)@Base" 0replaceme
57 (c++)"unity::scopes::qt::QSearchReply::QSearchReply(std::shared_ptr<unity::scopes::SearchReply>&, QObject*)@Base" 0replaceme
58 (c++)"unity::scopes::qt::QSearchReply::QSearchReply(std::shared_ptr<unity::scopes::SearchReply>&, QObject*)@Base" 0replaceme
59 (c++)"unity::scopes::qt::QSearchReply::~QSearchReply()@Base" 0replaceme
60 (c++)"unity::scopes::qt::QSearchReply::~QSearchReply()@Base" 0replaceme
61 (c++)"unity::scopes::qt::QSearchReply::~QSearchReply()@Base" 0replaceme
62 (c++)"unity::scopes::qt::QColumnLayout::add_column(QVector<QString>)@Base" 0replaceme
63 (c++)"unity::scopes::qt::QColumnLayout::QColumnLayout(unity::scopes::qt::QColumnLayout&&)@Base" 0replaceme
64 (c++)"unity::scopes::qt::QColumnLayout::QColumnLayout(unity::scopes::qt::internal::QColumnLayoutImpl*)@Base" 0replaceme
65 (c++)"unity::scopes::qt::QColumnLayout::QColumnLayout(unity::scopes::qt::QColumnLayout const&)@Base" 0replaceme
66 (c++)"unity::scopes::qt::QColumnLayout::QColumnLayout(int)@Base" 0replaceme
67 (c++)"unity::scopes::qt::QColumnLayout::QColumnLayout(unity::scopes::qt::QColumnLayout&&)@Base" 0replaceme
68 (c++)"unity::scopes::qt::QColumnLayout::QColumnLayout(unity::scopes::qt::internal::QColumnLayoutImpl*)@Base" 0replaceme
69 (c++)"unity::scopes::qt::QColumnLayout::QColumnLayout(unity::scopes::qt::QColumnLayout const&)@Base" 0replaceme
70 (c++)"unity::scopes::qt::QColumnLayout::QColumnLayout(int)@Base" 0replaceme
71 (c++)"unity::scopes::qt::QColumnLayout::~QColumnLayout()@Base" 0replaceme
72 (c++)"unity::scopes::qt::QColumnLayout::~QColumnLayout()@Base" 0replaceme
73 (c++)"unity::scopes::qt::QColumnLayout::operator=(unity::scopes::qt::QColumnLayout&&)@Base" 0replaceme
74 (c++)"unity::scopes::qt::QColumnLayout::operator=(unity::scopes::qt::QColumnLayout const&)@Base" 0replaceme
75 (c++)"unity::scopes::qt::QPreviewReply::qt_metacall(QMetaObject::Call, int, void**)@Base" 0replaceme
76 (c++)"unity::scopes::qt::QPreviewReply::qt_metacast(char const*)@Base" 0replaceme
77 (c++)"unity::scopes::qt::QPreviewReply::register_layout(QList<unity::scopes::qt::QColumnLayout> const&)@Base" 0replaceme
78 (c++)"unity::scopes::qt::QPreviewReply::staticMetaObject@Base" 0replaceme
79 (c++)"unity::scopes::qt::QPreviewReply::push(QList<unity::scopes::qt::QPreviewWidget> const&)@Base" 0replaceme
80 (c++)"unity::scopes::qt::QPreviewReply::push(QString const&, QVariant const&)@Base" 0replaceme
81 (c++)"unity::scopes::qt::QPreviewReply::QPreviewReply(std::shared_ptr<unity::scopes::PreviewReply>&, QObject*)@Base" 0replaceme
82 (c++)"unity::scopes::qt::QPreviewReply::QPreviewReply(std::shared_ptr<unity::scopes::PreviewReply>&, QObject*)@Base" 0replaceme
83 (c++)"unity::scopes::qt::QPreviewReply::~QPreviewReply()@Base" 0replaceme
84 (c++)"unity::scopes::qt::QPreviewReply::~QPreviewReply()@Base" 0replaceme
85 (c++)"unity::scopes::qt::QPreviewReply::~QPreviewReply()@Base" 0replaceme
86 (c++)"unity::scopes::qt::QScopeBaseAPI::stop()@Base" 0replaceme
87 (c++)"unity::scopes::qt::QScopeBaseAPI::start(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
88 (c++)"unity::scopes::qt::QScopeBaseAPI::search(unity::scopes::CannedQuery const&, unity::scopes::SearchMetadata const&)@Base" 0replaceme
89 (c++)"unity::scopes::qt::QScopeBaseAPI::preview(unity::scopes::Result const&, unity::scopes::ActionMetadata const&)@Base" 0replaceme
90 (c++)"unity::scopes::qt::QScopeBaseAPI::QScopeBaseAPI(std::function<unity::scopes::qt::QScopeBase* ()> const&)@Base" 0replaceme
91 (c++)"unity::scopes::qt::QScopeBaseAPI::QScopeBaseAPI(std::function<unity::scopes::qt::QScopeBase* ()> const&)@Base" 0replaceme
92 (c++)"unity::scopes::qt::QScopeBaseAPI::~QScopeBaseAPI()@Base" 0replaceme
93 (c++)"unity::scopes::qt::QScopeBaseAPI::~QScopeBaseAPI()@Base" 0replaceme
94 (c++)"unity::scopes::qt::QScopeBaseAPI::~QScopeBaseAPI()@Base" 0replaceme
95 (c++)"unity::scopes::qt::CancelledEvent::~CancelledEvent()@Base" 0replaceme
96 (c++)"unity::scopes::qt::CancelledEvent::~CancelledEvent()@Base" 0replaceme
97 (c++)"unity::scopes::qt::CancelledEvent::~CancelledEvent()@Base" 0replaceme
98 (c++)"unity::scopes::qt::QPreviewWidget::add_widget(unity::scopes::qt::QPreviewWidget const&)@Base" 0replaceme
99 (c++)"unity::scopes::qt::QPreviewWidget::add_attribute_value(QString const&, QVariant const&)@Base" 0replaceme
100 (c++)"unity::scopes::qt::QPreviewWidget::add_attribute_mapping(QString const&, QString const&)@Base" 0replaceme
101 (c++)"unity::scopes::qt::QPreviewWidget::QPreviewWidget(unity::scopes::qt::QPreviewWidget&&)@Base" 0replaceme
102 (c++)"unity::scopes::qt::QPreviewWidget::QPreviewWidget(unity::scopes::qt::internal::QPreviewWidgetImpl*)@Base" 0replaceme
103 (c++)"unity::scopes::qt::QPreviewWidget::QPreviewWidget(QString const&)@Base" 0replaceme
104 (c++)"unity::scopes::qt::QPreviewWidget::QPreviewWidget(QString const&, QString const&)@Base" 0replaceme
105 (c++)"unity::scopes::qt::QPreviewWidget::QPreviewWidget(unity::scopes::qt::QPreviewWidget const&)@Base" 0replaceme
106 (c++)"unity::scopes::qt::QPreviewWidget::QPreviewWidget(unity::scopes::qt::QPreviewWidget&&)@Base" 0replaceme
107 (c++)"unity::scopes::qt::QPreviewWidget::QPreviewWidget(unity::scopes::qt::internal::QPreviewWidgetImpl*)@Base" 0replaceme
108 (c++)"unity::scopes::qt::QPreviewWidget::QPreviewWidget(QString const&)@Base" 0replaceme
109 (c++)"unity::scopes::qt::QPreviewWidget::QPreviewWidget(QString const&, QString const&)@Base" 0replaceme
110 (c++)"unity::scopes::qt::QPreviewWidget::QPreviewWidget(unity::scopes::qt::QPreviewWidget const&)@Base" 0replaceme
111 (c++)"unity::scopes::qt::QPreviewWidget::~QPreviewWidget()@Base" 0replaceme
112 (c++)"unity::scopes::qt::QPreviewWidget::~QPreviewWidget()@Base" 0replaceme
113 (c++)"unity::scopes::qt::QPreviewWidget::~QPreviewWidget()@Base" 0replaceme
114 (c++)"unity::scopes::qt::QPreviewWidget::operator=(unity::scopes::qt::QPreviewWidget&&)@Base" 0replaceme
115 (c++)"unity::scopes::qt::QPreviewWidget::operator=(unity::scopes::qt::QPreviewWidget const&)@Base" 0replaceme
116 (c++)"unity::scopes::qt::XmlAsyncReader::create_parser_with_data(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0replaceme
117 (c++)"unity::scopes::qt::XmlAsyncReader::XmlAsyncReader()@Base" 0replaceme
118 (c++)"unity::scopes::qt::XmlAsyncReader::XmlAsyncReader()@Base" 0replaceme
119 (c++)"unity::scopes::qt::XmlAsyncReader::~XmlAsyncReader()@Base" 0replaceme
120 (c++)"unity::scopes::qt::XmlAsyncReader::~XmlAsyncReader()@Base" 0replaceme
121 (c++)"unity::scopes::qt::XmlAsyncReader::~XmlAsyncReader()@Base" 0replaceme
122 (c++)"unity::scopes::qt::HttpAsyncReader::Priv::~Priv()@Base" 0replaceme
123 (c++)"unity::scopes::qt::HttpAsyncReader::Priv::~Priv()@Base" 0replaceme
124 (c++)"unity::scopes::qt::HttpAsyncReader::HttpAsyncReader()@Base" 0replaceme
125 (c++)"unity::scopes::qt::HttpAsyncReader::HttpAsyncReader()@Base" 0replaceme
126 (c++)"unity::scopes::qt::HttpAsyncReader::~HttpAsyncReader()@Base" 0replaceme
127 (c++)"unity::scopes::qt::HttpAsyncReader::~HttpAsyncReader()@Base" 0replaceme
128 (c++)"unity::scopes::qt::HttpAsyncReader::~HttpAsyncReader()@Base" 0replaceme
129 (c++)"unity::scopes::qt::InitializeEvent::~InitializeEvent()@Base" 0replaceme
130 (c++)"unity::scopes::qt::InitializeEvent::~InitializeEvent()@Base" 0replaceme
131 (c++)"unity::scopes::qt::InitializeEvent::~InitializeEvent()@Base" 0replaceme
132 (c++)"unity::scopes::qt::JsonAsyncReader::create_parser_with_data(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0replaceme
133 (c++)"unity::scopes::qt::JsonAsyncReader::JsonAsyncReader()@Base" 0replaceme
134 (c++)"unity::scopes::qt::JsonAsyncReader::JsonAsyncReader()@Base" 0replaceme
135 (c++)"unity::scopes::qt::JsonAsyncReader::~JsonAsyncReader()@Base" 0replaceme
136 (c++)"unity::scopes::qt::JsonAsyncReader::~JsonAsyncReader()@Base" 0replaceme
137 (c++)"unity::scopes::qt::JsonAsyncReader::~JsonAsyncReader()@Base" 0replaceme
138 (c++)"unity::scopes::qt::QActionMetadata::set_scope_data(QVariant const&)@Base" 0replaceme
139 (c++)"unity::scopes::qt::QActionMetadata::set_hint(QString const&, QVariant const&)@Base" 0replaceme
140 (c++)"unity::scopes::qt::QActionMetadata::QActionMetadata(unity::scopes::qt::QActionMetadata&&)@Base" 0replaceme
141 (c++)"unity::scopes::qt::QActionMetadata::QActionMetadata(unity::scopes::qt::internal::QActionMetadataImpl*)@Base" 0replaceme
142 (c++)"unity::scopes::qt::QActionMetadata::QActionMetadata(QString const&, QString const&)@Base" 0replaceme
143 (c++)"unity::scopes::qt::QActionMetadata::QActionMetadata(unity::scopes::qt::QActionMetadata const&)@Base" 0replaceme
144 (c++)"unity::scopes::qt::QActionMetadata::QActionMetadata(unity::scopes::qt::QActionMetadata&&)@Base" 0replaceme
145 (c++)"unity::scopes::qt::QActionMetadata::QActionMetadata(unity::scopes::qt::internal::QActionMetadataImpl*)@Base" 0replaceme
146 (c++)"unity::scopes::qt::QActionMetadata::QActionMetadata(QString const&, QString const&)@Base" 0replaceme
147 (c++)"unity::scopes::qt::QActionMetadata::QActionMetadata(unity::scopes::qt::QActionMetadata const&)@Base" 0replaceme
148 (c++)"unity::scopes::qt::QActionMetadata::~QActionMetadata()@Base" 0replaceme
149 (c++)"unity::scopes::qt::QActionMetadata::~QActionMetadata()@Base" 0replaceme
150 (c++)"unity::scopes::qt::QActionMetadata::operator=(unity::scopes::qt::QActionMetadata&&)@Base" 0replaceme
151 (c++)"unity::scopes::qt::QActionMetadata::operator=(unity::scopes::qt::QActionMetadata const&)@Base" 0replaceme
152 (c++)"unity::scopes::qt::QActionMetadata::operator[](QString const&)@Base" 0replaceme
153 (c++)"unity::scopes::qt::QSearchMetadata::set_location(unity::scopes::Location const&)@Base" 0replaceme
154 (c++)"unity::scopes::qt::QSearchMetadata::set_cardinality(int)@Base" 0replaceme
155 (c++)"unity::scopes::qt::QSearchMetadata::set_hint(QString const&, QVariant const&)@Base" 0replaceme
156 (c++)"unity::scopes::qt::QSearchMetadata::QSearchMetadata(unity::scopes::qt::QSearchMetadata&&)@Base" 0replaceme
157 (c++)"unity::scopes::qt::QSearchMetadata::QSearchMetadata(QString const&, QString const&)@Base" 0replaceme
158 (c++)"unity::scopes::qt::QSearchMetadata::QSearchMetadata(unity::scopes::qt::QSearchMetadata const&)@Base" 0replaceme
159 (c++)"unity::scopes::qt::QSearchMetadata::QSearchMetadata(int, QString const&, QString const&)@Base" 0replaceme
160 (c++)"unity::scopes::qt::QSearchMetadata::QSearchMetadata(unity::scopes::qt::QSearchMetadata&&)@Base" 0replaceme
161 (c++)"unity::scopes::qt::QSearchMetadata::QSearchMetadata(QString const&, QString const&)@Base" 0replaceme
162 (c++)"unity::scopes::qt::QSearchMetadata::QSearchMetadata(unity::scopes::qt::QSearchMetadata const&)@Base" 0replaceme
163 (c++)"unity::scopes::qt::QSearchMetadata::QSearchMetadata(int, QString const&, QString const&)@Base" 0replaceme
164 (c++)"unity::scopes::qt::QSearchMetadata::~QSearchMetadata()@Base" 0replaceme
165 (c++)"unity::scopes::qt::QSearchMetadata::~QSearchMetadata()@Base" 0replaceme
166 (c++)"unity::scopes::qt::QSearchMetadata::operator[](QString const&)@Base" 0replaceme
167 (c++)"unity::scopes::qt::QVariantBuilder::end()@Base" 0replaceme
168 (c++)"unity::scopes::qt::QVariantBuilder::add_tuple(QVector<QPair<QString, QVariant> > const&)@Base" 0replaceme
169 (c++)"unity::scopes::qt::QVariantBuilder::QVariantBuilder(unity::scopes::qt::QVariantBuilder&&)@Base" 0replaceme
170 (c++)"unity::scopes::qt::QVariantBuilder::QVariantBuilder(unity::scopes::qt::internal::QVariantBuilderImpl*)@Base" 0replaceme
171 (c++)"unity::scopes::qt::QVariantBuilder::QVariantBuilder(unity::scopes::qt::QVariantBuilder const&)@Base" 0replaceme
172 (c++)"unity::scopes::qt::QVariantBuilder::QVariantBuilder()@Base" 0replaceme
173 (c++)"unity::scopes::qt::QVariantBuilder::QVariantBuilder(unity::scopes::qt::QVariantBuilder&&)@Base" 0replaceme
174 (c++)"unity::scopes::qt::QVariantBuilder::QVariantBuilder(unity::scopes::qt::internal::QVariantBuilderImpl*)@Base" 0replaceme
175 (c++)"unity::scopes::qt::QVariantBuilder::QVariantBuilder(unity::scopes::qt::QVariantBuilder const&)@Base" 0replaceme
176 (c++)"unity::scopes::qt::QVariantBuilder::QVariantBuilder()@Base" 0replaceme
177 (c++)"unity::scopes::qt::QVariantBuilder::~QVariantBuilder()@Base" 0replaceme
178 (c++)"unity::scopes::qt::QVariantBuilder::~QVariantBuilder()@Base" 0replaceme
179 (c++)"unity::scopes::qt::QVariantBuilder::~QVariantBuilder()@Base" 0replaceme
180 (c++)"unity::scopes::qt::QVariantBuilder::operator=(unity::scopes::qt::QVariantBuilder&&)@Base" 0replaceme
181 (c++)"unity::scopes::qt::QVariantBuilder::operator=(unity::scopes::qt::QVariantBuilder const&)@Base" 0replaceme
182 (c++)"unity::scopes::qt::QSearchQueryBase::qt_metacall(QMetaObject::Call, int, void**)@Base" 0replaceme
183 (c++)"unity::scopes::qt::QSearchQueryBase::qt_metacast(char const*)@Base" 0replaceme
184 (c++)"unity::scopes::qt::QSearchQueryBase::staticMetaObject@Base" 0replaceme
185 (c++)"unity::scopes::qt::QSearchQueryBase::init(unity::scopes::qt::QSearchQueryBaseAPI*)@Base" 0replaceme
186 (c++)"unity::scopes::qt::QSearchQueryBase::subsearch(std::shared_ptr<unity::scopes::Scope> const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unity::scopes::FilterState const&, std::shared_ptr<unity::scopes::SearchListenerBase> const&)@Base" 0replaceme
187 (c++)"unity::scopes::qt::QSearchQueryBase::subsearch(std::shared_ptr<unity::scopes::Scope> const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<unity::scopes::SearchListenerBase> const&)@Base" 0replaceme
188 (c++)"unity::scopes::qt::QSearchQueryBase::subsearch(std::shared_ptr<unity::scopes::Scope> const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unity::scopes::FilterState const&, unity::scopes::SearchMetadata const&, std::shared_ptr<unity::scopes::SearchListenerBase> const&)@Base" 0replaceme
189 (c++)"unity::scopes::qt::QSearchQueryBase::subsearch(std::shared_ptr<unity::scopes::Scope> const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unity::scopes::FilterState const&, std::shared_ptr<unity::scopes::SearchListenerBase> const&)@Base" 0replaceme
190 (c++)"unity::scopes::qt::QSearchQueryBase::QSearchQueryBase(QObject*)@Base" 0replaceme
191 (c++)"unity::scopes::qt::QSearchQueryBase::QSearchQueryBase(QObject*)@Base" 0replaceme
192 (c++)"unity::scopes::qt::QSearchQueryBase::~QSearchQueryBase()@Base" 0replaceme
193 (c++)"unity::scopes::qt::QSearchQueryBase::~QSearchQueryBase()@Base" 0replaceme
194 (c++)"unity::scopes::qt::QSearchQueryBase::~QSearchQueryBase()@Base" 0replaceme
195 (c++)"unity::scopes::qt::QPreviewQueryBase::qt_metacall(QMetaObject::Call, int, void**)@Base" 0replaceme
196 (c++)"unity::scopes::qt::QPreviewQueryBase::qt_metacast(char const*)@Base" 0replaceme
197 (c++)"unity::scopes::qt::QPreviewQueryBase::staticMetaObject@Base" 0replaceme
198 (c++)"unity::scopes::qt::QPreviewQueryBase::init(unity::scopes::qt::QPreviewQueryBaseAPI*)@Base" 0replaceme
199 (c++)"unity::scopes::qt::QPreviewQueryBase::QPreviewQueryBase(QObject*)@Base" 0replaceme
200 (c++)"unity::scopes::qt::QPreviewQueryBase::QPreviewQueryBase(QObject*)@Base" 0replaceme
201 (c++)"unity::scopes::qt::QPreviewQueryBase::~QPreviewQueryBase()@Base" 0replaceme
202 (c++)"unity::scopes::qt::QPreviewQueryBase::~QPreviewQueryBase()@Base" 0replaceme
203 (c++)"unity::scopes::qt::QPreviewQueryBase::~QPreviewQueryBase()@Base" 0replaceme
204 (c++)"unity::scopes::qt::QCategorisedResult::set_category(std::shared_ptr<unity::scopes::qt::QCategory const>)@Base" 0replaceme
205 (c++)"unity::scopes::qt::QCategorisedResult::QCategorisedResult(unity::scopes::qt::QCategorisedResult&&)@Base" 0replaceme
206 (c++)"unity::scopes::qt::QCategorisedResult::QCategorisedResult(unity::scopes::qt::QCategorisedResult const&)@Base" 0replaceme
207 (c++)"unity::scopes::qt::QCategorisedResult::QCategorisedResult(std::shared_ptr<unity::scopes::qt::QCategory const>)@Base" 0replaceme
208 (c++)"unity::scopes::qt::QCategorisedResult::QCategorisedResult(unity::scopes::qt::QCategorisedResult&&)@Base" 0replaceme
209 (c++)"unity::scopes::qt::QCategorisedResult::QCategorisedResult(unity::scopes::qt::QCategorisedResult const&)@Base" 0replaceme
210 (c++)"unity::scopes::qt::QCategorisedResult::QCategorisedResult(std::shared_ptr<unity::scopes::qt::QCategory const>)@Base" 0replaceme
211 (c++)"unity::scopes::qt::QCategorisedResult::~QCategorisedResult()@Base" 0replaceme
212 (c++)"unity::scopes::qt::QCategorisedResult::~QCategorisedResult()@Base" 0replaceme
213 (c++)"unity::scopes::qt::QCategorisedResult::~QCategorisedResult()@Base" 0replaceme
214 (c++)"unity::scopes::qt::QCategorisedResult::operator=(unity::scopes::qt::QCategorisedResult&&)@Base" 0replaceme
215 (c++)"unity::scopes::qt::QCategorisedResult::operator=(unity::scopes::qt::QCategorisedResult const&)@Base" 0replaceme
216 (c++)"unity::scopes::qt::QSearchQueryBaseAPI::run_signal(std::shared_ptr<unity::scopes::qt::QSearchReply> const&)@Base" 0replaceme
217 (c++)"unity::scopes::qt::QSearchQueryBaseAPI::qt_metacall(QMetaObject::Call, int, void**)@Base" 0replaceme
218 (c++)"unity::scopes::qt::QSearchQueryBaseAPI::qt_metacast(char const*)@Base" 0replaceme
219 (c++)"unity::scopes::qt::QSearchQueryBaseAPI::staticMetaObject@Base" 0replaceme
220 (c++)"unity::scopes::qt::QSearchQueryBaseAPI::run(std::shared_ptr<unity::scopes::SearchReply> const&)@Base" 0replaceme
221 (c++)"unity::scopes::qt::QSearchQueryBaseAPI::event(QEvent*)@Base" 0replaceme
222 (c++)"unity::scopes::qt::QSearchQueryBaseAPI::cancelled()@Base" 0replaceme
223 (c++)"unity::scopes::qt::QSearchQueryBaseAPI::QSearchQueryBaseAPI(std::shared_ptr<QCoreApplication>, unity::scopes::qt::QScopeBase&, unity::scopes::CannedQuery const&, unity::scopes::SearchMetadata const&, QObject*)@Base" 0replaceme
224 (c++)"unity::scopes::qt::QSearchQueryBaseAPI::QSearchQueryBaseAPI(std::shared_ptr<QCoreApplication>, unity::scopes::qt::QScopeBase&, unity::scopes::CannedQuery const&, unity::scopes::SearchMetadata const&, QObject*)@Base" 0replaceme
225 (c++)"unity::scopes::qt::QSearchQueryBaseAPI::~QSearchQueryBaseAPI()@Base" 0replaceme
226 (c++)"unity::scopes::qt::QSearchQueryBaseAPI::~QSearchQueryBaseAPI()@Base" 0replaceme
227 (c++)"unity::scopes::qt::QSearchQueryBaseAPI::~QSearchQueryBaseAPI()@Base" 0replaceme
228 (c++)"unity::scopes::qt::QPreviewQueryBaseAPI::qt_metacall(QMetaObject::Call, int, void**)@Base" 0replaceme
229 (c++)"unity::scopes::qt::QPreviewQueryBaseAPI::qt_metacast(char const*)@Base" 0replaceme
230 (c++)"unity::scopes::qt::QPreviewQueryBaseAPI::staticMetaObject@Base" 0replaceme
231 (c++)"unity::scopes::qt::QPreviewQueryBaseAPI::run(std::shared_ptr<unity::scopes::PreviewReply> const&)@Base" 0replaceme
232 (c++)"unity::scopes::qt::QPreviewQueryBaseAPI::event(QEvent*)@Base" 0replaceme
233 (c++)"unity::scopes::qt::QPreviewQueryBaseAPI::cancelled()@Base" 0replaceme
234 (c++)"unity::scopes::qt::QPreviewQueryBaseAPI::QPreviewQueryBaseAPI(std::shared_ptr<QCoreApplication>, unity::scopes::qt::QScopeBase&, unity::scopes::Result const&, unity::scopes::ActionMetadata const&, QObject*)@Base" 0replaceme
235 (c++)"unity::scopes::qt::QPreviewQueryBaseAPI::QPreviewQueryBaseAPI(std::shared_ptr<QCoreApplication>, unity::scopes::qt::QScopeBase&, unity::scopes::Result const&, unity::scopes::ActionMetadata const&, QObject*)@Base" 0replaceme
236 (c++)"unity::scopes::qt::QPreviewQueryBaseAPI::~QPreviewQueryBaseAPI()@Base" 0replaceme
237 (c++)"unity::scopes::qt::QPreviewQueryBaseAPI::~QPreviewQueryBaseAPI()@Base" 0replaceme
238 (c++)"unity::scopes::qt::QPreviewQueryBaseAPI::~QPreviewQueryBaseAPI()@Base" 0replaceme
239 (c++)"unity::scopes::qt::qVariantToScopeVariant(QVariant const&)@Base" 0replaceme
240 (c++)"unity::scopes::qt::scopeVariantToQVariant(unity::scopes::Variant const&)@Base" 0replaceme
241 (c++)"unity::scopes::qt::qVariantMapToScopeVariantMap(QMap<QString, QVariant> const&)@Base" 0replaceme
242 (c++)"unity::scopes::qt::scopeVariantMapToQVariantMap(std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unity::scopes::Variant, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unity::scopes::Variant> > > const&)@Base" 0replaceme
243 (c++)"unity::scopes::qt::QResult::set_dnd_uri(QString const&)@Base" 0replaceme
244 (c++)"unity::scopes::qt::QResult::set_intercept_activation()@Base" 0replaceme
245 (c++)"unity::scopes::qt::QResult::store(unity::scopes::qt::QResult const&, bool)@Base" 0replaceme
246 (c++)"unity::scopes::qt::QResult::set_art(QString const&)@Base" 0replaceme
247 (c++)"unity::scopes::qt::QResult::set_uri(QString const&)@Base" 0replaceme
248 (c++)"unity::scopes::qt::QResult::set_title(QString const&)@Base" 0replaceme
249 (c++)"unity::scopes::qt::QResult::QResult(unity::scopes::qt::QResult&&)@Base" 0replaceme
250 (c++)"unity::scopes::qt::QResult::QResult(unity::scopes::qt::internal::QResultImpl*)@Base" 0replaceme
251 (c++)"unity::scopes::qt::QResult::QResult(QMap<QString, QVariant> const&)@Base" 0replaceme
252 (c++)"unity::scopes::qt::QResult::QResult(unity::scopes::Result const&)@Base" 0replaceme
253 (c++)"unity::scopes::qt::QResult::QResult(unity::scopes::qt::QResult const&)@Base" 0replaceme
254 (c++)"unity::scopes::qt::QResult::QResult()@Base" 0replaceme
255 (c++)"unity::scopes::qt::QResult::QResult(unity::scopes::qt::QResult&&)@Base" 0replaceme
256 (c++)"unity::scopes::qt::QResult::QResult(unity::scopes::qt::internal::QResultImpl*)@Base" 0replaceme
257 (c++)"unity::scopes::qt::QResult::QResult(QMap<QString, QVariant> const&)@Base" 0replaceme
258 (c++)"unity::scopes::qt::QResult::QResult(unity::scopes::Result const&)@Base" 0replaceme
259 (c++)"unity::scopes::qt::QResult::QResult(unity::scopes::qt::QResult const&)@Base" 0replaceme
260 (c++)"unity::scopes::qt::QResult::QResult()@Base" 0replaceme
261 (c++)"unity::scopes::qt::QResult::~QResult()@Base" 0replaceme
262 (c++)"unity::scopes::qt::QResult::~QResult()@Base" 0replaceme
263 (c++)"unity::scopes::qt::QResult::~QResult()@Base" 0replaceme
264 (c++)"unity::scopes::qt::QResult::operator=(unity::scopes::qt::QResult&&)@Base" 0replaceme
265 (c++)"unity::scopes::qt::QResult::operator=(unity::scopes::qt::QResult const&)@Base" 0replaceme
266 (c++)"unity::scopes::qt::QResult::operator[](QString const&)@Base" 0replaceme
267 (c++)"unity::scopes::qt::RunEvent::~RunEvent()@Base" 0replaceme
268 (c++)"unity::scopes::qt::RunEvent::~RunEvent()@Base" 0replaceme
269 (c++)"unity::scopes::qt::RunEvent::~RunEvent()@Base" 0replaceme
270 (c++)"unity::scopes::qt::QCategory::QCategory(unity::scopes::qt::internal::QCategoryImpl*)@Base" 0replaceme
271 (c++)"unity::scopes::qt::QCategory::QCategory(std::shared_ptr<unity::scopes::Category const>)@Base" 0replaceme
272 (c++)"unity::scopes::qt::QCategory::QCategory(unity::scopes::qt::internal::QCategoryImpl*)@Base" 0replaceme
273 (c++)"unity::scopes::qt::QCategory::QCategory(std::shared_ptr<unity::scopes::Category const>)@Base" 0replaceme
274 (c++)"unity::scopes::qt::QCategory::~QCategory()@Base" 0replaceme
275 (c++)"unity::scopes::qt::QCategory::~QCategory()@Base" 0replaceme
276 (c++)"unity::scopes::qt::QCategory::~QCategory()@Base" 0replaceme
277 (c++)"unity::scopes::qt::XmlReader::XmlReader()@Base" 0replaceme
278 (c++)"unity::scopes::qt::XmlReader::XmlReader()@Base" 0replaceme
279 (c++)"unity::scopes::qt::JsonReader::read(QUrl const&) const@Base" 0replaceme
280 (c++)"unity::scopes::qt::JsonReader::read(QString const&, QVector<QPair<QString, QString> > const&) const@Base" 0replaceme
281 (c++)"unity::scopes::qt::QScopeBase::metaObject() const@Base" 0replaceme
282 (c++)"unity::scopes::qt::QDepartment::subdepartments() const@Base" 0replaceme
283 (c++)"unity::scopes::qt::QDepartment::alternate_label() const@Base" 0replaceme
284 (c++)"unity::scopes::qt::QDepartment::has_subdepartments() const@Base" 0replaceme
285 (c++)"unity::scopes::qt::QDepartment::id() const@Base" 0replaceme
286 (c++)"unity::scopes::qt::QDepartment::label() const@Base" 0replaceme
287 (c++)"unity::scopes::qt::QDepartment::query() const@Base" 0replaceme
288 (c++)"unity::scopes::qt::QDepartment::serialize() const@Base" 0replaceme
289 (c++)"unity::scopes::qt::QCannedQuery::filter_state() const@Base" 0replaceme
290 (c++)"unity::scopes::qt::QCannedQuery::query_string() const@Base" 0replaceme
291 (c++)"unity::scopes::qt::QCannedQuery::department_id() const@Base" 0replaceme
292 (c++)"unity::scopes::qt::QCannedQuery::to_uri() const@Base" 0replaceme
293 (c++)"unity::scopes::qt::QCannedQuery::scope_id() const@Base" 0replaceme
294 (c++)"unity::scopes::qt::QCannedQuery::serialize() const@Base" 0replaceme
295 (c++)"unity::scopes::qt::QSearchReply::metaObject() const@Base" 0replaceme
296 (c++)"unity::scopes::qt::QColumnLayout::number_of_columns() const@Base" 0replaceme
297 (c++)"unity::scopes::qt::QColumnLayout::size() const@Base" 0replaceme
298 (c++)"unity::scopes::qt::QColumnLayout::column(int) const@Base" 0replaceme
299 (c++)"unity::scopes::qt::QColumnLayout::serialize() const@Base" 0replaceme
300 (c++)"unity::scopes::qt::QPreviewReply::metaObject() const@Base" 0replaceme
301 (c++)"unity::scopes::qt::QPreviewWidget::widget_type() const@Base" 0replaceme
302 (c++)"unity::scopes::qt::QPreviewWidget::attribute_values() const@Base" 0replaceme
303 (c++)"unity::scopes::qt::QPreviewWidget::attribute_mappings() const@Base" 0replaceme
304 (c++)"unity::scopes::qt::QPreviewWidget::id() const@Base" 0replaceme
305 (c++)"unity::scopes::qt::QPreviewWidget::data() const@Base" 0replaceme
306 (c++)"unity::scopes::qt::QPreviewWidget::widgets() const@Base" 0replaceme
307 (c++)"unity::scopes::qt::QPreviewWidget::serialize() const@Base" 0replaceme
308 (c++)"unity::scopes::qt::XmlAsyncReader::async_get_parser(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0replaceme
309 (c++)"unity::scopes::qt::XmlAsyncReader::async_get_parser(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) const@Base" 0replaceme
310 (c++)"unity::scopes::qt::HttpAsyncReader::async_execute(core::net::http::Request::Handler const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0replaceme
311 (c++)"unity::scopes::qt::HttpAsyncReader::progress_report(core::net::http::Request::Progress const&) const@Base" 0replaceme
312 (c++)"unity::scopes::qt::HttpAsyncReader::get_uri(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) const@Base" 0replaceme
313 (c++)"unity::scopes::qt::JsonAsyncReader::async_get_parser(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0replaceme
314 (c++)"unity::scopes::qt::JsonAsyncReader::async_get_parser(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) const@Base" 0replaceme
315 (c++)"unity::scopes::qt::QActionMetadata::scope_data() const@Base" 0replaceme
316 (c++)"unity::scopes::qt::QActionMetadata::contains_hint(QString const&) const@Base" 0replaceme
317 (c++)"unity::scopes::qt::QActionMetadata::hints() const@Base" 0replaceme
318 (c++)"unity::scopes::qt::QActionMetadata::operator[](QString const&) const@Base" 0replaceme
319 (c++)"unity::scopes::qt::QSearchMetadata::cardinality() const@Base" 0replaceme
320 (c++)"unity::scopes::qt::QSearchMetadata::has_location() const@Base" 0replaceme
321 (c++)"unity::scopes::qt::QSearchMetadata::contains_hint(QString const&) const@Base" 0replaceme
322 (c++)"unity::scopes::qt::QSearchMetadata::hints() const@Base" 0replaceme
323 (c++)"unity::scopes::qt::QSearchMetadata::location() const@Base" 0replaceme
324 (c++)"unity::scopes::qt::QSearchMetadata::operator[](QString const&) const@Base" 0replaceme
325 (c++)"unity::scopes::qt::QSearchQueryBase::metaObject() const@Base" 0replaceme
326 (c++)"unity::scopes::qt::QSearchQueryBase::search_metadata() const@Base" 0replaceme
327 (c++)"unity::scopes::qt::QSearchQueryBase::query() const@Base" 0replaceme
328 (c++)"unity::scopes::qt::QPreviewQueryBase::metaObject() const@Base" 0replaceme
329 (c++)"unity::scopes::qt::QPreviewQueryBase::action_metadata() const@Base" 0replaceme
330 (c++)"unity::scopes::qt::QPreviewQueryBase::result() const@Base" 0replaceme
331 (c++)"unity::scopes::qt::QCategorisedResult::fwd() const@Base" 0replaceme
332 (c++)"unity::scopes::qt::QCategorisedResult::category() const@Base" 0replaceme
333 (c++)"unity::scopes::qt::QSearchQueryBaseAPI::metaObject() const@Base" 0replaceme
334 (c++)"unity::scopes::qt::QPreviewQueryBaseAPI::metaObject() const@Base" 0replaceme
335 (c++)"unity::scopes::qt::QResult::direct_activation() const@Base" 0replaceme
336 (c++)"unity::scopes::qt::QResult::has_stored_result() const@Base" 0replaceme
337 (c++)"unity::scopes::qt::QResult::target_scope_proxy() const@Base" 0replaceme
338 (c++)"unity::scopes::qt::QResult::art() const@Base" 0replaceme
339 (c++)"unity::scopes::qt::QResult::uri() const@Base" 0replaceme
340 (c++)"unity::scopes::qt::QResult::title() const@Base" 0replaceme
341 (c++)"unity::scopes::qt::QResult::value(QString const&) const@Base" 0replaceme
342 (c++)"unity::scopes::qt::QResult::dnd_uri() const@Base" 0replaceme
343 (c++)"unity::scopes::qt::QResult::contains(QString const&) const@Base" 0replaceme
344 (c++)"unity::scopes::qt::QResult::retrieve() const@Base" 0replaceme
345 (c++)"unity::scopes::qt::QResult::serialize() const@Base" 0replaceme
346 (c++)"unity::scopes::qt::QResult::operator[](QString const&) const@Base" 0replaceme
347 (c++)"unity::scopes::qt::QCategory::renderer_template() const@Base" 0replaceme
348 (c++)"unity::scopes::qt::QCategory::id() const@Base" 0replaceme
349 (c++)"unity::scopes::qt::QCategory::icon() const@Base" 0replaceme
350 (c++)"unity::scopes::qt::QCategory::query() const@Base" 0replaceme
351 (c++)"unity::scopes::qt::QCategory::title() const@Base" 0replaceme
352 (c++)"unity::scopes::qt::QCategory::serialize() const@Base" 0replaceme
353 (c++)"unity::scopes::qt::XmlReader::read(QUrl const&) const@Base" 0replaceme
354 (c++)"unity::scopes::qt::XmlReader::read(QString const&, QVector<QPair<QString, QString> > const&) const@Base" 0replaceme
355 (c++)"typeinfo for unity::scopes::qt::QScopeBase@Base" 0replaceme
356 (c++)"typeinfo for unity::scopes::qt::QSearchReply@Base" 0replaceme
357 (c++)"typeinfo for unity::scopes::qt::QPreviewReply@Base" 0replaceme
358 (c++)"typeinfo for unity::scopes::qt::QScopeBaseAPI@Base" 0replaceme
359 (c++)"typeinfo for unity::scopes::qt::CancelledEvent@Base" 0replaceme
360 (c++)"typeinfo for unity::scopes::qt::QPreviewWidget@Base" 0replaceme
361 (c++)"typeinfo for unity::scopes::qt::XmlAsyncReader@Base" 0replaceme
362 (c++)"typeinfo for unity::scopes::qt::HttpAsyncReader@Base" 0replaceme
363 (c++)"typeinfo for unity::scopes::qt::InitializeEvent@Base" 0replaceme
364 (c++)"typeinfo for unity::scopes::qt::JsonAsyncReader@Base" 0replaceme
365 (c++)"typeinfo for unity::scopes::qt::QVariantBuilder@Base" 0replaceme
366 (c++)"typeinfo for unity::scopes::qt::QSearchQueryBase@Base" 0replaceme
367 (c++)"typeinfo for unity::scopes::qt::QPreviewQueryBase@Base" 0replaceme
368 (c++)"typeinfo for unity::scopes::qt::QCategorisedResult@Base" 0replaceme
369 (c++)"typeinfo for unity::scopes::qt::QSearchQueryBaseAPI@Base" 0replaceme
370 (c++)"typeinfo for unity::scopes::qt::QPreviewQueryBaseAPI@Base" 0replaceme
371 (c++)"typeinfo for unity::scopes::qt::QResult@Base" 0replaceme
372 (c++)"typeinfo for unity::scopes::qt::RunEvent@Base" 0replaceme
373 (c++)"typeinfo for unity::scopes::qt::QCategory@Base" 0replaceme
374 (c++)"typeinfo name for unity::scopes::qt::QScopeBase@Base" 0replaceme
375 (c++)"typeinfo name for unity::scopes::qt::QSearchReply@Base" 0replaceme
376 (c++)"typeinfo name for unity::scopes::qt::QPreviewReply@Base" 0replaceme
377 (c++)"typeinfo name for unity::scopes::qt::QScopeBaseAPI@Base" 0replaceme
378 (c++)"typeinfo name for unity::scopes::qt::CancelledEvent@Base" 0replaceme
379 (c++)"typeinfo name for unity::scopes::qt::QPreviewWidget@Base" 0replaceme
380 (c++)"typeinfo name for unity::scopes::qt::XmlAsyncReader@Base" 0replaceme
381 (c++)"typeinfo name for unity::scopes::qt::HttpAsyncReader@Base" 0replaceme
382 (c++)"typeinfo name for unity::scopes::qt::InitializeEvent@Base" 0replaceme
383 (c++)"typeinfo name for unity::scopes::qt::JsonAsyncReader@Base" 0replaceme
384 (c++)"typeinfo name for unity::scopes::qt::QVariantBuilder@Base" 0replaceme
385 (c++)"typeinfo name for unity::scopes::qt::QSearchQueryBase@Base" 0replaceme
386 (c++)"typeinfo name for unity::scopes::qt::QPreviewQueryBase@Base" 0replaceme
387 (c++)"typeinfo name for unity::scopes::qt::QCategorisedResult@Base" 0replaceme
388 (c++)"typeinfo name for unity::scopes::qt::QSearchQueryBaseAPI@Base" 0replaceme
389 (c++)"typeinfo name for unity::scopes::qt::QPreviewQueryBaseAPI@Base" 0replaceme
390 (c++)"typeinfo name for unity::scopes::qt::QResult@Base" 0replaceme
391 (c++)"typeinfo name for unity::scopes::qt::RunEvent@Base" 0replaceme
392 (c++)"typeinfo name for unity::scopes::qt::QCategory@Base" 0replaceme
393 (c++)"vtable for unity::scopes::qt::QScopeBase@Base" 0replaceme
394 (c++)"vtable for unity::scopes::qt::QSearchReply@Base" 0replaceme
395 (c++)"vtable for unity::scopes::qt::QPreviewReply@Base" 0replaceme
396 (c++)"vtable for unity::scopes::qt::QScopeBaseAPI@Base" 0replaceme
397 (c++)"vtable for unity::scopes::qt::CancelledEvent@Base" 0replaceme
398 (c++)"vtable for unity::scopes::qt::QPreviewWidget@Base" 0replaceme
399 (c++)"vtable for unity::scopes::qt::XmlAsyncReader@Base" 0replaceme
400 (c++)"vtable for unity::scopes::qt::HttpAsyncReader@Base" 0replaceme
401 (c++)"vtable for unity::scopes::qt::InitializeEvent@Base" 0replaceme
402 (c++)"vtable for unity::scopes::qt::JsonAsyncReader@Base" 0replaceme
403 (c++)"vtable for unity::scopes::qt::QVariantBuilder@Base" 0replaceme
404 (c++)"vtable for unity::scopes::qt::QSearchQueryBase@Base" 0replaceme
405 (c++)"vtable for unity::scopes::qt::QPreviewQueryBase@Base" 0replaceme
406 (c++)"vtable for unity::scopes::qt::QCategorisedResult@Base" 0replaceme
407 (c++)"vtable for unity::scopes::qt::QSearchQueryBaseAPI@Base" 0replaceme
408 (c++)"vtable for unity::scopes::qt::QPreviewQueryBaseAPI@Base" 0replaceme
409 (c++)"vtable for unity::scopes::qt::QResult@Base" 0replaceme
410 (c++)"vtable for unity::scopes::qt::RunEvent@Base" 0replaceme
411 (c++)"vtable for unity::scopes::qt::QCategory@Base" 0replaceme
0412
=== added file 'doc/Doxyfile-scopes-qt.in'
--- doc/Doxyfile-scopes-qt.in 1970-01-01 00:00:00 +0000
+++ doc/Doxyfile-scopes-qt.in 2015-02-05 11:31:47 +0000
@@ -0,0 +1,1797 @@
1# Doxyfile 1.8.1.2
2
3# This file describes the settings to be used by the documentation system
4# doxygen (www.doxygen.org) for a project
5#
6# All text after a hash (#) is considered a comment and will be ignored
7# The format is:
8# TAG = value [value, ...]
9# For lists items can also be appended using:
10# TAG += value [value, ...]
11# Values that contain spaces should be placed between quotes (" ")
12
13#---------------------------------------------------------------------------
14# Project related configuration options
15#---------------------------------------------------------------------------
16
17# This tag specifies the encoding used for all characters in the config file
18# that follow. The default is UTF-8 which is also the encoding used for all
19# text before the first occurrence of this tag. Doxygen uses libiconv (or the
20# iconv built into libc) for the transcoding. See
21# http://www.gnu.org/software/libiconv for the list of possible encodings.
22
23DOXYFILE_ENCODING = UTF-8
24
25# The PROJECT_NAME tag is a single word (or sequence of words) that should
26# identify the project. Note that if you do not use Doxywizard you need
27# to put quotes around the project name if it contains spaces.
28
29PROJECT_NAME = "Unity Scopes Qt library"
30
31# The PROJECT_NUMBER tag can be used to enter a project or revision number.
32# This could be handy for archiving the generated documentation or
33# if some version control system is used.
34
35PROJECT_NUMBER =
36
37# Using the PROJECT_BRIEF tag one can provide an optional one line description
38# for a project that appears at the top of each page and should give viewer
39# a quick idea about the purpose of the project. Keep the description short.
40
41PROJECT_BRIEF =
42
43# With the PROJECT_LOGO tag one can specify an logo or icon that is
44# included in the documentation. The maximum height of the logo should not
45# exceed 55 pixels and the maximum width should not exceed 200 pixels.
46# Doxygen will copy the logo to the output directory.
47
48PROJECT_LOGO =
49
50# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
51# base path where the generated documentation will be put.
52# If a relative path is entered, it will be relative to the location
53# where doxygen was started. If left blank the current directory will be used.
54
55OUTPUT_DIRECTORY = @PROJECT_BINARY_DIR@/doc-scopes-qt
56
57# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
58# 4096 sub-directories (in 2 levels) under the output directory of each output
59# format and will distribute the generated files over these directories.
60# Enabling this option can be useful when feeding doxygen a huge amount of
61# source files, where putting all generated files in the same directory would
62# otherwise cause performance problems for the file system.
63
64CREATE_SUBDIRS = NO
65
66# The OUTPUT_LANGUAGE tag is used to specify the language in which all
67# documentation generated by doxygen is written. Doxygen will use this
68# information to generate all constant output in the proper language.
69# The default language is English, other supported languages are:
70# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
71# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
72# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
73# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
74# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
75# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
76
77OUTPUT_LANGUAGE = English
78
79# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
80# include brief member descriptions after the members that are listed in
81# the file and class documentation (similar to JavaDoc).
82# Set to NO to disable this.
83
84BRIEF_MEMBER_DESC = YES
85
86# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
87# the brief description of a member or function before the detailed description.
88# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
89# brief descriptions will be completely suppressed.
90
91REPEAT_BRIEF = YES
92
93# This tag implements a quasi-intelligent brief description abbreviator
94# that is used to form the text in various listings. Each string
95# in this list, if found as the leading text of the brief description, will be
96# stripped from the text and the result after processing the whole list, is
97# used as the annotated text. Otherwise, the brief description is used as-is.
98# If left blank, the following values are used ("$name" is automatically
99# replaced with the name of the entity): "The $name class" "The $name widget"
100# "The $name file" "is" "provides" "specifies" "contains"
101# "represents" "a" "an" "the"
102
103ABBREVIATE_BRIEF = "The $name class" \
104 "The $name widget" \
105 "The $name file" \
106 is \
107 provides \
108 specifies \
109 contains \
110 represents \
111 a \
112 an \
113 the
114
115# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
116# Doxygen will generate a detailed section even if there is only a brief
117# description.
118
119ALWAYS_DETAILED_SEC = NO
120
121# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
122# inherited members of a class in the documentation of that class as if those
123# members were ordinary class members. Constructors, destructors and assignment
124# operators of the base classes will not be shown.
125
126INLINE_INHERITED_MEMB = NO
127
128# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
129# path before files name in the file list and in the header files. If set
130# to NO the shortest path that makes the file name unique will be used.
131
132FULL_PATH_NAMES = YES
133
134# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
135# can be used to strip a user-defined part of the path. Stripping is
136# only done if one of the specified strings matches the left-hand part of
137# the path. The tag can be used to show relative paths in the file list.
138# If left blank the directory from which doxygen is run is used as the
139# path to strip.
140
141STRIP_FROM_PATH = @PROJECT_SOURCE_DIR@ @PROJECT_BINARY_DIR@
142
143# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
144# the path mentioned in the documentation of a class, which tells
145# the reader which header file to include in order to use a class.
146# If left blank only the name of the header file containing the class
147# definition is used. Otherwise one should specify the include paths that
148# are normally passed to the compiler using the -I flag.
149
150STRIP_FROM_INC_PATH = @PROJECT_SOURCE_DIR@/include @PROJECT_BINARY_DIR@/include
151
152# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
153# (but less readable) file names. This can be useful if your file system
154# doesn't support long names like on DOS, Mac, or CD-ROM.
155
156SHORT_NAMES = NO
157
158# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
159# will interpret the first line (until the first dot) of a JavaDoc-style
160# comment as the brief description. If set to NO, the JavaDoc
161# comments will behave just like regular Qt-style comments
162# (thus requiring an explicit @brief command for a brief description.)
163
164JAVADOC_AUTOBRIEF = NO
165
166# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
167# interpret the first line (until the first dot) of a Qt-style
168# comment as the brief description. If set to NO, the comments
169# will behave just like regular Qt-style comments (thus requiring
170# an explicit \brief command for a brief description.)
171
172QT_AUTOBRIEF = NO
173
174# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
175# treat a multi-line C++ special comment block (i.e. a block of //! or ///
176# comments) as a brief description. This used to be the default behaviour.
177# The new default is to treat a multi-line C++ comment block as a detailed
178# description. Set this tag to YES if you prefer the old behaviour instead.
179
180MULTILINE_CPP_IS_BRIEF = NO
181
182# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
183# member inherits the documentation from any documented member that it
184# re-implements.
185
186INHERIT_DOCS = YES
187
188# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
189# a new page for each member. If set to NO, the documentation of a member will
190# be part of the file/class/namespace that contains it.
191
192SEPARATE_MEMBER_PAGES = NO
193
194# The TAB_SIZE tag can be used to set the number of spaces in a tab.
195# Doxygen uses this value to replace tabs by spaces in code fragments.
196
197TAB_SIZE = 8
198
199# This tag can be used to specify a number of aliases that acts
200# as commands in the documentation. An alias has the form "name=value".
201# For example adding "sideeffect=\par Side Effects:\n" will allow you to
202# put the command \sideeffect (or @sideeffect) in the documentation, which
203# will result in a user-defined paragraph with heading "Side Effects:".
204# You can put \n's in the value part of an alias to insert newlines.
205
206ALIASES =
207
208# This tag can be used to specify a number of word-keyword mappings (TCL only).
209# A mapping has the form "name=value". For example adding
210# "class=itcl::class" will allow you to use the command class in the
211# itcl::class meaning.
212
213TCL_SUBST =
214
215# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
216# sources only. Doxygen will then generate output that is more tailored for C.
217# For instance, some of the names that are used will be different. The list
218# of all members will be omitted, etc.
219
220OPTIMIZE_OUTPUT_FOR_C = NO
221
222# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
223# sources only. Doxygen will then generate output that is more tailored for
224# Java. For instance, namespaces will be presented as packages, qualified
225# scopes will look different, etc.
226
227OPTIMIZE_OUTPUT_JAVA = NO
228
229# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
230# sources only. Doxygen will then generate output that is more tailored for
231# Fortran.
232
233OPTIMIZE_FOR_FORTRAN = NO
234
235# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
236# sources. Doxygen will then generate output that is tailored for
237# VHDL.
238
239OPTIMIZE_OUTPUT_VHDL = NO
240
241# Doxygen selects the parser to use depending on the extension of the files it
242# parses. With this tag you can assign which parser to use for a given extension.
243# Doxygen has a built-in mapping, but you can override or extend it using this
244# tag. The format is ext=language, where ext is a file extension, and language
245# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
246# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
247# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
248# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
249# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
250
251EXTENSION_MAPPING =
252
253# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
254# comments according to the Markdown format, which allows for more readable
255# documentation. See http://daringfireball.net/projects/markdown/ for details.
256# The output of markdown processing is further processed by doxygen, so you
257# can mix doxygen, HTML, and XML commands with Markdown formatting.
258# Disable only in case of backward compatibilities issues.
259
260MARKDOWN_SUPPORT = YES
261
262# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
263# to include (a tag file for) the STL sources as input, then you should
264# set this tag to YES in order to let doxygen match functions declarations and
265# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
266# func(std::string) {}). This also makes the inheritance and collaboration
267# diagrams that involve STL classes more complete and accurate.
268
269BUILTIN_STL_SUPPORT = YES
270
271# If you use Microsoft's C++/CLI language, you should set this option to YES to
272# enable parsing support.
273
274CPP_CLI_SUPPORT = NO
275
276# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
277# Doxygen will parse them like normal C++ but will assume all classes use public
278# instead of private inheritance when no explicit protection keyword is present.
279
280SIP_SUPPORT = NO
281
282# For Microsoft's IDL there are propget and propput attributes to indicate getter
283# and setter methods for a property. Setting this option to YES (the default)
284# will make doxygen replace the get and set methods by a property in the
285# documentation. This will only work if the methods are indeed getting or
286# setting a simple type. If this is not the case, or you want to show the
287# methods anyway, you should set this option to NO.
288
289IDL_PROPERTY_SUPPORT = YES
290
291# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
292# tag is set to YES, then doxygen will reuse the documentation of the first
293# member in the group (if any) for the other members of the group. By default
294# all members of a group must be documented explicitly.
295
296DISTRIBUTE_GROUP_DOC = NO
297
298# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
299# the same type (for instance a group of public functions) to be put as a
300# subgroup of that type (e.g. under the Public Functions section). Set it to
301# NO to prevent subgrouping. Alternatively, this can be done per class using
302# the \nosubgrouping command.
303
304SUBGROUPING = YES
305
306# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
307# unions are shown inside the group in which they are included (e.g. using
308# @ingroup) instead of on a separate page (for HTML and Man pages) or
309# section (for LaTeX and RTF).
310
311INLINE_GROUPED_CLASSES = NO
312
313# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
314# unions with only public data fields will be shown inline in the documentation
315# of the scope in which they are defined (i.e. file, namespace, or group
316# documentation), provided this scope is documented. If set to NO (the default),
317# structs, classes, and unions are shown on a separate page (for HTML and Man
318# pages) or section (for LaTeX and RTF).
319
320INLINE_SIMPLE_STRUCTS = NO
321
322# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
323# is documented as struct, union, or enum with the name of the typedef. So
324# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
325# with name TypeT. When disabled the typedef will appear as a member of a file,
326# namespace, or class. And the struct will be named TypeS. This can typically
327# be useful for C code in case the coding convention dictates that all compound
328# types are typedef'ed and only the typedef is referenced, never the tag name.
329
330TYPEDEF_HIDES_STRUCT = NO
331
332# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
333# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
334# their name and scope. Since this can be an expensive process and often the
335# same symbol appear multiple times in the code, doxygen keeps a cache of
336# pre-resolved symbols. If the cache is too small doxygen will become slower.
337# If the cache is too large, memory is wasted. The cache size is given by this
338# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
339# corresponding to a cache size of 2^16 = 65536 symbols.
340
341LOOKUP_CACHE_SIZE = 0
342
343#---------------------------------------------------------------------------
344# Build related configuration options
345#---------------------------------------------------------------------------
346
347# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
348# documentation are documented, even if no documentation was available.
349# Private class members and static file members will be hidden unless
350# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
351
352EXTRACT_ALL = NO
353
354# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
355# will be included in the documentation.
356
357EXTRACT_PRIVATE = NO
358
359# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
360# scope will be included in the documentation.
361
362EXTRACT_PACKAGE = NO
363
364# If the EXTRACT_STATIC tag is set to YES all static members of a file
365# will be included in the documentation.
366
367EXTRACT_STATIC = NO
368
369# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
370# defined locally in source files will be included in the documentation.
371# If set to NO only classes defined in header files are included.
372
373EXTRACT_LOCAL_CLASSES = YES
374
375# This flag is only useful for Objective-C code. When set to YES local
376# methods, which are defined in the implementation section but not in
377# the interface are included in the documentation.
378# If set to NO (the default) only methods in the interface are included.
379
380EXTRACT_LOCAL_METHODS = NO
381
382# If this flag is set to YES, the members of anonymous namespaces will be
383# extracted and appear in the documentation as a namespace called
384# 'anonymous_namespace{file}', where file will be replaced with the base
385# name of the file that contains the anonymous namespace. By default
386# anonymous namespaces are hidden.
387
388EXTRACT_ANON_NSPACES = NO
389
390# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
391# undocumented members of documented classes, files or namespaces.
392# If set to NO (the default) these members will be included in the
393# various overviews, but no documentation section is generated.
394# This option has no effect if EXTRACT_ALL is enabled.
395
396HIDE_UNDOC_MEMBERS = NO
397
398# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
399# undocumented classes that are normally visible in the class hierarchy.
400# If set to NO (the default) these classes will be included in the various
401# overviews. This option has no effect if EXTRACT_ALL is enabled.
402
403HIDE_UNDOC_CLASSES = NO
404
405# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
406# friend (class|struct|union) declarations.
407# If set to NO (the default) these declarations will be included in the
408# documentation.
409
410HIDE_FRIEND_COMPOUNDS = YES
411
412# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
413# documentation blocks found inside the body of a function.
414# If set to NO (the default) these blocks will be appended to the
415# function's detailed documentation block.
416
417HIDE_IN_BODY_DOCS = NO
418
419# The INTERNAL_DOCS tag determines if documentation
420# that is typed after a \internal command is included. If the tag is set
421# to NO (the default) then the documentation will be excluded.
422# Set it to YES to include the internal documentation.
423
424INTERNAL_DOCS = NO
425
426# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
427# file names in lower-case letters. If set to YES upper-case letters are also
428# allowed. This is useful if you have classes or files whose names only differ
429# in case and if your file system supports case sensitive file names. Windows
430# and Mac users are advised to set this option to NO.
431
432CASE_SENSE_NAMES = NO
433
434# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
435# will show members with their full class and namespace scopes in the
436# documentation. If set to YES the scope will be hidden.
437
438HIDE_SCOPE_NAMES = NO
439
440# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
441# will put a list of the files that are included by a file in the documentation
442# of that file.
443
444SHOW_INCLUDE_FILES = YES
445
446# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
447# will list include files with double quotes in the documentation
448# rather than with sharp brackets.
449
450FORCE_LOCAL_INCLUDES = NO
451
452# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
453# is inserted in the documentation for inline members.
454
455INLINE_INFO = YES
456
457# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
458# will sort the (detailed) documentation of file and class members
459# alphabetically by member name. If set to NO the members will appear in
460# declaration order.
461
462SORT_MEMBER_DOCS = YES
463
464# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
465# brief documentation of file, namespace and class members alphabetically
466# by member name. If set to NO (the default) the members will appear in
467# declaration order.
468
469SORT_BRIEF_DOCS = NO
470
471# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
472# will sort the (brief and detailed) documentation of class members so that
473# constructors and destructors are listed first. If set to NO (the default)
474# the constructors will appear in the respective orders defined by
475# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
476# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
477# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
478
479SORT_MEMBERS_CTORS_1ST = NO
480
481# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
482# hierarchy of group names into alphabetical order. If set to NO (the default)
483# the group names will appear in their defined order.
484
485SORT_GROUP_NAMES = NO
486
487# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
488# sorted by fully-qualified names, including namespaces. If set to
489# NO (the default), the class list will be sorted only by class name,
490# not including the namespace part.
491# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
492# Note: This option applies only to the class list, not to the
493# alphabetical list.
494
495SORT_BY_SCOPE_NAME = NO
496
497# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
498# do proper type resolution of all parameters of a function it will reject a
499# match between the prototype and the implementation of a member function even
500# if there is only one candidate or it is obvious which candidate to choose
501# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
502# will still accept a match between prototype and implementation in such cases.
503
504STRICT_PROTO_MATCHING = NO
505
506# The GENERATE_TODOLIST tag can be used to enable (YES) or
507# disable (NO) the todo list. This list is created by putting \todo
508# commands in the documentation.
509
510GENERATE_TODOLIST = YES
511
512# The GENERATE_TESTLIST tag can be used to enable (YES) or
513# disable (NO) the test list. This list is created by putting \test
514# commands in the documentation.
515
516GENERATE_TESTLIST = YES
517
518# The GENERATE_BUGLIST tag can be used to enable (YES) or
519# disable (NO) the bug list. This list is created by putting \bug
520# commands in the documentation.
521
522GENERATE_BUGLIST = YES
523
524# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
525# disable (NO) the deprecated list. This list is created by putting
526# \deprecated commands in the documentation.
527
528GENERATE_DEPRECATEDLIST= YES
529
530# The ENABLED_SECTIONS tag can be used to enable conditional
531# documentation sections, marked by \if sectionname ... \endif.
532
533ENABLED_SECTIONS =
534
535# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
536# the initial value of a variable or macro consists of for it to appear in
537# the documentation. If the initializer consists of more lines than specified
538# here it will be hidden. Use a value of 0 to hide initializers completely.
539# The appearance of the initializer of individual variables and macros in the
540# documentation can be controlled using \showinitializer or \hideinitializer
541# command in the documentation regardless of this setting.
542
543MAX_INITIALIZER_LINES = 30
544
545# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
546# at the bottom of the documentation of classes and structs. If set to YES the
547# list will mention the files that were used to generate the documentation.
548
549SHOW_USED_FILES = YES
550
551# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
552# This will remove the Files entry from the Quick Index and from the
553# Folder Tree View (if specified). The default is YES.
554
555SHOW_FILES = YES
556
557# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
558# Namespaces page. This will remove the Namespaces entry from the Quick Index
559# and from the Folder Tree View (if specified). The default is YES.
560
561SHOW_NAMESPACES = YES
562
563# The FILE_VERSION_FILTER tag can be used to specify a program or script that
564# doxygen should invoke to get the current version for each file (typically from
565# the version control system). Doxygen will invoke the program by executing (via
566# popen()) the command <command> <input-file>, where <command> is the value of
567# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
568# provided by doxygen. Whatever the program writes to standard output
569# is used as the file version. See the manual for examples.
570
571FILE_VERSION_FILTER =
572
573# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
574# by doxygen. The layout file controls the global structure of the generated
575# output files in an output format independent way. To create the layout file
576# that represents doxygen's defaults, run doxygen with the -l option.
577# You can optionally specify a file name after the option, if omitted
578# DoxygenLayout.xml will be used as the name of the layout file.
579
580LAYOUT_FILE =
581
582# The CITE_BIB_FILES tag can be used to specify one or more bib files
583# containing the references data. This must be a list of .bib files. The
584# .bib extension is automatically appended if omitted. Using this command
585# requires the bibtex tool to be installed. See also
586# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
587# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
588# feature you need bibtex and perl available in the search path.
589
590CITE_BIB_FILES =
591
592#---------------------------------------------------------------------------
593# configuration options related to warning and progress messages
594#---------------------------------------------------------------------------
595
596# The QUIET tag can be used to turn on/off the messages that are generated
597# by doxygen. Possible values are YES and NO. If left blank NO is used.
598
599QUIET = YES
600
601# The WARNINGS tag can be used to turn on/off the warning messages that are
602# generated by doxygen. Possible values are YES and NO. If left blank
603# NO is used.
604
605WARNINGS = YES
606
607# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
608# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
609# automatically be disabled.
610
611WARN_IF_UNDOCUMENTED = YES
612
613# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
614# potential errors in the documentation, such as not documenting some
615# parameters in a documented function, or documenting parameters that
616# don't exist or using markup commands wrongly.
617
618WARN_IF_DOC_ERROR = YES
619
620# The WARN_NO_PARAMDOC option can be enabled to get warnings for
621# functions that are documented, but have no documentation for their parameters
622# or return value. If set to NO (the default) doxygen will only warn about
623# wrong or incomplete parameter documentation, but not about the absence of
624# documentation.
625
626WARN_NO_PARAMDOC = NO
627
628# The WARN_FORMAT tag determines the format of the warning messages that
629# doxygen can produce. The string should contain the $file, $line, and $text
630# tags, which will be replaced by the file and line number from which the
631# warning originated and the warning text. Optionally the format may contain
632# $version, which will be replaced by the version of the file (if it could
633# be obtained via FILE_VERSION_FILTER)
634
635WARN_FORMAT = "$file:$line: $text"
636
637# The WARN_LOGFILE tag can be used to specify a file to which warning
638# and error messages should be written. If left blank the output is written
639# to stderr.
640
641#WARN_LOGFILE = @CMAKE_BINARY_DIR@/doxygen-warnings.txt
642
643#---------------------------------------------------------------------------
644# configuration options related to the input files
645#---------------------------------------------------------------------------
646
647# The INPUT tag can be used to specify the files and/or directories that contain
648# documented source files. You may enter file names like "myfile.cpp" or
649# directories like "/usr/src/myproject". Separate the files or directories
650# with spaces.
651INPUT = @PROJECT_SOURCE_DIR@/include/unity/scopes/qt
652
653# This tag can be used to specify the character encoding of the source files
654# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
655# also the default input encoding. Doxygen uses libiconv (or the iconv built
656# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
657# the list of possible encodings.
658
659INPUT_ENCODING = UTF-8
660
661# If the value of the INPUT tag contains directories, you can use the
662# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
663# and *.h) to filter out the source-files in the directories. If left
664# blank the following patterns are tested:
665# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
666# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
667# *.f90 *.f *.for *.vhd *.vhdl
668
669FILE_PATTERNS = *.c \
670 *.cc \
671 *.cxx \
672 *.cpp \
673 *.c++ \
674 *.d \
675 *.java \
676 *.ii \
677 *.ixx \
678 *.ipp \
679 *.i++ \
680 *.inl \
681 *.h \
682 *.hh \
683 *.hxx \
684 *.hpp \
685 *.h++ \
686 *.idl \
687 *.odl \
688 *.cs \
689 *.php \
690 *.php3 \
691 *.inc \
692 *.m \
693 *.markdown \
694 *.md \
695 *.mm \
696 *.dox \
697 *.py \
698 *.f90 \
699 *.f \
700 *.for \
701 *.vhd \
702 *.vhdl
703
704# The RECURSIVE tag can be used to turn specify whether or not subdirectories
705# should be searched for input files as well. Possible values are YES and NO.
706# If left blank NO is used.
707
708RECURSIVE = YES
709
710# The EXCLUDE tag can be used to specify files and/or directories that should be
711# excluded from the INPUT source files. This way you can easily exclude a
712# subdirectory from a directory tree whose root is specified with the INPUT tag.
713# Note that relative paths are relative to the directory from which doxygen is
714# run.
715
716EXCLUDE =
717
718# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
719# directories that are symbolic links (a Unix file system feature) are excluded
720# from the input.
721
722EXCLUDE_SYMLINKS = NO
723
724# If the value of the INPUT tag contains directories, you can use the
725# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
726# certain files from those directories. Note that the wildcards are matched
727# against the file with absolute path, so to exclude all test directories
728# for example use the pattern */test/*
729
730EXCLUDE_PATTERNS = */internal/*
731
732# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
733# (namespaces, classes, functions, etc.) that should be excluded from the
734# output. The symbol name can be a fully qualified name, a word, or if the
735# wildcard * is used, a substring. Examples: ANamespace, AClass,
736# AClass::ANamespace, ANamespace::*Test
737
738EXCLUDE_SYMBOLS = *::internal::* *::experimental::*
739
740# The EXAMPLE_PATH tag can be used to specify one or more files or
741# directories that contain example code fragments that are included (see
742# the \include command).
743
744EXAMPLE_PATH =
745
746# If the value of the EXAMPLE_PATH tag contains directories, you can use the
747# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
748# and *.h) to filter out the source-files in the directories. If left
749# blank all files are included.
750
751EXAMPLE_PATTERNS = *
752
753# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
754# searched for input files to be used with the \include or \dontinclude
755# commands irrespective of the value of the RECURSIVE tag.
756# Possible values are YES and NO. If left blank NO is used.
757
758EXAMPLE_RECURSIVE = NO
759
760# The IMAGE_PATH tag can be used to specify one or more files or
761# directories that contain image that are included in the documentation (see
762# the \image command).
763
764IMAGE_PATH =
765
766# The INPUT_FILTER tag can be used to specify a program that doxygen should
767# invoke to filter for each input file. Doxygen will invoke the filter program
768# by executing (via popen()) the command <filter> <input-file>, where <filter>
769# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
770# input file. Doxygen will then use the output that the filter program writes
771# to standard output. If FILTER_PATTERNS is specified, this tag will be
772# ignored.
773
774INPUT_FILTER =
775
776# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
777# basis. Doxygen will compare the file name with each pattern and apply the
778# filter if there is a match. The filters are a list of the form:
779# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
780# info on how filters are used. If FILTER_PATTERNS is empty or if
781# non of the patterns match the file name, INPUT_FILTER is applied.
782
783FILTER_PATTERNS =
784
785# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
786# INPUT_FILTER) will be used to filter the input files when producing source
787# files to browse (i.e. when SOURCE_BROWSER is set to YES).
788
789FILTER_SOURCE_FILES = NO
790
791# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
792# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
793# and it is also possible to disable source filtering for a specific pattern
794# using *.ext= (so without naming a filter). This option only has effect when
795# FILTER_SOURCE_FILES is enabled.
796
797FILTER_SOURCE_PATTERNS =
798
799#---------------------------------------------------------------------------
800# configuration options related to source browsing
801#---------------------------------------------------------------------------
802
803# If the SOURCE_BROWSER tag is set to YES then a list of source files will
804# be generated. Documented entities will be cross-referenced with these sources.
805# Note: To get rid of all source code in the generated output, make sure also
806# VERBATIM_HEADERS is set to NO.
807
808SOURCE_BROWSER = NO
809
810# Setting the INLINE_SOURCES tag to YES will include the body
811# of functions and classes directly in the documentation.
812
813INLINE_SOURCES = NO
814
815# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
816# doxygen to hide any special comment blocks from generated source code
817# fragments. Normal C, C++ and Fortran comments will always remain visible.
818
819STRIP_CODE_COMMENTS = YES
820
821# If the REFERENCED_BY_RELATION tag is set to YES
822# then for each documented function all documented
823# functions referencing it will be listed.
824
825REFERENCED_BY_RELATION = NO
826
827# If the REFERENCES_RELATION tag is set to YES
828# then for each documented function all documented entities
829# called/used by that function will be listed.
830
831REFERENCES_RELATION = NO
832
833# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
834# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
835# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
836# link to the source code. Otherwise they will link to the documentation.
837
838REFERENCES_LINK_SOURCE = YES
839
840# If the USE_HTAGS tag is set to YES then the references to source code
841# will point to the HTML generated by the htags(1) tool instead of doxygen
842# built-in source browser. The htags tool is part of GNU's global source
843# tagging system (see http://www.gnu.org/software/global/global.html). You
844# will need version 4.8.6 or higher.
845
846USE_HTAGS = NO
847
848# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
849# will generate a verbatim copy of the header file for each class for
850# which an include is specified. Set to NO to disable this.
851
852VERBATIM_HEADERS = YES
853
854#---------------------------------------------------------------------------
855# configuration options related to the alphabetical class index
856#---------------------------------------------------------------------------
857
858# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
859# of all compounds will be generated. Enable this if the project
860# contains a lot of classes, structs, unions or interfaces.
861
862ALPHABETICAL_INDEX = YES
863
864# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
865# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
866# in which this list will be split (can be a number in the range [1..20])
867
868COLS_IN_ALPHA_INDEX = 5
869
870# In case all classes in a project start with a common prefix, all
871# classes will be put under the same header in the alphabetical index.
872# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
873# should be ignored while generating the index headers.
874
875IGNORE_PREFIX =
876
877#---------------------------------------------------------------------------
878# configuration options related to the HTML output
879#---------------------------------------------------------------------------
880
881# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
882# generate HTML output.
883
884GENERATE_HTML = YES
885
886# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
887# If a relative path is entered the value of OUTPUT_DIRECTORY will be
888# put in front of it. If left blank `html' will be used as the default path.
889
890HTML_OUTPUT = unity-scopes-qt
891
892# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
893# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
894# doxygen will generate files with .html extension.
895
896HTML_FILE_EXTENSION = .html
897
898# The HTML_HEADER tag can be used to specify a personal HTML header for
899# each generated HTML page. If it is left blank doxygen will generate a
900# standard header. Note that when using a custom header you are responsible
901# for the proper inclusion of any scripts and style sheets that doxygen
902# needs, which is dependent on the configuration options used.
903# It is advised to generate a default header using "doxygen -w html
904# header.html footer.html stylesheet.css YourConfigFile" and then modify
905# that header. Note that the header is subject to change so you typically
906# have to redo this when upgrading to a newer version of doxygen or when
907# changing the value of configuration settings such as GENERATE_TREEVIEW!
908
909HTML_HEADER =
910
911# The HTML_FOOTER tag can be used to specify a personal HTML footer for
912# each generated HTML page. If it is left blank doxygen will generate a
913# standard footer.
914
915HTML_FOOTER =
916
917# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
918# style sheet that is used by each HTML page. It can be used to
919# fine-tune the look of the HTML output. If the tag is left blank doxygen
920# will generate a default style sheet. Note that doxygen will try to copy
921# the style sheet file to the HTML output directory, so don't put your own
922# style sheet in the HTML output directory as well, or it will be erased!
923
924HTML_STYLESHEET =
925
926# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
927# other source files which should be copied to the HTML output directory. Note
928# that these files will be copied to the base HTML output directory. Use the
929# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
930# files. In the HTML_STYLESHEET file, use the file name only. Also note that
931# the files will be copied as-is; there are no commands or markers available.
932
933HTML_EXTRA_FILES =
934
935# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
936# Doxygen will adjust the colors in the style sheet and background images
937# according to this color. Hue is specified as an angle on a colorwheel,
938# see http://en.wikipedia.org/wiki/Hue for more information.
939# For instance the value 0 represents red, 60 is yellow, 120 is green,
940# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
941# The allowed range is 0 to 359.
942
943HTML_COLORSTYLE_HUE = 220
944
945# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
946# the colors in the HTML output. For a value of 0 the output will use
947# grayscales only. A value of 255 will produce the most vivid colors.
948
949HTML_COLORSTYLE_SAT = 100
950
951# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
952# the luminance component of the colors in the HTML output. Values below
953# 100 gradually make the output lighter, whereas values above 100 make
954# the output darker. The value divided by 100 is the actual gamma applied,
955# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
956# and 100 does not change the gamma.
957
958HTML_COLORSTYLE_GAMMA = 80
959
960# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
961# page will contain the date and time when the page was generated. Setting
962# this to NO can help when comparing the output of multiple runs.
963
964HTML_TIMESTAMP = YES
965
966# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
967# documentation will contain sections that can be hidden and shown after the
968# page has loaded.
969
970HTML_DYNAMIC_SECTIONS = NO
971
972# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
973# entries shown in the various tree structured indices initially; the user
974# can expand and collapse entries dynamically later on. Doxygen will expand
975# the tree to such a level that at most the specified number of entries are
976# visible (unless a fully collapsed tree already exceeds this amount).
977# So setting the number of entries 1 will produce a full collapsed tree by
978# default. 0 is a special value representing an infinite number of entries
979# and will result in a full expanded tree by default.
980
981HTML_INDEX_NUM_ENTRIES = 100
982
983# If the GENERATE_DOCSET tag is set to YES, additional index files
984# will be generated that can be used as input for Apple's Xcode 3
985# integrated development environment, introduced with OSX 10.5 (Leopard).
986# To create a documentation set, doxygen will generate a Makefile in the
987# HTML output directory. Running make will produce the docset in that
988# directory and running "make install" will install the docset in
989# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
990# it at startup.
991# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
992# for more information.
993
994GENERATE_DOCSET = NO
995
996# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
997# feed. A documentation feed provides an umbrella under which multiple
998# documentation sets from a single provider (such as a company or product suite)
999# can be grouped.
1000
1001DOCSET_FEEDNAME = "Doxygen generated docs"
1002
1003# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
1004# should uniquely identify the documentation set bundle. This should be a
1005# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
1006# will append .docset to the name.
1007
1008DOCSET_BUNDLE_ID = org.doxygen.Project
1009
1010# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
1011# the documentation publisher. This should be a reverse domain-name style
1012# string, e.g. com.mycompany.MyDocSet.documentation.
1013
1014DOCSET_PUBLISHER_ID = org.doxygen.Publisher
1015
1016# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
1017
1018DOCSET_PUBLISHER_NAME = Publisher
1019
1020# If the GENERATE_HTMLHELP tag is set to YES, additional index files
1021# will be generated that can be used as input for tools like the
1022# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
1023# of the generated HTML documentation.
1024
1025GENERATE_HTMLHELP = NO
1026
1027# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
1028# be used to specify the file name of the resulting .chm file. You
1029# can add a path in front of the file if the result should not be
1030# written to the html output directory.
1031
1032CHM_FILE =
1033
1034# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
1035# be used to specify the location (absolute path including file name) of
1036# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
1037# the HTML help compiler on the generated index.hhp.
1038
1039HHC_LOCATION =
1040
1041# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
1042# controls if a separate .chi index file is generated (YES) or that
1043# it should be included in the master .chm file (NO).
1044
1045GENERATE_CHI = NO
1046
1047# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
1048# is used to encode HtmlHelp index (hhk), content (hhc) and project file
1049# content.
1050
1051CHM_INDEX_ENCODING =
1052
1053# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
1054# controls whether a binary table of contents is generated (YES) or a
1055# normal table of contents (NO) in the .chm file.
1056
1057BINARY_TOC = NO
1058
1059# The TOC_EXPAND flag can be set to YES to add extra items for group members
1060# to the contents of the HTML help documentation and to the tree view.
1061
1062TOC_EXPAND = NO
1063
1064# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
1065# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
1066# that can be used as input for Qt's qhelpgenerator to generate a
1067# Qt Compressed Help (.qch) of the generated HTML documentation.
1068
1069GENERATE_QHP = NO
1070
1071# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
1072# be used to specify the file name of the resulting .qch file.
1073# The path specified is relative to the HTML output folder.
1074
1075QCH_FILE =
1076
1077# The QHP_NAMESPACE tag specifies the namespace to use when generating
1078# Qt Help Project output. For more information please see
1079# http://doc.trolltech.com/qthelpproject.html#namespace
1080
1081QHP_NAMESPACE = org.doxygen.Project
1082
1083# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
1084# Qt Help Project output. For more information please see
1085# http://doc.trolltech.com/qthelpproject.html#virtual-folders
1086
1087QHP_VIRTUAL_FOLDER = doc
1088
1089# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
1090# add. For more information please see
1091# http://doc.trolltech.com/qthelpproject.html#custom-filters
1092
1093QHP_CUST_FILTER_NAME =
1094
1095# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
1096# custom filter to add. For more information please see
1097# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
1098# Qt Help Project / Custom Filters</a>.
1099
1100QHP_CUST_FILTER_ATTRS =
1101
1102# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
1103# project's
1104# filter section matches.
1105# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
1106# Qt Help Project / Filter Attributes</a>.
1107
1108QHP_SECT_FILTER_ATTRS =
1109
1110# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
1111# be used to specify the location of Qt's qhelpgenerator.
1112# If non-empty doxygen will try to run qhelpgenerator on the generated
1113# .qhp file.
1114
1115QHG_LOCATION =
1116
1117# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
1118# will be generated, which together with the HTML files, form an Eclipse help
1119# plugin. To install this plugin and make it available under the help contents
1120# menu in Eclipse, the contents of the directory containing the HTML and XML
1121# files needs to be copied into the plugins directory of eclipse. The name of
1122# the directory within the plugins directory should be the same as
1123# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
1124# the help appears.
1125
1126GENERATE_ECLIPSEHELP = NO
1127
1128# A unique identifier for the eclipse help plugin. When installing the plugin
1129# the directory name containing the HTML and XML files should also have
1130# this name.
1131
1132ECLIPSE_DOC_ID = org.doxygen.Project
1133
1134# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
1135# at top of each HTML page. The value NO (the default) enables the index and
1136# the value YES disables it. Since the tabs have the same information as the
1137# navigation tree you can set this option to NO if you already set
1138# GENERATE_TREEVIEW to YES.
1139
1140DISABLE_INDEX = NO
1141
1142# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
1143# structure should be generated to display hierarchical information.
1144# If the tag value is set to YES, a side panel will be generated
1145# containing a tree-like index structure (just like the one that
1146# is generated for HTML Help). For this to work a browser that supports
1147# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
1148# Windows users are probably better off using the HTML help feature.
1149# Since the tree basically has the same information as the tab index you
1150# could consider to set DISABLE_INDEX to NO when enabling this option.
1151
1152GENERATE_TREEVIEW = YES
1153
1154# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
1155# (range [0,1..20]) that doxygen will group on one line in the generated HTML
1156# documentation. Note that a value of 0 will completely suppress the enum
1157# values from appearing in the overview section.
1158
1159ENUM_VALUES_PER_LINE = 4
1160
1161# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
1162# used to set the initial width (in pixels) of the frame in which the tree
1163# is shown.
1164
1165TREEVIEW_WIDTH = 250
1166
1167# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
1168# links to external symbols imported via tag files in a separate window.
1169
1170EXT_LINKS_IN_WINDOW = NO
1171
1172# Use this tag to change the font size of Latex formulas included
1173# as images in the HTML documentation. The default is 10. Note that
1174# when you change the font size after a successful doxygen run you need
1175# to manually remove any form_*.png images from the HTML output directory
1176# to force them to be regenerated.
1177
1178FORMULA_FONTSIZE = 10
1179
1180# Use the FORMULA_TRANPARENT tag to determine whether or not the images
1181# generated for formulas are transparent PNGs. Transparent PNGs are
1182# not supported properly for IE 6.0, but are supported on all modern browsers.
1183# Note that when changing this option you need to delete any form_*.png files
1184# in the HTML output before the changes have effect.
1185
1186FORMULA_TRANSPARENT = YES
1187
1188# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
1189# (see http://www.mathjax.org) which uses client side Javascript for the
1190# rendering instead of using prerendered bitmaps. Use this if you do not
1191# have LaTeX installed or if you want to formulas look prettier in the HTML
1192# output. When enabled you may also need to install MathJax separately and
1193# configure the path to it using the MATHJAX_RELPATH option.
1194
1195USE_MATHJAX = NO
1196
1197# When MathJax is enabled you need to specify the location relative to the
1198# HTML output directory using the MATHJAX_RELPATH option. The destination
1199# directory should contain the MathJax.js script. For instance, if the mathjax
1200# directory is located at the same level as the HTML output directory, then
1201# MATHJAX_RELPATH should be ../mathjax. The default value points to
1202# the MathJax Content Delivery Network so you can quickly see the result without
1203# installing MathJax. However, it is strongly recommended to install a local
1204# copy of MathJax from http://www.mathjax.org before deployment.
1205
1206MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
1207
1208# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
1209# names that should be enabled during MathJax rendering.
1210
1211MATHJAX_EXTENSIONS =
1212
1213# When the SEARCHENGINE tag is enabled doxygen will generate a search box
1214# for the HTML output. The underlying search engine uses javascript
1215# and DHTML and should work on any modern browser. Note that when using
1216# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
1217# (GENERATE_DOCSET) there is already a search function so this one should
1218# typically be disabled. For large projects the javascript based search engine
1219# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
1220
1221SEARCHENGINE = YES
1222
1223# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
1224# implemented using a PHP enabled web server instead of at the web client
1225# using Javascript. Doxygen will generate the search PHP script and index
1226# file to put on the web server. The advantage of the server
1227# based approach is that it scales better to large projects and allows
1228# full text search. The disadvantages are that it is more difficult to setup
1229# and does not have live searching capabilities.
1230
1231SERVER_BASED_SEARCH = NO
1232
1233#---------------------------------------------------------------------------
1234# configuration options related to the LaTeX output
1235#---------------------------------------------------------------------------
1236
1237# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
1238# generate Latex output.
1239
1240GENERATE_LATEX = NO
1241
1242# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
1243# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1244# put in front of it. If left blank `latex' will be used as the default path.
1245
1246LATEX_OUTPUT = latex
1247
1248# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
1249# invoked. If left blank `latex' will be used as the default command name.
1250# Note that when enabling USE_PDFLATEX this option is only used for
1251# generating bitmaps for formulas in the HTML output, but not in the
1252# Makefile that is written to the output directory.
1253
1254LATEX_CMD_NAME = latex
1255
1256# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
1257# generate index for LaTeX. If left blank `makeindex' will be used as the
1258# default command name.
1259
1260MAKEINDEX_CMD_NAME = makeindex
1261
1262# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
1263# LaTeX documents. This may be useful for small projects and may help to
1264# save some trees in general.
1265
1266COMPACT_LATEX = NO
1267
1268# The PAPER_TYPE tag can be used to set the paper type that is used
1269# by the printer. Possible values are: a4, letter, legal and
1270# executive. If left blank a4wide will be used.
1271
1272PAPER_TYPE = a4
1273
1274# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
1275# packages that should be included in the LaTeX output.
1276
1277EXTRA_PACKAGES =
1278
1279# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
1280# the generated latex document. The header should contain everything until
1281# the first chapter. If it is left blank doxygen will generate a
1282# standard header. Notice: only use this tag if you know what you are doing!
1283
1284LATEX_HEADER =
1285
1286# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
1287# the generated latex document. The footer should contain everything after
1288# the last chapter. If it is left blank doxygen will generate a
1289# standard footer. Notice: only use this tag if you know what you are doing!
1290
1291LATEX_FOOTER =
1292
1293# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
1294# is prepared for conversion to pdf (using ps2pdf). The pdf file will
1295# contain links (just like the HTML output) instead of page references
1296# This makes the output suitable for online browsing using a pdf viewer.
1297
1298PDF_HYPERLINKS = YES
1299
1300# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
1301# plain latex in the generated Makefile. Set this option to YES to get a
1302# higher quality PDF documentation.
1303
1304USE_PDFLATEX = YES
1305
1306# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
1307# command to the generated LaTeX files. This will instruct LaTeX to keep
1308# running if errors occur, instead of asking the user for help.
1309# This option is also used when generating formulas in HTML.
1310
1311LATEX_BATCHMODE = NO
1312
1313# If LATEX_HIDE_INDICES is set to YES then doxygen will not
1314# include the index chapters (such as File Index, Compound Index, etc.)
1315# in the output.
1316
1317LATEX_HIDE_INDICES = NO
1318
1319# If LATEX_SOURCE_CODE is set to YES then doxygen will include
1320# source code with syntax highlighting in the LaTeX output.
1321# Note that which sources are shown also depends on other settings
1322# such as SOURCE_BROWSER.
1323
1324LATEX_SOURCE_CODE = NO
1325
1326# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
1327# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
1328# http://en.wikipedia.org/wiki/BibTeX for more info.
1329
1330LATEX_BIB_STYLE = plain
1331
1332#---------------------------------------------------------------------------
1333# configuration options related to the RTF output
1334#---------------------------------------------------------------------------
1335
1336# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
1337# The RTF output is optimized for Word 97 and may not look very pretty with
1338# other RTF readers or editors.
1339
1340GENERATE_RTF = NO
1341
1342# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
1343# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1344# put in front of it. If left blank `rtf' will be used as the default path.
1345
1346RTF_OUTPUT = rtf
1347
1348# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
1349# RTF documents. This may be useful for small projects and may help to
1350# save some trees in general.
1351
1352COMPACT_RTF = NO
1353
1354# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
1355# will contain hyperlink fields. The RTF file will
1356# contain links (just like the HTML output) instead of page references.
1357# This makes the output suitable for online browsing using WORD or other
1358# programs which support those fields.
1359# Note: wordpad (write) and others do not support links.
1360
1361RTF_HYPERLINKS = NO
1362
1363# Load style sheet definitions from file. Syntax is similar to doxygen's
1364# config file, i.e. a series of assignments. You only have to provide
1365# replacements, missing definitions are set to their default value.
1366
1367RTF_STYLESHEET_FILE =
1368
1369# Set optional variables used in the generation of an rtf document.
1370# Syntax is similar to doxygen's config file.
1371
1372RTF_EXTENSIONS_FILE =
1373
1374#---------------------------------------------------------------------------
1375# configuration options related to the man page output
1376#---------------------------------------------------------------------------
1377
1378# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
1379# generate man pages
1380
1381GENERATE_MAN = NO
1382
1383# The MAN_OUTPUT tag is used to specify where the man pages will be put.
1384# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1385# put in front of it. If left blank `man' will be used as the default path.
1386
1387MAN_OUTPUT = man
1388
1389# The MAN_EXTENSION tag determines the extension that is added to
1390# the generated man pages (default is the subroutine's section .3)
1391
1392MAN_EXTENSION = .3
1393
1394# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
1395# then it will generate one additional man file for each entity
1396# documented in the real man page(s). These additional files
1397# only source the real man page, but without them the man command
1398# would be unable to find the correct page. The default is NO.
1399
1400MAN_LINKS = NO
1401
1402#---------------------------------------------------------------------------
1403# configuration options related to the XML output
1404#---------------------------------------------------------------------------
1405
1406# If the GENERATE_XML tag is set to YES Doxygen will
1407# generate an XML file that captures the structure of
1408# the code including all documentation.
1409
1410GENERATE_XML = NO
1411
1412# The XML_OUTPUT tag is used to specify where the XML pages will be put.
1413# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1414# put in front of it. If left blank `xml' will be used as the default path.
1415
1416XML_OUTPUT = xml
1417
1418# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
1419# dump the program listings (including syntax highlighting
1420# and cross-referencing information) to the XML output. Note that
1421# enabling this will significantly increase the size of the XML output.
1422
1423XML_PROGRAMLISTING = YES
1424
1425#---------------------------------------------------------------------------
1426# configuration options for the AutoGen Definitions output
1427#---------------------------------------------------------------------------
1428
1429# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
1430# generate an AutoGen Definitions (see autogen.sf.net) file
1431# that captures the structure of the code including all
1432# documentation. Note that this feature is still experimental
1433# and incomplete at the moment.
1434
1435GENERATE_AUTOGEN_DEF = NO
1436
1437#---------------------------------------------------------------------------
1438# configuration options related to the Perl module output
1439#---------------------------------------------------------------------------
1440
1441# If the GENERATE_PERLMOD tag is set to YES Doxygen will
1442# generate a Perl module file that captures the structure of
1443# the code including all documentation. Note that this
1444# feature is still experimental and incomplete at the
1445# moment.
1446
1447GENERATE_PERLMOD = NO
1448
1449# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
1450# the necessary Makefile rules, Perl scripts and LaTeX code to be able
1451# to generate PDF and DVI output from the Perl module output.
1452
1453PERLMOD_LATEX = NO
1454
1455# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
1456# nicely formatted so it can be parsed by a human reader. This is useful
1457# if you want to understand what is going on. On the other hand, if this
1458# tag is set to NO the size of the Perl module output will be much smaller
1459# and Perl will parse it just the same.
1460
1461PERLMOD_PRETTY = YES
1462
1463# The names of the make variables in the generated doxyrules.make file
1464# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
1465# This is useful so different doxyrules.make files included by the same
1466# Makefile don't overwrite each other's variables.
1467
1468PERLMOD_MAKEVAR_PREFIX =
1469
1470#---------------------------------------------------------------------------
1471# Configuration options related to the preprocessor
1472#---------------------------------------------------------------------------
1473
1474# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
1475# evaluate all C-preprocessor directives found in the sources and include
1476# files.
1477
1478ENABLE_PREPROCESSING = YES
1479
1480# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
1481# names in the source code. If set to NO (the default) only conditional
1482# compilation will be performed. Macro expansion can be done in a controlled
1483# way by setting EXPAND_ONLY_PREDEF to YES.
1484
1485MACRO_EXPANSION = NO
1486
1487# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
1488# then the macro expansion is limited to the macros specified with the
1489# PREDEFINED and EXPAND_AS_DEFINED tags.
1490
1491EXPAND_ONLY_PREDEF = NO
1492
1493# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
1494# pointed to by INCLUDE_PATH will be searched when a #include is found.
1495
1496SEARCH_INCLUDES = YES
1497
1498# The INCLUDE_PATH tag can be used to specify one or more directories that
1499# contain include files that are not input files but should be processed by
1500# the preprocessor.
1501
1502INCLUDE_PATH =
1503
1504# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
1505# patterns (like *.h and *.hpp) to filter out the header-files in the
1506# directories. If left blank, the patterns specified with FILE_PATTERNS will
1507# be used.
1508
1509INCLUDE_FILE_PATTERNS =
1510
1511# The PREDEFINED tag can be used to specify one or more macro names that
1512# are defined before the preprocessor is started (similar to the -D option of
1513# gcc). The argument of the tag is a list of macros of the form: name
1514# or name=definition (no spaces). If the definition and the = are
1515# omitted =1 is assumed. To prevent a macro definition from being
1516# undefined via #undef or recursively expanded use the := operator
1517# instead of the = operator.
1518
1519PREDEFINED = DOXYGEN_SKIP
1520
1521# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
1522# this tag can be used to specify a list of macro names that should be expanded.
1523# The macro definition that is found in the sources will be used.
1524# Use the PREDEFINED tag if you want to use a different macro definition that
1525# overrules the definition found in the source code.
1526
1527EXPAND_AS_DEFINED =
1528
1529# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
1530# doxygen's preprocessor will remove all references to function-like macros
1531# that are alone on a line, have an all uppercase name, and do not end with a
1532# semicolon, because these will confuse the parser if not removed.
1533
1534SKIP_FUNCTION_MACROS = YES
1535
1536#---------------------------------------------------------------------------
1537# Configuration::additions related to external references
1538#---------------------------------------------------------------------------
1539
1540# The TAGFILES option can be used to specify one or more tagfiles. For each
1541# tag file the location of the external documentation should be added. The
1542# format of a tag file without this location is as follows:
1543# TAGFILES = file1 file2 ...
1544# Adding location for the tag files is done as follows:
1545# TAGFILES = file1=loc1 "file2 = loc2" ...
1546# where "loc1" and "loc2" can be relative or absolute paths
1547# or URLs. Note that each tag file must have a unique name (where the name does
1548# NOT include the path). If a tag file is not located in the directory in which
1549# doxygen is run, you must also specify the path to the tagfile here.
1550
1551TAGFILES =
1552
1553# When a file name is specified after GENERATE_TAGFILE, doxygen will create
1554# a tag file that is based on the input files it reads.
1555
1556GENERATE_TAGFILE =
1557
1558# If the ALLEXTERNALS tag is set to YES all external classes will be listed
1559# in the class index. If set to NO only the inherited external classes
1560# will be listed.
1561
1562ALLEXTERNALS = NO
1563
1564# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
1565# in the modules index. If set to NO, only the current project's groups will
1566# be listed.
1567
1568EXTERNAL_GROUPS = YES
1569
1570# The PERL_PATH should be the absolute path and name of the perl script
1571# interpreter (i.e. the result of `which perl').
1572
1573PERL_PATH = /usr/bin/perl
1574
1575#---------------------------------------------------------------------------
1576# Configuration options related to the dot tool
1577#---------------------------------------------------------------------------
1578
1579# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
1580# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
1581# or super classes. Setting the tag to NO turns the diagrams off. Note that
1582# this option also works with HAVE_DOT disabled, but it is recommended to
1583# install and use dot, since it yields more powerful graphs.
1584
1585CLASS_DIAGRAMS = YES
1586
1587# You can define message sequence charts within doxygen comments using the \msc
1588# command. Doxygen will then run the mscgen tool (see
1589# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
1590# documentation. The MSCGEN_PATH tag allows you to specify the directory where
1591# the mscgen tool resides. If left empty the tool is assumed to be found in the
1592# default search path.
1593
1594DOT_PATH = @DOXYGEN_DOT_PATH@
1595
1596# If set to YES, the inheritance and collaboration graphs will hide
1597# inheritance and usage relations if the target is undocumented
1598# or is not a class.
1599
1600HIDE_UNDOC_RELATIONS = YES
1601
1602# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
1603# available from the path. This tool is part of Graphviz, a graph visualization
1604# toolkit from AT&T and Lucent Bell Labs. The other options in this section
1605# have no effect if this option is set to NO (the default)
1606
1607HAVE_DOT = YES
1608
1609# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
1610# allowed to run in parallel. When set to 0 (the default) doxygen will
1611# base this on the number of processors available in the system. You can set it
1612# explicitly to a value larger than 0 to get control over the balance
1613# between CPU load and processing speed.
1614
1615DOT_NUM_THREADS = 0
1616
1617# By default doxygen will use the Helvetica font for all dot files that
1618# doxygen generates. When you want a differently looking font you can specify
1619# the font name using DOT_FONTNAME. You need to make sure dot is able to find
1620# the font, which can be done by putting it in a standard location or by setting
1621# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
1622# directory containing the font.
1623
1624DOT_FONTNAME = Helvetica
1625
1626# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
1627# The default size is 10pt.
1628
1629DOT_FONTSIZE = 10
1630
1631# By default doxygen will tell dot to use the Helvetica font.
1632# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
1633# set the path where dot can find it.
1634
1635DOT_FONTPATH =
1636
1637# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
1638# will generate a graph for each documented class showing the direct and
1639# indirect inheritance relations. Setting this tag to YES will force the
1640# CLASS_DIAGRAMS tag to NO.
1641
1642CLASS_GRAPH = YES
1643
1644# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
1645# will generate a graph for each documented class showing the direct and
1646# indirect implementation dependencies (inheritance, containment, and
1647# class references variables) of the class with other documented classes.
1648
1649COLLABORATION_GRAPH = NO
1650
1651# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
1652# will generate a graph for groups, showing the direct groups dependencies
1653
1654GROUP_GRAPHS = YES
1655
1656# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
1657# collaboration diagrams in a style similar to the OMG's Unified Modeling
1658# Language.
1659
1660UML_LOOK = NO
1661
1662# If the UML_LOOK tag is enabled, the fields and methods are shown inside
1663# the class node. If there are many fields or methods and many nodes the
1664# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
1665# threshold limits the number of items for each type to make the size more
1666# managable. Set this to 0 for no limit. Note that the threshold may be
1667# exceeded by 50% before the limit is enforced.
1668
1669UML_LIMIT_NUM_FIELDS = 10
1670
1671# If set to YES, the inheritance and collaboration graphs will show the
1672# relations between templates and their instances.
1673
1674TEMPLATE_RELATIONS = NO
1675
1676# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
1677# tags are set to YES then doxygen will generate a graph for each documented
1678# file showing the direct and indirect include dependencies of the file with
1679# other documented files.
1680
1681INCLUDE_GRAPH = YES
1682
1683# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
1684# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
1685# documented header file showing the documented files that directly or
1686# indirectly include this file.
1687
1688INCLUDED_BY_GRAPH = YES
1689
1690# If the CALL_GRAPH and HAVE_DOT options are set to YES then
1691# doxygen will generate a call dependency graph for every global function
1692# or class method. Note that enabling this option will significantly increase
1693# the time of a run. So in most cases it will be better to enable call graphs
1694# for selected functions only using the \callgraph command.
1695
1696CALL_GRAPH = NO
1697
1698# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
1699# doxygen will generate a caller dependency graph for every global function
1700# or class method. Note that enabling this option will significantly increase
1701# the time of a run. So in most cases it will be better to enable caller
1702# graphs for selected functions only using the \callergraph command.
1703
1704CALLER_GRAPH = NO
1705
1706# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
1707# will generate a graphical hierarchy of all classes instead of a textual one.
1708
1709GRAPHICAL_HIERARCHY = YES
1710
1711# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
1712# then doxygen will show the dependencies a directory has on other directories
1713# in a graphical way. The dependency relations are determined by the #include
1714# relations between the files in the directories.
1715
1716DIRECTORY_GRAPH = YES
1717
1718# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
1719# generated by dot. Possible values are svg, png, jpg, or gif.
1720# If left blank png will be used. If you choose svg you need to set
1721# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
1722# visible in IE 9+ (other browsers do not have this requirement).
1723
1724DOT_IMAGE_FORMAT = png
1725
1726# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
1727# enable generation of interactive SVG images that allow zooming and panning.
1728# Note that this requires a modern browser other than Internet Explorer.
1729# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
1730# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
1731# visible. Older versions of IE do not have SVG support.
1732
1733INTERACTIVE_SVG = NO
1734
1735# The tag DOT_PATH can be used to specify the path where the dot tool can be
1736# found. If left blank, it is assumed the dot tool can be found in the path.
1737
1738DOT_PATH =
1739
1740# The DOTFILE_DIRS tag can be used to specify one or more directories that
1741# contain dot files that are included in the documentation (see the
1742# \dotfile command).
1743
1744DOTFILE_DIRS =
1745
1746# The MSCFILE_DIRS tag can be used to specify one or more directories that
1747# contain msc files that are included in the documentation (see the
1748# \mscfile command).
1749
1750MSCFILE_DIRS =
1751
1752# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
1753# nodes that will be shown in the graph. If the number of nodes in a graph
1754# becomes larger than this value, doxygen will truncate the graph, which is
1755# visualized by representing a node as a red box. Note that doxygen if the
1756# number of direct children of the root node in a graph is already larger than
1757# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
1758# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
1759
1760DOT_GRAPH_MAX_NODES = 50
1761
1762# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
1763# graphs generated by dot. A depth value of 3 means that only nodes reachable
1764# from the root by following a path via at most 3 edges will be shown. Nodes
1765# that lay further from the root node will be omitted. Note that setting this
1766# option to 1 or 2 may greatly reduce the computation time needed for large
1767# code bases. Also note that the size of a graph can be further restricted by
1768# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
1769
1770MAX_DOT_GRAPH_DEPTH = 0
1771
1772# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
1773# background. This is disabled by default, because dot on Windows does not
1774# seem to support this out of the box. Warning: Depending on the platform used,
1775# enabling this option may lead to badly anti-aliased labels on the edges of
1776# a graph (i.e. they become hard to read).
1777
1778DOT_TRANSPARENT = NO
1779
1780# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
1781# files in one run (i.e. multiple -o and -T options on the command line). This
1782# makes dot run faster, but since only newer versions of dot (>1.8.10)
1783# support this, this feature is disabled by default.
1784
1785DOT_MULTI_TARGETS = NO
1786
1787# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
1788# generate a legend page explaining the meaning of the various boxes and
1789# arrows in the dot generated graphs.
1790
1791GENERATE_LEGEND = YES
1792
1793# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
1794# remove the intermediate dot files that are used to generate
1795# the various graphs.
1796
1797DOT_CLEANUP = YES
01798
=== modified file 'doc/Doxyfile.in'
--- doc/Doxyfile.in 2014-06-17 10:30:03 +0000
+++ doc/Doxyfile.in 2015-02-05 11:31:47 +0000
@@ -713,7 +713,7 @@
713# Note that relative paths are relative to the directory from which doxygen is713# Note that relative paths are relative to the directory from which doxygen is
714# run.714# run.
715715
716EXCLUDE =716EXCLUDE = @PROJECT_SOURCE_DIR@/include/unity/scopes/scopes-qt
717717
718# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or718# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
719# directories that are symbolic links (a Unix file system feature) are excluded719# directories that are symbolic links (a Unix file system feature) are excluded
720720
=== modified file 'include/unity/scopes/CMakeLists.txt'
--- include/unity/scopes/CMakeLists.txt 2014-11-24 16:44:13 +0000
+++ include/unity/scopes/CMakeLists.txt 2015-02-05 11:31:47 +0000
@@ -1,6 +1,7 @@
1add_subdirectory(internal)1add_subdirectory(internal)
2add_subdirectory(testing)2add_subdirectory(testing)
3add_subdirectory(utility)3add_subdirectory(utility)
4add_subdirectory(qt)
45
5file(GLOB headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h")6file(GLOB headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
67
78
=== added directory 'include/unity/scopes/qt'
=== added file 'include/unity/scopes/qt/CMakeLists.txt'
--- include/unity/scopes/qt/CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/CMakeLists.txt 2015-02-05 11:31:47 +0000
@@ -0,0 +1,3 @@
1file(GLOB headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
2
3install(FILES ${headers} DESTINATION ${HDR_INSTALL_DIR}/unity/scopes/qt)
04
=== added file 'include/unity/scopes/qt/HttpAsyncReader.h'
--- include/unity/scopes/qt/HttpAsyncReader.h 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/HttpAsyncReader.h 2015-02-05 11:31:47 +0000
@@ -0,0 +1,310 @@
1/*
2* Copyright (C) 2014 Canonical, Ltd.
3*
4* This library is free software; you can redistribute it and/or modify it under
5* the terms of version 3 of the GNU Lesser General Public License as published
6* by the Free Software Foundation.
7*
8* This library is distributed in the hope that it will be useful, but WITHOUT
9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
10* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
11* details.
12*
13* You should have received a copy of the GNU Lesser General Public License
14* along with this program. If not, see <http://www.gnu.org/licenses/>.
15*
16* Author: Xavi Garcia <xavi.garcia.mena@canonical.com>
17*/
18#pragma once
19
20#ifndef _ENABLE_QT_EXPERIMENTAL_
21#error You should define _ENABLE_QT_EXPERIMENTAL_ in order to use this experimental header file.
22#endif
23
24#include <unity/util/DefinesPtrs.h>
25#include <unity/util/NonCopyable.h>
26#include <unity/UnityExceptions.h>
27
28#include <unity/scopes/ScopeExceptions.h>
29
30#include <core/net/http/client.h>
31#include <core/net/http/request.h>
32#include <core/net/http/response.h>
33
34#include <deque>
35#include <future>
36#include <memory>
37#include <vector>
38
39namespace unity
40{
41
42namespace scopes
43{
44
45namespace qt
46{
47
48/**
49\brief Class that downloads http files asynchronously.
50
51Executes a remote HTTP query asynchronously to return different futures about results or a parser.
52The user should define which parser wants to use, and offer a method that given a char* containing the
53data downloaded by this class contructs the parser.
54*/
55class HttpAsyncReader
56{
57public:
58 /// @cond
59 NONCOPYABLE(HttpAsyncReader);
60 UNITY_DEFINES_PTRS(HttpAsyncReader);
61
62 // aliases
63 template <typename PARSER>
64 using FactoryFunc = std::function<std::shared_ptr<PARSER>(const std::string&, std::string&)>;
65
66 template <typename TYPE, typename PARSER>
67 using ParseFunc =
68 std::function<bool(PARSER& root, const std::string&, std::deque<std::shared_ptr<TYPE>>&, std::string&)>;
69
70 template <typename TYPE>
71 using ResultsList = std::deque<std::shared_ptr<TYPE>>;
72
73 template <typename TYPE>
74 using ResultsFuture = std::future<ResultsList<TYPE>>;
75
76 template <typename PARSER>
77 using ParserFuture = std::future<std::shared_ptr<PARSER>>;
78
79 HttpAsyncReader();
80
81 virtual ~HttpAsyncReader();
82 /// @endcond
83
84 /**
85 * \brief Downloads a HTTP remote file asynchronously and returns a future to a list of results
86 * This method downloads in a separated thread a http document identified by the given URI.
87 * It returns a future of list of results based on a given object name.
88 * If, for example, the document contains a list of objects identified by the tag "ITEM" it
89 * parses the document and returns a list of those objects.
90 * The user must provide a function to create the parser for the downloaded data and a parse function
91 * that retrieves the data.
92 *
93 * The method has 3 template parameters: the type of results returned, the type of objects when intantiating
94 * and the parser type.
95 * The type of instantiation has to be a derived class of the return type. This is offered for convenience
96 * to return more generic types and get advantage of polymorphism.
97 *
98 * The method checks at compile time that the instantiation type is effectively a derived class of the type
99 * returned.
100 *
101 * \param uri URI to download
102 * \param object_name name of the kind of object we are looking for in the http document
103 * \param create Function that returns a valid parser filled with the data contained in the http document
104 * \param parse Function that parses the data downloaded
105 *
106 * \return Future of list of results
107 */
108 template <typename BASE, typename TYPE, typename PARSER>
109 ResultsFuture<BASE> async_get(std::string const& uri,
110 std::string const& object_name,
111 FactoryFunc<PARSER> const& create,
112 ParseFunc<BASE, PARSER> const& parse) const;
113
114 /**
115 * \brief Downloads a HTTP remote file asynchronously and returns a future to a list of results
116 * This method downloads in a separated thread a http document identified by the given URI.
117 * It returns a future of list of results based on a given object name.
118 * If, for example, the document contains a list of objects identified by the tag "ITEM" it
119 * parses the document and returns a list of those objects.
120 * The user must provide a function to create the parser for the downloaded data and a parse function
121 * that retrieves the data.
122 *
123 * The method has 2 template parameters: the type of objects returned and the parser type.
124 *
125 * \param uri URI to download
126 * \param object_name name of the kind of object we are looking for in the http document
127 * \param create Function that returns a valid parser filled with the data contained in the http document
128 * \param parse Function that parses the data downloaded
129 *
130 * \return Future of list of results
131 */
132 template <typename TYPE, typename PARSER>
133 ResultsFuture<TYPE> async_get(std::string const& uri,
134 std::string const& object_name,
135 FactoryFunc<PARSER> const& create,
136 ParseFunc<TYPE, PARSER> const& parse) const;
137
138 /**
139 * \brief Downloads a HTTP remote file asynchronously and returns a future to a valid parser containing the data.
140 *
141 * This method downloads a remote http document, fills a valid parser with the downloaded data and
142 * returns a future to the parser.
143 * \param uri URI to download
144 * \param create Function that returns a valid parser filled with the data contained in the http document
145 *
146 * \return Future of valid parser filled with the data downloaded
147 */
148 template <typename PARSER>
149 ParserFuture<PARSER> async_get_parser(std::string const& uri, FactoryFunc<PARSER> const& create) const;
150
151 /**
152 * \brief Gets the data of the given future in the gived timeout.
153 * If the time given expires and the data in the future is not ready throws a unity::scopes::TimeoutException
154 *exception
155 *
156 * \param f Future
157 * \param seconds Maximum time to wait for the result
158 *
159 * \return Result of the given future.
160 */
161 template <typename T>
162 static T get_or_throw(std::future<T>& f, int64_t seconds = 10);
163
164 /**
165 * \brief Constructs a URI with the given host and parameters.
166 * This is a convenience method that constructs a uri with a given host and parameterss
167 */
168 std::string get_uri(std::string const& host,
169 std::vector<std::pair<std::string, std::string>> const& parameters) const;
170
171protected:
172 /// @cond
173 core::net::http::Request::Progress::Next progress_report(core::net::http::Request::Progress const& progress) const;
174
175 void async_execute(core::net::http::Request::Handler const& handler, std::string const& uri) const;
176
177 class Priv;
178 std::shared_ptr<Priv> p_;
179 /// @endcond
180};
181
182template <typename BASE, typename TYPE, typename PARSER>
183HttpAsyncReader::ResultsFuture<BASE> HttpAsyncReader::async_get(std::string const& uri,
184 std::string const& object_name,
185 FactoryFunc<PARSER> const& create,
186 ParseFunc<BASE, PARSER> const& parse) const
187{
188 static_assert(std::is_base_of<BASE, TYPE>::value,
189 "Second template parameter type must be a valid base class of the first one.");
190
191 auto prom = std::make_shared<std::promise<std::deque<std::shared_ptr<BASE>>>>();
192 core::net::http::Request::Handler handler;
193
194 handler.on_progress(bind(&HttpAsyncReader::progress_report, this, std::placeholders::_1));
195
196 handler.on_error([prom, uri](core::net::Error const& e)
197 {
198 unity::LogicException logic_exception("AsyncReader::async_get: " + std::string(e.what()) +
199 "( uri = " + uri + " )");
200 prom->set_exception(logic_exception.self());
201 });
202
203 handler.on_response(
204 [prom, object_name, parse, create, uri](core::net::http::Response const& response)
205 {
206 if (response.status != core::net::http::Status::ok)
207 {
208 unity::LogicException e("AsyncReader::async_get: " + response.body + "( uri = " + uri + " )");
209 prom->set_exception(e.self());
210 }
211 else
212 {
213 std::string error_string;
214 std::shared_ptr<PARSER> reader = create(response.body, error_string);
215 if (!reader)
216 {
217 unity::LogicException e("AsyncReader::async_get: error obtaining parser: " + error_string);
218 prom->set_exception(e.self());
219 }
220 else
221 {
222 std::deque<std::shared_ptr<BASE>> results;
223 std::string error_message;
224 if (!parse(*reader, object_name, results, error_message))
225 {
226 unity::LogicException e("AsyncReader::async_get: error parsing data: " + error_message);
227 prom->set_exception(e.self());
228 }
229 else
230 {
231 prom->set_value(results);
232 }
233 }
234 }
235 });
236
237 async_execute(handler, uri);
238
239 return prom->get_future();
240}
241
242template <typename TYPE, typename PARSER>
243HttpAsyncReader::ResultsFuture<TYPE> HttpAsyncReader::async_get(std::string const& uri,
244 std::string const& object_name,
245 FactoryFunc<PARSER> const& create,
246 ParseFunc<TYPE, PARSER> const& parse) const
247{
248 return async_get<TYPE, TYPE, PARSER>(uri, object_name, create, parse);
249}
250
251template <typename PARSER>
252HttpAsyncReader::ParserFuture<PARSER> HttpAsyncReader::async_get_parser(std::string const& uri,
253 FactoryFunc<PARSER> const& create) const
254{
255 auto prom = std::make_shared<std::promise<std::shared_ptr<PARSER>>>();
256 core::net::http::Request::Handler handler;
257 handler.on_progress(bind(&HttpAsyncReader::progress_report, this, std::placeholders::_1));
258
259 handler.on_error([prom, uri](core::net::Error const& e)
260 {
261 unity::LogicException logic_exception("AsyncReader::async_get: " + std::string(e.what()) +
262 "( uri = " + uri + " )");
263 prom->set_exception(logic_exception.self());
264 });
265
266 handler.on_response(
267 [this, prom, create, uri](core::net::http::Response const& response)
268 {
269 if (response.status != core::net::http::Status::ok)
270 {
271 unity::LogicException e("AsyncReader::async_get_parser: " + response.body + "( uri = " + uri + " )");
272 prom->set_exception(e.self());
273 }
274 else
275 {
276 std::string error_string;
277 std::shared_ptr<PARSER> reader = create(response.body, error_string);
278 if (!reader)
279 {
280 unity::LogicException e("AsyncReader::async_get: error obtaining parser: " + error_string);
281 prom->set_exception(e.self());
282 }
283 else
284 {
285 prom->set_value(reader);
286 }
287 }
288 });
289
290 async_execute(handler, uri);
291
292 return prom->get_future();
293}
294
295template <typename T>
296T HttpAsyncReader::get_or_throw(std::future<T>& f, int64_t seconds)
297{
298 if (f.wait_for(std::chrono::seconds(seconds)) != std::future_status::ready)
299 {
300 throw unity::scopes::TimeoutException("AsyncReader::get_or_throw: Wait for future timeout after " +
301 std::to_string(seconds) + " seconds");
302 }
303 return f.get();
304}
305
306} // namespace qt
307
308} // namespace scopes
309
310} // namespace unity
0311
=== added file 'include/unity/scopes/qt/JsonAsyncReader.h'
--- include/unity/scopes/qt/JsonAsyncReader.h 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/JsonAsyncReader.h 2015-02-05 11:31:47 +0000
@@ -0,0 +1,363 @@
1/*
2* Copyright (C) 2014 Canonical, Ltd.
3*
4* This library is free software; you can redistribute it and/or modify it under
5* the terms of version 3 of the GNU Lesser General Public License as published
6* by the Free Software Foundation.
7*
8* This library is distributed in the hope that it will be useful, but WITHOUT
9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
10* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
11* details.
12*
13* You should have received a copy of the GNU Lesser General Public License
14* along with this program. If not, see <http://www.gnu.org/licenses/>.
15*
16* Author: Xavi Garcia <xavi.garcia.mena@canonical.com>
17*/
18#pragma once
19
20#ifndef _ENABLE_QT_EXPERIMENTAL_
21#error You should define _ENABLE_QT_EXPERIMENTAL_ in order to use this experimental header file.
22#endif
23
24#include <unity/scopes/qt/HttpAsyncReader.h>
25#include <unity/util/DefinesPtrs.h>
26#include <unity/util/NonCopyable.h>
27
28#include <QtCore/QJsonArray>
29#include <QtCore/QJsonDocument>
30#include <QtCore/QJsonObject>
31#include <QtCore/QStringList>
32#include <QtCore/QVector>
33
34#include <memory>
35#include <future>
36
37namespace unity
38{
39
40namespace scopes
41{
42
43namespace qt
44{
45
46/// @cond
47template <typename TYPE>
48using ResultsList = std::deque<std::shared_ptr<TYPE>>;
49
50template <typename B, typename T>
51static bool get_results_json(QJsonDocument& json,
52 std::string const& object_name,
53 ResultsList<B>& results,
54 std::string&);
55/// @endcond
56
57/**
58\brief Class that downloads http JSON files asynchronously.
59
60Executes a remote HTTP query asynchronously to return different futures about JSON results or a JSON parser.
61The class implements and defines a function that returns a JSON parser filled with the data
62downloaded.
63The class also offers a default function to obtain all objects of a given name in the results.
64The user may define his own parsing function to parse data at he desires.
65*/
66class JsonAsyncReader
67{
68public:
69 /// @cond
70 NONCOPYABLE(JsonAsyncReader);
71 UNITY_DEFINES_PTRS(JsonAsyncReader);
72
73 /**
74 * \brief Parse function alias
75 */
76 template <typename B>
77 using ParseFunc =
78 std::function<bool(QJsonDocument& root, const std::string&, std::deque<std::shared_ptr<B>>&, std::string&)>;
79
80 /**
81 * \brief Results future alias
82 */
83 template <typename T>
84 using ResultsFuture = std::future<std::deque<std::shared_ptr<T>>>;
85
86 /**
87 * \brief Results list alias
88 */
89 template <typename TYPE>
90 using ResultsList = std::deque<std::shared_ptr<TYPE>>;
91
92 /**
93 * \brief Future of QJsonDocument
94 */
95 typedef std::future<std::shared_ptr<QJsonDocument>> JsonDocumentFuture;
96
97 /**
98 * \brief Shared pointer of QJsonDocument
99 */
100 typedef std::shared_ptr<QJsonDocument> QJsonDocumentSptr;
101
102 /**
103 * \brief Vector of pair of parameters
104 */
105 typedef std::vector<std::pair<std::string, std::string>> JsonParameters;
106
107 JsonAsyncReader();
108 virtual ~JsonAsyncReader() = default;
109 /// @encond
110
111 /**
112 * \brief Downloads a HTTP JSON remote file asynchronously and returns a future to a list of results
113 * This method downloads in a separated thread a http document identified by the given URI.
114 * It returns a future of list of results based on a given object name.
115 * If, for example, the document contains a list of objects identified by the tag "ITEM" it
116 * parses the document and returns a list of those objects.
117 *
118 * The user may provide his own function to parse the downloaded data.
119 *
120 * The method has 2 template parameters: the type of results returned and the type of objects when instantiating.
121 * The type of instantiation has to be a derived class of the return type. This is offered for convenience
122 * to return more generic types and get advantage of polymorphism.
123 *
124 * The method checks at compile time that the instantiation type is effectively a derived class of the type
125 * returned.
126 *
127 * \param uri URI to download
128 * \param object_name name of the kind of object we are looking for in the http document
129 * \param parse Function that parses the data downloaded
130 *
131 * \return Future of list of results
132 */
133 template <typename BASE, typename TYPE>
134 ResultsFuture<BASE> async_get(std::string const& uri,
135 std::string const& object_name,
136 ParseFunc<BASE> const& parse = get_results_json<BASE, TYPE>) const;
137
138 /**
139 * \brief Downloads a JSON HTTP remote file asynchronously and returns a future to a list of results
140 * This method downloads in a separated thread a http document identified by the given URI.
141 * It returns a future of list of results based on a given object name.
142 * If, for example, the document contains a list of objects identified by the tag "ITEM" it
143 * parses the document and returns a list of those objects.
144 * The user must provide a function to create the parser for the downloaded data and a parse function
145 * that retrieves the data.
146 *
147 * The method has 1 template parameter: the type of objects returned and the parser type.
148 *
149 * \param uri URI to download
150 * \param object_name name of the kind of object we are looking for in the http document
151 * \param parse Function that parses the data downloaded
152 *
153 * \return Future of list of results
154 */
155 template <typename T>
156 ResultsFuture<T> async_get(std::string const& uri,
157 std::string const& object_name,
158 ParseFunc<T> const& parse = get_results_json<T, T>) const;
159
160 /**
161 * \brief Downloads a HTTP JSON remote file asynchronously and returns a future to a list of results
162 * This method downloads in a separated thread a http document identified by the given URI.
163 * It returns a future of list of results based on a given object name.
164 * If, for example, the document contains a list of objects identified by the tag "ITEM" it
165 * parses the document and returns a list of those objects.
166 *
167 * The user may provide his own function to parse the downloaded data.
168 *
169 * The method has 2 template parameters: the type of results returned and the type of objects when intantiating.
170 * The type of instantiation has to be a derived class of the return type. This is offered for convenience
171 * to return more generic types and get advantage of polymorphism.
172 *
173 * The method checks at compile time that the instantiation type is effectively a derived class of the type
174 * returned.
175 *
176 * \param host the remote host name
177 * \param params The parameters that wlll build the final query, defined by a list of pairs of key and value
178 * \param object_name name of the kind of object we are looking for in the http document
179 * \param parse Function that parses the data downloaded
180 *
181 * \return Future of list of results
182 */
183 template <typename BASE, typename TYPE>
184 ResultsFuture<BASE> async_get(std::string const& host,
185 JsonParameters const& params,
186 std::string const& object_name,
187 ParseFunc<BASE> const& parse = get_results_json<BASE, TYPE>) const;
188
189 /**
190 * \brief Downloads a HTTP JSON remote file asynchronously and returns a future to a list of results
191 * This method downloads in a separated thread a http document identified by the given URI.
192 * It returns a future of list of results based on a given object name.
193 * If, for example, the document contains a list of objects identified by the tag "ITEM" it
194 * parses the document and returns a list of those objects.
195 *
196 * The user may provide his own function to parse the downloaded data.
197 *
198 * The method has 1 template parameters: the type of results returned.
199 *
200 * The method checks at compile time that the instantiation type is effectively a derived class of the type
201 * returned.
202 *
203 * \param host the remote host name
204 * \param params The parameters that wlll build the final query, defined by a list of pairs of key and value
205 * \param object_name name of the kind of object we are looking for in the http document
206 * \param parse Function that parses the data downloaded
207 *
208 * \return Future of list of results
209 */
210 template <typename T>
211 ResultsFuture<T> async_get(std::string const& host,
212 JsonParameters const& params,
213 std::string const& object_name,
214 ParseFunc<T> const& parse = get_results_json<T, T>) const;
215
216 /**
217 * \brief Downloads a HTTP remote file asynchronously and returns a future to a valid JSON parser containing the
218 *data.
219 *
220 * This method downloads a remote http document, fills a valid QJsonDocument parser with the downloaded data and
221 * returns a future to the parser.
222 * \param uri URI to download
223 *
224 * \return Future of valid parser filled with the data downloaded
225 */
226 JsonDocumentFuture async_get_parser(std::string const& uri) const;
227
228 /**
229 * \brief Downloads a HTTP remote file asynchronously and returns a future to a valid JSON parser containing the
230 *data.
231 *
232 * This method downloads a remote http document, fills a valid QJsonDocument parser with the downloaded data and
233 * returns a future to the parser.
234 * \param host host name
235 * \param params The parameters that will build the final query, defined by a list of pairs of key and value
236 *
237 * \return Future of valid parser filled with the data downloaded
238 */
239 JsonDocumentFuture async_get_parser(std::string const& host, JsonParameters const& params) const;
240
241protected:
242 /**
243 * \brief Creates a QJsonDocument filled with the given data.
244 * \param data The data that contains the JSON document
245 * \param error Returned by the method, contains any possible error string obtained during the creation of the
246 *parser.
247 *
248 * \return shared pointer to the QJsonDocument created
249 */
250 static QJsonDocumentSptr create_parser_with_data(std::string const& data, std::string& error);
251
252 /// @cond
253 std::shared_ptr<HttpAsyncReader> p_;
254 /// @endcond
255};
256
257/// @cond
258template <typename BASE, typename TYPE>
259JsonAsyncReader::ResultsFuture<BASE> JsonAsyncReader::async_get(std::string const& uri,
260 std::string const& object_name,
261 ParseFunc<BASE> const& parse) const
262{
263 return p_->async_get<BASE, TYPE, QJsonDocument>(uri, object_name, JsonAsyncReader::create_parser_with_data, parse);
264}
265
266template <typename T>
267JsonAsyncReader::ResultsFuture<T> JsonAsyncReader::async_get(std::string const& uri,
268 std::string const& object_name,
269 ParseFunc<T> const& parse) const
270{
271 return p_->async_get<T, T, QJsonDocument>(uri, object_name, JsonAsyncReader::create_parser_with_data, parse);
272}
273
274template <typename BASE, typename TYPE>
275JsonAsyncReader::ResultsFuture<BASE> JsonAsyncReader::async_get(std::string const& host,
276 JsonParameters const& params,
277 std::string const& object_name,
278 ParseFunc<BASE> const& parse) const
279{
280 std::string uri = p_->get_uri(host, params);
281 return p_->async_get<BASE, TYPE, QJsonDocument>(uri, object_name, JsonAsyncReader::create_parser_with_data, parse);
282}
283
284template <typename T>
285JsonAsyncReader::ResultsFuture<T> JsonAsyncReader::async_get(std::string const& host,
286 JsonParameters const& params,
287 std::string const& object_name,
288 ParseFunc<T> const& parse) const
289{
290 std::string uri = p_->get_uri(host, params);
291 return p_->async_get<T, T, QJsonDocument>(uri, object_name, JsonAsyncReader::create_parser_with_data, parse);
292}
293
294template <typename B, typename T>
295static bool get_results_json_object(QJsonObject& root,
296 const std::string& object_name,
297 JsonAsyncReader::ResultsList<B>& results,
298 std::string& error_string)
299{
300 QString qobject_name(object_name.c_str());
301 if (root.contains(qobject_name))
302 {
303 if (root[qobject_name].isArray())
304 {
305 auto sub_root = root[qobject_name];
306 QJsonArray levelArray = sub_root.toArray();
307 for (int levelIndex = 0; levelIndex < levelArray.size(); ++levelIndex)
308 {
309 QJsonObject levelObject = levelArray[levelIndex].toObject();
310 results.emplace_back(std::make_shared<T>(levelObject));
311 }
312 }
313 else if (root[qobject_name].isObject())
314 {
315 auto sub_root = root[qobject_name].toObject();
316 results.emplace_back(std::make_shared<T>(sub_root));
317 }
318 }
319 else
320 {
321 // iterate thow the existing members
322 for (auto member : root.keys())
323 {
324 auto item = root[member];
325 if (item.isObject())
326 {
327 QJsonObject obj = item.toObject();
328 get_results_json_object<B, T>(obj, object_name, results, error_string);
329 }
330 }
331 }
332 return true;
333}
334
335template <typename B, typename T>
336static bool get_results_json(QJsonDocument& doc,
337 const std::string& object_name,
338 JsonAsyncReader::ResultsList<B>& results,
339 std::string& error_string)
340{
341 if (doc.isArray())
342 {
343 QJsonArray levelArray = doc.array();
344 for (int levelIndex = 0; levelIndex < levelArray.size(); ++levelIndex)
345 {
346 QJsonObject levelObject = levelArray[levelIndex].toObject();
347 get_results_json_object<B, T>(levelObject, object_name, results, error_string);
348 }
349 }
350 else if (doc.isObject())
351 {
352 QJsonObject levelObject = doc.object();
353 get_results_json_object<B, T>(levelObject, object_name, results, error_string);
354 }
355 return true;
356}
357/// @endcond
358
359} // namespace qt
360
361} // namespace scopes
362
363} // namespace unity
0364
=== added file 'include/unity/scopes/qt/JsonReader.h'
--- include/unity/scopes/qt/JsonReader.h 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/JsonReader.h 2015-02-05 11:31:47 +0000
@@ -0,0 +1,86 @@
1/*
2 * Copyright (C) 2014 Canonical, Ltd.
3 *
4 * This library is free software; you can redistribute it and/or modify it under
5 * the terms of version 3 of the GNU Lesser General Public License as published
6 * by the Free Software Foundation.
7 *
8 * This library is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
10 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
11 * details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Author: Xavi Garcia <xavi.garcia.mena@canonical.com>
17 */
18#pragma once
19
20#ifndef _ENABLE_QT_EXPERIMENTAL_
21#error You should define _ENABLE_QT_EXPERIMENTAL_ in order to use this experimental header file.
22#endif
23
24#include <QtCore/QJsonDocument>
25#include <QtCore/QUrl>
26
27#include <memory>
28#include <vector>
29
30namespace unity
31{
32
33namespace scopes
34{
35
36namespace qt
37{
38
39class JsonAsyncReader;
40
41/**
42\brief Class that downloads http JSON files synchronously.
43
44Executes a remote HTTP query synchronously to return a JSON parser filled with the downloaded data.
45*/
46class JsonReader final
47{
48public:
49 /// @cond
50 JsonReader();
51 ~JsonReader() = default;
52
53 typedef std::shared_ptr<QJsonDocument> QJsonDocumentSptr;
54
55 typedef QVector<QPair<QString, QString>> QJsonParameters;
56 /// @endcond
57
58 /**
59 * \brief Downloads a remote JSON document and returns a parser containing the data.
60 * \param uri URI to download
61 *
62 * \return shared pointer of a QJsonDocument containing the downloaded data.
63 */
64 QJsonDocumentSptr read(QUrl const& uri) const;
65
66 /**
67 * \brief Downloads a remote JSON document and returns a parser containing the data.
68 * \param host the remote host name
69 * \param parameters The parameters that will build the final query, defined by a list of pairs of key and value
70 *
71 * \return shared pointer of a QJsonDocument containing the downloaded data.
72 */
73 QJsonDocumentSptr read(QString const& host, QJsonParameters const& parameters) const;
74
75private:
76 JsonReader(JsonReader const&) = delete; /** Deleted */
77 JsonReader& operator=(JsonReader const&) = delete;
78
79 std::shared_ptr<JsonAsyncReader> p_;
80};
81
82} // namespace qt
83
84} // namespace scopes
85
86} // namespace unity
087
=== added file 'include/unity/scopes/qt/QActionMetadata.h'
--- include/unity/scopes/qt/QActionMetadata.h 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/QActionMetadata.h 2015-02-05 11:31:47 +0000
@@ -0,0 +1,145 @@
1/*
2 * Copyright (C) 2015 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Xavi Garcia <xavi.garcia.mena@canonical.com>
17 */
18#pragma once
19
20#include <unity/util/DefinesPtrs.h>
21
22#include <QtCore/QVariantMap>
23
24namespace unity
25{
26
27namespace scopes
28{
29
30namespace qt
31{
32
33class QPreviewQueryBaseAPI;
34
35namespace internal
36{
37class QActionMetadataImpl;
38class QPreviewQueryBaseImpl;
39}
40
41/**
42\brief Metadata passed to scopes for preview and activation.
43\see unity::scopes::qt::QScopeBase::preview, unity::scopes::ScopeBase::activate,
44unity::scopes::ScopeBase::perform_action
45*/
46class QActionMetadata final
47{
48public:
49 /// @cond
50 UNITY_DEFINES_PTRS(QActionMetadata);
51
52 ~QActionMetadata();
53 /// @endcond
54
55 /**
56 \brief Create ActionMetadata with the given locale and form factor.
57 \param locale locale string, eg. en_EN
58 \param form_factor form factor name, e.g. phone, desktop, phone-version etc.
59 */
60 QActionMetadata(QString const& locale, QString const& form_factor);
61
62 /**
63 \brief Attach arbitrary data to this ActionMetadata.
64 \param data The data value to attach.
65 */
66 void set_scope_data(QVariant const& data);
67
68 /**
69 \brief Get data attached to this ActionMetadata.
70 \return The attached data, or QVariant::null.
71 */
72 QVariant scope_data() const;
73
74 /**@name Copy and assignment
75 Copy and assignment operators (move and non-move versions) have the usual value semantics.
76 */
77 //{@
78 QActionMetadata(QActionMetadata const& other);
79 QActionMetadata(QActionMetadata&&);
80
81 QActionMetadata& operator=(QActionMetadata const& other);
82 QActionMetadata& operator=(QActionMetadata&&);
83 //@}
84
85 /**
86 \brief Sets a hint.
87
88 \param key The name of the hint.
89 \param value Hint value
90 */
91 void set_hint(QString const& key, QVariant const& value);
92
93 /**
94 \brief Get all hints.
95
96 \return Hints dictionary.
97 \throws unity::NotFoundException if no hints are available.
98 */
99 QVariantMap hints() const;
100
101 /**
102 \brief Check if this SearchMetadata has a hint.
103 \param key The hint name.
104 \return True if the hint is set.
105 */
106 bool contains_hint(QString const& key) const;
107
108 /**
109 \brief Returns a reference to a hint.
110
111 This method can be used to read or set hints. Setting a value of an existing hint overwrites
112 its previous value.
113 Referencing a non-existing hint automatically creates it with a default value of QVariant::Type::Null.
114 \param key The name of the hint.
115 \return A reference to the hint.
116 */
117 QVariant& operator[](QString const& key);
118
119 /**
120 \brief Returns a const reference to a hint.
121
122 This method can be used for read-only access to hints.
123 Referencing a non-existing hint throws unity::InvalidArgumentException.
124 \param key The name of the hint.
125 \return A const reference to the hint.
126 \throws unity::NotFoundException if no hint with the given name exists.
127 */
128 QVariant const& operator[](QString const& key) const;
129
130private:
131 /// @cond
132 QActionMetadata(internal::QActionMetadataImpl* impl);
133
134 std::unique_ptr<internal::QActionMetadataImpl> p;
135 friend class internal::QActionMetadataImpl;
136 friend class internal::QPreviewQueryBaseImpl;
137 friend class QPreviewQueryBaseAPI;
138 /// @endcond
139};
140
141} // namespace qt
142
143} // namespace scopes
144
145} // namespace unity
0146
=== added file 'include/unity/scopes/qt/QCannedQuery.h'
--- include/unity/scopes/qt/QCannedQuery.h 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/QCannedQuery.h 2015-02-05 11:31:47 +0000
@@ -0,0 +1,155 @@
1/*
2 * Copyright (C) 2015 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Xavi Garcia <xavi.garcia.mena@canonical.com>
17 */
18
19#pragma once
20
21#include <unity/util/DefinesPtrs.h>
22#include <unity/scopes/FilterState.h>
23
24#include <QtCore/QString>
25#include <QtCore/QVariantMap>
26
27namespace unity
28{
29
30namespace scopes
31{
32
33class CannedQuery;
34
35namespace qt
36{
37
38namespace internal
39{
40class QCannedQueryImpl;
41class QSearchQueryBaseImpl;
42class QDepartmentImpl;
43}
44
45/**
46\brief Parameters of a search query.
47
48Holds all parameters of a search query: the target scope id, query string, department id, and
49state of the filters. Can be converted to/from scope:// uri schema string.
50*/
51class QCannedQuery final
52{
53public:
54 /// @cond
55 UNITY_DEFINES_PTRS(QCannedQuery);
56 /// @endcond
57
58 /**
59 \brief Creates a query for given scope with empty query string.
60 */
61 explicit QCannedQuery(QString const& scope_id);
62
63 /**
64 \brief Creates a query for given scope with specific query string and in given department.
65 */
66 QCannedQuery(QString const& scope_id, QString const& query_str, QString const& department_id);
67
68 /**@name Copy and assignment
69 Copy and assignment operators (move and non-move versions) have the usual value semantics.
70 */
71 //{@
72 QCannedQuery(QCannedQuery const& other);
73 QCannedQuery(QCannedQuery&&);
74 QCannedQuery& operator=(QCannedQuery const& other);
75 QCannedQuery& operator=(QCannedQuery&&);
76 //@}
77
78 /// @cond
79 ~QCannedQuery();
80 /// @endcond
81
82 /**
83 \brief Sets or updates the department.
84 */
85 void set_department_id(QString const& dep_id);
86
87 /**
88 \brief Sets or updates the query string.
89 */
90 void set_query_string(QString const& query_str);
91
92 /**
93 \brief Sets filter state.
94 */
95 void set_filter_state(FilterState const& filter_state);
96
97 /**
98 \brief Returns the scope identifier of this CannedQuery.
99 \return The scope identifier.
100 */
101 QString scope_id() const;
102
103 /**
104 \brief Returns the department id of this CannedQuery.
105 \return The department id.
106 */
107 QString department_id() const;
108
109 /**
110 \brief Returns the query string of this CannedQuery.
111 \return The query string.
112 */
113 QString query_string() const;
114
115 /// @cond
116 QVariantMap serialize() const;
117 /// @endcond
118
119 /**
120 \brief Returns a string representation of this CannedQuery object as a URI using scope:// schema.
121 \return The URI for the query.
122 */
123 QString to_uri() const;
124
125 /**
126 \brief Get state of the filters for this CannedQuery.
127
128 Pass this state to methods of specific filter instances (such as
129 unity::scopes::OptionSelectorFilter::active_options())to examine filter state.
130 \return The state of the filters.
131 */
132 FilterState filter_state() const;
133
134 /**
135 \brief Recreates a CannedQuery object from a scope:// URI.
136
137 \return a CannedQuery instance
138 \throws InvalidArgumentException if the URI cannot be parsed.
139 */
140 static QCannedQuery from_uri(QString const& uri);
141
142private:
143 QCannedQuery(internal::QCannedQueryImpl* impl);
144 QCannedQuery(CannedQuery const& api_query);
145 std::unique_ptr<internal::QCannedQueryImpl> p;
146 friend class internal::QCannedQueryImpl;
147 friend class internal::QSearchQueryBaseImpl;
148 friend class internal::QDepartmentImpl;
149};
150
151} // namespace qt
152
153} // namespace scopes
154
155} // namespace unity
0156
=== added file 'include/unity/scopes/qt/QCategorisedResult.h'
--- include/unity/scopes/qt/QCategorisedResult.h 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/QCategorisedResult.h 2015-02-05 11:31:47 +0000
@@ -0,0 +1,92 @@
1/*
2 * Copyright (C) 2015 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Xavi Garcia <xavi.garcia.mena@canonical.com>
17 */
18
19#pragma once
20
21#include <unity/scopes/qt/QResult.h>
22#include <unity/scopes/qt/QCategory.h>
23
24namespace unity
25{
26
27namespace scopes
28{
29
30namespace qt
31{
32
33namespace internal
34{
35class QSearchReplyImpl;
36class QCategorisedResultImpl;
37}
38
39/**
40\brief A result, including the category it belongs to.
41*/
42
43class QCategorisedResult final : public QResult
44{
45public:
46 /// @cond
47 UNITY_DEFINES_PTRS(QCategorisedResult);
48 /// @endcond
49
50 /**
51 \brief Creates a CategorisedResult with given category,
52 with all base attributes initially empty.
53 \param category The category for the result.
54 */
55 explicit QCategorisedResult(QCategory::SCPtr category);
56
57 /**@name Copy and assignment
58 Copy and assignment operators (move and non-move versions) have the usual value semantics.
59 */
60 //{@
61 QCategorisedResult(QCategorisedResult const& other);
62 QCategorisedResult& operator=(QCategorisedResult const& other);
63 QCategorisedResult(QCategorisedResult&&);
64 QCategorisedResult& operator=(QCategorisedResult&&);
65 //@}
66
67 /**
68 \brief Updates the category of this result.
69 \param category The category for the result.
70 */
71 void set_category(QCategory::SCPtr category);
72
73 /**
74 \brief Return category of this result.
75 Get the category instance this result belongs to.
76 \return The category instance.
77 */
78 QCategory::SCPtr category() const;
79
80private:
81 /// @cond
82 internal::QCategorisedResultImpl* fwd() const;
83 /// @endcond
84
85 friend class internal::QSearchReplyImpl;
86};
87
88} // namespace qt
89
90} // namespace scopes
91
92} // namespace unity
093
=== added file 'include/unity/scopes/qt/QCategory.h'
--- include/unity/scopes/qt/QCategory.h 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/QCategory.h 2015-02-05 11:31:47 +0000
@@ -0,0 +1,112 @@
1/*
2 * Copyright (C) 2015 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Xavi Garcia <xavi.garcia.mena@canonical.com>
17 */
18
19#pragma once
20
21#include <unity/util/NonCopyable.h>
22#include <unity/util/DefinesPtrs.h>
23
24#include <unity/scopes/Category.h>
25
26#include <QtCore/QString>
27#include <QtCore/QVariantMap>
28
29class QCategorisedResult_test;
30
31namespace unity
32{
33
34namespace scopes
35{
36
37namespace qt
38{
39
40namespace internal
41{
42class QSearchReplyImpl;
43class QCategoryImpl;
44class QCategorisedResultImpl;
45}
46
47/**
48 \brief A set of related results returned by a scope
49 and displayed within a single pane in the Unity dash.
50
51 To create a QCategory, use QReplyProxy::register_category.
52*/
53class QCategory
54{
55public:
56 /// @cond
57 NONCOPYABLE(QCategory);
58 UNITY_DEFINES_PTRS(QCategory);
59
60 virtual ~QCategory();
61 /// @endcond
62
63 /**
64 \brief Get identifier of this Category
65 \return The category identifier.
66 */
67 QString id() const;
68
69 /**
70 \brief Get title of this Category
71 \return The category title.
72 */
73 QString title() const;
74
75 /**
76 \brief Get icon of this Category
77 \return The category icon.
78 */
79 QString icon() const;
80
81 /**
82 \brief Query to perform when this category is expanded
83 \return The expansion query or nullptr.
84 */
85 CannedQuery::SCPtr query() const;
86
87 /**
88 \brief Get renderer template of this Category
89 \return The category renderer template.
90 */
91 CategoryRenderer const& renderer_template() const;
92
93 // @cond
94 QVariantMap serialize() const;
95
96private:
97 /// @cond
98 QCategory(unity::scopes::Category::SCPtr category);
99 QCategory(internal::QCategoryImpl* impl);
100 friend class unity::scopes::qt::internal::QSearchReplyImpl;
101
102 std::unique_ptr<internal::QCategoryImpl> p;
103 friend class internal::QCategoryImpl;
104 friend class internal::QCategorisedResultImpl;
105 /// @endcond
106};
107
108} // namespace qt
109
110} // namespace scopes
111
112} // namespace unity
0113
=== added file 'include/unity/scopes/qt/QColumnLayout.h'
--- include/unity/scopes/qt/QColumnLayout.h 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/QColumnLayout.h 2015-02-05 11:31:47 +0000
@@ -0,0 +1,133 @@
1/*
2 * Copyright (C) 2015 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Xavi Garcia <xavi.garcia.mena@canonical.com>
17 */
18
19#pragma once
20
21#include <unity/util/DefinesPtrs.h>
22
23#include <QtCore/QVariant>
24#include <QtCore/QVector>
25
26namespace unity
27{
28
29namespace scopes
30{
31
32namespace qt
33{
34
35namespace internal
36{
37class QColumnLayoutImpl;
38class QPreviewReplyImpl;
39}
40
41/**
42\brief Represents a column layout.
43
44Column layouts are used to represent the view in different ways depending on
45the device we are running our application.
46
47If, for example, you run the application in a tablet that has more screen the
48application could use more columns than running in a phone.
49
50*/
51class QColumnLayout final
52{
53public:
54 /// @cond
55 UNITY_DEFINES_PTRS(QColumnLayout);
56 /// @endcond
57
58 /**
59 \brief Creates a layout definition that expects num_of_columns columns to be added with ColumnLayout::add_column.
60 \param num_of_columns The number of columns for the layout.
61 \throws unity::InvalidArgumentException for an invalid number of columns.
62 */
63 explicit QColumnLayout(int num_of_columns);
64
65 /**@name Copy and assignment
66 Copy and assignment operators (move and non-move versions) have the usual value semantics.
67 */
68 //{@
69 QColumnLayout(QColumnLayout const& other);
70 QColumnLayout(QColumnLayout&&);
71 QColumnLayout& operator=(QColumnLayout const& other);
72 QColumnLayout& operator=(QColumnLayout&&);
73 //@}
74
75 /// @cond
76 ~QColumnLayout();
77 /// @endcond
78
79 /**
80 \brief Adds a new column and assigns widgets to it.
81
82 ColumnLayout expects exactly the number of columns passed to the constructor to be created with the
83 add_column method.
84 \throws unity::LogicException if an attempt is made to add more columns than specified in the constructor.
85 \throws unity::LogicException from \link unity::scopes::qt::QPreviewReply::register_layout\endlink if a layout
86 has fewer columns than specified in the constructor.
87 */
88 void add_column(QVector<QString> widget_ids);
89
90 /**
91 \brief Get the current number of columns in this layout.
92 \return The number of columns added with add_column().
93 */
94 int size() const noexcept;
95
96 /**
97 \brief Get the number of columns expected by this layout as specified in the constructor.
98 \return The number of columns expected by this layout.
99 */
100 int number_of_columns() const noexcept;
101
102 /**
103 \brief Retrieve the list of widgets for given column.
104 \param index The index of a column.
105 \return The widget identifiers for the given column index.
106 \throws unity::InvalidArgumentException if the index is invalid.
107 */
108 QVector<QString> column(int index) const;
109
110 /// @cond
111 QVariantMap serialize() const;
112 /// @endcond
113
114private:
115 QColumnLayout(internal::QColumnLayoutImpl* impl);
116 /// @cond
117 std::unique_ptr<internal::QColumnLayoutImpl> p;
118 friend class internal::QColumnLayoutImpl;
119 friend class internal::QPreviewReplyImpl;
120 /// @endcond
121};
122
123/*! \typedef QColumnLayoutList
124\brief List of column layouts (see unity::scopes::qt::QColumnLayout)
125*/
126
127typedef QList<QColumnLayout> QColumnLayoutList;
128
129} // namespace qt
130
131} // namespace scopes
132
133} // namespace unity
0134
=== added file 'include/unity/scopes/qt/QDepartment.h'
--- include/unity/scopes/qt/QDepartment.h 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/QDepartment.h 2015-02-05 11:31:47 +0000
@@ -0,0 +1,196 @@
1/*
2 * Copyright (C) 2015 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Xavi Garcia <xavi.garcia.mena@canonical.com>
17 */
18
19#pragma once
20
21#include <unity/util/DefinesPtrs.h>
22
23#include <QtCore/QVariantMap>
24#include <QtCore/QString>
25#include <QtCore/QSharedPointer>
26#include <QtCore/QScopedPointer>
27
28#include <memory>
29
30namespace unity
31{
32
33namespace scopes
34{
35
36namespace qt
37{
38
39class QDepartment;
40class QCannedQuery;
41
42namespace internal
43{
44class QDepartmentImpl;
45class QSearchReplyImpl;
46}
47
48/*! \typedef QDepartmentList
49\brief List of departments (see unity::scopes::qt::QDepartment)
50*/
51typedef QList<QSharedPointer<QDepartment const>> QDepartmentList;
52
53/**
54\brief A department with optional sub-departments.
55*/
56class QDepartment final
57{
58public:
59 /// @cond
60 UNITY_DEFINES_PTRS(QDepartment);
61 /// @endcond
62
63 /**
64 \brief Create a department with the given canned query and name.
65
66 The identifier of this department instance is that of the `query` instance (\link
67 QCannedQuery::department_id()\endlink).
68 \param query The query (and associated parameters, such as filter state) to be executed when the user
69 selects this department.
70 \param label The display name of this department.
71 */
72 static QDepartment::UPtr create(QCannedQuery const& query, QString const& label);
73
74 /**
75 \brief Create a department with the given department identifier, canned query, and name.
76
77 The canned query's target department identifier is updated with department_id.
78 This constructor is convenient for creating multiple departments that use the same query and only
79 need a different department identifier.
80 \param department_id The department identifier.
81 \param query The canned query (and associated parameters, such as filter state) to be executed when the user
82 selects this department.
83 \param label The display name of this department.
84 */
85 static QDepartment::UPtr create(QString const& department_id, QCannedQuery const& query, QString const& label);
86
87 /**@name Copy and assignment
88 Copy and assignment operators (move and non-move versions) have the usual value semantics.
89 */
90 //{@
91 QDepartment(QDepartment const& other);
92 QDepartment(QDepartment&&);
93 QDepartment& operator=(QDepartment const& other);
94 QDepartment& operator=(QDepartment&&);
95 //@}
96
97 /// @cond
98 ~QDepartment();
99 /// @endcond
100
101 /**
102 \brief Set sub-departments of this department.
103 \param departments The list of sub-departments.
104 */
105 void set_subdepartments(QDepartmentList const& departments);
106
107 /**
108 \brief Add sub-department to this department.
109 \param department The subdepartment instance.
110 */
111 void add_subdepartment(QDepartment::SCPtr const& department);
112
113 /**
114 \brief Set the alternate label (plural of the normal label) of this department.
115
116 The alternate label should express the plural "all" form of the normal label. For example,
117 if the normal label is "Books", then the alternate label should be "All Books". The alternate label
118 needs to be provided for the current department only.
119 \param label The alternate label to display when showing plural form of this department's name.
120 */
121 void set_alternate_label(QString const& label);
122
123 /**
124 \brief Sets has_subdepartments flag of this department.
125
126 This flag is a display hint for the Shell that indicates if this department has sub-departments and as such should
127 be displayed
128 in a way that suggests further navigation to the user.
129 Setting this flag is not needed when sub-departments have been added with set_subdepartments() method.
130 Setting this flag to false after adding sub-departments with set_subdepartments() throws unity::LogicException.
131
132 \throws unity::LogicException if called with false after adding sub-departments with
133 unity::scopes::Department::set_subdepartments()
134 */
135 void set_has_subdepartments(bool subdepartments = true);
136
137 /**
138 \brief Get the identifier of this department.
139 \return The department identifier.
140 */
141 QString id() const;
142
143 /**
144 \brief Get the label of this department.
145 \return The department label.
146 */
147 QString label() const;
148
149 /**
150 \brief Get the alternate label of this department.
151
152 Return the alternate label of this department. The alternate label expresses the plural "all" form of the normal
153 label.
154 For example, if the normal label is "Books", then the alternate label is "All Books". Note that alternate label
155 and can be empty - in that case the normal label should be displayed instead.
156
157 \return The alternate label.
158 */
159 QString alternate_label() const;
160
161 /**
162 \brief Get the canned query associated with this department.
163 \return The canned query for this department.
164 */
165 QCannedQuery query() const;
166
167 /**
168 \brief Get list of sub-departments of this department.
169 \return The list of sub-departments.
170 */
171 QDepartmentList subdepartments() const;
172
173 /**
174 \brief Check if this department has subdepartments or has_subdepartments flag is set
175 \return true if this deparment has subdepartments or has_subdepartments flag is set
176 */
177 bool has_subdepartments() const;
178
179 /// @cond
180 QVariantMap serialize() const;
181 /// @endcond
182
183private:
184 /// @cond
185 QDepartment(internal::QDepartmentImpl* impl);
186 std::unique_ptr<internal::QDepartmentImpl> p;
187 friend class internal::QDepartmentImpl;
188 friend class internal::QSearchReplyImpl;
189 /// @endcond
190};
191
192} // namespace qt
193
194} // namespace scopes
195
196} // namespace unity
0197
=== added file 'include/unity/scopes/qt/QPreviewQueryBase.h'
--- include/unity/scopes/qt/QPreviewQueryBase.h 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/QPreviewQueryBase.h 2015-02-05 11:31:47 +0000
@@ -0,0 +1,136 @@
1/*
2 * Copyright (C) 2015 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Xavi Garcia <xavi.garcia.mena@canonical.com>
17 */
18
19#pragma once
20
21#include <unity/util/DefinesPtrs.h>
22#include <unity/util/NonCopyable.h>
23
24#include <unity/scopes/PreviewReplyProxyFwd.h>
25
26#include <unity/scopes/qt/QActionMetadata.h>
27#include <unity/scopes/qt/QCannedQuery.h>
28#include <unity/scopes/qt/QPreviewReplyProxy.h>
29#include <unity/scopes/qt/QResult.h>
30
31#include <QtCore/QObject>
32
33namespace unity
34{
35
36namespace scopes
37{
38
39class SearchMetadata;
40class CannedQuery;
41class ActionMetadata;
42
43namespace qt
44{
45
46class QResult;
47
48namespace internal
49{
50class QPreviewQueryBaseImpl;
51}
52
53class QPreviewQueryBaseAPI;
54
55/**
56\brief Abstract base class to represent a particular preview.
57
58A scope must return an instance of this class from its implementation of ScopeBase::preview().
59
60\note The constructor of the instance must complete in a timely manner. Do not perform anything in the
61constructor that might block.
62*/
63class QPreviewQueryBase : public QObject
64{
65 Q_OBJECT
66public:
67 /// @cond
68 NONCOPYABLE(QPreviewQueryBase);
69 UNITY_DEFINES_PTRS(QPreviewQueryBase);
70 /// @endcond
71
72 virtual ~QPreviewQueryBase();
73
74 /**
75 \brief Called by scopes run time to start the query.
76
77 Your implementation of run() can use the reply proxy to push results
78 for the query. You can push results from within run(), in which case
79 the query implicitly completes when run() returns. Alternatively,
80 run() can store the reply proxy and return immediately. In this
81 case, you can use the stored proxy to push results from another
82 thread. It is safe to call `push()` from multiple threads without
83 synchronization.
84
85 The query completes either when run() returns, or when the
86 last stored reply proxy goes out of scope (whichever happens
87 last).
88
89 \param reply The proxy on which to push results for the query.
90 */
91 virtual void run(unity::scopes::qt::QPreviewReplyProxy const& reply) = 0;
92
93 /**
94 \brief Called by the scopes run time when the query originator
95 cancels a query.
96
97 Your implementation of this method should ensure that the scope stops
98 processing the current query as soon as possible. Any calls to a `push()` method
99 once a query is cancelled are ignored, so continuing to push after cancellation
100 only wastes CPU cycles. (`push()` returns `false` once a query is cancelled or
101 exceeds its cardinality limit.)
102 */
103 virtual void cancelled() = 0; // Originator cancelled the query
104
105 /**
106 \brief Get result for this preview request.
107 \throws unity::LogicException if result was not initialized (the default ctor was used).
108 \return result
109 */
110 QResult result() const;
111
112 /**
113 \brief Get metadata for this preview request.
114 \return search metadata
115 \throws unity::LogicException if preview metadata was not initialized (the default ctor was used).
116 */
117 QActionMetadata action_metadata() const;
118
119protected:
120 /// @cond
121 QPreviewQueryBase(QObject* parent = 0);
122
123private:
124 void init(QPreviewQueryBaseAPI* query_api);
125
126 std::unique_ptr<internal::QPreviewQueryBaseImpl> p;
127 friend class internal::QPreviewQueryBaseImpl;
128 friend class QPreviewQueryBaseAPI;
129 /// @endcond
130};
131
132} // namespace qt
133
134} // namespace scopes
135
136} // namespace unity
0137
=== added file 'include/unity/scopes/qt/QPreviewQueryBaseAPI.h'
--- include/unity/scopes/qt/QPreviewQueryBaseAPI.h 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/QPreviewQueryBaseAPI.h 2015-02-05 11:31:47 +0000
@@ -0,0 +1,127 @@
1/*
2 * Copyright (C) 2015 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Xavi Garcia <xavi.garcia.mena@canonical.com>
17 */
18
19#pragma once
20
21#include <unity/util/DefinesPtrs.h>
22#include <unity/util/NonCopyable.h>
23
24#include <unity/scopes/PreviewQueryBase.h>
25#include <unity/scopes/PreviewReplyProxyFwd.h>
26#include <unity/scopes/qt/QPreviewQueryBase.h>
27
28#include <QtCore/QObject>
29
30class QCoreApplication;
31
32namespace unity
33{
34
35namespace scopes
36{
37
38class Result;
39class ActionMetadata;
40
41namespace qt
42{
43
44namespace internal
45{
46class QScopeBaseAPIImpl;
47}
48
49class QScopeBase;
50class QScopeBaseAPI;
51
52/**
53\brief Abstract base class to represent a particular preview.
54
55A scope must return an instance of this class from its implementation of ScopeBase::preview().
56
57This is the class that links scope API calls with the main QThread.
58The instance of this class is moved to the main QThread and pushes events to the Qt event loop.
59
60\note The constructor of the instance must complete in a timely manner. Do not perform anything in the
61constructor that might block.
62*/
63class QPreviewQueryBaseAPI : public QObject, public unity::scopes::PreviewQueryBase
64{
65 Q_OBJECT
66public:
67 /// @cond
68 NONCOPYABLE(QPreviewQueryBaseAPI);
69 UNITY_DEFINES_PTRS(QPreviewQueryBaseAPI);
70
71 virtual ~QPreviewQueryBaseAPI();
72
73protected:
74 QPreviewQueryBaseAPI(std::shared_ptr<QCoreApplication> qtapp,
75 QScopeBase& qtscope,
76 unity::scopes::Result const& result,
77 unity::scopes::ActionMetadata const& metadata,
78 QObject* parent = 0);
79
80 bool event(QEvent* e) override;
81 /// @endcond
82
83 /**
84 \brief Called by scopes run time to start the query.
85
86 Your implementation of run() can use the reply proxy to push results
87 for the query. You can push results from within run(), in which case
88 the query implicitly completes when run() returns. Alternatively,
89 run() can store the reply proxy and return immediately. In this
90 case, you can use the stored proxy to push results from another
91 thread. It is safe to call `push()` from multiple threads without
92 synchronization.
93
94 The query completes either when run() returns, or when the
95 last stored reply proxy goes out of scope (whichever happens
96 last).
97
98 \param reply The proxy on which to push results for the query.
99 */
100 virtual void run(unity::scopes::PreviewReplyProxy const& reply) final;
101
102 /**
103 \brief Called by the scopes run time when the query originator
104 cancels a query.
105
106 Your implementation of this method should ensure that the scope stops
107 processing the current query as soon as possible. Any calls to a `push()` method
108 once a query is cancelled are ignored, so continuing to push after cancellation
109 only wastes CPU cycles. (`push()` returns `false` once a query is cancelled or
110 exceeds its cardinality limit.)
111 */
112 virtual void cancelled() final; // Originator cancelled the query
113
114 /// @cond
115 std::shared_ptr<QCoreApplication> qtapp_;
116 std::unique_ptr<QPreviewQueryBase> qtquery_;
117 QScopeBase& qtscope_;
118
119 friend internal::QScopeBaseAPIImpl;
120 /// @endcond
121};
122
123} // namespace qt
124
125} // namespace scopes
126
127} // namespace unity
0128
=== added file 'include/unity/scopes/qt/QPreviewReply.h'
--- include/unity/scopes/qt/QPreviewReply.h 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/QPreviewReply.h 2015-02-05 11:31:47 +0000
@@ -0,0 +1,103 @@
1/*
2 * Copyright (C) 2015 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Xavi Garcia <xavi.garcia.mena@canonical.com>
17 */
18
19#pragma once
20
21#include <unity/util/DefinesPtrs.h>
22#include <unity/util/NonCopyable.h>
23
24#include <unity/scopes/PreviewReplyProxyFwd.h>
25
26#include <unity/scopes/qt/QColumnLayout.h>
27#include <unity/scopes/qt/QPreviewWidget.h>
28
29#include <QtCore/QVariant>
30#include <QtCore/QObject>
31
32namespace unity
33{
34
35namespace scopes
36{
37
38namespace qt
39{
40
41class QPreviewQueryBaseAPI;
42
43namespace internal
44{
45class QPreviewReplyImpl;
46}
47
48/**
49\brief Allows the results of a preview to be sent to the preview requester.
50*/
51
52class QPreviewReply : public QObject
53{
54 Q_OBJECT
55public:
56 /// @cond
57 NONCOPYABLE(QPreviewReply);
58 UNITY_DEFINES_PTRS(QPreviewReply);
59 /// @endcond
60 /**
61 \brief Registers a list of column layouts for the current preview.
62
63 Layouts must be registered before pushing a unity::scopes::PreviewWidgetList, and must be
64 registered only once.
65 \return True if the query is still alive, false if the query failed or was cancelled.
66 \throws unity::LogicException register_layout() is called more than once.
67 */
68 bool register_layout(QColumnLayoutList const& layouts);
69
70 /**
71 \brief Sends widget definitions to the sender of the preview query.
72
73 This method can be called mutiple times to send widgets in stages.
74 \return True if the query is still alive, false if the query failed or was cancelled.
75 */
76 bool push(QPreviewWidgetList const& widget_list);
77
78 /**
79 \brief Sends data for a preview widget attribute.
80 \return True if the query is still alive, false if the query failed or was cancelled.
81 */
82 bool push(QString const& key, QVariant const& value);
83
84 /// @cond
85 virtual ~QPreviewReply();
86 /// @endcond
87
88protected:
89 /// @cond
90 QPreviewReply(unity::scopes::PreviewReplyProxy& reply, QObject* parent = 0);
91
92private:
93 std::unique_ptr<internal::QPreviewReplyImpl> p;
94 friend class internal::QPreviewReplyImpl;
95 friend class QPreviewQueryBaseAPI;
96 /// @endcond
97};
98
99} // namespace qt
100
101} // namespace scopes
102
103} // namespace unity
0104
=== added file 'include/unity/scopes/qt/QPreviewReplyProxy.h'
--- include/unity/scopes/qt/QPreviewReplyProxy.h 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/QPreviewReplyProxy.h 2015-02-05 11:31:47 +0000
@@ -0,0 +1,42 @@
1/*
2 * Copyright (C) 2015 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Xavi Garcia <xavi.garcia.mena@canonical.com>
17 */
18
19#pragma once
20
21#include <unity/scopes/qt/QPreviewReply.h>
22#include <memory>
23
24namespace unity
25{
26
27namespace scopes
28{
29
30namespace qt
31{
32
33/** \typedef QPreviewReplyProxy
34\brief Convenience type definition.
35*/
36typedef std::shared_ptr<QPreviewReply> QPreviewReplyProxy;
37
38} // namespace qt
39
40} // namespace scopes
41
42} // namespace unity
043
=== added file 'include/unity/scopes/qt/QPreviewWidget.h'
--- include/unity/scopes/qt/QPreviewWidget.h 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/QPreviewWidget.h 2015-02-05 11:31:47 +0000
@@ -0,0 +1,198 @@
1/*
2 * Copyright (C) 2015 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Xavi Garcia <xavi.garcia.mena@canonical.com>
17 */
18
19#pragma once
20
21#include <unity/util/NonCopyable.h>
22#include <unity/util/DefinesPtrs.h>
23
24#include <QtCore/QVariant>
25
26namespace unity
27{
28
29namespace scopes
30{
31
32class PreviewWidget;
33
34namespace qt
35{
36
37namespace internal
38{
39class QPreviewWidgetImpl;
40class QPreviewReplyImpl;
41}
42
43class QPreviewWidget;
44
45/*! \typedef QPreviewWidgetList
46\brief List of preview widgets (see unity::scopes::qt::QPreviewWidget)
47*/
48typedef QList<QPreviewWidget> QPreviewWidgetList;
49
50/**
51 \brief Widget used in Preview.
52*/
53class QPreviewWidget final
54{
55public:
56 /// @cond
57 UNITY_DEFINES_PTRS(QPreviewWidget);
58 /// @endcond
59
60 /**
61 \brief Create an empty widget definition with a specific id and type.
62 \param id The unique widget identifier.
63 \param widget_type The type of the widget.
64 */
65 QPreviewWidget(QString const& id, QString const& widget_type);
66
67 /**
68 \brief Create a widget from a JSON definition.
69
70 The JSON definition must be a dictionary that includes widget "id" and all the values of attributes required by
71 desired
72 \link QPreviewWidget widget type\endlink. For example, a definition of image widget may look as follows:
73 \code{.cpp}
74 PreviewWidget img(R"({"id": "img", "type": "image", "source": "http://imageuri"})");
75 \endcode
76
77 For cases where attribute mappings are to be used instead of direct values, they need to be enclosed in the
78 "components" dictionary, e.g.
79 \code{.cpp}
80 PreviewWidget img(R"({"id": "img", "type": "image", "components": { "source": "screenshot-url" } })");
81 \endcode
82 (this example assumes "screenshot-url" value is either available in the result object that's being previewed, or it
83 will be pushed with
84 unity::scopes::PreviewReply::push() method)
85
86 \note It is recommended to create widgets via unity::scopes::PreviewWidget(QString const&, QString const&)
87 constructor
88 and unity::scopes::PreviewWidget::add_attribute_value() / unity::scopes::PreviewWidget::add_attribute_mapping()
89 methods,
90 rather than via JSON definition.
91
92 \param definition The JSON definition.
93 */
94 QPreviewWidget(QString const& definition);
95
96 /**@name Copy and assignment
97 Copy and assignment operators (move and non-move versions) have the usual value semantics.
98 */
99 //{@
100 QPreviewWidget(QPreviewWidget const& other);
101 QPreviewWidget(QPreviewWidget&& other);
102 virtual ~QPreviewWidget();
103
104 QPreviewWidget& operator=(QPreviewWidget const& other);
105 QPreviewWidget& operator=(QPreviewWidget&& other);
106 //@}
107
108 /**
109 \brief Adds an attribute definition and its value.
110 \param key The name of the attribute.
111 \param value The value of the attribute.
112 */
113 void add_attribute_value(QString const& key, QVariant const& value);
114
115 /**
116 \brief Adds an attribute definition using a component mapping.
117
118 If an attribute value is either not known, or the value is already present
119 in a result field, this method creates a mapping between the attribute
120 name and given the field name.
121
122 If an attribute value is not known, the scope is expected to push the attribute value using
123 unity::scopes::PreviewReply::push(); otherwise, the value is automatically
124 mapped from the result.
125 */
126 void add_attribute_mapping(QString const& key, QString const& field_name);
127
128 /**
129 \brief Adds a widget into expandable widget.
130
131 Adds a widget into this widget, which needs to be of 'expandable' type. This method throws
132 if adding a widget into any other widget type. Also, adding an 'expandable' widget into
133 another 'expandable' is not allowed.
134
135 \throws unity::LogicException if type of this widget is other than 'expandable', or when
136 adding 'expandable' to 'expandable'.
137 */
138 void add_widget(QPreviewWidget const& widget);
139
140 /**
141 \brief Get the identifier of this widget.
142 \return The widget identifier.
143 */
144 QString id() const;
145
146 /**
147 \brief Get type name of this widget.
148 \return The widget type.
149 */
150 QString widget_type() const;
151
152 /**
153 \brief Get the components of this widget.
154
155 The returned map is a dictionary of (key, field name) pairs, as defined by calls to add_attribute_mapping().
156 \return The components map.
157 */
158 QMap<QString, QString> attribute_mappings() const;
159
160 /**
161 \brief Get the attributes of this widget.
162
163 The returned map is a dictionary of (key, value) pairs, as defined by calls to add_attribute_value().
164 \return The attribute map.
165 */
166 QVariantMap attribute_values() const;
167
168 /**
169 \brief Get widgets of 'expandable' widget.
170
171 Returns the list of widget attached to this widget, which must be of 'expandable' type. This list is
172 always empty for other widget types.
173 */
174 QPreviewWidgetList widgets() const;
175
176 /**
177 \brief Get a JSON representation of this widget.
178 \return The JSON string.
179 */
180 QString data() const;
181
182 /// @cond
183 QVariantMap serialize() const;
184
185private:
186 std::unique_ptr<internal::QPreviewWidgetImpl> p;
187 QPreviewWidget(internal::QPreviewWidgetImpl* widget);
188
189 friend class internal::QPreviewWidgetImpl;
190 friend class internal::QPreviewReplyImpl;
191 /// @endcond
192};
193
194} // namespace qt
195
196} // namespace scopes
197
198} // namespace unity
0199
=== added file 'include/unity/scopes/qt/QResult.h'
--- include/unity/scopes/qt/QResult.h 1970-01-01 00:00:00 +0000
+++ include/unity/scopes/qt/QResult.h 2015-02-05 11:31:47 +0000
@@ -0,0 +1,264 @@
1/*
2 * Copyright (C) 2015 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Xavi Garcia <xavi.garcia.mena@canonical.com>
17 */
18
19#pragma once
20
21#include <unity/util/DefinesPtrs.h>
22
23#include <unity/scopes/ScopeProxyFwd.h>
24
25#include <QtCore/QString>
26#include <QtCore/QVariant>
27
28namespace unity
29{
30
31namespace scopes
32{
33
34class Variant;
35class Result;
36
37namespace qt
38{
39
40class QCategorisedResult;
41
42namespace internal
43{
44class QResultImpl;
45class QPreviewQueryBaseImpl;
46}
47
48/**
49 \brief The attributes of a result returned by a Scope.
50
51 The Result API provides convenience methods for some typical attributes (title,
52 art), but scopes are free to add and use any custom attributes with `operator[]`.
53 The only required attribute is 'uri' and it must not be empty before
54 calling Reply::push().
55*/
56class QResult
57{
58public:
59 /// @cond
60 UNITY_DEFINES_PTRS(QResult);
61 /// @endcond
62
63 QResult();
64 /**@name Copy and assignment
65 Copy and assignment (move and non-move versions) have the usual value semantics.
66 */
67 //{@
68 QResult(QResult const& other);
69 QResult(QResult&&);
70
71 QResult& operator=(QResult const& other);
72 QResult& operator=(QResult&&);
73 //@}
74
75 /**
76 Destructor.
77 */
78 virtual ~QResult();
79
80 /**
81 \brief Stores a Result inside this Result instance.
82
83 This method is meant to be used by aggregator scopes which want to modify results they receive, but want
84 to keep a copy of the original result so that they can be correctly handled by the original scopes
85 who created them when it comes to activation or previews.
86 Scopes middleware will automatically pass the correct inner stored result to the activation or preview request
87 handler
88 of a scope which created it.
89 \param other The original result to store within this result.
90 \param intercept_activation True if this scope should receive activation and preview requests.
91 */
92 void store(QResult const& other, bool intercept_activation = false);
93
94 /**
95 \brief Check if this Result instance has a stored result.
96 \return True if there is a stored result
97 */
98 bool has_stored_result() const;
99
100 /**
101 \brief Get a stored result.
102 \return stored result
103 \throws unity::InvalidArgumentException if no result was stored in this Result instance.
104 */
105 QResult retrieve() const;
106
107 /**
108 \brief Set the "uri" attribute of this result.
109 */
110 void set_uri(QString const& uri);
111
112 /**
113 \brief Set the "title" attribute of this result.
114
115 Equivalent to calling `result["title"] = title;`
116 */
117 void set_title(QString const& title);
118 /**
119 \brief Set the "art" attribute of this result.
120
121 Equivalent to calling `result["art"] = image;`
122 */
123 void set_art(QString const& image);
124
125 /**
126 \brief Set the "dnd_uri" attribute of this result.
127
128 Equivalent to calling `result["dnd_uri"] = dnd_uri;`
129 */
130 void set_dnd_uri(QString const& dnd_uri);
131
132 /**
133 \brief Indicates to the receiver that this scope should intercept activation requests for this result.
134
135 By default, a scope receives preview requests for the results it creates, but does not receive activation
136 requests (they are handled directly by the shell).
137 Intercepting activation implies intercepting preview requests as well; this is important for scopes that
138 forward results from other scopes and call set_intercept_activation() on these scopes.
139 A scope that sets intercept activation flag for a result should re-implement ScopeBase::activate()
140 and provide an implementation of ActivationQueryBase that handles the actual activation.
141 If not called, the result will be activated directly by the Unity shell whithout involving the scope,
142 assuming an appropriate URI schema handler is present on the system.
143 */
144 void set_intercept_activation();
145
146 /**
147 \brief Check if this result should be activated directly by the shell
148 because the scope doesn't handle activation of this result.
149 \return True if this result needs to be activated directly.
150 */
151 bool direct_activation() const;
152
153 /**
154 \brief Get the proxy of a scope that handles activation and preview of this result.
155
156 The proxy is available only when receiving this result from a scope, otherwise
157 this method throws LogicException. Activation requests should be sent to a scope
158 returned by this method only if direct_activation() is false.
159 \return The scope proxy.
160 */
161 ScopeProxy target_scope_proxy() const;
162
163 /**
164 \brief Returns reference of a Result attribute.
165
166 This method can be used to read or initialize both standard ("uri", "title", "art", "dnd_uri")
167 and custom metadata attributes. Referencing a non-existing attribute automatically creates
168 it with a default value of Variant::Type::Null.
169 \param key The name of the attribute.
170 \return A reference to the attribute.
171 \throws unity::Invalidargument if no attribute with the given name exists.
172 */
173 QVariant& operator[](QString const& key);
174
175 /**
176 \brief Returns a const reference to a Result attribute.
177
178 This method can be used for read-only access to both standard ("uri", "title", "art", "dnd_uri")
179 and custom metadata attributes. Referencing a non-existing attribute throws unity::InvalidArgumentException.
180 \param key The name of the attribute.
181 \return A const reference to the attribute.
182 \throws unity::Invalidargument if no attribute with the given name exists.
183 */
184 QVariant const& operator[](QString const& key) const;
185
186 /**
187 \brief Get the "uri" property of this Result.
188
189 This method returns an empty string if this attribute is not of type Variant::Type::String (e.g. it was set with
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: