Merge lp:~phablet-team/messaging-framework/add-dummy-protocol into lp:messaging-framework
- add-dummy-protocol
- Merge into trunk
Status: | Approved |
---|---|
Approved by: | Gustavo Pichorim Boiko |
Approved revision: | 81 |
Proposed branch: | lp:~phablet-team/messaging-framework/add-dummy-protocol |
Merge into: | lp:messaging-framework |
Prerequisite: | lp:~phablet-team/messaging-framework/multiple_api_fixes |
Diff against target: |
4134 lines (+3866/-0) 48 files modified
CMakeLists.txt (+2/-0) debian/control.in (+6/-0) debian/mfw-plugin-dummy.install (+6/-0) examples/CMakeLists.txt (+1/-0) examples/mfw-plugin-dummy/CMakeLists.txt (+61/-0) examples/mfw-plugin-dummy/cmake/EnableCoverageReport.cmake (+153/-0) examples/mfw-plugin-dummy/cmake/FindGLog.cmake (+14/-0) examples/mfw-plugin-dummy/cmake/FindLcov.cmake (+29/-0) examples/mfw-plugin-dummy/cmake/Findgcovr.cmake (+31/-0) examples/mfw-plugin-dummy/cmake/LibFindMacros.cmake (+112/-0) examples/mfw-plugin-dummy/cmake/ParseArguments.cmake (+52/-0) examples/mfw-plugin-dummy/data/CMakeLists.txt (+63/-0) examples/mfw-plugin-dummy/data/cmake_uninstall.cmake.in (+22/-0) examples/mfw-plugin-dummy/data/dummy.manager.in (+10/-0) examples/mfw-plugin-dummy/data/dummy.protocol.in (+16/-0) examples/mfw-plugin-dummy/data/dummy.service.in (+3/-0) examples/mfw-plugin-dummy/debian/changelog (+5/-0) examples/mfw-plugin-dummy/debian/compat (+1/-0) examples/mfw-plugin-dummy/debian/control (+31/-0) examples/mfw-plugin-dummy/debian/copyright (+22/-0) examples/mfw-plugin-dummy/debian/rules (+19/-0) examples/mfw-plugin-dummy/debian/source/format (+1/-0) examples/mfw-plugin-dummy/doc/CMakeLists.txt (+21/-0) examples/mfw-plugin-dummy/doc/Doxyfile.in (+1869/-0) examples/mfw-plugin-dummy/include/CMakeLists.txt (+3/-0) examples/mfw-plugin-dummy/include/dummy/chat.h (+31/-0) examples/mfw-plugin-dummy/include/dummy/connection.h (+98/-0) examples/mfw-plugin-dummy/include/dummy/connector.h (+58/-0) examples/mfw-plugin-dummy/include/dummy/contact_chat.h (+54/-0) examples/mfw-plugin-dummy/include/dummy/group_chat.h (+50/-0) examples/mfw-plugin-dummy/include/dummy/group_manager.h (+72/-0) examples/mfw-plugin-dummy/include/dummy/group_starter.h (+52/-0) examples/mfw-plugin-dummy/include/dummy/messenger.h (+50/-0) examples/mfw-plugin-dummy/include/dummy/presence_manager.h (+40/-0) examples/mfw-plugin-dummy/include/dummy/recipient.h (+19/-0) examples/mfw-plugin-dummy/include/dummy/user.h (+31/-0) examples/mfw-plugin-dummy/include/dummy/visibility.h (+7/-0) examples/mfw-plugin-dummy/src/CMakeLists.txt (+43/-0) examples/mfw-plugin-dummy/src/dummy/chat.cpp (+30/-0) examples/mfw-plugin-dummy/src/dummy/connection.cpp (+132/-0) examples/mfw-plugin-dummy/src/dummy/connector.cpp (+95/-0) examples/mfw-plugin-dummy/src/dummy/contact_chat.cpp (+58/-0) examples/mfw-plugin-dummy/src/dummy/group_chat.cpp (+50/-0) examples/mfw-plugin-dummy/src/dummy/group_manager.cpp (+114/-0) examples/mfw-plugin-dummy/src/dummy/group_starter.cpp (+85/-0) examples/mfw-plugin-dummy/src/dummy/messenger.cpp (+71/-0) examples/mfw-plugin-dummy/src/dummy/presence_manager.cpp (+59/-0) examples/mfw-plugin-dummy/src/dummy/user.cpp (+14/-0) |
To merge this branch: | bzr merge lp:~phablet-team/messaging-framework/add-dummy-protocol |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
system-apps-ci-bot | continuous-integration | Needs Fixing | |
Gustavo Pichorim Boiko (community) | Approve | ||
Review via email: mp+320528@code.launchpad.net |
Commit message
Add dummy protocol implementation.
Description of the change
Add dummy protocol implementation.
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
- 79. By Tiago Salem Herrmann
-
add missing png files
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:79
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
- 80. By Tiago Salem Herrmann
-
move share objects to a separate directory
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:80
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
- 81. By Gustavo Pichorim Boiko
-
Merge parent branch
Gustavo Pichorim Boiko (boiko) wrote : | # |
Looks good!
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:81
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Unmerged revisions
- 81. By Gustavo Pichorim Boiko
-
Merge parent branch
- 80. By Tiago Salem Herrmann
-
move share objects to a separate directory
- 79. By Tiago Salem Herrmann
-
add missing png files
- 78. By Tiago Salem Herrmann
-
Add dummy protocol implementation
- 77. By Tiago Salem Herrmann
-
merge parent branch
Preview Diff
1 | === modified file 'CMakeLists.txt' |
2 | --- CMakeLists.txt 2016-12-06 20:24:14 +0000 |
3 | +++ CMakeLists.txt 2017-03-22 21:22:50 +0000 |
4 | @@ -1,6 +1,7 @@ |
5 | cmake_minimum_required(VERSION 3.0.2) |
6 | project(messaging-framework VERSION "0.1" LANGUAGES C CXX) |
7 | set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) |
8 | +set(IS_MF_BUILD "1") |
9 | |
10 | # Select a pedantic set of compiler flags and enable C++11 support. |
11 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wno-deprecated-register -Wno-extra-semi -Wno-gnu-zero-variadic-macro-arguments -fvisibility=hidden") |
12 | @@ -97,4 +98,5 @@ |
13 | add_subdirectory(doc) |
14 | add_subdirectory(include) |
15 | add_subdirectory(src) |
16 | +add_subdirectory(examples) |
17 | add_subdirectory(tests) |
18 | |
19 | === modified file 'debian/control.in' |
20 | --- debian/control.in 2017-03-22 21:22:50 +0000 |
21 | +++ debian/control.in 2017-03-22 21:22:50 +0000 |
22 | @@ -46,3 +46,9 @@ |
23 | This layer communicates third party plugins with systems like |
24 | telepathy allowing changing the system by other without having |
25 | to modify the plugins |
26 | + |
27 | +Package: mfw-plugin-dummy |
28 | +Architecture: any |
29 | +Depends: ${misc:Depends}, ${shlibs:Depends} |
30 | +Description: Ubuntu Messaging Framework Dummy Plugin |
31 | + A plugin for messaging fw implementing Dummy protocol |
32 | |
33 | === added file 'debian/mfw-plugin-dummy.install' |
34 | --- debian/mfw-plugin-dummy.install 1970-01-01 00:00:00 +0000 |
35 | +++ debian/mfw-plugin-dummy.install 2017-03-22 21:22:50 +0000 |
36 | @@ -0,0 +1,6 @@ |
37 | +usr/lib/*/messaging-framework/libmfw-plugin-dummy.so* |
38 | +usr/share/dbus-1/services/org.freedesktop.Telepathy.ConnectionManager.dummy.service |
39 | +usr/share/telephony-service/protocols/dummy.protocol |
40 | +usr/share/dummy/assets/dummy-background.png |
41 | +usr/share/dummy/assets/dummy.png |
42 | +usr/share/telepathy/managers/dummy.manager |
43 | |
44 | === added directory 'examples' |
45 | === added file 'examples/CMakeLists.txt' |
46 | --- examples/CMakeLists.txt 1970-01-01 00:00:00 +0000 |
47 | +++ examples/CMakeLists.txt 2017-03-22 21:22:50 +0000 |
48 | @@ -0,0 +1,1 @@ |
49 | +add_subdirectory(mfw-plugin-dummy) |
50 | |
51 | === added directory 'examples/mfw-plugin-dummy' |
52 | === added file 'examples/mfw-plugin-dummy/CMakeLists.txt' |
53 | --- examples/mfw-plugin-dummy/CMakeLists.txt 1970-01-01 00:00:00 +0000 |
54 | +++ examples/mfw-plugin-dummy/CMakeLists.txt 2017-03-22 21:22:50 +0000 |
55 | @@ -0,0 +1,61 @@ |
56 | +if (NOT IS_MF_BUILD) |
57 | + project(mfw-plugin-dummy C CXX) |
58 | + cmake_minimum_required(VERSION 2.8.10) |
59 | + set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) |
60 | + |
61 | + # Select a pedantic set of compiler flags and enable C++11 support. |
62 | + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wno-deprecated-register -Wno-extra-semi -Wno-gnu-zero-variadic-macro-arguments -fvisibility=hidden") |
63 | + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -fno-strict-aliasing -fvisibility=hidden -fvisibility-inlines-hidden -Wextra -Wno-deprecated-register -Wno-extra-semi -Wno-gnu-zero-variadic-macro-arguments -ggdb -O0") |
64 | + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined") |
65 | + set(CMAKE_POSITION_INDEPENDENT_CODE ON) |
66 | + |
67 | + # Store in CMAKE_DEB_HOST_ARCH var the current build architecture |
68 | + execute_process(COMMAND |
69 | + dpkg-architecture |
70 | + -qDEB_HOST_ARCH |
71 | + OUTPUT_VARIABLE |
72 | + CMAKE_DEB_HOST_ARCH |
73 | + OUTPUT_STRIP_TRAILING_WHITESPACE |
74 | + ) |
75 | + |
76 | + # Include the entire CTest functionality, specifically for MakeNightlyMemCheck. |
77 | + include(CTest) |
78 | + include(GNUInstallDirs) |
79 | + |
80 | + find_package(Boost COMPONENTS filesystem program_options system REQUIRED) |
81 | + find_package(GLog) |
82 | + find_package(PkgConfig) |
83 | + find_package(Qt5Core REQUIRED) |
84 | + find_package(Qt5DBus REQUIRED) |
85 | + find_package(Threads) |
86 | + pkg_check_modules(PROCESS_CPP process-cpp REQUIRED) |
87 | + pkg_check_modules(MESSAGING_FW REQUIRED messaging-framework1) |
88 | +endif() |
89 | + |
90 | +set(CMAKE_INCLUDE_CURRENT_DIR ON) |
91 | + |
92 | +set(SO_VERSION_MAJOR "1") |
93 | +set(SO_VERSION_MINOR "1") |
94 | +set(SO_VERSION_PATCH "0") |
95 | +set(SO_VERSION "${SO_VERSION_MAJOR}.${SO_VERSION_MINOR}.${SO_VERSION_PATCH}") |
96 | + |
97 | +option(CLICK_MODE "Installs to a contained location" on) |
98 | +option(ACCEPTANCE_MODE "Enables the acceptance tests" off) |
99 | + |
100 | +if (${ACCEPTANCE_MODE}) |
101 | + set(CTEST_CONFIGURATION_TYPE acceptance) |
102 | +endif() |
103 | +include_directories( |
104 | + ${MESSAGING_FW_INCLUDE_DIRS} |
105 | + ${CMAKE_CURRENT_SOURCE_DIR}/include |
106 | + ${CMAKE_SOURCE_DIR}/include |
107 | + ${Boost_INCLUDE_DIRS} |
108 | + ${GLog_INCLUDE_DIR} |
109 | + ${CPPNETLIB_INCLUDE_DIRS} |
110 | +) |
111 | + |
112 | +add_subdirectory(data) |
113 | +add_subdirectory(doc) |
114 | +add_subdirectory(include) |
115 | +add_subdirectory(src) |
116 | + |
117 | |
118 | === added directory 'examples/mfw-plugin-dummy/cmake' |
119 | === added file 'examples/mfw-plugin-dummy/cmake/EnableCoverageReport.cmake' |
120 | --- examples/mfw-plugin-dummy/cmake/EnableCoverageReport.cmake 1970-01-01 00:00:00 +0000 |
121 | +++ examples/mfw-plugin-dummy/cmake/EnableCoverageReport.cmake 2017-03-22 21:22:50 +0000 |
122 | @@ -0,0 +1,153 @@ |
123 | +# - Creates a special coverage build type and target on GCC. |
124 | +# |
125 | +# Defines a function ENABLE_COVERAGE_REPORT which generates the coverage target |
126 | +# for selected targets. Optional arguments to this function are used to filter |
127 | +# unwanted results using globbing expressions. Moreover targets with tests for |
128 | +# the source code can be specified to trigger regenerating the report if the |
129 | +# test has changed |
130 | +# |
131 | +# ENABLE_COVERAGE_REPORT(TARGETS target... [FILTER filter...] [TESTS test targets...]) |
132 | +# |
133 | +# To generate a coverage report first build the project with |
134 | +# CMAKE_BUILD_TYPE=coverage, then call make test and afterwards make coverage. |
135 | +# |
136 | +# The coverage report is based on gcov. Depending on the availability of lcov |
137 | +# a HTML report will be generated and/or an XML report of gcovr is found. |
138 | +# The generated coverage target executes all found solutions. Special targets |
139 | +# exist to create e.g. only the xml report: coverage-xml. |
140 | +# |
141 | +# Copyright (C) 2010 by Johannes Wienke <jwienke at techfak dot uni-bielefeld dot de> |
142 | +# |
143 | +# This program is free software; you can redistribute it |
144 | +# and/or modify it under the terms of the GNU General |
145 | +# Public License as published by the Free Software Foundation; |
146 | +# either version 2, or (at your option) |
147 | +# any later version. |
148 | +# |
149 | +# This program is distributed in the hope that it will be useful, |
150 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
151 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
152 | +# GNU General Public License for more details. |
153 | +# |
154 | + |
155 | +INCLUDE(ParseArguments) |
156 | + |
157 | +FIND_PACKAGE(Lcov) |
158 | +FIND_PACKAGE(gcovr) |
159 | + |
160 | +FUNCTION(ENABLE_COVERAGE_REPORT) |
161 | + |
162 | + # argument parsing |
163 | + PARSE_ARGUMENTS(ARG "FILTER;TARGETS;TESTS" "" ${ARGN}) |
164 | + |
165 | + SET(COVERAGE_RAW_FILE "${CMAKE_BINARY_DIR}/coverage.raw.info") |
166 | + SET(COVERAGE_FILTERED_FILE "${CMAKE_BINARY_DIR}/coverage.info") |
167 | + SET(COVERAGE_REPORT_DIR "${CMAKE_BINARY_DIR}/coveragereport") |
168 | + SET(COVERAGE_XML_FILE "${CMAKE_BINARY_DIR}/coverage.xml") |
169 | + SET(COVERAGE_XML_COMMAND_FILE "${CMAKE_BINARY_DIR}/coverage-xml.cmake") |
170 | + |
171 | + # decide if there is any tool to create coverage data |
172 | + SET(TOOL_FOUND FALSE) |
173 | + IF(LCOV_FOUND OR GCOVR_FOUND) |
174 | + SET(TOOL_FOUND TRUE) |
175 | + ENDIF() |
176 | + IF(NOT TOOL_FOUND) |
177 | + MESSAGE(STATUS "Cannot enable coverage targets because neither lcov nor gcovr are found.") |
178 | + ENDIF() |
179 | + |
180 | + STRING(TOLOWER "${CMAKE_BUILD_TYPE}" COVERAGE_BUILD_TYPE) |
181 | + IF(CMAKE_COMPILER_IS_GNUCXX AND TOOL_FOUND AND "${COVERAGE_BUILD_TYPE}" MATCHES "coverage") |
182 | + |
183 | + MESSAGE(STATUS "Coverage support enabled for targets: ${ARG_TARGETS}") |
184 | + |
185 | + # create coverage build type |
186 | + SET(CMAKE_CXX_FLAGS_COVERAGE ${CMAKE_CXX_FLAGS_DEBUG} PARENT_SCOPE) |
187 | + SET(CMAKE_C_FLAGS_COVERAGE ${CMAKE_C_FLAGS_DEBUG} PARENT_SCOPE) |
188 | + SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_CONFIGURATION_TYPES} coverage PARENT_SCOPE) |
189 | + |
190 | + # instrument targets |
191 | + SET_TARGET_PROPERTIES(${ARG_TARGETS} PROPERTIES COMPILE_FLAGS --coverage |
192 | + LINK_FLAGS --coverage) |
193 | + |
194 | + # html report |
195 | + IF (LCOV_FOUND) |
196 | + |
197 | + MESSAGE(STATUS "Enabling HTML coverage report") |
198 | + |
199 | + # set up coverage target |
200 | + |
201 | + ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_RAW_FILE} |
202 | + COMMAND ${LCOV_EXECUTABLE} -c -d ${CMAKE_BINARY_DIR} -o ${COVERAGE_RAW_FILE} |
203 | + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} |
204 | + COMMENT "Collecting coverage data" |
205 | + DEPENDS ${ARG_TARGETS} ${ARG_TESTS} |
206 | + VERBATIM) |
207 | + |
208 | + # filter unwanted stuff |
209 | + LIST(LENGTH ARG_FILTER FILTER_LENGTH) |
210 | + IF(${FILTER_LENGTH} GREATER 0) |
211 | + SET(FILTER COMMAND ${LCOV_EXECUTABLE}) |
212 | + FOREACH(F ${ARG_FILTER}) |
213 | + SET(FILTER ${FILTER} -r ${COVERAGE_FILTERED_FILE} ${F}) |
214 | + ENDFOREACH() |
215 | + SET(FILTER ${FILTER} -o ${COVERAGE_FILTERED_FILE}) |
216 | + ELSE() |
217 | + SET(FILTER "") |
218 | + ENDIF() |
219 | + |
220 | + ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_FILTERED_FILE} |
221 | + COMMAND ${LCOV_EXECUTABLE} -e ${COVERAGE_RAW_FILE} "${CMAKE_SOURCE_DIR}*" -o ${COVERAGE_FILTERED_FILE} |
222 | + ${FILTER} |
223 | + DEPENDS ${COVERAGE_RAW_FILE} |
224 | + COMMENT "Filtering recorded coverage data for project-relevant entries" |
225 | + VERBATIM) |
226 | + ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_REPORT_DIR} |
227 | + COMMAND ${CMAKE_COMMAND} -E make_directory ${COVERAGE_REPORT_DIR} |
228 | + COMMAND ${GENHTML_EXECUTABLE} --legend --show-details -t "${PROJECT_NAME} test coverage" -o ${COVERAGE_REPORT_DIR} ${COVERAGE_FILTERED_FILE} |
229 | + DEPENDS ${COVERAGE_FILTERED_FILE} |
230 | + COMMENT "Generating HTML coverage report in ${COVERAGE_REPORT_DIR}" |
231 | + VERBATIM) |
232 | + |
233 | + ADD_CUSTOM_TARGET(coverage-html |
234 | + DEPENDS ${COVERAGE_REPORT_DIR}) |
235 | + |
236 | + ENDIF() |
237 | + |
238 | + # xml coverage report |
239 | + IF(GCOVR_FOUND) |
240 | + |
241 | + MESSAGE(STATUS "Enabling XML coverage report") |
242 | + |
243 | + # gcovr cannot write directly to a file so the execution needs to |
244 | + # be wrapped in a cmake file that generates the file output |
245 | + FILE(WRITE ${COVERAGE_XML_COMMAND_FILE} |
246 | + "SET(ENV{LANG} en)\n") |
247 | + FILE(APPEND ${COVERAGE_XML_COMMAND_FILE} |
248 | + "EXECUTE_PROCESS(COMMAND \"${GCOVR_EXECUTABLE}\" --exclude=tests.* --exclude=obj-.* --exclude=cmake.* -x -r \"${CMAKE_SOURCE_DIR}\" OUTPUT_FILE \"${COVERAGE_XML_FILE}\" WORKING_DIRECTORY \"${CMAKE_BINARY_DIR}\")\n") |
249 | + |
250 | + ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_XML_FILE} |
251 | + COMMAND ${CMAKE_COMMAND} ARGS -P ${COVERAGE_XML_COMMAND_FILE} |
252 | + COMMENT "Generating coverage XML report" |
253 | + VERBATIM) |
254 | + |
255 | + ADD_CUSTOM_TARGET(coverage-xml |
256 | + DEPENDS ${COVERAGE_XML_FILE}) |
257 | + |
258 | + ENDIF() |
259 | + |
260 | + # provide a global coverage target executing both steps if available |
261 | + SET(GLOBAL_DEPENDS "") |
262 | + IF(LCOV_FOUND) |
263 | + LIST(APPEND GLOBAL_DEPENDS ${COVERAGE_REPORT_DIR}) |
264 | + ENDIF() |
265 | + IF(GCOVR_FOUND) |
266 | + LIST(APPEND GLOBAL_DEPENDS ${COVERAGE_XML_FILE}) |
267 | + ENDIF() |
268 | + IF(LCOV_FOUND OR GCOVR_FOUND) |
269 | + ADD_CUSTOM_TARGET(coverage |
270 | + DEPENDS ${GLOBAL_DEPENDS}) |
271 | + ENDIF() |
272 | + |
273 | + ENDIF() |
274 | + |
275 | +ENDFUNCTION() |
276 | |
277 | === added file 'examples/mfw-plugin-dummy/cmake/FindGLog.cmake' |
278 | --- examples/mfw-plugin-dummy/cmake/FindGLog.cmake 1970-01-01 00:00:00 +0000 |
279 | +++ examples/mfw-plugin-dummy/cmake/FindGLog.cmake 2017-03-22 21:22:50 +0000 |
280 | @@ -0,0 +1,14 @@ |
281 | +if (GLog_INCLUDE_DIR) |
282 | + # Already in cache, be silent |
283 | + set(GLog_FIND_QUIETLY TRUE) |
284 | +endif () |
285 | + |
286 | +find_path(GLog_INCLUDE_DIR glog/logging.h) |
287 | + |
288 | +find_library(GLog_LIBRARY libglog.so |
289 | + HINTS /usr/lib/arm-linux-gnueabihf/) |
290 | + |
291 | +include(FindPackageHandleStandardArgs) |
292 | +find_package_handle_standard_args(GLog DEFAULT_MSG GLog_LIBRARY GLog_INCLUDE_DIR) |
293 | + |
294 | +mark_as_advanced(GLog_LIBRARY GLog_INCLUDE_DIR) |
295 | |
296 | === added file 'examples/mfw-plugin-dummy/cmake/FindLcov.cmake' |
297 | --- examples/mfw-plugin-dummy/cmake/FindLcov.cmake 1970-01-01 00:00:00 +0000 |
298 | +++ examples/mfw-plugin-dummy/cmake/FindLcov.cmake 2017-03-22 21:22:50 +0000 |
299 | @@ -0,0 +1,29 @@ |
300 | +# - Find lcov |
301 | +# Will define: |
302 | +# |
303 | +# LCOV_EXECUTABLE - the lcov binary |
304 | +# GENHTML_EXECUTABLE - the genhtml executable |
305 | +# |
306 | +# Copyright (C) 2010 by Johannes Wienke <jwienke at techfak dot uni-bielefeld dot de> |
307 | +# |
308 | +# This program is free software; you can redistribute it |
309 | +# and/or modify it under the terms of the GNU General |
310 | +# Public License as published by the Free Software Foundation; |
311 | +# either version 2, or (at your option) |
312 | +# any later version. |
313 | +# |
314 | +# This program is distributed in the hope that it will be useful, |
315 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
316 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
317 | +# GNU General Public License for more details. |
318 | +# |
319 | + |
320 | +INCLUDE(FindPackageHandleStandardArgs) |
321 | + |
322 | +FIND_PROGRAM(LCOV_EXECUTABLE lcov) |
323 | +FIND_PROGRAM(GENHTML_EXECUTABLE genhtml) |
324 | + |
325 | +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lcov DEFAULT_MSG LCOV_EXECUTABLE GENHTML_EXECUTABLE) |
326 | + |
327 | +# only visible in advanced view |
328 | +MARK_AS_ADVANCED(LCOV_EXECUTABLE GENHTML_EXECUTABLE) |
329 | |
330 | === added file 'examples/mfw-plugin-dummy/cmake/Findgcovr.cmake' |
331 | --- examples/mfw-plugin-dummy/cmake/Findgcovr.cmake 1970-01-01 00:00:00 +0000 |
332 | +++ examples/mfw-plugin-dummy/cmake/Findgcovr.cmake 2017-03-22 21:22:50 +0000 |
333 | @@ -0,0 +1,31 @@ |
334 | +# - Find gcovr scrip |
335 | +# Will define: |
336 | +# |
337 | +# GCOVR_EXECUTABLE - the gcovr script |
338 | +# |
339 | +# Uses: |
340 | +# |
341 | +# GCOVR_ROOT - root to search for the script |
342 | +# |
343 | +# Copyright (C) 2011 by Johannes Wienke <jwienke at techfak dot uni-bielefeld dot de> |
344 | +# |
345 | +# This program is free software; you can redistribute it |
346 | +# and/or modify it under the terms of the GNU General |
347 | +# Public License as published by the Free Software Foundation; |
348 | +# either version 2, or (at your option) |
349 | +# any later version. |
350 | +# |
351 | +# This program is distributed in the hope that it will be useful, |
352 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
353 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
354 | +# GNU General Public License for more details. |
355 | +# |
356 | + |
357 | +INCLUDE(FindPackageHandleStandardArgs) |
358 | + |
359 | +FIND_PROGRAM(GCOVR_EXECUTABLE gcovr HINTS ${GCOVR_ROOT} "${GCOVR_ROOT}/bin") |
360 | + |
361 | +FIND_PACKAGE_HANDLE_STANDARD_ARGS(gcovr DEFAULT_MSG GCOVR_EXECUTABLE) |
362 | + |
363 | +# only visible in advanced view |
364 | +MARK_AS_ADVANCED(GCOVR_EXECUTABLE) |
365 | |
366 | === added file 'examples/mfw-plugin-dummy/cmake/LibFindMacros.cmake' |
367 | --- examples/mfw-plugin-dummy/cmake/LibFindMacros.cmake 1970-01-01 00:00:00 +0000 |
368 | +++ examples/mfw-plugin-dummy/cmake/LibFindMacros.cmake 2017-03-22 21:22:50 +0000 |
369 | @@ -0,0 +1,112 @@ |
370 | +# Version 1.0 (2013-04-12) |
371 | +# Public Domain, originally written by Lasse Kärkkäinen <tronic@zi.fi> |
372 | +# Published at http://www.cmake.org/Wiki/CMake:How_To_Find_Libraries |
373 | + |
374 | +# If you improve the script, please modify the forementioned wiki page because |
375 | +# I no longer maintain my scripts (hosted as static files at zi.fi). Feel free |
376 | +# to remove this entire header if you use real version control instead. |
377 | + |
378 | +# Changelog: |
379 | +# 2013-04-12 Added version number (1.0) and this header, no other changes |
380 | +# 2009-10-08 Originally published |
381 | + |
382 | + |
383 | +# Works the same as find_package, but forwards the "REQUIRED" and "QUIET" arguments |
384 | +# used for the current package. For this to work, the first parameter must be the |
385 | +# prefix of the current package, then the prefix of the new package etc, which are |
386 | +# passed to find_package. |
387 | +macro (libfind_package PREFIX) |
388 | + set (LIBFIND_PACKAGE_ARGS ${ARGN}) |
389 | + if (${PREFIX}_FIND_QUIETLY) |
390 | + set (LIBFIND_PACKAGE_ARGS ${LIBFIND_PACKAGE_ARGS} QUIET) |
391 | + endif (${PREFIX}_FIND_QUIETLY) |
392 | + if (${PREFIX}_FIND_REQUIRED) |
393 | + set (LIBFIND_PACKAGE_ARGS ${LIBFIND_PACKAGE_ARGS} REQUIRED) |
394 | + endif (${PREFIX}_FIND_REQUIRED) |
395 | + find_package(${LIBFIND_PACKAGE_ARGS}) |
396 | +endmacro (libfind_package) |
397 | + |
398 | +# CMake developers made the UsePkgConfig system deprecated in the same release (2.6) |
399 | +# where they added pkg_check_modules. Consequently I need to support both in my scripts |
400 | +# to avoid those deprecated warnings. Here's a helper that does just that. |
401 | +# Works identically to pkg_check_modules, except that no checks are needed prior to use. |
402 | +macro (libfind_pkg_check_modules PREFIX PKGNAME) |
403 | + if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) |
404 | + include(UsePkgConfig) |
405 | + pkgconfig(${PKGNAME} ${PREFIX}_INCLUDE_DIRS ${PREFIX}_LIBRARY_DIRS ${PREFIX}_LDFLAGS ${PREFIX}_CFLAGS) |
406 | + else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) |
407 | + find_package(PkgConfig) |
408 | + if (PKG_CONFIG_FOUND) |
409 | + pkg_check_modules(${PREFIX} ${PKGNAME}) |
410 | + endif (PKG_CONFIG_FOUND) |
411 | + endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) |
412 | +endmacro (libfind_pkg_check_modules) |
413 | + |
414 | +# Do the final processing once the paths have been detected. |
415 | +# If include dirs are needed, ${PREFIX}_PROCESS_INCLUDES should be set to contain |
416 | +# all the variables, each of which contain one include directory. |
417 | +# Ditto for ${PREFIX}_PROCESS_LIBS and library files. |
418 | +# Will set ${PREFIX}_FOUND, ${PREFIX}_INCLUDE_DIRS and ${PREFIX}_LIBRARIES. |
419 | +# Also handles errors in case library detection was required, etc. |
420 | +macro (libfind_process PREFIX) |
421 | + # Skip processing if already processed during this run |
422 | + if (NOT ${PREFIX}_FOUND) |
423 | + # Start with the assumption that the library was found |
424 | + set (${PREFIX}_FOUND TRUE) |
425 | + |
426 | + # Process all includes and set _FOUND to false if any are missing |
427 | + foreach (i ${${PREFIX}_PROCESS_INCLUDES}) |
428 | + if (${i}) |
429 | + set (${PREFIX}_INCLUDE_DIRS ${${PREFIX}_INCLUDE_DIRS} ${${i}}) |
430 | + mark_as_advanced(${i}) |
431 | + else (${i}) |
432 | + set (${PREFIX}_FOUND FALSE) |
433 | + endif (${i}) |
434 | + endforeach (i) |
435 | + |
436 | + # Process all libraries and set _FOUND to false if any are missing |
437 | + foreach (i ${${PREFIX}_PROCESS_LIBS}) |
438 | + if (${i}) |
439 | + set (${PREFIX}_LIBRARIES ${${PREFIX}_LIBRARIES} ${${i}}) |
440 | + mark_as_advanced(${i}) |
441 | + else (${i}) |
442 | + set (${PREFIX}_FOUND FALSE) |
443 | + endif (${i}) |
444 | + endforeach (i) |
445 | + |
446 | + # Print message and/or exit on fatal error |
447 | + if (${PREFIX}_FOUND) |
448 | + if (NOT ${PREFIX}_FIND_QUIETLY) |
449 | + message (STATUS "Found ${PREFIX} ${${PREFIX}_VERSION}") |
450 | + endif (NOT ${PREFIX}_FIND_QUIETLY) |
451 | + else (${PREFIX}_FOUND) |
452 | + if (${PREFIX}_FIND_REQUIRED) |
453 | + foreach (i ${${PREFIX}_PROCESS_INCLUDES} ${${PREFIX}_PROCESS_LIBS}) |
454 | + message("${i}=${${i}}") |
455 | + endforeach (i) |
456 | + message (FATAL_ERROR "Required library ${PREFIX} NOT FOUND.\nInstall the library (dev version) and try again. If the library is already installed, use ccmake to set the missing variables manually.") |
457 | + endif (${PREFIX}_FIND_REQUIRED) |
458 | + endif (${PREFIX}_FOUND) |
459 | + endif (NOT ${PREFIX}_FOUND) |
460 | +endmacro (libfind_process) |
461 | + |
462 | +macro(libfind_library PREFIX basename) |
463 | + set(TMP "") |
464 | + if(MSVC80) |
465 | + set(TMP -vc80) |
466 | + endif(MSVC80) |
467 | + if(MSVC90) |
468 | + set(TMP -vc90) |
469 | + endif(MSVC90) |
470 | + set(${PREFIX}_LIBNAMES ${basename}${TMP}) |
471 | + if(${ARGC} GREATER 2) |
472 | + set(${PREFIX}_LIBNAMES ${basename}${TMP}-${ARGV2}) |
473 | + string(REGEX REPLACE "\\." "_" TMP ${${PREFIX}_LIBNAMES}) |
474 | + set(${PREFIX}_LIBNAMES ${${PREFIX}_LIBNAMES} ${TMP}) |
475 | + endif(${ARGC} GREATER 2) |
476 | + find_library(${PREFIX}_LIBRARY |
477 | + NAMES ${${PREFIX}_LIBNAMES} |
478 | + PATHS ${${PREFIX}_PKGCONF_LIBRARY_DIRS} |
479 | + ) |
480 | +endmacro(libfind_library) |
481 | + |
482 | |
483 | === added file 'examples/mfw-plugin-dummy/cmake/ParseArguments.cmake' |
484 | --- examples/mfw-plugin-dummy/cmake/ParseArguments.cmake 1970-01-01 00:00:00 +0000 |
485 | +++ examples/mfw-plugin-dummy/cmake/ParseArguments.cmake 2017-03-22 21:22:50 +0000 |
486 | @@ -0,0 +1,52 @@ |
487 | +# Parse arguments passed to a function into several lists separated by |
488 | +# upper-case identifiers and options that do not have an associated list e.g.: |
489 | +# |
490 | +# SET(arguments |
491 | +# hello OPTION3 world |
492 | +# LIST3 foo bar |
493 | +# OPTION2 |
494 | +# LIST1 fuz baz |
495 | +# ) |
496 | +# PARSE_ARGUMENTS(ARG "LIST1;LIST2;LIST3" "OPTION1;OPTION2;OPTION3" ${arguments}) |
497 | +# |
498 | +# results in 7 distinct variables: |
499 | +# * ARG_DEFAULT_ARGS: hello;world |
500 | +# * ARG_LIST1: fuz;baz |
501 | +# * ARG_LIST2: |
502 | +# * ARG_LIST3: foo;bar |
503 | +# * ARG_OPTION1: FALSE |
504 | +# * ARG_OPTION2: TRUE |
505 | +# * ARG_OPTION3: TRUE |
506 | +# |
507 | +# taken from http://www.cmake.org/Wiki/CMakeMacroParseArguments |
508 | + |
509 | +MACRO(PARSE_ARGUMENTS prefix arg_names option_names) |
510 | + SET(DEFAULT_ARGS) |
511 | + FOREACH(arg_name ${arg_names}) |
512 | + SET(${prefix}_${arg_name}) |
513 | + ENDFOREACH(arg_name) |
514 | + FOREACH(option ${option_names}) |
515 | + SET(${prefix}_${option} FALSE) |
516 | + ENDFOREACH(option) |
517 | + |
518 | + SET(current_arg_name DEFAULT_ARGS) |
519 | + SET(current_arg_list) |
520 | + FOREACH(arg ${ARGN}) |
521 | + SET(larg_names ${arg_names}) |
522 | + LIST(FIND larg_names "${arg}" is_arg_name) |
523 | + IF (is_arg_name GREATER -1) |
524 | + SET(${prefix}_${current_arg_name} ${current_arg_list}) |
525 | + SET(current_arg_name ${arg}) |
526 | + SET(current_arg_list) |
527 | + ELSE (is_arg_name GREATER -1) |
528 | + SET(loption_names ${option_names}) |
529 | + LIST(FIND loption_names "${arg}" is_option) |
530 | + IF (is_option GREATER -1) |
531 | + SET(${prefix}_${arg} TRUE) |
532 | + ELSE (is_option GREATER -1) |
533 | + SET(current_arg_list ${current_arg_list} ${arg}) |
534 | + ENDIF (is_option GREATER -1) |
535 | + ENDIF (is_arg_name GREATER -1) |
536 | + ENDFOREACH(arg) |
537 | + SET(${prefix}_${current_arg_name} ${current_arg_list}) |
538 | +ENDMACRO(PARSE_ARGUMENTS) |
539 | |
540 | === added directory 'examples/mfw-plugin-dummy/data' |
541 | === added file 'examples/mfw-plugin-dummy/data/CMakeLists.txt' |
542 | --- examples/mfw-plugin-dummy/data/CMakeLists.txt 1970-01-01 00:00:00 +0000 |
543 | +++ examples/mfw-plugin-dummy/data/CMakeLists.txt 2017-03-22 21:22:50 +0000 |
544 | @@ -0,0 +1,63 @@ |
545 | +if (NOT IS_MF_BUILD) |
546 | + # glob files to be shown in qt-creator |
547 | + file(GLOB MANAGER_FILES *.manager) |
548 | + file(GLOB SERVICE_FILES *.service) |
549 | + file(GLOB PNG_FILES *.png) |
550 | + add_custom_target(manager_files_plugin ALL SOURCES ${MANAGER_FILES}) |
551 | + add_custom_target(service_files_plugin ALL SOURCES ${SERVICE_FILES}) |
552 | + add_custom_target(png_files_plugin ALL SOURCES ${PNG_FILES}) |
553 | + add_custom_target(schema_files_plugin ALL SOURCES ${SCHEMA_FILES}) |
554 | + add_custom_target(info_files_plugin ALL SOURCES ${INFO_FILES}) |
555 | + |
556 | + # uninstall target |
557 | + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" |
558 | + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" |
559 | + IMMEDIATE @ONLY) |
560 | + add_custom_target(uninstall "${CMAKE_COMMAND}" |
561 | + -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") |
562 | + |
563 | +endif() |
564 | + |
565 | +########################################### |
566 | +# Messaging-fw data and configuration files |
567 | +########################################### |
568 | + |
569 | +# Compose the pkg-config file needed to find the library using that tool |
570 | +set(PREFIX "${CMAKE_INSTALL_PREFIX}") # /usr |
571 | +set(LIBDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") # /usr/lib |
572 | +set(INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/include") # /usr/include |
573 | + |
574 | +############################################# |
575 | +# Dummy plugin data and configuration files |
576 | +############################################# |
577 | + |
578 | +set(CM dummy) |
579 | +set(PROTOCOL dummy) |
580 | +# DUMMY_DATADIR is used in dummy.protocol.in |
581 | +set(DUMMY_DATADIR ${CMAKE_INSTALL_DATADIR}/${CM}) |
582 | + |
583 | +configure_file( |
584 | + ${CM}.service.in |
585 | + org.freedesktop.Telepathy.ConnectionManager.${CM}.service |
586 | +) |
587 | +configure_file( |
588 | + ${PROTOCOL}.protocol.in |
589 | + ${PROTOCOL}.protocol) |
590 | + |
591 | +configure_file( |
592 | + ${CM}.manager.in |
593 | + ${CM}.manager) |
594 | + |
595 | +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.freedesktop.Telepathy.ConnectionManager.${CM}.service |
596 | + DESTINATION share/dbus-1/services) |
597 | + |
598 | +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROTOCOL}.protocol |
599 | + DESTINATION share/telephony-service/protocols) |
600 | + |
601 | +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${CM}.manager |
602 | + DESTINATION share/telepathy/managers) |
603 | + |
604 | +# background and protocol icons to be displayed in the UI |
605 | +install(FILES dummy-background.png dummy.png |
606 | + DESTINATION ${DUMMY_DATADIR}/assets) |
607 | + |
608 | |
609 | === added file 'examples/mfw-plugin-dummy/data/cmake_uninstall.cmake.in' |
610 | --- examples/mfw-plugin-dummy/data/cmake_uninstall.cmake.in 1970-01-01 00:00:00 +0000 |
611 | +++ examples/mfw-plugin-dummy/data/cmake_uninstall.cmake.in 2017-03-22 21:22:50 +0000 |
612 | @@ -0,0 +1,22 @@ |
613 | +IF(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") |
614 | + MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_BINARY_DIR@/install_manifest.txt\"") |
615 | +ENDIF(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") |
616 | + |
617 | +FILE(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files) |
618 | +STRING(REGEX REPLACE "\n" ";" files "${files}") |
619 | +FOREACH(file ${files}) |
620 | + MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") |
621 | + IF(EXISTS "$ENV{DESTDIR}${file}") |
622 | + EXEC_PROGRAM( |
623 | + "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" |
624 | + OUTPUT_VARIABLE rm_out |
625 | + RETURN_VALUE rm_retval |
626 | + ) |
627 | + IF(NOT "${rm_retval}" STREQUAL 0) |
628 | + MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") |
629 | + ENDIF(NOT "${rm_retval}" STREQUAL 0) |
630 | + ELSE(EXISTS "$ENV{DESTDIR}${file}") |
631 | + MESSAGE(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") |
632 | + ENDIF(EXISTS "$ENV{DESTDIR}${file}") |
633 | +ENDFOREACH(file) |
634 | + |
635 | |
636 | === added file 'examples/mfw-plugin-dummy/data/dummy-background.png' |
637 | Binary files examples/mfw-plugin-dummy/data/dummy-background.png 1970-01-01 00:00:00 +0000 and examples/mfw-plugin-dummy/data/dummy-background.png 2017-03-22 21:22:50 +0000 differ |
638 | === added file 'examples/mfw-plugin-dummy/data/dummy.manager.in' |
639 | --- examples/mfw-plugin-dummy/data/dummy.manager.in 1970-01-01 00:00:00 +0000 |
640 | +++ examples/mfw-plugin-dummy/data/dummy.manager.in 2017-03-22 21:22:50 +0000 |
641 | @@ -0,0 +1,10 @@ |
642 | +[ConnectionManager] |
643 | +Name = @CM@ |
644 | +BusName = org.freedesktop.Telepathy.ConnectionManager.@CM@ |
645 | +ObjectPath = /org/freedesktop/Telepathy/ConnectionManager/@CM@ |
646 | + |
647 | +[Protocol @PROTOCOL@] |
648 | +param-account=s required register |
649 | +param-password=s secret |
650 | +Interfaces=org.freedesktop.Telepathy.Protocol.Interface.Addressing; |
651 | +ConnectionInterfaces=org.freedesktop.Telepathy.Connection.Interface.Requests;org.freedesktop.Telepathy.Connection.Interface.Contacts;org.freedesktop.Telepathy.Connection.Interface.SimplePresence; |
652 | |
653 | === added file 'examples/mfw-plugin-dummy/data/dummy.png' |
654 | Binary files examples/mfw-plugin-dummy/data/dummy.png 1970-01-01 00:00:00 +0000 and examples/mfw-plugin-dummy/data/dummy.png 2017-03-22 21:22:50 +0000 differ |
655 | === added file 'examples/mfw-plugin-dummy/data/dummy.protocol.in' |
656 | --- examples/mfw-plugin-dummy/data/dummy.protocol.in 1970-01-01 00:00:00 +0000 |
657 | +++ examples/mfw-plugin-dummy/data/dummy.protocol.in 2017-03-22 21:22:50 +0000 |
658 | @@ -0,0 +1,16 @@ |
659 | +[Protocol] |
660 | +Name=@PROTOCOL@ |
661 | +Features=text |
662 | +FallbackProtocol= |
663 | +BackgroundImage=@CMAKE_INSTALL_PREFIX@/@DUMMY_DATADIR@/assets/dummy-background.png |
664 | +Icon=@CMAKE_INSTALL_PREFIX@/@DUMMY_DATADIR@/assets/dummy.png |
665 | +ServiceName=Dummy |
666 | +ServiceDisplayName=Dummy |
667 | +ShowOnSelector=1 |
668 | +ShowOnlineStatus=0 |
669 | +JoinExistingChannels=1 |
670 | +ReturnToSend=1 |
671 | +EnableAttachments=0 |
672 | +EnableRejoin=1 |
673 | +EnableTabCompletion=1 |
674 | +LeaveRoomsOnClose=1 |
675 | |
676 | === added file 'examples/mfw-plugin-dummy/data/dummy.service.in' |
677 | --- examples/mfw-plugin-dummy/data/dummy.service.in 1970-01-01 00:00:00 +0000 |
678 | +++ examples/mfw-plugin-dummy/data/dummy.service.in 2017-03-22 21:22:50 +0000 |
679 | @@ -0,0 +1,3 @@ |
680 | +[D-BUS Service] |
681 | +Name=org.freedesktop.Telepathy.ConnectionManager.@CM@ |
682 | +Exec=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/messaging-framework-runner --connection-manager-name @CM@ --protocol-name @PROTOCOL@ --connector messaging::PluginConnector --PluginConnector::path=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/messaging-framework/libmfw-plugin-@CM@.so |
683 | |
684 | === added directory 'examples/mfw-plugin-dummy/debian' |
685 | === added file 'examples/mfw-plugin-dummy/debian/changelog' |
686 | --- examples/mfw-plugin-dummy/debian/changelog 1970-01-01 00:00:00 +0000 |
687 | +++ examples/mfw-plugin-dummy/debian/changelog 2017-03-22 21:22:50 +0000 |
688 | @@ -0,0 +1,5 @@ |
689 | +mfw-plugin-dummy (0.1) xenial; urgency=medium |
690 | + |
691 | + * Initial release |
692 | + |
693 | + -- Developer Of Dummy Protocol <developer@dummyprotocol.com> Mon, 05 Dec 2016 10:50:40 -0200 |
694 | |
695 | === added file 'examples/mfw-plugin-dummy/debian/compat' |
696 | --- examples/mfw-plugin-dummy/debian/compat 1970-01-01 00:00:00 +0000 |
697 | +++ examples/mfw-plugin-dummy/debian/compat 2017-03-22 21:22:50 +0000 |
698 | @@ -0,0 +1,1 @@ |
699 | +9 |
700 | |
701 | === added file 'examples/mfw-plugin-dummy/debian/control' |
702 | --- examples/mfw-plugin-dummy/debian/control 1970-01-01 00:00:00 +0000 |
703 | +++ examples/mfw-plugin-dummy/debian/control 2017-03-22 21:22:50 +0000 |
704 | @@ -0,0 +1,31 @@ |
705 | +Source: mfw-plugin-dummy |
706 | +Priority: optional |
707 | +Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> |
708 | +Build-Depends: cmake, |
709 | + debhelper (>= 9), |
710 | + doxygen, |
711 | + gcovr, |
712 | + google-mock, |
713 | + lcov, |
714 | + libboost-dev, |
715 | + libboost-filesystem-dev, |
716 | + libboost-program-options-dev, |
717 | + libboost-system-dev, |
718 | + libdbus-cpp-dev, |
719 | + libgoogle-glog-dev, |
720 | + libmessaging-framework-dev, |
721 | + libprocess-cpp-dev, |
722 | + libtelepathy-qt5-dev, |
723 | + pkg-config, |
724 | + qtbase5-dev, |
725 | + libcppnetlib-dev, |
726 | +Standards-Version: 3.9.5 |
727 | +Section: libs |
728 | +Homepage: https://launchpad.net/mfw-plugin-dummy |
729 | +Vcs-Bzr: https://code.launchpad.net/ |
730 | + |
731 | +Package: mfw-plugin-dummy |
732 | +Architecture: any |
733 | +Depends: ${misc:Depends}, ${shlibs:Depends} |
734 | +Description: Ubuntu Messaging Framework Dummy Plugin |
735 | + A plugin for messaging fw implementing Dummy protocol |
736 | |
737 | === added file 'examples/mfw-plugin-dummy/debian/copyright' |
738 | --- examples/mfw-plugin-dummy/debian/copyright 1970-01-01 00:00:00 +0000 |
739 | +++ examples/mfw-plugin-dummy/debian/copyright 2017-03-22 21:22:50 +0000 |
740 | @@ -0,0 +1,22 @@ |
741 | +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ |
742 | +Upstream-Name: mfw-plugin-dummy |
743 | +Source: https://launchpad.net/mfw-plugin-dummy |
744 | + |
745 | +Files: * |
746 | +Copyright: 2016 Canonical Ltd. |
747 | +License: LGPL-3.0 |
748 | + This package is free software; you can redistribute it and/or |
749 | + modify it under the terms of the GNU Lesser General Public |
750 | + License as published by the Free Software Foundation, version 3 of |
751 | + the License. |
752 | + . |
753 | + This package is distributed in the hope that it will be useful, |
754 | + but WITHOUT ANY WARRANTY; without even the implied warranty of |
755 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
756 | + Lesser General Public License for more details. |
757 | + . |
758 | + You should have received a copy of the GNU General Public License |
759 | + along with this program. If not, see <http://www.gnu.org/licenses/>. |
760 | + . |
761 | + On Debian systems, the complete text of the GNU Lesser General |
762 | + Public License can be found in /usr/share/common-licenses/LGPL-3. |
763 | |
764 | === added file 'examples/mfw-plugin-dummy/debian/rules' |
765 | --- examples/mfw-plugin-dummy/debian/rules 1970-01-01 00:00:00 +0000 |
766 | +++ examples/mfw-plugin-dummy/debian/rules 2017-03-22 21:22:50 +0000 |
767 | @@ -0,0 +1,19 @@ |
768 | +#!/usr/bin/make -f |
769 | +# -*- makefile -*- |
770 | + |
771 | +export DPKG_GENSYMBOLS_CHECK_LEVEL=4 |
772 | + |
773 | +include /usr/share/dpkg/default.mk |
774 | + |
775 | +BUILDHOME=$(CURDIR)/debian/build |
776 | + |
777 | +%: |
778 | + dh $@ --fail-missing |
779 | + |
780 | +override_dh_clean: |
781 | + dh_clean |
782 | + rm -rf $(BUILDHOME) |
783 | + |
784 | +override_dh_auto_test: |
785 | + mkdir -p $(BUILDHOME) |
786 | + HOME=$(BUILDHOME) dh_auto_test |
787 | |
788 | === added directory 'examples/mfw-plugin-dummy/debian/source' |
789 | === added file 'examples/mfw-plugin-dummy/debian/source/format' |
790 | --- examples/mfw-plugin-dummy/debian/source/format 1970-01-01 00:00:00 +0000 |
791 | +++ examples/mfw-plugin-dummy/debian/source/format 2017-03-22 21:22:50 +0000 |
792 | @@ -0,0 +1,1 @@ |
793 | +3.0 (native) |
794 | |
795 | === added directory 'examples/mfw-plugin-dummy/doc' |
796 | === added file 'examples/mfw-plugin-dummy/doc/CMakeLists.txt' |
797 | --- examples/mfw-plugin-dummy/doc/CMakeLists.txt 1970-01-01 00:00:00 +0000 |
798 | +++ examples/mfw-plugin-dummy/doc/CMakeLists.txt 2017-03-22 21:22:50 +0000 |
799 | @@ -0,0 +1,21 @@ |
800 | +option( |
801 | + ENABLE_DOC_GENERATION |
802 | + "Generate package documentation with doxygen" |
803 | + OFF |
804 | +) |
805 | + |
806 | +if (ENABLE_DOC_GENERATION) |
807 | + |
808 | +find_package(Doxygen) |
809 | + |
810 | +if (DOXYGEN_FOUND) |
811 | + configure_file( |
812 | + ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in |
813 | + ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) |
814 | + add_custom_target(doc ALL |
815 | + ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile |
816 | + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
817 | + COMMENT "Generating API documentation with Doxygen" VERBATIM) |
818 | + |
819 | +endif (DOXYGEN_FOUND) |
820 | +endif (ENABLE_DOC_GENERATION) |
821 | |
822 | === added file 'examples/mfw-plugin-dummy/doc/Doxyfile.in' |
823 | --- examples/mfw-plugin-dummy/doc/Doxyfile.in 1970-01-01 00:00:00 +0000 |
824 | +++ examples/mfw-plugin-dummy/doc/Doxyfile.in 2017-03-22 21:22:50 +0000 |
825 | @@ -0,0 +1,1869 @@ |
826 | +# Doxyfile 1.8.3.1 |
827 | + |
828 | +# This file describes the settings to be used by the documentation system |
829 | +# doxygen (www.doxygen.org) for a project. |
830 | +# |
831 | +# All text after a hash (#) is considered a comment and will be ignored. |
832 | +# The format is: |
833 | +# TAG = value [value, ...] |
834 | +# For lists items can also be appended using: |
835 | +# TAG += value [value, ...] |
836 | +# Values that contain spaces should be placed between quotes (" "). |
837 | + |
838 | +#--------------------------------------------------------------------------- |
839 | +# Project related configuration options |
840 | +#--------------------------------------------------------------------------- |
841 | + |
842 | +# This tag specifies the encoding used for all characters in the config file |
843 | +# that follow. The default is UTF-8 which is also the encoding used for all |
844 | +# text before the first occurrence of this tag. Doxygen uses libiconv (or the |
845 | +# iconv built into libc) for the transcoding. See |
846 | +# http://www.gnu.org/software/libiconv for the list of possible encodings. |
847 | + |
848 | +DOXYFILE_ENCODING = UTF-8 |
849 | + |
850 | +# The PROJECT_NAME tag is a single word (or sequence of words) that should |
851 | +# identify the project. Note that if you do not use Doxywizard you need |
852 | +# to put quotes around the project name if it contains spaces. |
853 | + |
854 | +PROJECT_NAME = @CMAKE_PROJECT_NAME@ |
855 | + |
856 | +# The PROJECT_NUMBER tag can be used to enter a project or revision number. |
857 | +# This could be handy for archiving the generated documentation or |
858 | +# if some version control system is used. |
859 | + |
860 | +PROJECT_NUMBER = @SO_VERSION_MAJOR@.@SO_VERSION_MINOR@.@SO_VERSION_PATCH@ |
861 | + |
862 | +# Using the PROJECT_BRIEF tag one can provide an optional one line description |
863 | +# for a project that appears at the top of each page and should give viewer |
864 | +# a quick idea about the purpose of the project. Keep the description short. |
865 | + |
866 | +PROJECT_BRIEF = "Messaging framework backend enabling Dummy Protocol on Ubuntu phones" |
867 | + |
868 | +# With the PROJECT_LOGO tag one can specify an logo or icon that is |
869 | +# included in the documentation. The maximum height of the logo should not |
870 | +# exceed 55 pixels and the maximum width should not exceed 200 pixels. |
871 | +# Doxygen will copy the logo to the output directory. |
872 | + |
873 | +PROJECT_LOGO = |
874 | + |
875 | +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) |
876 | +# base path where the generated documentation will be put. |
877 | +# If a relative path is entered, it will be relative to the location |
878 | +# where doxygen was started. If left blank the current directory will be used. |
879 | + |
880 | +OUTPUT_DIRECTORY = |
881 | + |
882 | +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create |
883 | +# 4096 sub-directories (in 2 levels) under the output directory of each output |
884 | +# format and will distribute the generated files over these directories. |
885 | +# Enabling this option can be useful when feeding doxygen a huge amount of |
886 | +# source files, where putting all generated files in the same directory would |
887 | +# otherwise cause performance problems for the file system. |
888 | + |
889 | +CREATE_SUBDIRS = NO |
890 | + |
891 | +# The OUTPUT_LANGUAGE tag is used to specify the language in which all |
892 | +# documentation generated by doxygen is written. Doxygen will use this |
893 | +# information to generate all constant output in the proper language. |
894 | +# The default language is English, other supported languages are: |
895 | +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, |
896 | +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, |
897 | +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English |
898 | +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, |
899 | +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, |
900 | +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. |
901 | + |
902 | +OUTPUT_LANGUAGE = English |
903 | + |
904 | +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will |
905 | +# include brief member descriptions after the members that are listed in |
906 | +# the file and class documentation (similar to JavaDoc). |
907 | +# Set to NO to disable this. |
908 | + |
909 | +BRIEF_MEMBER_DESC = YES |
910 | + |
911 | +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend |
912 | +# the brief description of a member or function before the detailed description. |
913 | +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the |
914 | +# brief descriptions will be completely suppressed. |
915 | + |
916 | +REPEAT_BRIEF = YES |
917 | + |
918 | +# This tag implements a quasi-intelligent brief description abbreviator |
919 | +# that is used to form the text in various listings. Each string |
920 | +# in this list, if found as the leading text of the brief description, will be |
921 | +# stripped from the text and the result after processing the whole list, is |
922 | +# used as the annotated text. Otherwise, the brief description is used as-is. |
923 | +# If left blank, the following values are used ("$name" is automatically |
924 | +# replaced with the name of the entity): "The $name class" "The $name widget" |
925 | +# "The $name file" "is" "provides" "specifies" "contains" |
926 | +# "represents" "a" "an" "the" |
927 | + |
928 | +ABBREVIATE_BRIEF = |
929 | + |
930 | +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then |
931 | +# Doxygen will generate a detailed section even if there is only a brief |
932 | +# description. |
933 | + |
934 | +ALWAYS_DETAILED_SEC = NO |
935 | + |
936 | +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all |
937 | +# inherited members of a class in the documentation of that class as if those |
938 | +# members were ordinary class members. Constructors, destructors and assignment |
939 | +# operators of the base classes will not be shown. |
940 | + |
941 | +INLINE_INHERITED_MEMB = NO |
942 | + |
943 | +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full |
944 | +# path before files name in the file list and in the header files. If set |
945 | +# to NO the shortest path that makes the file name unique will be used. |
946 | + |
947 | +FULL_PATH_NAMES = YES |
948 | + |
949 | +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag |
950 | +# can be used to strip a user-defined part of the path. Stripping is |
951 | +# only done if one of the specified strings matches the left-hand part of |
952 | +# the path. The tag can be used to show relative paths in the file list. |
953 | +# If left blank the directory from which doxygen is run is used as the |
954 | +# path to strip. Note that you specify absolute paths here, but also |
955 | +# relative paths, which will be relative from the directory where doxygen is |
956 | +# started. |
957 | + |
958 | +STRIP_FROM_PATH = |
959 | + |
960 | +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of |
961 | +# the path mentioned in the documentation of a class, which tells |
962 | +# the reader which header file to include in order to use a class. |
963 | +# If left blank only the name of the header file containing the class |
964 | +# definition is used. Otherwise one should specify the include paths that |
965 | +# are normally passed to the compiler using the -I flag. |
966 | + |
967 | +STRIP_FROM_INC_PATH = |
968 | + |
969 | +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter |
970 | +# (but less readable) file names. This can be useful if your file system |
971 | +# doesn't support long names like on DOS, Mac, or CD-ROM. |
972 | + |
973 | +SHORT_NAMES = NO |
974 | + |
975 | +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen |
976 | +# will interpret the first line (until the first dot) of a JavaDoc-style |
977 | +# comment as the brief description. If set to NO, the JavaDoc |
978 | +# comments will behave just like regular Qt-style comments |
979 | +# (thus requiring an explicit @brief command for a brief description.) |
980 | + |
981 | +JAVADOC_AUTOBRIEF = NO |
982 | + |
983 | +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will |
984 | +# interpret the first line (until the first dot) of a Qt-style |
985 | +# comment as the brief description. If set to NO, the comments |
986 | +# will behave just like regular Qt-style comments (thus requiring |
987 | +# an explicit \brief command for a brief description.) |
988 | + |
989 | +QT_AUTOBRIEF = NO |
990 | + |
991 | +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen |
992 | +# treat a multi-line C++ special comment block (i.e. a block of //! or /// |
993 | +# comments) as a brief description. This used to be the default behaviour. |
994 | +# The new default is to treat a multi-line C++ comment block as a detailed |
995 | +# description. Set this tag to YES if you prefer the old behaviour instead. |
996 | + |
997 | +MULTILINE_CPP_IS_BRIEF = NO |
998 | + |
999 | +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented |
1000 | +# member inherits the documentation from any documented member that it |
1001 | +# re-implements. |
1002 | + |
1003 | +INHERIT_DOCS = YES |
1004 | + |
1005 | +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce |
1006 | +# a new page for each member. If set to NO, the documentation of a member will |
1007 | +# be part of the file/class/namespace that contains it. |
1008 | + |
1009 | +SEPARATE_MEMBER_PAGES = NO |
1010 | + |
1011 | +# The TAB_SIZE tag can be used to set the number of spaces in a tab. |
1012 | +# Doxygen uses this value to replace tabs by spaces in code fragments. |
1013 | + |
1014 | +TAB_SIZE = 4 |
1015 | + |
1016 | +# This tag can be used to specify a number of aliases that acts |
1017 | +# as commands in the documentation. An alias has the form "name=value". |
1018 | +# For example adding "sideeffect=\par Side Effects:\n" will allow you to |
1019 | +# put the command \sideeffect (or @sideeffect) in the documentation, which |
1020 | +# will result in a user-defined paragraph with heading "Side Effects:". |
1021 | +# You can put \n's in the value part of an alias to insert newlines. |
1022 | + |
1023 | +ALIASES = |
1024 | + |
1025 | +# This tag can be used to specify a number of word-keyword mappings (TCL only). |
1026 | +# A mapping has the form "name=value". For example adding |
1027 | +# "class=itcl::class" will allow you to use the command class in the |
1028 | +# itcl::class meaning. |
1029 | + |
1030 | +TCL_SUBST = |
1031 | + |
1032 | +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C |
1033 | +# sources only. Doxygen will then generate output that is more tailored for C. |
1034 | +# For instance, some of the names that are used will be different. The list |
1035 | +# of all members will be omitted, etc. |
1036 | + |
1037 | +OPTIMIZE_OUTPUT_FOR_C = NO |
1038 | + |
1039 | +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java |
1040 | +# sources only. Doxygen will then generate output that is more tailored for |
1041 | +# Java. For instance, namespaces will be presented as packages, qualified |
1042 | +# scopes will look different, etc. |
1043 | + |
1044 | +OPTIMIZE_OUTPUT_JAVA = NO |
1045 | + |
1046 | +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran |
1047 | +# sources only. Doxygen will then generate output that is more tailored for |
1048 | +# Fortran. |
1049 | + |
1050 | +OPTIMIZE_FOR_FORTRAN = NO |
1051 | + |
1052 | +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL |
1053 | +# sources. Doxygen will then generate output that is tailored for |
1054 | +# VHDL. |
1055 | + |
1056 | +OPTIMIZE_OUTPUT_VHDL = NO |
1057 | + |
1058 | +# Doxygen selects the parser to use depending on the extension of the files it |
1059 | +# parses. With this tag you can assign which parser to use for a given |
1060 | +# extension. Doxygen has a built-in mapping, but you can override or extend it |
1061 | +# using this tag. The format is ext=language, where ext is a file extension, |
1062 | +# and language is one of the parsers supported by doxygen: IDL, Java, |
1063 | +# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, |
1064 | +# C++. For instance to make doxygen treat .inc files as Fortran files (default |
1065 | +# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note |
1066 | +# that for custom extensions you also need to set FILE_PATTERNS otherwise the |
1067 | +# files are not read by doxygen. |
1068 | + |
1069 | +EXTENSION_MAPPING = |
1070 | + |
1071 | +# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all |
1072 | +# comments according to the Markdown format, which allows for more readable |
1073 | +# documentation. See http://daringfireball.net/projects/markdown/ for details. |
1074 | +# The output of markdown processing is further processed by doxygen, so you |
1075 | +# can mix doxygen, HTML, and XML commands with Markdown formatting. |
1076 | +# Disable only in case of backward compatibilities issues. |
1077 | + |
1078 | +MARKDOWN_SUPPORT = YES |
1079 | + |
1080 | +# When enabled doxygen tries to link words that correspond to documented classes, |
1081 | +# or namespaces to their corresponding documentation. Such a link can be |
1082 | +# prevented in individual cases by by putting a % sign in front of the word or |
1083 | +# globally by setting AUTOLINK_SUPPORT to NO. |
1084 | + |
1085 | +AUTOLINK_SUPPORT = YES |
1086 | + |
1087 | +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want |
1088 | +# to include (a tag file for) the STL sources as input, then you should |
1089 | +# set this tag to YES in order to let doxygen match functions declarations and |
1090 | +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. |
1091 | +# func(std::string) {}). This also makes the inheritance and collaboration |
1092 | +# diagrams that involve STL classes more complete and accurate. |
1093 | + |
1094 | +BUILTIN_STL_SUPPORT = YES |
1095 | + |
1096 | +# If you use Microsoft's C++/CLI language, you should set this option to YES to |
1097 | +# enable parsing support. |
1098 | + |
1099 | +CPP_CLI_SUPPORT = NO |
1100 | + |
1101 | +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. |
1102 | +# Doxygen will parse them like normal C++ but will assume all classes use public |
1103 | +# instead of private inheritance when no explicit protection keyword is present. |
1104 | + |
1105 | +SIP_SUPPORT = NO |
1106 | + |
1107 | +# For Microsoft's IDL there are propget and propput attributes to indicate |
1108 | +# getter and setter methods for a property. Setting this option to YES (the |
1109 | +# default) will make doxygen replace the get and set methods by a property in |
1110 | +# the documentation. This will only work if the methods are indeed getting or |
1111 | +# setting a simple type. If this is not the case, or you want to show the |
1112 | +# methods anyway, you should set this option to NO. |
1113 | + |
1114 | +IDL_PROPERTY_SUPPORT = YES |
1115 | + |
1116 | +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC |
1117 | +# tag is set to YES, then doxygen will reuse the documentation of the first |
1118 | +# member in the group (if any) for the other members of the group. By default |
1119 | +# all members of a group must be documented explicitly. |
1120 | + |
1121 | +DISTRIBUTE_GROUP_DOC = NO |
1122 | + |
1123 | +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of |
1124 | +# the same type (for instance a group of public functions) to be put as a |
1125 | +# subgroup of that type (e.g. under the Public Functions section). Set it to |
1126 | +# NO to prevent subgrouping. Alternatively, this can be done per class using |
1127 | +# the \nosubgrouping command. |
1128 | + |
1129 | +SUBGROUPING = YES |
1130 | + |
1131 | +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and |
1132 | +# unions are shown inside the group in which they are included (e.g. using |
1133 | +# @ingroup) instead of on a separate page (for HTML and Man pages) or |
1134 | +# section (for LaTeX and RTF). |
1135 | + |
1136 | +INLINE_GROUPED_CLASSES = NO |
1137 | + |
1138 | +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and |
1139 | +# unions with only public data fields will be shown inline in the documentation |
1140 | +# of the scope in which they are defined (i.e. file, namespace, or group |
1141 | +# documentation), provided this scope is documented. If set to NO (the default), |
1142 | +# structs, classes, and unions are shown on a separate page (for HTML and Man |
1143 | +# pages) or section (for LaTeX and RTF). |
1144 | + |
1145 | +INLINE_SIMPLE_STRUCTS = NO |
1146 | + |
1147 | +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum |
1148 | +# is documented as struct, union, or enum with the name of the typedef. So |
1149 | +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct |
1150 | +# with name TypeT. When disabled the typedef will appear as a member of a file, |
1151 | +# namespace, or class. And the struct will be named TypeS. This can typically |
1152 | +# be useful for C code in case the coding convention dictates that all compound |
1153 | +# types are typedef'ed and only the typedef is referenced, never the tag name. |
1154 | + |
1155 | +TYPEDEF_HIDES_STRUCT = NO |
1156 | + |
1157 | +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to |
1158 | +# determine which symbols to keep in memory and which to flush to disk. |
1159 | +# When the cache is full, less often used symbols will be written to disk. |
1160 | +# For small to medium size projects (<1000 input files) the default value is |
1161 | +# probably good enough. For larger projects a too small cache size can cause |
1162 | +# doxygen to be busy swapping symbols to and from disk most of the time |
1163 | +# causing a significant performance penalty. |
1164 | +# If the system has enough physical memory increasing the cache will improve the |
1165 | +# performance by keeping more symbols in memory. Note that the value works on |
1166 | +# a logarithmic scale so increasing the size by one will roughly double the |
1167 | +# memory usage. The cache size is given by this formula: |
1168 | +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, |
1169 | +# corresponding to a cache size of 2^16 = 65536 symbols. |
1170 | + |
1171 | +SYMBOL_CACHE_SIZE = 0 |
1172 | + |
1173 | +# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be |
1174 | +# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given |
1175 | +# their name and scope. Since this can be an expensive process and often the |
1176 | +# same symbol appear multiple times in the code, doxygen keeps a cache of |
1177 | +# pre-resolved symbols. If the cache is too small doxygen will become slower. |
1178 | +# If the cache is too large, memory is wasted. The cache size is given by this |
1179 | +# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0, |
1180 | +# corresponding to a cache size of 2^16 = 65536 symbols. |
1181 | + |
1182 | +LOOKUP_CACHE_SIZE = 0 |
1183 | + |
1184 | +#--------------------------------------------------------------------------- |
1185 | +# Build related configuration options |
1186 | +#--------------------------------------------------------------------------- |
1187 | + |
1188 | +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in |
1189 | +# documentation are documented, even if no documentation was available. |
1190 | +# Private class members and static file members will be hidden unless |
1191 | +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES |
1192 | + |
1193 | +EXTRACT_ALL = YES |
1194 | + |
1195 | +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class |
1196 | +# will be included in the documentation. |
1197 | + |
1198 | +EXTRACT_PRIVATE = NO |
1199 | + |
1200 | +# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal |
1201 | +# scope will be included in the documentation. |
1202 | + |
1203 | +EXTRACT_PACKAGE = NO |
1204 | + |
1205 | +# If the EXTRACT_STATIC tag is set to YES all static members of a file |
1206 | +# will be included in the documentation. |
1207 | + |
1208 | +EXTRACT_STATIC = NO |
1209 | + |
1210 | +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) |
1211 | +# defined locally in source files will be included in the documentation. |
1212 | +# If set to NO only classes defined in header files are included. |
1213 | + |
1214 | +EXTRACT_LOCAL_CLASSES = YES |
1215 | + |
1216 | +# This flag is only useful for Objective-C code. When set to YES local |
1217 | +# methods, which are defined in the implementation section but not in |
1218 | +# the interface are included in the documentation. |
1219 | +# If set to NO (the default) only methods in the interface are included. |
1220 | + |
1221 | +EXTRACT_LOCAL_METHODS = NO |
1222 | + |
1223 | +# If this flag is set to YES, the members of anonymous namespaces will be |
1224 | +# extracted and appear in the documentation as a namespace called |
1225 | +# 'anonymous_namespace{file}', where file will be replaced with the base |
1226 | +# name of the file that contains the anonymous namespace. By default |
1227 | +# anonymous namespaces are hidden. |
1228 | + |
1229 | +EXTRACT_ANON_NSPACES = NO |
1230 | + |
1231 | +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all |
1232 | +# undocumented members of documented classes, files or namespaces. |
1233 | +# If set to NO (the default) these members will be included in the |
1234 | +# various overviews, but no documentation section is generated. |
1235 | +# This option has no effect if EXTRACT_ALL is enabled. |
1236 | + |
1237 | +HIDE_UNDOC_MEMBERS = NO |
1238 | + |
1239 | +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all |
1240 | +# undocumented classes that are normally visible in the class hierarchy. |
1241 | +# If set to NO (the default) these classes will be included in the various |
1242 | +# overviews. This option has no effect if EXTRACT_ALL is enabled. |
1243 | + |
1244 | +HIDE_UNDOC_CLASSES = NO |
1245 | + |
1246 | +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all |
1247 | +# friend (class|struct|union) declarations. |
1248 | +# If set to NO (the default) these declarations will be included in the |
1249 | +# documentation. |
1250 | + |
1251 | +HIDE_FRIEND_COMPOUNDS = NO |
1252 | + |
1253 | +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any |
1254 | +# documentation blocks found inside the body of a function. |
1255 | +# If set to NO (the default) these blocks will be appended to the |
1256 | +# function's detailed documentation block. |
1257 | + |
1258 | +HIDE_IN_BODY_DOCS = NO |
1259 | + |
1260 | +# The INTERNAL_DOCS tag determines if documentation |
1261 | +# that is typed after a \internal command is included. If the tag is set |
1262 | +# to NO (the default) then the documentation will be excluded. |
1263 | +# Set it to YES to include the internal documentation. |
1264 | + |
1265 | +INTERNAL_DOCS = NO |
1266 | + |
1267 | +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate |
1268 | +# file names in lower-case letters. If set to YES upper-case letters are also |
1269 | +# allowed. This is useful if you have classes or files whose names only differ |
1270 | +# in case and if your file system supports case sensitive file names. Windows |
1271 | +# and Mac users are advised to set this option to NO. |
1272 | + |
1273 | +CASE_SENSE_NAMES = YES |
1274 | + |
1275 | +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen |
1276 | +# will show members with their full class and namespace scopes in the |
1277 | +# documentation. If set to YES the scope will be hidden. |
1278 | + |
1279 | +HIDE_SCOPE_NAMES = NO |
1280 | + |
1281 | +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen |
1282 | +# will put a list of the files that are included by a file in the documentation |
1283 | +# of that file. |
1284 | + |
1285 | +SHOW_INCLUDE_FILES = YES |
1286 | + |
1287 | +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen |
1288 | +# will list include files with double quotes in the documentation |
1289 | +# rather than with sharp brackets. |
1290 | + |
1291 | +FORCE_LOCAL_INCLUDES = NO |
1292 | + |
1293 | +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] |
1294 | +# is inserted in the documentation for inline members. |
1295 | + |
1296 | +INLINE_INFO = YES |
1297 | + |
1298 | +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen |
1299 | +# will sort the (detailed) documentation of file and class members |
1300 | +# alphabetically by member name. If set to NO the members will appear in |
1301 | +# declaration order. |
1302 | + |
1303 | +SORT_MEMBER_DOCS = YES |
1304 | + |
1305 | +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the |
1306 | +# brief documentation of file, namespace and class members alphabetically |
1307 | +# by member name. If set to NO (the default) the members will appear in |
1308 | +# declaration order. |
1309 | + |
1310 | +SORT_BRIEF_DOCS = NO |
1311 | + |
1312 | +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen |
1313 | +# will sort the (brief and detailed) documentation of class members so that |
1314 | +# constructors and destructors are listed first. If set to NO (the default) |
1315 | +# the constructors will appear in the respective orders defined by |
1316 | +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. |
1317 | +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO |
1318 | +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. |
1319 | + |
1320 | +SORT_MEMBERS_CTORS_1ST = NO |
1321 | + |
1322 | +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the |
1323 | +# hierarchy of group names into alphabetical order. If set to NO (the default) |
1324 | +# the group names will appear in their defined order. |
1325 | + |
1326 | +SORT_GROUP_NAMES = NO |
1327 | + |
1328 | +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be |
1329 | +# sorted by fully-qualified names, including namespaces. If set to |
1330 | +# NO (the default), the class list will be sorted only by class name, |
1331 | +# not including the namespace part. |
1332 | +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. |
1333 | +# Note: This option applies only to the class list, not to the |
1334 | +# alphabetical list. |
1335 | + |
1336 | +SORT_BY_SCOPE_NAME = NO |
1337 | + |
1338 | +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to |
1339 | +# do proper type resolution of all parameters of a function it will reject a |
1340 | +# match between the prototype and the implementation of a member function even |
1341 | +# if there is only one candidate or it is obvious which candidate to choose |
1342 | +# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen |
1343 | +# will still accept a match between prototype and implementation in such cases. |
1344 | + |
1345 | +STRICT_PROTO_MATCHING = NO |
1346 | + |
1347 | +# The GENERATE_TODOLIST tag can be used to enable (YES) or |
1348 | +# disable (NO) the todo list. This list is created by putting \todo |
1349 | +# commands in the documentation. |
1350 | + |
1351 | +GENERATE_TODOLIST = YES |
1352 | + |
1353 | +# The GENERATE_TESTLIST tag can be used to enable (YES) or |
1354 | +# disable (NO) the test list. This list is created by putting \test |
1355 | +# commands in the documentation. |
1356 | + |
1357 | +GENERATE_TESTLIST = YES |
1358 | + |
1359 | +# The GENERATE_BUGLIST tag can be used to enable (YES) or |
1360 | +# disable (NO) the bug list. This list is created by putting \bug |
1361 | +# commands in the documentation. |
1362 | + |
1363 | +GENERATE_BUGLIST = YES |
1364 | + |
1365 | +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or |
1366 | +# disable (NO) the deprecated list. This list is created by putting |
1367 | +# \deprecated commands in the documentation. |
1368 | + |
1369 | +GENERATE_DEPRECATEDLIST= YES |
1370 | + |
1371 | +# The ENABLED_SECTIONS tag can be used to enable conditional |
1372 | +# documentation sections, marked by \if section-label ... \endif |
1373 | +# and \cond section-label ... \endcond blocks. |
1374 | + |
1375 | +ENABLED_SECTIONS = |
1376 | + |
1377 | +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines |
1378 | +# the initial value of a variable or macro consists of for it to appear in |
1379 | +# the documentation. If the initializer consists of more lines than specified |
1380 | +# here it will be hidden. Use a value of 0 to hide initializers completely. |
1381 | +# The appearance of the initializer of individual variables and macros in the |
1382 | +# documentation can be controlled using \showinitializer or \hideinitializer |
1383 | +# command in the documentation regardless of this setting. |
1384 | + |
1385 | +MAX_INITIALIZER_LINES = 30 |
1386 | + |
1387 | +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated |
1388 | +# at the bottom of the documentation of classes and structs. If set to YES the |
1389 | +# list will mention the files that were used to generate the documentation. |
1390 | + |
1391 | +SHOW_USED_FILES = YES |
1392 | + |
1393 | +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. |
1394 | +# This will remove the Files entry from the Quick Index and from the |
1395 | +# Folder Tree View (if specified). The default is YES. |
1396 | + |
1397 | +SHOW_FILES = YES |
1398 | + |
1399 | +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the |
1400 | +# Namespaces page. |
1401 | +# This will remove the Namespaces entry from the Quick Index |
1402 | +# and from the Folder Tree View (if specified). The default is YES. |
1403 | + |
1404 | +SHOW_NAMESPACES = YES |
1405 | + |
1406 | +# The FILE_VERSION_FILTER tag can be used to specify a program or script that |
1407 | +# doxygen should invoke to get the current version for each file (typically from |
1408 | +# the version control system). Doxygen will invoke the program by executing (via |
1409 | +# popen()) the command <command> <input-file>, where <command> is the value of |
1410 | +# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file |
1411 | +# provided by doxygen. Whatever the program writes to standard output |
1412 | +# is used as the file version. See the manual for examples. |
1413 | + |
1414 | +FILE_VERSION_FILTER = |
1415 | + |
1416 | +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed |
1417 | +# by doxygen. The layout file controls the global structure of the generated |
1418 | +# output files in an output format independent way. To create the layout file |
1419 | +# that represents doxygen's defaults, run doxygen with the -l option. |
1420 | +# You can optionally specify a file name after the option, if omitted |
1421 | +# DoxygenLayout.xml will be used as the name of the layout file. |
1422 | + |
1423 | +LAYOUT_FILE = |
1424 | + |
1425 | +# The CITE_BIB_FILES tag can be used to specify one or more bib files |
1426 | +# containing the references data. This must be a list of .bib files. The |
1427 | +# .bib extension is automatically appended if omitted. Using this command |
1428 | +# requires the bibtex tool to be installed. See also |
1429 | +# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style |
1430 | +# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this |
1431 | +# feature you need bibtex and perl available in the search path. Do not use |
1432 | +# file names with spaces, bibtex cannot handle them. |
1433 | + |
1434 | +CITE_BIB_FILES = |
1435 | + |
1436 | +#--------------------------------------------------------------------------- |
1437 | +# configuration options related to warning and progress messages |
1438 | +#--------------------------------------------------------------------------- |
1439 | + |
1440 | +# The QUIET tag can be used to turn on/off the messages that are generated |
1441 | +# by doxygen. Possible values are YES and NO. If left blank NO is used. |
1442 | + |
1443 | +QUIET = NO |
1444 | + |
1445 | +# The WARNINGS tag can be used to turn on/off the warning messages that are |
1446 | +# generated by doxygen. Possible values are YES and NO. If left blank |
1447 | +# NO is used. |
1448 | + |
1449 | +WARNINGS = YES |
1450 | + |
1451 | +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings |
1452 | +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will |
1453 | +# automatically be disabled. |
1454 | + |
1455 | +WARN_IF_UNDOCUMENTED = YES |
1456 | + |
1457 | +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for |
1458 | +# potential errors in the documentation, such as not documenting some |
1459 | +# parameters in a documented function, or documenting parameters that |
1460 | +# don't exist or using markup commands wrongly. |
1461 | + |
1462 | +WARN_IF_DOC_ERROR = YES |
1463 | + |
1464 | +# The WARN_NO_PARAMDOC option can be enabled to get warnings for |
1465 | +# functions that are documented, but have no documentation for their parameters |
1466 | +# or return value. If set to NO (the default) doxygen will only warn about |
1467 | +# wrong or incomplete parameter documentation, but not about the absence of |
1468 | +# documentation. |
1469 | + |
1470 | +WARN_NO_PARAMDOC = NO |
1471 | + |
1472 | +# The WARN_FORMAT tag determines the format of the warning messages that |
1473 | +# doxygen can produce. The string should contain the $file, $line, and $text |
1474 | +# tags, which will be replaced by the file and line number from which the |
1475 | +# warning originated and the warning text. Optionally the format may contain |
1476 | +# $version, which will be replaced by the version of the file (if it could |
1477 | +# be obtained via FILE_VERSION_FILTER) |
1478 | + |
1479 | +WARN_FORMAT = "$file:$line: $text" |
1480 | + |
1481 | +# The WARN_LOGFILE tag can be used to specify a file to which warning |
1482 | +# and error messages should be written. If left blank the output is written |
1483 | +# to stderr. |
1484 | + |
1485 | +WARN_LOGFILE = |
1486 | + |
1487 | +#--------------------------------------------------------------------------- |
1488 | +# configuration options related to the input files |
1489 | +#--------------------------------------------------------------------------- |
1490 | + |
1491 | +# The INPUT tag can be used to specify the files and/or directories that contain |
1492 | +# documented source files. You may enter file names like "myfile.cpp" or |
1493 | +# directories like "/usr/src/myproject". Separate the files or directories |
1494 | +# with spaces. |
1495 | + |
1496 | +INPUT = @CMAKE_SOURCE_DIR@/include @CMAKE_SOURCE_DIR@/doc |
1497 | + |
1498 | +# This tag can be used to specify the character encoding of the source files |
1499 | +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is |
1500 | +# also the default input encoding. Doxygen uses libiconv (or the iconv built |
1501 | +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for |
1502 | +# the list of possible encodings. |
1503 | + |
1504 | +INPUT_ENCODING = UTF-8 |
1505 | + |
1506 | +# If the value of the INPUT tag contains directories, you can use the |
1507 | +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp |
1508 | +# and *.h) to filter out the source-files in the directories. If left |
1509 | +# blank the following patterns are tested: |
1510 | +# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh |
1511 | +# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py |
1512 | +# *.f90 *.f *.for *.vhd *.vhdl |
1513 | + |
1514 | +FILE_PATTERNS = |
1515 | + |
1516 | +# The RECURSIVE tag can be used to turn specify whether or not subdirectories |
1517 | +# should be searched for input files as well. Possible values are YES and NO. |
1518 | +# If left blank NO is used. |
1519 | + |
1520 | +RECURSIVE = YES |
1521 | + |
1522 | +# The EXCLUDE tag can be used to specify files and/or directories that should be |
1523 | +# excluded from the INPUT source files. This way you can easily exclude a |
1524 | +# subdirectory from a directory tree whose root is specified with the INPUT tag. |
1525 | +# Note that relative paths are relative to the directory from which doxygen is |
1526 | +# run. |
1527 | + |
1528 | +EXCLUDE = |
1529 | + |
1530 | +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or |
1531 | +# directories that are symbolic links (a Unix file system feature) are excluded |
1532 | +# from the input. |
1533 | + |
1534 | +EXCLUDE_SYMLINKS = NO |
1535 | + |
1536 | +# If the value of the INPUT tag contains directories, you can use the |
1537 | +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude |
1538 | +# certain files from those directories. Note that the wildcards are matched |
1539 | +# against the file with absolute path, so to exclude all test directories |
1540 | +# for example use the pattern */test/* |
1541 | + |
1542 | +EXCLUDE_PATTERNS = |
1543 | + |
1544 | +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names |
1545 | +# (namespaces, classes, functions, etc.) that should be excluded from the |
1546 | +# output. The symbol name can be a fully qualified name, a word, or if the |
1547 | +# wildcard * is used, a substring. Examples: ANamespace, AClass, |
1548 | +# AClass::ANamespace, ANamespace::*Test |
1549 | + |
1550 | +EXCLUDE_SYMBOLS = |
1551 | + |
1552 | +# The EXAMPLE_PATH tag can be used to specify one or more files or |
1553 | +# directories that contain example code fragments that are included (see |
1554 | +# the \include command). |
1555 | + |
1556 | +EXAMPLE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/../tests |
1557 | + |
1558 | +# If the value of the EXAMPLE_PATH tag contains directories, you can use the |
1559 | +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp |
1560 | +# and *.h) to filter out the source-files in the directories. If left |
1561 | +# blank all files are included. |
1562 | + |
1563 | +EXAMPLE_PATTERNS = |
1564 | + |
1565 | +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be |
1566 | +# searched for input files to be used with the \include or \dontinclude |
1567 | +# commands irrespective of the value of the RECURSIVE tag. |
1568 | +# Possible values are YES and NO. If left blank NO is used. |
1569 | + |
1570 | +EXAMPLE_RECURSIVE = YES |
1571 | + |
1572 | +# The IMAGE_PATH tag can be used to specify one or more files or |
1573 | +# directories that contain image that are included in the documentation (see |
1574 | +# the \image command). |
1575 | + |
1576 | +IMAGE_PATH = |
1577 | + |
1578 | +# The INPUT_FILTER tag can be used to specify a program that doxygen should |
1579 | +# invoke to filter for each input file. Doxygen will invoke the filter program |
1580 | +# by executing (via popen()) the command <filter> <input-file>, where <filter> |
1581 | +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an |
1582 | +# input file. Doxygen will then use the output that the filter program writes |
1583 | +# to standard output. |
1584 | +# If FILTER_PATTERNS is specified, this tag will be |
1585 | +# ignored. |
1586 | + |
1587 | +INPUT_FILTER = |
1588 | + |
1589 | +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern |
1590 | +# basis. |
1591 | +# Doxygen will compare the file name with each pattern and apply the |
1592 | +# filter if there is a match. |
1593 | +# The filters are a list of the form: |
1594 | +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further |
1595 | +# info on how filters are used. If FILTER_PATTERNS is empty or if |
1596 | +# non of the patterns match the file name, INPUT_FILTER is applied. |
1597 | + |
1598 | +FILTER_PATTERNS = |
1599 | + |
1600 | +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using |
1601 | +# INPUT_FILTER) will be used to filter the input files when producing source |
1602 | +# files to browse (i.e. when SOURCE_BROWSER is set to YES). |
1603 | + |
1604 | +FILTER_SOURCE_FILES = NO |
1605 | + |
1606 | +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file |
1607 | +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) |
1608 | +# and it is also possible to disable source filtering for a specific pattern |
1609 | +# using *.ext= (so without naming a filter). This option only has effect when |
1610 | +# FILTER_SOURCE_FILES is enabled. |
1611 | + |
1612 | +FILTER_SOURCE_PATTERNS = |
1613 | + |
1614 | +# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that |
1615 | +# is part of the input, its contents will be placed on the main page (index.html). |
1616 | +# This can be useful if you have a project on for instance GitHub and want reuse |
1617 | +# the introduction page also for the doxygen output. |
1618 | + |
1619 | +USE_MDFILE_AS_MAINPAGE = @CMAKE_SOURCE_DIR@/README.md |
1620 | + |
1621 | +#--------------------------------------------------------------------------- |
1622 | +# configuration options related to source browsing |
1623 | +#--------------------------------------------------------------------------- |
1624 | + |
1625 | +# If the SOURCE_BROWSER tag is set to YES then a list of source files will |
1626 | +# be generated. Documented entities will be cross-referenced with these sources. |
1627 | +# Note: To get rid of all source code in the generated output, make sure also |
1628 | +# VERBATIM_HEADERS is set to NO. |
1629 | + |
1630 | +SOURCE_BROWSER = YES |
1631 | + |
1632 | +# Setting the INLINE_SOURCES tag to YES will include the body |
1633 | +# of functions and classes directly in the documentation. |
1634 | + |
1635 | +INLINE_SOURCES = NO |
1636 | + |
1637 | +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct |
1638 | +# doxygen to hide any special comment blocks from generated source code |
1639 | +# fragments. Normal C, C++ and Fortran comments will always remain visible. |
1640 | + |
1641 | +STRIP_CODE_COMMENTS = YES |
1642 | + |
1643 | +# If the REFERENCED_BY_RELATION tag is set to YES |
1644 | +# then for each documented function all documented |
1645 | +# functions referencing it will be listed. |
1646 | + |
1647 | +REFERENCED_BY_RELATION = YES |
1648 | + |
1649 | +# If the REFERENCES_RELATION tag is set to YES |
1650 | +# then for each documented function all documented entities |
1651 | +# called/used by that function will be listed. |
1652 | + |
1653 | +REFERENCES_RELATION = YES |
1654 | + |
1655 | +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) |
1656 | +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from |
1657 | +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will |
1658 | +# link to the source code. |
1659 | +# Otherwise they will link to the documentation. |
1660 | + |
1661 | +REFERENCES_LINK_SOURCE = YES |
1662 | + |
1663 | +# If the USE_HTAGS tag is set to YES then the references to source code |
1664 | +# will point to the HTML generated by the htags(1) tool instead of doxygen |
1665 | +# built-in source browser. The htags tool is part of GNU's global source |
1666 | +# tagging system (see http://www.gnu.org/software/global/global.html). You |
1667 | +# will need version 4.8.6 or higher. |
1668 | + |
1669 | +USE_HTAGS = NO |
1670 | + |
1671 | +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen |
1672 | +# will generate a verbatim copy of the header file for each class for |
1673 | +# which an include is specified. Set to NO to disable this. |
1674 | + |
1675 | +VERBATIM_HEADERS = YES |
1676 | + |
1677 | +#--------------------------------------------------------------------------- |
1678 | +# configuration options related to the alphabetical class index |
1679 | +#--------------------------------------------------------------------------- |
1680 | + |
1681 | +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index |
1682 | +# of all compounds will be generated. Enable this if the project |
1683 | +# contains a lot of classes, structs, unions or interfaces. |
1684 | + |
1685 | +ALPHABETICAL_INDEX = YES |
1686 | + |
1687 | +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then |
1688 | +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns |
1689 | +# in which this list will be split (can be a number in the range [1..20]) |
1690 | + |
1691 | +COLS_IN_ALPHA_INDEX = 5 |
1692 | + |
1693 | +# In case all classes in a project start with a common prefix, all |
1694 | +# classes will be put under the same header in the alphabetical index. |
1695 | +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that |
1696 | +# should be ignored while generating the index headers. |
1697 | + |
1698 | +IGNORE_PREFIX = |
1699 | + |
1700 | +#--------------------------------------------------------------------------- |
1701 | +# configuration options related to the HTML output |
1702 | +#--------------------------------------------------------------------------- |
1703 | + |
1704 | +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will |
1705 | +# generate HTML output. |
1706 | + |
1707 | +GENERATE_HTML = YES |
1708 | + |
1709 | +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. |
1710 | +# If a relative path is entered the value of OUTPUT_DIRECTORY will be |
1711 | +# put in front of it. If left blank `html' will be used as the default path. |
1712 | + |
1713 | +HTML_OUTPUT = html |
1714 | + |
1715 | +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for |
1716 | +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank |
1717 | +# doxygen will generate files with .html extension. |
1718 | + |
1719 | +HTML_FILE_EXTENSION = .html |
1720 | + |
1721 | +# The HTML_HEADER tag can be used to specify a personal HTML header for |
1722 | +# each generated HTML page. If it is left blank doxygen will generate a |
1723 | +# standard header. Note that when using a custom header you are responsible |
1724 | +# for the proper inclusion of any scripts and style sheets that doxygen |
1725 | +# needs, which is dependent on the configuration options used. |
1726 | +# It is advised to generate a default header using "doxygen -w html |
1727 | +# header.html footer.html stylesheet.css YourConfigFile" and then modify |
1728 | +# that header. Note that the header is subject to change so you typically |
1729 | +# have to redo this when upgrading to a newer version of doxygen or when |
1730 | +# changing the value of configuration settings such as GENERATE_TREEVIEW! |
1731 | + |
1732 | +HTML_HEADER = |
1733 | + |
1734 | +# The HTML_FOOTER tag can be used to specify a personal HTML footer for |
1735 | +# each generated HTML page. If it is left blank doxygen will generate a |
1736 | +# standard footer. |
1737 | + |
1738 | +HTML_FOOTER = |
1739 | + |
1740 | +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading |
1741 | +# style sheet that is used by each HTML page. It can be used to |
1742 | +# fine-tune the look of the HTML output. If left blank doxygen will |
1743 | +# generate a default style sheet. Note that it is recommended to use |
1744 | +# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this |
1745 | +# tag will in the future become obsolete. |
1746 | + |
1747 | +HTML_STYLESHEET = |
1748 | + |
1749 | +# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional |
1750 | +# user-defined cascading style sheet that is included after the standard |
1751 | +# style sheets created by doxygen. Using this option one can overrule |
1752 | +# certain style aspects. This is preferred over using HTML_STYLESHEET |
1753 | +# since it does not replace the standard style sheet and is therefor more |
1754 | +# robust against future updates. Doxygen will copy the style sheet file to |
1755 | +# the output directory. |
1756 | + |
1757 | +HTML_EXTRA_STYLESHEET = @CMAKE_CURRENT_SOURCE_DIR@/extra.css |
1758 | + |
1759 | +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or |
1760 | +# other source files which should be copied to the HTML output directory. Note |
1761 | +# that these files will be copied to the base HTML output directory. Use the |
1762 | +# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these |
1763 | +# files. In the HTML_STYLESHEET file, use the file name only. Also note that |
1764 | +# the files will be copied as-is; there are no commands or markers available. |
1765 | + |
1766 | +HTML_EXTRA_FILES = |
1767 | + |
1768 | +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. |
1769 | +# Doxygen will adjust the colors in the style sheet and background images |
1770 | +# according to this color. Hue is specified as an angle on a colorwheel, |
1771 | +# see http://en.wikipedia.org/wiki/Hue for more information. |
1772 | +# For instance the value 0 represents red, 60 is yellow, 120 is green, |
1773 | +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. |
1774 | +# The allowed range is 0 to 359. |
1775 | + |
1776 | +HTML_COLORSTYLE_HUE = 220 |
1777 | + |
1778 | +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of |
1779 | +# the colors in the HTML output. For a value of 0 the output will use |
1780 | +# grayscales only. A value of 255 will produce the most vivid colors. |
1781 | + |
1782 | +HTML_COLORSTYLE_SAT = 100 |
1783 | + |
1784 | +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to |
1785 | +# the luminance component of the colors in the HTML output. Values below |
1786 | +# 100 gradually make the output lighter, whereas values above 100 make |
1787 | +# the output darker. The value divided by 100 is the actual gamma applied, |
1788 | +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, |
1789 | +# and 100 does not change the gamma. |
1790 | + |
1791 | +HTML_COLORSTYLE_GAMMA = 80 |
1792 | + |
1793 | +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML |
1794 | +# page will contain the date and time when the page was generated. Setting |
1795 | +# this to NO can help when comparing the output of multiple runs. |
1796 | + |
1797 | +HTML_TIMESTAMP = YES |
1798 | + |
1799 | +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML |
1800 | +# documentation will contain sections that can be hidden and shown after the |
1801 | +# page has loaded. |
1802 | + |
1803 | +HTML_DYNAMIC_SECTIONS = YES |
1804 | + |
1805 | +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of |
1806 | +# entries shown in the various tree structured indices initially; the user |
1807 | +# can expand and collapse entries dynamically later on. Doxygen will expand |
1808 | +# the tree to such a level that at most the specified number of entries are |
1809 | +# visible (unless a fully collapsed tree already exceeds this amount). |
1810 | +# So setting the number of entries 1 will produce a full collapsed tree by |
1811 | +# default. 0 is a special value representing an infinite number of entries |
1812 | +# and will result in a full expanded tree by default. |
1813 | + |
1814 | +HTML_INDEX_NUM_ENTRIES = 100 |
1815 | + |
1816 | +# If the GENERATE_DOCSET tag is set to YES, additional index files |
1817 | +# will be generated that can be used as input for Apple's Xcode 3 |
1818 | +# integrated development environment, introduced with OSX 10.5 (Leopard). |
1819 | +# To create a documentation set, doxygen will generate a Makefile in the |
1820 | +# HTML output directory. Running make will produce the docset in that |
1821 | +# directory and running "make install" will install the docset in |
1822 | +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find |
1823 | +# it at startup. |
1824 | +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html |
1825 | +# for more information. |
1826 | + |
1827 | +GENERATE_DOCSET = NO |
1828 | + |
1829 | +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the |
1830 | +# feed. A documentation feed provides an umbrella under which multiple |
1831 | +# documentation sets from a single provider (such as a company or product suite) |
1832 | +# can be grouped. |
1833 | + |
1834 | +DOCSET_FEEDNAME = "Doxygen generated docs" |
1835 | + |
1836 | +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that |
1837 | +# should uniquely identify the documentation set bundle. This should be a |
1838 | +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen |
1839 | +# will append .docset to the name. |
1840 | + |
1841 | +DOCSET_BUNDLE_ID = org.doxygen.Project |
1842 | + |
1843 | +# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely |
1844 | +# identify the documentation publisher. This should be a reverse domain-name |
1845 | +# style string, e.g. com.mycompany.MyDocSet.documentation. |
1846 | + |
1847 | +DOCSET_PUBLISHER_ID = org.doxygen.Publisher |
1848 | + |
1849 | +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. |
1850 | + |
1851 | +DOCSET_PUBLISHER_NAME = Publisher |
1852 | + |
1853 | +# If the GENERATE_HTMLHELP tag is set to YES, additional index files |
1854 | +# will be generated that can be used as input for tools like the |
1855 | +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) |
1856 | +# of the generated HTML documentation. |
1857 | + |
1858 | +GENERATE_HTMLHELP = NO |
1859 | + |
1860 | +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can |
1861 | +# be used to specify the file name of the resulting .chm file. You |
1862 | +# can add a path in front of the file if the result should not be |
1863 | +# written to the html output directory. |
1864 | + |
1865 | +CHM_FILE = |
1866 | + |
1867 | +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can |
1868 | +# be used to specify the location (absolute path including file name) of |
1869 | +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run |
1870 | +# the HTML help compiler on the generated index.hhp. |
1871 | + |
1872 | +HHC_LOCATION = |
1873 | + |
1874 | +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag |
1875 | +# controls if a separate .chi index file is generated (YES) or that |
1876 | +# it should be included in the master .chm file (NO). |
1877 | + |
1878 | +GENERATE_CHI = NO |
1879 | + |
1880 | +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING |
1881 | +# is used to encode HtmlHelp index (hhk), content (hhc) and project file |
1882 | +# content. |
1883 | + |
1884 | +CHM_INDEX_ENCODING = |
1885 | + |
1886 | +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag |
1887 | +# controls whether a binary table of contents is generated (YES) or a |
1888 | +# normal table of contents (NO) in the .chm file. |
1889 | + |
1890 | +BINARY_TOC = NO |
1891 | + |
1892 | +# The TOC_EXPAND flag can be set to YES to add extra items for group members |
1893 | +# to the contents of the HTML help documentation and to the tree view. |
1894 | + |
1895 | +TOC_EXPAND = NO |
1896 | + |
1897 | +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and |
1898 | +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated |
1899 | +# that can be used as input for Qt's qhelpgenerator to generate a |
1900 | +# Qt Compressed Help (.qch) of the generated HTML documentation. |
1901 | + |
1902 | +GENERATE_QHP = NO |
1903 | + |
1904 | +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can |
1905 | +# be used to specify the file name of the resulting .qch file. |
1906 | +# The path specified is relative to the HTML output folder. |
1907 | + |
1908 | +QCH_FILE = |
1909 | + |
1910 | +# The QHP_NAMESPACE tag specifies the namespace to use when generating |
1911 | +# Qt Help Project output. For more information please see |
1912 | +# http://doc.trolltech.com/qthelpproject.html#namespace |
1913 | + |
1914 | +QHP_NAMESPACE = org.doxygen.Project |
1915 | + |
1916 | +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating |
1917 | +# Qt Help Project output. For more information please see |
1918 | +# http://doc.trolltech.com/qthelpproject.html#virtual-folders |
1919 | + |
1920 | +QHP_VIRTUAL_FOLDER = doc |
1921 | + |
1922 | +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to |
1923 | +# add. For more information please see |
1924 | +# http://doc.trolltech.com/qthelpproject.html#custom-filters |
1925 | + |
1926 | +QHP_CUST_FILTER_NAME = |
1927 | + |
1928 | +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the |
1929 | +# custom filter to add. For more information please see |
1930 | +# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters"> |
1931 | +# Qt Help Project / Custom Filters</a>. |
1932 | + |
1933 | +QHP_CUST_FILTER_ATTRS = |
1934 | + |
1935 | +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this |
1936 | +# project's |
1937 | +# filter section matches. |
1938 | +# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes"> |
1939 | +# Qt Help Project / Filter Attributes</a>. |
1940 | + |
1941 | +QHP_SECT_FILTER_ATTRS = |
1942 | + |
1943 | +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can |
1944 | +# be used to specify the location of Qt's qhelpgenerator. |
1945 | +# If non-empty doxygen will try to run qhelpgenerator on the generated |
1946 | +# .qhp file. |
1947 | + |
1948 | +QHG_LOCATION = |
1949 | + |
1950 | +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files |
1951 | +# will be generated, which together with the HTML files, form an Eclipse help |
1952 | +# plugin. To install this plugin and make it available under the help contents |
1953 | +# menu in Eclipse, the contents of the directory containing the HTML and XML |
1954 | +# files needs to be copied into the plugins directory of eclipse. The name of |
1955 | +# the directory within the plugins directory should be the same as |
1956 | +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before |
1957 | +# the help appears. |
1958 | + |
1959 | +GENERATE_ECLIPSEHELP = NO |
1960 | + |
1961 | +# A unique identifier for the eclipse help plugin. When installing the plugin |
1962 | +# the directory name containing the HTML and XML files should also have |
1963 | +# this name. |
1964 | + |
1965 | +ECLIPSE_DOC_ID = org.doxygen.Project |
1966 | + |
1967 | +# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) |
1968 | +# at top of each HTML page. The value NO (the default) enables the index and |
1969 | +# the value YES disables it. Since the tabs have the same information as the |
1970 | +# navigation tree you can set this option to NO if you already set |
1971 | +# GENERATE_TREEVIEW to YES. |
1972 | + |
1973 | +DISABLE_INDEX = YES |
1974 | + |
1975 | +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index |
1976 | +# structure should be generated to display hierarchical information. |
1977 | +# If the tag value is set to YES, a side panel will be generated |
1978 | +# containing a tree-like index structure (just like the one that |
1979 | +# is generated for HTML Help). For this to work a browser that supports |
1980 | +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). |
1981 | +# Windows users are probably better off using the HTML help feature. |
1982 | +# Since the tree basically has the same information as the tab index you |
1983 | +# could consider to set DISABLE_INDEX to NO when enabling this option. |
1984 | + |
1985 | +GENERATE_TREEVIEW = YES |
1986 | + |
1987 | +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values |
1988 | +# (range [0,1..20]) that doxygen will group on one line in the generated HTML |
1989 | +# documentation. Note that a value of 0 will completely suppress the enum |
1990 | +# values from appearing in the overview section. |
1991 | + |
1992 | +ENUM_VALUES_PER_LINE = 1 |
1993 | + |
1994 | +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be |
1995 | +# used to set the initial width (in pixels) of the frame in which the tree |
1996 | +# is shown. |
1997 | + |
1998 | +TREEVIEW_WIDTH = 250 |
1999 | + |
2000 | +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open |
2001 | +# links to external symbols imported via tag files in a separate window. |
2002 | + |
2003 | +EXT_LINKS_IN_WINDOW = NO |
2004 | + |
2005 | +# Use this tag to change the font size of Latex formulas included |
2006 | +# as images in the HTML documentation. The default is 10. Note that |
2007 | +# when you change the font size after a successful doxygen run you need |
2008 | +# to manually remove any form_*.png images from the HTML output directory |
2009 | +# to force them to be regenerated. |
2010 | + |
2011 | +FORMULA_FONTSIZE = 10 |
2012 | + |
2013 | +# Use the FORMULA_TRANPARENT tag to determine whether or not the images |
2014 | +# generated for formulas are transparent PNGs. Transparent PNGs are |
2015 | +# not supported properly for IE 6.0, but are supported on all modern browsers. |
2016 | +# Note that when changing this option you need to delete any form_*.png files |
2017 | +# in the HTML output before the changes have effect. |
2018 | + |
2019 | +FORMULA_TRANSPARENT = YES |
2020 | + |
2021 | +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax |
2022 | +# (see http://www.mathjax.org) which uses client side Javascript for the |
2023 | +# rendering instead of using prerendered bitmaps. Use this if you do not |
2024 | +# have LaTeX installed or if you want to formulas look prettier in the HTML |
2025 | +# output. When enabled you may also need to install MathJax separately and |
2026 | +# configure the path to it using the MATHJAX_RELPATH option. |
2027 | + |
2028 | +USE_MATHJAX = NO |
2029 | + |
2030 | +# When MathJax is enabled you can set the default output format to be used for |
2031 | +# thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and |
2032 | +# SVG. The default value is HTML-CSS, which is slower, but has the best |
2033 | +# compatibility. |
2034 | + |
2035 | +MATHJAX_FORMAT = HTML-CSS |
2036 | + |
2037 | +# When MathJax is enabled you need to specify the location relative to the |
2038 | +# HTML output directory using the MATHJAX_RELPATH option. The destination |
2039 | +# directory should contain the MathJax.js script. For instance, if the mathjax |
2040 | +# directory is located at the same level as the HTML output directory, then |
2041 | +# MATHJAX_RELPATH should be ../mathjax. The default value points to |
2042 | +# the MathJax Content Delivery Network so you can quickly see the result without |
2043 | +# installing MathJax. |
2044 | +# However, it is strongly recommended to install a local |
2045 | +# copy of MathJax from http://www.mathjax.org before deployment. |
2046 | + |
2047 | +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest |
2048 | + |
2049 | +# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension |
2050 | +# names that should be enabled during MathJax rendering. |
2051 | + |
2052 | +MATHJAX_EXTENSIONS = |
2053 | + |
2054 | +# When the SEARCHENGINE tag is enabled doxygen will generate a search box |
2055 | +# for the HTML output. The underlying search engine uses javascript |
2056 | +# and DHTML and should work on any modern browser. Note that when using |
2057 | +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets |
2058 | +# (GENERATE_DOCSET) there is already a search function so this one should |
2059 | +# typically be disabled. For large projects the javascript based search engine |
2060 | +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. |
2061 | + |
2062 | +SEARCHENGINE = NO |
2063 | + |
2064 | +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be |
2065 | +# implemented using a web server instead of a web client using Javascript. |
2066 | +# There are two flavours of web server based search depending on the |
2067 | +# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for |
2068 | +# searching and an index file used by the script. When EXTERNAL_SEARCH is |
2069 | +# enabled the indexing and searching needs to be provided by external tools. |
2070 | +# See the manual for details. |
2071 | + |
2072 | +SERVER_BASED_SEARCH = NO |
2073 | + |
2074 | +# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP |
2075 | +# script for searching. Instead the search results are written to an XML file |
2076 | +# which needs to be processed by an external indexer. Doxygen will invoke an |
2077 | +# external search engine pointed to by the SEARCHENGINE_URL option to obtain |
2078 | +# the search results. Doxygen ships with an example indexer (doxyindexer) and |
2079 | +# search engine (doxysearch.cgi) which are based on the open source search engine |
2080 | +# library Xapian. See the manual for configuration details. |
2081 | + |
2082 | +EXTERNAL_SEARCH = NO |
2083 | + |
2084 | +# The SEARCHENGINE_URL should point to a search engine hosted by a web server |
2085 | +# which will returned the search results when EXTERNAL_SEARCH is enabled. |
2086 | +# Doxygen ships with an example search engine (doxysearch) which is based on |
2087 | +# the open source search engine library Xapian. See the manual for configuration |
2088 | +# details. |
2089 | + |
2090 | +SEARCHENGINE_URL = |
2091 | + |
2092 | +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed |
2093 | +# search data is written to a file for indexing by an external tool. With the |
2094 | +# SEARCHDATA_FILE tag the name of this file can be specified. |
2095 | + |
2096 | +SEARCHDATA_FILE = searchdata.xml |
2097 | + |
2098 | +# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the |
2099 | +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is |
2100 | +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple |
2101 | +# projects and redirect the results back to the right project. |
2102 | + |
2103 | +EXTERNAL_SEARCH_ID = |
2104 | + |
2105 | +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen |
2106 | +# projects other than the one defined by this configuration file, but that are |
2107 | +# all added to the same external search index. Each project needs to have a |
2108 | +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id |
2109 | +# of to a relative location where the documentation can be found. |
2110 | +# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ... |
2111 | + |
2112 | +EXTRA_SEARCH_MAPPINGS = |
2113 | + |
2114 | +#--------------------------------------------------------------------------- |
2115 | +# configuration options related to the LaTeX output |
2116 | +#--------------------------------------------------------------------------- |
2117 | + |
2118 | +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will |
2119 | +# generate Latex output. |
2120 | + |
2121 | +GENERATE_LATEX = YES |
2122 | + |
2123 | +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. |
2124 | +# If a relative path is entered the value of OUTPUT_DIRECTORY will be |
2125 | +# put in front of it. If left blank `latex' will be used as the default path. |
2126 | + |
2127 | +LATEX_OUTPUT = latex |
2128 | + |
2129 | +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be |
2130 | +# invoked. If left blank `latex' will be used as the default command name. |
2131 | +# Note that when enabling USE_PDFLATEX this option is only used for |
2132 | +# generating bitmaps for formulas in the HTML output, but not in the |
2133 | +# Makefile that is written to the output directory. |
2134 | + |
2135 | +LATEX_CMD_NAME = latex |
2136 | + |
2137 | +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to |
2138 | +# generate index for LaTeX. If left blank `makeindex' will be used as the |
2139 | +# default command name. |
2140 | + |
2141 | +MAKEINDEX_CMD_NAME = makeindex |
2142 | + |
2143 | +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact |
2144 | +# LaTeX documents. This may be useful for small projects and may help to |
2145 | +# save some trees in general. |
2146 | + |
2147 | +COMPACT_LATEX = YES |
2148 | + |
2149 | +# The PAPER_TYPE tag can be used to set the paper type that is used |
2150 | +# by the printer. Possible values are: a4, letter, legal and |
2151 | +# executive. If left blank a4wide will be used. |
2152 | + |
2153 | +PAPER_TYPE = a4 |
2154 | + |
2155 | +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX |
2156 | +# packages that should be included in the LaTeX output. |
2157 | + |
2158 | +EXTRA_PACKAGES = |
2159 | + |
2160 | +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for |
2161 | +# the generated latex document. The header should contain everything until |
2162 | +# the first chapter. If it is left blank doxygen will generate a |
2163 | +# standard header. Notice: only use this tag if you know what you are doing! |
2164 | + |
2165 | +LATEX_HEADER = |
2166 | + |
2167 | +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for |
2168 | +# the generated latex document. The footer should contain everything after |
2169 | +# the last chapter. If it is left blank doxygen will generate a |
2170 | +# standard footer. Notice: only use this tag if you know what you are doing! |
2171 | + |
2172 | +LATEX_FOOTER = |
2173 | + |
2174 | +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated |
2175 | +# is prepared for conversion to pdf (using ps2pdf). The pdf file will |
2176 | +# contain links (just like the HTML output) instead of page references |
2177 | +# This makes the output suitable for online browsing using a pdf viewer. |
2178 | + |
2179 | +PDF_HYPERLINKS = YES |
2180 | + |
2181 | +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of |
2182 | +# plain latex in the generated Makefile. Set this option to YES to get a |
2183 | +# higher quality PDF documentation. |
2184 | + |
2185 | +USE_PDFLATEX = YES |
2186 | + |
2187 | +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. |
2188 | +# command to the generated LaTeX files. This will instruct LaTeX to keep |
2189 | +# running if errors occur, instead of asking the user for help. |
2190 | +# This option is also used when generating formulas in HTML. |
2191 | + |
2192 | +LATEX_BATCHMODE = NO |
2193 | + |
2194 | +# If LATEX_HIDE_INDICES is set to YES then doxygen will not |
2195 | +# include the index chapters (such as File Index, Compound Index, etc.) |
2196 | +# in the output. |
2197 | + |
2198 | +LATEX_HIDE_INDICES = NO |
2199 | + |
2200 | +# If LATEX_SOURCE_CODE is set to YES then doxygen will include |
2201 | +# source code with syntax highlighting in the LaTeX output. |
2202 | +# Note that which sources are shown also depends on other settings |
2203 | +# such as SOURCE_BROWSER. |
2204 | + |
2205 | +LATEX_SOURCE_CODE = NO |
2206 | + |
2207 | +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the |
2208 | +# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See |
2209 | +# http://en.wikipedia.org/wiki/BibTeX for more info. |
2210 | + |
2211 | +LATEX_BIB_STYLE = plain |
2212 | + |
2213 | +#--------------------------------------------------------------------------- |
2214 | +# configuration options related to the RTF output |
2215 | +#--------------------------------------------------------------------------- |
2216 | + |
2217 | +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output |
2218 | +# The RTF output is optimized for Word 97 and may not look very pretty with |
2219 | +# other RTF readers or editors. |
2220 | + |
2221 | +GENERATE_RTF = NO |
2222 | + |
2223 | +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. |
2224 | +# If a relative path is entered the value of OUTPUT_DIRECTORY will be |
2225 | +# put in front of it. If left blank `rtf' will be used as the default path. |
2226 | + |
2227 | +RTF_OUTPUT = rtf |
2228 | + |
2229 | +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact |
2230 | +# RTF documents. This may be useful for small projects and may help to |
2231 | +# save some trees in general. |
2232 | + |
2233 | +COMPACT_RTF = NO |
2234 | + |
2235 | +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated |
2236 | +# will contain hyperlink fields. The RTF file will |
2237 | +# contain links (just like the HTML output) instead of page references. |
2238 | +# This makes the output suitable for online browsing using WORD or other |
2239 | +# programs which support those fields. |
2240 | +# Note: wordpad (write) and others do not support links. |
2241 | + |
2242 | +RTF_HYPERLINKS = NO |
2243 | + |
2244 | +# Load style sheet definitions from file. Syntax is similar to doxygen's |
2245 | +# config file, i.e. a series of assignments. You only have to provide |
2246 | +# replacements, missing definitions are set to their default value. |
2247 | + |
2248 | +RTF_STYLESHEET_FILE = |
2249 | + |
2250 | +# Set optional variables used in the generation of an rtf document. |
2251 | +# Syntax is similar to doxygen's config file. |
2252 | + |
2253 | +RTF_EXTENSIONS_FILE = |
2254 | + |
2255 | +#--------------------------------------------------------------------------- |
2256 | +# configuration options related to the man page output |
2257 | +#--------------------------------------------------------------------------- |
2258 | + |
2259 | +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will |
2260 | +# generate man pages |
2261 | + |
2262 | +GENERATE_MAN = YES |
2263 | + |
2264 | +# The MAN_OUTPUT tag is used to specify where the man pages will be put. |
2265 | +# If a relative path is entered the value of OUTPUT_DIRECTORY will be |
2266 | +# put in front of it. If left blank `man' will be used as the default path. |
2267 | + |
2268 | +MAN_OUTPUT = man |
2269 | + |
2270 | +# The MAN_EXTENSION tag determines the extension that is added to |
2271 | +# the generated man pages (default is the subroutine's section .3) |
2272 | + |
2273 | +MAN_EXTENSION = .3 |
2274 | + |
2275 | +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, |
2276 | +# then it will generate one additional man file for each entity |
2277 | +# documented in the real man page(s). These additional files |
2278 | +# only source the real man page, but without them the man command |
2279 | +# would be unable to find the correct page. The default is NO. |
2280 | + |
2281 | +MAN_LINKS = NO |
2282 | + |
2283 | +#--------------------------------------------------------------------------- |
2284 | +# configuration options related to the XML output |
2285 | +#--------------------------------------------------------------------------- |
2286 | + |
2287 | +# If the GENERATE_XML tag is set to YES Doxygen will |
2288 | +# generate an XML file that captures the structure of |
2289 | +# the code including all documentation. |
2290 | + |
2291 | +GENERATE_XML = NO |
2292 | + |
2293 | +# The XML_OUTPUT tag is used to specify where the XML pages will be put. |
2294 | +# If a relative path is entered the value of OUTPUT_DIRECTORY will be |
2295 | +# put in front of it. If left blank `xml' will be used as the default path. |
2296 | + |
2297 | +XML_OUTPUT = xml |
2298 | + |
2299 | +# The XML_SCHEMA tag can be used to specify an XML schema, |
2300 | +# which can be used by a validating XML parser to check the |
2301 | +# syntax of the XML files. |
2302 | + |
2303 | +XML_SCHEMA = |
2304 | + |
2305 | +# The XML_DTD tag can be used to specify an XML DTD, |
2306 | +# which can be used by a validating XML parser to check the |
2307 | +# syntax of the XML files. |
2308 | + |
2309 | +XML_DTD = |
2310 | + |
2311 | +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will |
2312 | +# dump the program listings (including syntax highlighting |
2313 | +# and cross-referencing information) to the XML output. Note that |
2314 | +# enabling this will significantly increase the size of the XML output. |
2315 | + |
2316 | +XML_PROGRAMLISTING = YES |
2317 | + |
2318 | +#--------------------------------------------------------------------------- |
2319 | +# configuration options for the AutoGen Definitions output |
2320 | +#--------------------------------------------------------------------------- |
2321 | + |
2322 | +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will |
2323 | +# generate an AutoGen Definitions (see autogen.sf.net) file |
2324 | +# that captures the structure of the code including all |
2325 | +# documentation. Note that this feature is still experimental |
2326 | +# and incomplete at the moment. |
2327 | + |
2328 | +GENERATE_AUTOGEN_DEF = NO |
2329 | + |
2330 | +#--------------------------------------------------------------------------- |
2331 | +# configuration options related to the Perl module output |
2332 | +#--------------------------------------------------------------------------- |
2333 | + |
2334 | +# If the GENERATE_PERLMOD tag is set to YES Doxygen will |
2335 | +# generate a Perl module file that captures the structure of |
2336 | +# the code including all documentation. Note that this |
2337 | +# feature is still experimental and incomplete at the |
2338 | +# moment. |
2339 | + |
2340 | +GENERATE_PERLMOD = NO |
2341 | + |
2342 | +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate |
2343 | +# the necessary Makefile rules, Perl scripts and LaTeX code to be able |
2344 | +# to generate PDF and DVI output from the Perl module output. |
2345 | + |
2346 | +PERLMOD_LATEX = NO |
2347 | + |
2348 | +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be |
2349 | +# nicely formatted so it can be parsed by a human reader. |
2350 | +# This is useful |
2351 | +# if you want to understand what is going on. |
2352 | +# On the other hand, if this |
2353 | +# tag is set to NO the size of the Perl module output will be much smaller |
2354 | +# and Perl will parse it just the same. |
2355 | + |
2356 | +PERLMOD_PRETTY = YES |
2357 | + |
2358 | +# The names of the make variables in the generated doxyrules.make file |
2359 | +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. |
2360 | +# This is useful so different doxyrules.make files included by the same |
2361 | +# Makefile don't overwrite each other's variables. |
2362 | + |
2363 | +PERLMOD_MAKEVAR_PREFIX = |
2364 | + |
2365 | +#--------------------------------------------------------------------------- |
2366 | +# Configuration options related to the preprocessor |
2367 | +#--------------------------------------------------------------------------- |
2368 | + |
2369 | +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will |
2370 | +# evaluate all C-preprocessor directives found in the sources and include |
2371 | +# files. |
2372 | + |
2373 | +ENABLE_PREPROCESSING = YES |
2374 | + |
2375 | +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro |
2376 | +# names in the source code. If set to NO (the default) only conditional |
2377 | +# compilation will be performed. Macro expansion can be done in a controlled |
2378 | +# way by setting EXPAND_ONLY_PREDEF to YES. |
2379 | + |
2380 | +MACRO_EXPANSION = NO |
2381 | + |
2382 | +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES |
2383 | +# then the macro expansion is limited to the macros specified with the |
2384 | +# PREDEFINED and EXPAND_AS_DEFINED tags. |
2385 | + |
2386 | +EXPAND_ONLY_PREDEF = NO |
2387 | + |
2388 | +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files |
2389 | +# pointed to by INCLUDE_PATH will be searched when a #include is found. |
2390 | + |
2391 | +SEARCH_INCLUDES = YES |
2392 | + |
2393 | +# The INCLUDE_PATH tag can be used to specify one or more directories that |
2394 | +# contain include files that are not input files but should be processed by |
2395 | +# the preprocessor. |
2396 | + |
2397 | +INCLUDE_PATH = |
2398 | + |
2399 | +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard |
2400 | +# patterns (like *.h and *.hpp) to filter out the header-files in the |
2401 | +# directories. If left blank, the patterns specified with FILE_PATTERNS will |
2402 | +# be used. |
2403 | + |
2404 | +INCLUDE_FILE_PATTERNS = |
2405 | + |
2406 | +# The PREDEFINED tag can be used to specify one or more macro names that |
2407 | +# are defined before the preprocessor is started (similar to the -D option of |
2408 | +# gcc). The argument of the tag is a list of macros of the form: name |
2409 | +# or name=definition (no spaces). If the definition and the = are |
2410 | +# omitted =1 is assumed. To prevent a macro definition from being |
2411 | +# undefined via #undef or recursively expanded use the := operator |
2412 | +# instead of the = operator. |
2413 | + |
2414 | +PREDEFINED = |
2415 | + |
2416 | +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then |
2417 | +# this tag can be used to specify a list of macro names that should be expanded. |
2418 | +# The macro definition that is found in the sources will be used. |
2419 | +# Use the PREDEFINED tag if you want to use a different macro definition that |
2420 | +# overrules the definition found in the source code. |
2421 | + |
2422 | +EXPAND_AS_DEFINED = |
2423 | + |
2424 | +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then |
2425 | +# doxygen's preprocessor will remove all references to function-like macros |
2426 | +# that are alone on a line, have an all uppercase name, and do not end with a |
2427 | +# semicolon, because these will confuse the parser if not removed. |
2428 | + |
2429 | +SKIP_FUNCTION_MACROS = YES |
2430 | + |
2431 | +#--------------------------------------------------------------------------- |
2432 | +# Configuration::additions related to external references |
2433 | +#--------------------------------------------------------------------------- |
2434 | + |
2435 | +# The TAGFILES option can be used to specify one or more tagfiles. For each |
2436 | +# tag file the location of the external documentation should be added. The |
2437 | +# format of a tag file without this location is as follows: |
2438 | +# |
2439 | +# TAGFILES = file1 file2 ... |
2440 | +# Adding location for the tag files is done as follows: |
2441 | +# |
2442 | +# TAGFILES = file1=loc1 "file2 = loc2" ... |
2443 | +# where "loc1" and "loc2" can be relative or absolute paths |
2444 | +# or URLs. Note that each tag file must have a unique name (where the name does |
2445 | +# NOT include the path). If a tag file is not located in the directory in which |
2446 | +# doxygen is run, you must also specify the path to the tagfile here. |
2447 | + |
2448 | +TAGFILES = |
2449 | + |
2450 | +# When a file name is specified after GENERATE_TAGFILE, doxygen will create |
2451 | +# a tag file that is based on the input files it reads. |
2452 | + |
2453 | +GENERATE_TAGFILE = |
2454 | + |
2455 | +# If the ALLEXTERNALS tag is set to YES all external classes will be listed |
2456 | +# in the class index. If set to NO only the inherited external classes |
2457 | +# will be listed. |
2458 | + |
2459 | +ALLEXTERNALS = NO |
2460 | + |
2461 | +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed |
2462 | +# in the modules index. If set to NO, only the current project's groups will |
2463 | +# be listed. |
2464 | + |
2465 | +EXTERNAL_GROUPS = YES |
2466 | + |
2467 | +# The PERL_PATH should be the absolute path and name of the perl script |
2468 | +# interpreter (i.e. the result of `which perl'). |
2469 | + |
2470 | +PERL_PATH = /usr/bin/perl |
2471 | + |
2472 | +#--------------------------------------------------------------------------- |
2473 | +# Configuration options related to the dot tool |
2474 | +#--------------------------------------------------------------------------- |
2475 | + |
2476 | +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will |
2477 | +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base |
2478 | +# or super classes. Setting the tag to NO turns the diagrams off. Note that |
2479 | +# this option also works with HAVE_DOT disabled, but it is recommended to |
2480 | +# install and use dot, since it yields more powerful graphs. |
2481 | + |
2482 | +CLASS_DIAGRAMS = YES |
2483 | + |
2484 | +# You can define message sequence charts within doxygen comments using the \msc |
2485 | +# command. Doxygen will then run the mscgen tool (see |
2486 | +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the |
2487 | +# documentation. The MSCGEN_PATH tag allows you to specify the directory where |
2488 | +# the mscgen tool resides. If left empty the tool is assumed to be found in the |
2489 | +# default search path. |
2490 | + |
2491 | +MSCGEN_PATH = |
2492 | + |
2493 | +# If set to YES, the inheritance and collaboration graphs will hide |
2494 | +# inheritance and usage relations if the target is undocumented |
2495 | +# or is not a class. |
2496 | + |
2497 | +HIDE_UNDOC_RELATIONS = NO |
2498 | + |
2499 | +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is |
2500 | +# available from the path. This tool is part of Graphviz, a graph visualization |
2501 | +# toolkit from AT&T and Lucent Bell Labs. The other options in this section |
2502 | +# have no effect if this option is set to NO (the default) |
2503 | + |
2504 | +HAVE_DOT = YES |
2505 | + |
2506 | +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is |
2507 | +# allowed to run in parallel. When set to 0 (the default) doxygen will |
2508 | +# base this on the number of processors available in the system. You can set it |
2509 | +# explicitly to a value larger than 0 to get control over the balance |
2510 | +# between CPU load and processing speed. |
2511 | + |
2512 | +DOT_NUM_THREADS = 1 |
2513 | + |
2514 | +# By default doxygen will use the Helvetica font for all dot files that |
2515 | +# doxygen generates. When you want a differently looking font you can specify |
2516 | +# the font name using DOT_FONTNAME. You need to make sure dot is able to find |
2517 | +# the font, which can be done by putting it in a standard location or by setting |
2518 | +# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the |
2519 | +# directory containing the font. |
2520 | + |
2521 | +DOT_FONTNAME = Helvetica |
2522 | + |
2523 | +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. |
2524 | +# The default size is 10pt. |
2525 | + |
2526 | +DOT_FONTSIZE = 10 |
2527 | + |
2528 | +# By default doxygen will tell dot to use the Helvetica font. |
2529 | +# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to |
2530 | +# set the path where dot can find it. |
2531 | + |
2532 | +DOT_FONTPATH = |
2533 | + |
2534 | +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen |
2535 | +# will generate a graph for each documented class showing the direct and |
2536 | +# indirect inheritance relations. Setting this tag to YES will force the |
2537 | +# CLASS_DIAGRAMS tag to NO. |
2538 | + |
2539 | +CLASS_GRAPH = YES |
2540 | + |
2541 | +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen |
2542 | +# will generate a graph for each documented class showing the direct and |
2543 | +# indirect implementation dependencies (inheritance, containment, and |
2544 | +# class references variables) of the class with other documented classes. |
2545 | + |
2546 | +COLLABORATION_GRAPH = YES |
2547 | + |
2548 | +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen |
2549 | +# will generate a graph for groups, showing the direct groups dependencies |
2550 | + |
2551 | +GROUP_GRAPHS = YES |
2552 | + |
2553 | +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and |
2554 | +# collaboration diagrams in a style similar to the OMG's Unified Modeling |
2555 | +# Language. |
2556 | + |
2557 | +UML_LOOK = YES |
2558 | + |
2559 | +# If the UML_LOOK tag is enabled, the fields and methods are shown inside |
2560 | +# the class node. If there are many fields or methods and many nodes the |
2561 | +# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS |
2562 | +# threshold limits the number of items for each type to make the size more |
2563 | +# managable. Set this to 0 for no limit. Note that the threshold may be |
2564 | +# exceeded by 50% before the limit is enforced. |
2565 | + |
2566 | +UML_LIMIT_NUM_FIELDS = 10 |
2567 | + |
2568 | +# If set to YES, the inheritance and collaboration graphs will show the |
2569 | +# relations between templates and their instances. |
2570 | + |
2571 | +TEMPLATE_RELATIONS = NO |
2572 | + |
2573 | +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT |
2574 | +# tags are set to YES then doxygen will generate a graph for each documented |
2575 | +# file showing the direct and indirect include dependencies of the file with |
2576 | +# other documented files. |
2577 | + |
2578 | +INCLUDE_GRAPH = YES |
2579 | + |
2580 | +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and |
2581 | +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each |
2582 | +# documented header file showing the documented files that directly or |
2583 | +# indirectly include this file. |
2584 | + |
2585 | +INCLUDED_BY_GRAPH = YES |
2586 | + |
2587 | +# If the CALL_GRAPH and HAVE_DOT options are set to YES then |
2588 | +# doxygen will generate a call dependency graph for every global function |
2589 | +# or class method. Note that enabling this option will significantly increase |
2590 | +# the time of a run. So in most cases it will be better to enable call graphs |
2591 | +# for selected functions only using the \callgraph command. |
2592 | + |
2593 | +CALL_GRAPH = YES |
2594 | + |
2595 | +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then |
2596 | +# doxygen will generate a caller dependency graph for every global function |
2597 | +# or class method. Note that enabling this option will significantly increase |
2598 | +# the time of a run. So in most cases it will be better to enable caller |
2599 | +# graphs for selected functions only using the \callergraph command. |
2600 | + |
2601 | +CALLER_GRAPH = NO |
2602 | + |
2603 | +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen |
2604 | +# will generate a graphical hierarchy of all classes instead of a textual one. |
2605 | + |
2606 | +GRAPHICAL_HIERARCHY = YES |
2607 | + |
2608 | +# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES |
2609 | +# then doxygen will show the dependencies a directory has on other directories |
2610 | +# in a graphical way. The dependency relations are determined by the #include |
2611 | +# relations between the files in the directories. |
2612 | + |
2613 | +DIRECTORY_GRAPH = YES |
2614 | + |
2615 | +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images |
2616 | +# generated by dot. Possible values are svg, png, jpg, or gif. |
2617 | +# If left blank png will be used. If you choose svg you need to set |
2618 | +# HTML_FILE_EXTENSION to xhtml in order to make the SVG files |
2619 | +# visible in IE 9+ (other browsers do not have this requirement). |
2620 | + |
2621 | +DOT_IMAGE_FORMAT = png |
2622 | + |
2623 | +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to |
2624 | +# enable generation of interactive SVG images that allow zooming and panning. |
2625 | +# Note that this requires a modern browser other than Internet Explorer. |
2626 | +# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you |
2627 | +# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files |
2628 | +# visible. Older versions of IE do not have SVG support. |
2629 | + |
2630 | +INTERACTIVE_SVG = YES |
2631 | + |
2632 | +# The tag DOT_PATH can be used to specify the path where the dot tool can be |
2633 | +# found. If left blank, it is assumed the dot tool can be found in the path. |
2634 | + |
2635 | +DOT_PATH = |
2636 | + |
2637 | +# The DOTFILE_DIRS tag can be used to specify one or more directories that |
2638 | +# contain dot files that are included in the documentation (see the |
2639 | +# \dotfile command). |
2640 | + |
2641 | +DOTFILE_DIRS = |
2642 | + |
2643 | +# The MSCFILE_DIRS tag can be used to specify one or more directories that |
2644 | +# contain msc files that are included in the documentation (see the |
2645 | +# \mscfile command). |
2646 | + |
2647 | +MSCFILE_DIRS = |
2648 | + |
2649 | +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of |
2650 | +# nodes that will be shown in the graph. If the number of nodes in a graph |
2651 | +# becomes larger than this value, doxygen will truncate the graph, which is |
2652 | +# visualized by representing a node as a red box. Note that doxygen if the |
2653 | +# number of direct children of the root node in a graph is already larger than |
2654 | +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note |
2655 | +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. |
2656 | + |
2657 | +DOT_GRAPH_MAX_NODES = 50 |
2658 | + |
2659 | +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the |
2660 | +# graphs generated by dot. A depth value of 3 means that only nodes reachable |
2661 | +# from the root by following a path via at most 3 edges will be shown. Nodes |
2662 | +# that lay further from the root node will be omitted. Note that setting this |
2663 | +# option to 1 or 2 may greatly reduce the computation time needed for large |
2664 | +# code bases. Also note that the size of a graph can be further restricted by |
2665 | +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. |
2666 | + |
2667 | +MAX_DOT_GRAPH_DEPTH = 0 |
2668 | + |
2669 | +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent |
2670 | +# background. This is disabled by default, because dot on Windows does not |
2671 | +# seem to support this out of the box. Warning: Depending on the platform used, |
2672 | +# enabling this option may lead to badly anti-aliased labels on the edges of |
2673 | +# a graph (i.e. they become hard to read). |
2674 | + |
2675 | +DOT_TRANSPARENT = YES |
2676 | + |
2677 | +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output |
2678 | +# files in one run (i.e. multiple -o and -T options on the command line). This |
2679 | +# makes dot run faster, but since only newer versions of dot (>1.8.10) |
2680 | +# support this, this feature is disabled by default. |
2681 | + |
2682 | +DOT_MULTI_TARGETS = YES |
2683 | + |
2684 | +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will |
2685 | +# generate a legend page explaining the meaning of the various boxes and |
2686 | +# arrows in the dot generated graphs. |
2687 | + |
2688 | +GENERATE_LEGEND = YES |
2689 | + |
2690 | +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will |
2691 | +# remove the intermediate dot files that are used to generate |
2692 | +# the various graphs. |
2693 | + |
2694 | +DOT_CLEANUP = YES |
2695 | |
2696 | === added directory 'examples/mfw-plugin-dummy/include' |
2697 | === added file 'examples/mfw-plugin-dummy/include/CMakeLists.txt' |
2698 | --- examples/mfw-plugin-dummy/include/CMakeLists.txt 1970-01-01 00:00:00 +0000 |
2699 | +++ examples/mfw-plugin-dummy/include/CMakeLists.txt 2017-03-22 21:22:50 +0000 |
2700 | @@ -0,0 +1,3 @@ |
2701 | +# make the .h files visible on qtcreator |
2702 | +file(GLOB_RECURSE H_FILES_PLUGIN *.h) |
2703 | +add_custom_target(dot_h_files_plugin ALL SOURCES ${H_FILES_PLUGIN}) |
2704 | |
2705 | === added directory 'examples/mfw-plugin-dummy/include/dummy' |
2706 | === added file 'examples/mfw-plugin-dummy/include/dummy/chat.h' |
2707 | --- examples/mfw-plugin-dummy/include/dummy/chat.h 1970-01-01 00:00:00 +0000 |
2708 | +++ examples/mfw-plugin-dummy/include/dummy/chat.h 2017-03-22 21:22:50 +0000 |
2709 | @@ -0,0 +1,31 @@ |
2710 | +#ifndef DUMMY_CLI_CHAT |
2711 | +#define DUMMY_CLI_CHAT |
2712 | + |
2713 | +#include <messaging/chat.h> |
2714 | + |
2715 | +#include <map> |
2716 | + |
2717 | +namespace dummy |
2718 | +{ |
2719 | + |
2720 | +/// @brief base class not instantiable for ContactChat, GroupChat, ... |
2721 | +class Chat |
2722 | + : public messaging::Chat |
2723 | +{ |
2724 | +public: |
2725 | + virtual ~Chat(); |
2726 | + std::string download_file(std::string) override; |
2727 | + void handle_incoming_message(const messaging::Message& message); |
2728 | + |
2729 | +protected: |
2730 | + Chat(const std::shared_ptr<messaging::Chat::Observer>& observer); |
2731 | + |
2732 | + void mark_message_as_delivered(const std::string &alias, uint session_id = 0); |
2733 | + void mark_message_as_read(const std::string &alias, uint session_id = 0); |
2734 | + |
2735 | +}; |
2736 | + |
2737 | +} |
2738 | + |
2739 | +#endif // DUMMY_CLI_CHAT |
2740 | + |
2741 | |
2742 | === added file 'examples/mfw-plugin-dummy/include/dummy/connection.h' |
2743 | --- examples/mfw-plugin-dummy/include/dummy/connection.h 1970-01-01 00:00:00 +0000 |
2744 | +++ examples/mfw-plugin-dummy/include/dummy/connection.h 2017-03-22 21:22:50 +0000 |
2745 | @@ -0,0 +1,98 @@ |
2746 | +#ifndef DUMMY_CLI_CONNECTION_H_ |
2747 | +#define DUMMY_CLI_CONNECTION_H_ |
2748 | + |
2749 | +#include <dummy/visibility.h> |
2750 | + |
2751 | +#include <dummy/messenger.h> |
2752 | +#include <dummy/presence_manager.h> |
2753 | +#include <dummy/group_starter.h> |
2754 | + |
2755 | +#include <messaging/associative_dictionary.h> |
2756 | +#include <messaging/connection.h> |
2757 | + |
2758 | + |
2759 | +namespace messaging |
2760 | +{ |
2761 | +// Handy fw declarations |
2762 | +class Variant; |
2763 | +class BoostVariant; |
2764 | +} |
2765 | + |
2766 | +class Connection; |
2767 | + |
2768 | +namespace dummy |
2769 | +{ |
2770 | + |
2771 | +class Connector; |
2772 | + |
2773 | +/// @brief Connection models an active, logged in session with DUMMY server. |
2774 | +class DUMMY_PUBLIC Connection : public messaging::Connection, public std::enable_shared_from_this<Connection> |
2775 | +{ |
2776 | +public: |
2777 | + |
2778 | + /// @brief Constructs a new connection instance with the given connector as parent. |
2779 | + /// |
2780 | + /// Attempts a login on construction. |
2781 | + /// |
2782 | + /// @throws dummy::Error if there are any issues logging in to the DUMMY server. |
2783 | + Connection(const std::shared_ptr<messaging::Connection::Observer>& connection_observer, |
2784 | + const std::shared_ptr<messaging::Messenger::Observer>& messenger_observer, |
2785 | + const std::shared_ptr<messaging::PresenceManager::Observer>& presence_observer, |
2786 | + const messaging::Dictionary<std::string, messaging::Variant>& dict, |
2787 | + Connector *connector); |
2788 | + |
2789 | + /// @brief ~Connection frees up all resources and logs out from the DUMMY server. |
2790 | + ~Connection(); |
2791 | + |
2792 | + /// @brief presence_manager returns a mutable reference to an instance of Presence |
2793 | + std::shared_ptr<messaging::PresenceManager> presence_manager() override; |
2794 | + |
2795 | + /// @brief messenger returns a mutable reference to an instance of Messenger. |
2796 | + std::shared_ptr<messaging::Messenger> messenger() override; |
2797 | + |
2798 | + /// @brief group_starter returns a mutable referece to an instance of GroupStarter |
2799 | + std::shared_ptr<messaging::GroupStarter> group_starter() override; |
2800 | + |
2801 | + /// @brief returns identifier of current plugin user |
2802 | + std::string self_identifier() override; |
2803 | + |
2804 | + /// @brief login log in to server |
2805 | + void connect() override; |
2806 | + |
2807 | + /// @brief logout logs out from server |
2808 | + void disconnect(messaging::Connection::StatusChangedReason reason) override; |
2809 | + |
2810 | + /// @brief change_status changes the current status of connection to the server |
2811 | + void set_status(Status new_status, StatusChangedReason reason = StatusChangedReason::not_specified); |
2812 | + |
2813 | + /// @brief request_presence request the current state for a peer |
2814 | + void request_presence(const std::string& sip_uri); |
2815 | + |
2816 | + /// @brief normalize_identifier unifies the format of an identifier |
2817 | + std::string normalize_identifier(const std::string& id) override; |
2818 | + |
2819 | + /// @brief checks if an identifier is valid |
2820 | + bool is_valid_identifier(const std::string &id) override; |
2821 | + |
2822 | +private: |
2823 | + |
2824 | + /// @brief parent reference |
2825 | + Connector* connector_; |
2826 | + |
2827 | + /// @brief The messenger instance for managing IM messages |
2828 | + std::shared_ptr<Messenger> messenger_; |
2829 | + /// @brief the instance to manage the presence |
2830 | + std::shared_ptr<PresenceManager> presence_manager_; |
2831 | + /// @brief the instance to manage the group creation/acceptance/rejoin |
2832 | + std::shared_ptr<GroupStarter> group_starter_; |
2833 | + |
2834 | + std::shared_ptr<messaging::Messenger::Observer> messenger_observer_; |
2835 | + |
2836 | + std::string account; |
2837 | + std::string password; |
2838 | +}; |
2839 | +} |
2840 | + |
2841 | + |
2842 | + |
2843 | +#endif // DUMMY_CLI_CONNECTION_H_ |
2844 | |
2845 | === added file 'examples/mfw-plugin-dummy/include/dummy/connector.h' |
2846 | --- examples/mfw-plugin-dummy/include/dummy/connector.h 1970-01-01 00:00:00 +0000 |
2847 | +++ examples/mfw-plugin-dummy/include/dummy/connector.h 2017-03-22 21:22:50 +0000 |
2848 | @@ -0,0 +1,58 @@ |
2849 | +#ifndef DUMMY_CLI_CONNECTOR_H_ |
2850 | +#define DUMMY_CLI_CONNECTOR_H_ |
2851 | + |
2852 | +#include <dummy/visibility.h> |
2853 | + |
2854 | +#include <messaging/connector.h> |
2855 | +#include <messaging/messenger.h> |
2856 | +#include <messaging/enumerator.h> |
2857 | +#include <messaging/associative_dictionary.h> |
2858 | + |
2859 | + |
2860 | +namespace messaging |
2861 | +{ |
2862 | +// Handy fw declarations |
2863 | +class Variant; |
2864 | +class BoostVariant; |
2865 | +} |
2866 | + |
2867 | +namespace dummy |
2868 | +{ |
2869 | + |
2870 | +// Handy fw declarations |
2871 | +class Connection; |
2872 | + |
2873 | +class DUMMY_PUBLIC Connector : public messaging::Connector |
2874 | +{ |
2875 | +public: |
2876 | + |
2877 | + // create returns a new shared instance of Connector. |
2878 | + static std::shared_ptr<Connector> create(); |
2879 | + virtual ~Connector(); |
2880 | + |
2881 | + void run() override; |
2882 | + void stop() override; |
2883 | + bool network_monitor_enabled() override; |
2884 | + const messaging::Enumerator<messaging::Parameter>& parameters() const override; |
2885 | + std::shared_ptr<messaging::Connection> request_connection( |
2886 | + const std::shared_ptr<messaging::Connection::Observer>& connection_observer, |
2887 | + const std::shared_ptr<messaging::Messenger::Observer>& messenger_observer, |
2888 | + const std::shared_ptr<messaging::PresenceManager::Observer>& presence_observer, |
2889 | + const messaging::Dictionary<std::string, messaging::Variant>& dict = |
2890 | + messaging::AssociativeDictionary<std::string, messaging::BoostVariant, messaging::Variant>()) override; |
2891 | + |
2892 | + void release_connection(const std::weak_ptr<Connection>& connection); |
2893 | + |
2894 | +private: |
2895 | + Connector(); |
2896 | + |
2897 | + static Connector*& mutable_instance(); |
2898 | + static Connector* instance(); |
2899 | + |
2900 | + messaging::StdVectorEnumerator<messaging::Parameter> params_enum_; |
2901 | + std::set<std::weak_ptr<Connection>, std::owner_less<std::weak_ptr<Connection>>> connections_; |
2902 | +}; |
2903 | +} |
2904 | + |
2905 | + |
2906 | +#endif // DUMMY_CLI_CONNECTOR_H_ |
2907 | |
2908 | === added file 'examples/mfw-plugin-dummy/include/dummy/contact_chat.h' |
2909 | --- examples/mfw-plugin-dummy/include/dummy/contact_chat.h 1970-01-01 00:00:00 +0000 |
2910 | +++ examples/mfw-plugin-dummy/include/dummy/contact_chat.h 2017-03-22 21:22:50 +0000 |
2911 | @@ -0,0 +1,54 @@ |
2912 | +#ifndef DUMMY_CLI_CONTACT_CHAT_H |
2913 | +#define DUMMY_CLI_CONTACT_CHAT_H |
2914 | + |
2915 | +#include <messaging/user.h> |
2916 | + |
2917 | +#include <dummy/visibility.h> |
2918 | + |
2919 | +#include <dummy/chat.h> |
2920 | +#include <dummy/user.h> |
2921 | + |
2922 | +namespace dummy |
2923 | +{ |
2924 | +// Handy fw declarations |
2925 | +class Connector; |
2926 | +class Message; |
2927 | + |
2928 | + |
2929 | + |
2930 | +class DUMMY_PUBLIC ContactChat |
2931 | + : public Chat |
2932 | +{ |
2933 | + public: |
2934 | + |
2935 | + /// @brief Creates a new instance configuring the given user as recipient. |
2936 | + static std::shared_ptr<ContactChat> create(const User& user, |
2937 | + const std::shared_ptr<messaging::Chat::Observer>& observer); |
2938 | + |
2939 | + /// @brief Creates a new instance translating the given recipient to a user. |
2940 | + static std::shared_ptr<ContactChat> create(const messaging::User::shared_ptr& user, |
2941 | + const std::shared_ptr<messaging::Chat::Observer>& observer); |
2942 | + |
2943 | + |
2944 | + /// @brief send_message enqueues the given message for delivery. |
2945 | + /// @returns a numeric identifier referencing back to the delivery request. |
2946 | + /// @throws std::runtime_error in case of issues. |
2947 | + std::string send_message(const messaging::Message& message) override; |
2948 | + void mark_message_as_read(const std::string& message_id) override; |
2949 | + void start_typing() override; |
2950 | + void end_typing() override; |
2951 | + |
2952 | +private: |
2953 | + /// @brief Creates a new instance configuring the given user as recipient. |
2954 | + ContactChat(const User& user, |
2955 | + const std::shared_ptr<messaging::Chat::Observer>& observer); |
2956 | + /// @brief Creates a new instance translating the given recipient to a user. |
2957 | + ContactChat(const messaging::User::shared_ptr& user, |
2958 | + const std::shared_ptr<messaging::Chat::Observer>& observer); |
2959 | + |
2960 | + User recipient; |
2961 | +}; |
2962 | +} |
2963 | + |
2964 | + |
2965 | +#endif // DUMMY_CLI_CONTACT_CHAT_H_ |
2966 | |
2967 | === added file 'examples/mfw-plugin-dummy/include/dummy/group_chat.h' |
2968 | --- examples/mfw-plugin-dummy/include/dummy/group_chat.h 1970-01-01 00:00:00 +0000 |
2969 | +++ examples/mfw-plugin-dummy/include/dummy/group_chat.h 2017-03-22 21:22:50 +0000 |
2970 | @@ -0,0 +1,50 @@ |
2971 | +#ifndef DUMMY_CLI_GROUP_CHAT_H |
2972 | +#define DUMMY_CLI_GROUP_CHAT_H |
2973 | + |
2974 | +#include <dummy/visibility.h> |
2975 | + |
2976 | +#include <dummy/chat.h> |
2977 | + |
2978 | +namespace messaging |
2979 | +{ |
2980 | +class Group; |
2981 | +class Interface; |
2982 | +} |
2983 | + |
2984 | +namespace dummy |
2985 | +{ |
2986 | + |
2987 | +// Handy fw declarations |
2988 | +class GroupManager; |
2989 | + |
2990 | +class DUMMY_PUBLIC GroupChat |
2991 | + : public Chat |
2992 | +{ |
2993 | +public: |
2994 | + |
2995 | + /// @brief Creates a new instance translating the given recipient to a user. |
2996 | + static std::shared_ptr<GroupChat> create(const std::shared_ptr<messaging::Group> &group, |
2997 | + const std::shared_ptr<messaging::Chat::Observer>& observer); |
2998 | + |
2999 | + /// @brief send_message enqueues the given message for delivery. |
3000 | + /// @returns a numeric identifier referencing back to the delivery request. |
3001 | + /// @throws std::runtime_error in case of issues. |
3002 | + std::string send_message(const messaging::Message& message) override; |
3003 | + void mark_message_as_read(const std::string& message_token) override; |
3004 | + void start_typing() override; |
3005 | + void end_typing() override; |
3006 | + |
3007 | + void mark_message_as_delivered(const std::string& message_token); |
3008 | + std::string id(); |
3009 | + |
3010 | +private: |
3011 | + /// @brief Creates a new instance translating the given recipient to a user. |
3012 | + GroupChat(const std::shared_ptr<messaging::Group> &group, |
3013 | + const std::shared_ptr<messaging::Chat::Observer>& observer); |
3014 | + |
3015 | + std::string channel_id; |
3016 | +}; |
3017 | + |
3018 | +} |
3019 | + |
3020 | +#endif // DUMMY_CLI_GROUP_CHAT_H |
3021 | |
3022 | === added file 'examples/mfw-plugin-dummy/include/dummy/group_manager.h' |
3023 | --- examples/mfw-plugin-dummy/include/dummy/group_manager.h 1970-01-01 00:00:00 +0000 |
3024 | +++ examples/mfw-plugin-dummy/include/dummy/group_manager.h 2017-03-22 21:22:50 +0000 |
3025 | @@ -0,0 +1,72 @@ |
3026 | +#ifndef DUMMY_CLI_CHAT_GROUP_MANAGER_H |
3027 | +#define DUMMY_CLI_CHAT_GROUP_MANAGER_H |
3028 | + |
3029 | +#include <dummy/visibility.h> |
3030 | + |
3031 | +#include <messaging/group_manager.h> |
3032 | +#include <messaging/members.h> |
3033 | + |
3034 | +namespace messaging |
3035 | +{ |
3036 | +// Handy fw declarations |
3037 | +class Group; |
3038 | +class HasInterfaces; |
3039 | +} |
3040 | + |
3041 | +namespace dummy |
3042 | +{ |
3043 | + |
3044 | +// Handy fw declaration |
3045 | +class Messenger; |
3046 | +class GroupChat; |
3047 | + |
3048 | + |
3049 | +class DUMMY_PUBLIC GroupManager |
3050 | + : public messaging::GroupManager |
3051 | + , public std::enable_shared_from_this<GroupManager> |
3052 | +{ |
3053 | +public: |
3054 | + |
3055 | + /// @brief Creates a new chat group manager configuring the given user as recipient. |
3056 | + static std::shared_ptr<GroupManager> create(const std::shared_ptr<messaging::Group>& group, |
3057 | + const std::shared_ptr<Messenger>& messenger); |
3058 | + |
3059 | + virtual ~GroupManager(); |
3060 | + |
3061 | + std::string group_id() override; |
3062 | + std::string group_title() override; |
3063 | + std::string group_subject() override; |
3064 | + bool persistent() override; |
3065 | + std::shared_ptr<messaging::Member> group_creator() override; |
3066 | + std::set<std::string> group_admins() override; |
3067 | + messaging::Members members() override; |
3068 | + |
3069 | + void leave_group() override; |
3070 | + void dissolve_group() override; |
3071 | + void change_group_title(const std::string& new_title) override; |
3072 | + void change_group_subject(const std::string& new_subject) override; |
3073 | + void add_members(const messaging::Members& users) override; |
3074 | + void remove_members(const messaging::Members& users) override; |
3075 | + |
3076 | + void set_group_permissions(bool is_chairman); |
3077 | + |
3078 | + void set_observer(const std::shared_ptr<Observer> &observer); |
3079 | + |
3080 | +private: |
3081 | + /// @brief Creates a new instance of chat group manager |
3082 | + GroupManager(const std::shared_ptr<messaging::Group>& group, |
3083 | + const std::shared_ptr<Messenger>& messenger); |
3084 | + |
3085 | + void on_plugged(const std::weak_ptr<messaging::HasInterfaces> &where) override; |
3086 | + |
3087 | + |
3088 | + std::weak_ptr<Messenger> messenger_; |
3089 | + std::weak_ptr<GroupChat> chat_; |
3090 | + std::string id; |
3091 | + messaging::Members participants; |
3092 | + std::string creator; |
3093 | + |
3094 | +}; |
3095 | + |
3096 | +} |
3097 | +#endif // DUMMY_CLI_CHAT_GROUP_MANAGER_H |
3098 | |
3099 | === added file 'examples/mfw-plugin-dummy/include/dummy/group_starter.h' |
3100 | --- examples/mfw-plugin-dummy/include/dummy/group_starter.h 1970-01-01 00:00:00 +0000 |
3101 | +++ examples/mfw-plugin-dummy/include/dummy/group_starter.h 2017-03-22 21:22:50 +0000 |
3102 | @@ -0,0 +1,52 @@ |
3103 | +#ifndef DUMMY_CLI_GROUP_STARTER |
3104 | +#define DUMMY_CLI_GROUP_STARTER |
3105 | + |
3106 | +#include <dummy/visibility.h> |
3107 | + |
3108 | +#include <messaging/group_starter.h> |
3109 | +#include <messaging/members.h> |
3110 | + |
3111 | +#include <map> |
3112 | + |
3113 | +namespace messaging |
3114 | +{ |
3115 | +// Handy fw declarations |
3116 | +class GroupManager; |
3117 | +class Group; |
3118 | +class Broadcast; |
3119 | +} |
3120 | + |
3121 | +namespace dummy |
3122 | +{ |
3123 | + |
3124 | +class Messenger; |
3125 | +class GroupManager; |
3126 | + |
3127 | + |
3128 | +class DUMMY_PUBLIC GroupStarter |
3129 | + : public messaging::GroupStarter |
3130 | + , public std::enable_shared_from_this<GroupStarter> |
3131 | +{ |
3132 | +public: |
3133 | + |
3134 | + static std::shared_ptr<GroupStarter> create(const std::shared_ptr<Messenger>& messenger); |
3135 | + |
3136 | + std::shared_ptr<messaging::GroupManager> create_group(const std::shared_ptr<messaging::Group> &group) override; |
3137 | + std::shared_ptr<messaging::GroupManager> accept_group(const std::shared_ptr<messaging::Group> &group) override; |
3138 | + std::shared_ptr<messaging::GroupManager> rejoin_group(const std::shared_ptr<messaging::Group> &group) override; |
3139 | + void reject_group(const std::shared_ptr<messaging::Group> &group) override; |
3140 | + std::shared_ptr<messaging::Broadcast> create_broadcast(const messaging::Members& recipients); |
3141 | + std::map<std::string, std::shared_ptr<dummy::GroupManager>> group_managers(); |
3142 | + |
3143 | +private: |
3144 | + GroupStarter(const std::shared_ptr<Messenger>& messenger); |
3145 | + |
3146 | + std::weak_ptr<Messenger> messenger_; |
3147 | + std::map<std::string, std::shared_ptr<dummy::GroupManager>> group_managers_; |
3148 | + |
3149 | +}; |
3150 | + |
3151 | +} |
3152 | + |
3153 | +#endif // DUMMY_CLI_GROUP_STARTER |
3154 | + |
3155 | |
3156 | === added file 'examples/mfw-plugin-dummy/include/dummy/messenger.h' |
3157 | --- examples/mfw-plugin-dummy/include/dummy/messenger.h 1970-01-01 00:00:00 +0000 |
3158 | +++ examples/mfw-plugin-dummy/include/dummy/messenger.h 2017-03-22 21:22:50 +0000 |
3159 | @@ -0,0 +1,50 @@ |
3160 | +#ifndef DUMMY_CLI_MESSENGER_H_ |
3161 | +#define DUMMY_CLI_MESSENGER_H_ |
3162 | + |
3163 | +#include <dummy/visibility.h> |
3164 | + |
3165 | +#include <messaging/messenger.h> |
3166 | + |
3167 | +namespace dummy |
3168 | +{ |
3169 | + |
3170 | +// Handy fw declaration |
3171 | +class Message; |
3172 | +class File; |
3173 | +class Connector; |
3174 | +class Connection; |
3175 | +class GroupManager; |
3176 | + |
3177 | +class DUMMY_PUBLIC Messenger |
3178 | + : public messaging::Messenger |
3179 | + , public std::enable_shared_from_this<Messenger> |
3180 | +{ |
3181 | +public: |
3182 | + /// @cond |
3183 | + DEFINE_PTRS(Messenger); |
3184 | + /// @endcond |
3185 | + |
3186 | + static std::shared_ptr<Messenger> create(const std::shared_ptr<Messenger::Observer>& messenger_observer, const std::shared_ptr<dummy::Connection> &connection); |
3187 | + |
3188 | + std::shared_ptr<messaging::Chat> create_chat_with(const messaging::Recipient::shared_ptr& recipient, const std::shared_ptr<messaging::Chat::Observer>& observer) override; |
3189 | + |
3190 | + void handle_incoming_message(const std::string &sender, const std::string &message); |
3191 | + void handle_incoming_channel_message(const std::string &channel, const std::string &sender, const std::string &message); |
3192 | + std::shared_ptr<GroupManager> get_group_manager(const std::string &group_chat_id); |
3193 | + void handle_join_new_channel(const std::string &channel); |
3194 | + void handle_join_new_channel(const std::string &channel, const std::string &the_creator); |
3195 | + void remove_chat(const std::string &chat_id); |
3196 | + |
3197 | + std::shared_ptr<dummy::Connection> connection; |
3198 | +private: |
3199 | + Messenger(const std::shared_ptr<messaging::Messenger::Observer>& observer, const std::shared_ptr<dummy::Connection> &connection); |
3200 | + |
3201 | + /// @brief identity provider to correlate msg_id with imdn unique identifier. First will be |
3202 | + /// used internally for chat messages and the other used as message external unique id |
3203 | + /// @brief maintains the history of managed messages correlated to their unique_id |
3204 | + void send_delivery_notification(const std::shared_ptr<Message>& message); |
3205 | +}; |
3206 | +} |
3207 | + |
3208 | + |
3209 | +#endif // DUMMY_CLI_MESSENGER_H_ |
3210 | |
3211 | === added file 'examples/mfw-plugin-dummy/include/dummy/presence_manager.h' |
3212 | --- examples/mfw-plugin-dummy/include/dummy/presence_manager.h 1970-01-01 00:00:00 +0000 |
3213 | +++ examples/mfw-plugin-dummy/include/dummy/presence_manager.h 2017-03-22 21:22:50 +0000 |
3214 | @@ -0,0 +1,40 @@ |
3215 | +#ifndef DUMMY_CLI_PRESENCE_MANAGER_H |
3216 | +#define DUMMY_CLI_PRESENCE_MANAGER_H |
3217 | + |
3218 | +#include <dummy/visibility.h> |
3219 | + |
3220 | +#include <messaging/presence_manager.h> |
3221 | + |
3222 | +#include <memory> |
3223 | + |
3224 | +namespace dummy |
3225 | +{ |
3226 | + |
3227 | +class Connector; |
3228 | + |
3229 | +class DUMMY_PUBLIC PresenceManager : public messaging::PresenceManager, public std::enable_shared_from_this<PresenceManager> |
3230 | +{ |
3231 | +public: |
3232 | + |
3233 | + static std::shared_ptr<PresenceManager> create(const std::shared_ptr<messaging::PresenceManager::Observer>& observer, |
3234 | + Connector *connector); |
3235 | + |
3236 | + StatusMap get_valid_statuses() override; |
3237 | + void set_self_presence(const std::string& status, const std::string& status_message = "") override; |
3238 | + void request_presence(const std::shared_ptr<messaging::Recipient>& recipient) override; |
3239 | + |
3240 | +private: |
3241 | + /// @brief Messenger constructs a new instance, installing the given observer instance. |
3242 | + PresenceManager(const std::shared_ptr<Observer>& observer, |
3243 | + Connector* connector); |
3244 | + |
3245 | + messaging::Presence create_presence(const std::string& status, const std::string& status_message = ""); |
3246 | + |
3247 | + Connector *connector_; |
3248 | + StatusMap statuses_; |
3249 | +}; |
3250 | + |
3251 | +} |
3252 | + |
3253 | + |
3254 | +#endif // DUMMY_CLI_PRESENCE_MANAGER_H |
3255 | |
3256 | === added file 'examples/mfw-plugin-dummy/include/dummy/recipient.h' |
3257 | --- examples/mfw-plugin-dummy/include/dummy/recipient.h 1970-01-01 00:00:00 +0000 |
3258 | +++ examples/mfw-plugin-dummy/include/dummy/recipient.h 2017-03-22 21:22:50 +0000 |
3259 | @@ -0,0 +1,19 @@ |
3260 | +#ifndef DUMMY_CLI_RECIPIENT_H |
3261 | +#define DUMMY_CLI_RECIPIENT_H |
3262 | + |
3263 | +#include <messaging/recipient.h> |
3264 | + |
3265 | +namespace dummy |
3266 | +{ |
3267 | + |
3268 | + |
3269 | +class Recipient : public messaging::Recipient |
3270 | +{ |
3271 | +public: |
3272 | + Recipient() : messaging::Recipient{} |
3273 | +}; |
3274 | + |
3275 | + |
3276 | +} |
3277 | + |
3278 | +#endif // DUMMY_CLI_RECIPIENT_H |
3279 | |
3280 | === added file 'examples/mfw-plugin-dummy/include/dummy/user.h' |
3281 | --- examples/mfw-plugin-dummy/include/dummy/user.h 1970-01-01 00:00:00 +0000 |
3282 | +++ examples/mfw-plugin-dummy/include/dummy/user.h 2017-03-22 21:22:50 +0000 |
3283 | @@ -0,0 +1,31 @@ |
3284 | +#ifndef DUMMY_CLI_USER_H_ |
3285 | +#define DUMMY_CLI_USER_H_ |
3286 | + |
3287 | +#include <dummy/visibility.h> |
3288 | + |
3289 | +#include <memory> |
3290 | + |
3291 | +#include <map> |
3292 | + |
3293 | +namespace messaging |
3294 | +{ |
3295 | +// A handy fw declaration |
3296 | +class Recipient; |
3297 | +} |
3298 | + |
3299 | +namespace dummy |
3300 | +{ |
3301 | + |
3302 | + |
3303 | +/// @brief User models a subscriber to DUMMY services. |
3304 | +struct DUMMY_PUBLIC User |
3305 | +{ |
3306 | + std::string username; ///< dummy username |
3307 | + |
3308 | + static User from_recipient(const std::shared_ptr<messaging::Recipient>& recipient); |
3309 | + std::shared_ptr<messaging::Recipient> to_recipient() const; |
3310 | +}; |
3311 | +} |
3312 | + |
3313 | + |
3314 | +#endif // DUMMY_CLI_USER_H_ |
3315 | |
3316 | === added file 'examples/mfw-plugin-dummy/include/dummy/visibility.h' |
3317 | --- examples/mfw-plugin-dummy/include/dummy/visibility.h 1970-01-01 00:00:00 +0000 |
3318 | +++ examples/mfw-plugin-dummy/include/dummy/visibility.h 2017-03-22 21:22:50 +0000 |
3319 | @@ -0,0 +1,7 @@ |
3320 | +#ifndef DUMMY_VISIBILITY_H_ |
3321 | +#define DUMMY_VISIBILITY_H_ |
3322 | + |
3323 | +#define DUMMY_PUBLIC __attribute__((visibility("default"))) |
3324 | +#define DUMMY_LOCAL __attribute__((visibility("hidden"))) |
3325 | + |
3326 | +#endif // DUMMY_VISIBILITY_H_ |
3327 | |
3328 | === added directory 'examples/mfw-plugin-dummy/src' |
3329 | === added file 'examples/mfw-plugin-dummy/src/CMakeLists.txt' |
3330 | --- examples/mfw-plugin-dummy/src/CMakeLists.txt 1970-01-01 00:00:00 +0000 |
3331 | +++ examples/mfw-plugin-dummy/src/CMakeLists.txt 2017-03-22 21:22:50 +0000 |
3332 | @@ -0,0 +1,43 @@ |
3333 | +set(PLUGIN_NAME mfw-plugin-dummy) |
3334 | + |
3335 | +add_library(${PLUGIN_NAME} SHARED |
3336 | + |
3337 | + ${PLUGIN_MOCS} |
3338 | + |
3339 | + dummy/group_manager.cpp |
3340 | + dummy/chat.cpp |
3341 | + dummy/connection.cpp |
3342 | + dummy/connector.cpp |
3343 | + dummy/contact_chat.cpp |
3344 | + dummy/group_starter.cpp |
3345 | + dummy/messenger.cpp |
3346 | + dummy/group_chat.cpp |
3347 | + dummy/presence_manager.cpp |
3348 | + dummy/user.cpp |
3349 | +) |
3350 | + |
3351 | +set_target_properties(${PLUGIN_NAME} PROPERTIES VERSION ${SO_VERSION} SOVERSION ${SO_VERSION_MAJOR}) |
3352 | +set (PLUGIN_LINK_LIBRARIES |
3353 | + ${MESSAGING_FW_LIBRARIES} |
3354 | + Qt5::Core |
3355 | + Qt5::DBus |
3356 | + ${ACCOUNTS_LDFLAGS} |
3357 | + ${ZLIB_LIBRARIES} |
3358 | + ${GLog_LIBRARY} |
3359 | + ${Boost_LIBRARIES} |
3360 | + ${PROCESS_CPP_LDFLAGS} |
3361 | + ${CPPNETLIB_LIBRARIES} |
3362 | + -lpthread |
3363 | +) |
3364 | + |
3365 | +if(IS_MF_BUILD) |
3366 | + set (PLUGIN_LINK_LIBRARIES ${PLUGIN_LINK_LIBRARIES} messaging-framework) |
3367 | +endif() |
3368 | + |
3369 | +target_link_libraries(${PLUGIN_NAME} |
3370 | + ${PLUGIN_LINK_LIBRARIES} |
3371 | +) |
3372 | + |
3373 | +install( |
3374 | + TARGETS ${PLUGIN_NAME} |
3375 | + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/messaging-framework) |
3376 | |
3377 | === added directory 'examples/mfw-plugin-dummy/src/dummy' |
3378 | === added file 'examples/mfw-plugin-dummy/src/dummy/chat.cpp' |
3379 | --- examples/mfw-plugin-dummy/src/dummy/chat.cpp 1970-01-01 00:00:00 +0000 |
3380 | +++ examples/mfw-plugin-dummy/src/dummy/chat.cpp 2017-03-22 21:22:50 +0000 |
3381 | @@ -0,0 +1,30 @@ |
3382 | +#include <dummy/chat.h> |
3383 | + |
3384 | +#include <glog/logging.h> |
3385 | + |
3386 | +dummy::Chat::Chat(const std::shared_ptr<messaging::Chat::Observer>& observer) |
3387 | + : messaging::Chat{observer} |
3388 | +{ |
3389 | +} |
3390 | + |
3391 | +dummy::Chat::~Chat() |
3392 | +{ |
3393 | +} |
3394 | + |
3395 | + |
3396 | +std::string dummy::Chat::download_file(std::string alias) |
3397 | +{ |
3398 | +} |
3399 | + |
3400 | +void dummy::Chat::mark_message_as_delivered(const std::string &alias, uint session_id) |
3401 | +{ |
3402 | +} |
3403 | + |
3404 | +void dummy::Chat::mark_message_as_read(const std::string &alias, uint session_id) |
3405 | +{ |
3406 | +} |
3407 | + |
3408 | +void dummy::Chat::handle_incoming_message(const messaging::Message& message) |
3409 | +{ |
3410 | + announce_message_received(message); |
3411 | +} |
3412 | |
3413 | === added file 'examples/mfw-plugin-dummy/src/dummy/connection.cpp' |
3414 | --- examples/mfw-plugin-dummy/src/dummy/connection.cpp 1970-01-01 00:00:00 +0000 |
3415 | +++ examples/mfw-plugin-dummy/src/dummy/connection.cpp 2017-03-22 21:22:50 +0000 |
3416 | @@ -0,0 +1,132 @@ |
3417 | +#include <dummy/connection.h> |
3418 | +#include <dummy/connector.h> |
3419 | +#include <dummy/group_manager.h> |
3420 | +#include <dummy/group_chat.h> |
3421 | + |
3422 | +#include <glog/logging.h> |
3423 | + |
3424 | +#include <messaging/parameter.h> |
3425 | +#include <messaging/group.h> |
3426 | + |
3427 | +using namespace std; |
3428 | + |
3429 | +dummy::Connection::Connection(const std::shared_ptr<messaging::Connection::Observer>& connection_observer, |
3430 | + const std::shared_ptr<messaging::Messenger::Observer>& messenger_observer, |
3431 | + const std::shared_ptr<messaging::PresenceManager::Observer>& presence_observer, |
3432 | + const messaging::Dictionary<std::string, messaging::Variant>& dict, |
3433 | + Connector *connector) |
3434 | + : messaging::Connection{connection_observer} |
3435 | + , connector_{connector} |
3436 | + , presence_manager_(PresenceManager::create(presence_observer, connector)) |
3437 | + , messenger_observer_(messenger_observer) |
3438 | +{ |
3439 | + messaging::Parameter account_param{"account", "s", messaging::Parameter::Flags::required|messaging::Parameter::Flags::required_for_registration}; |
3440 | + messaging::Parameter password_param{"password", "s", messaging::Parameter::Flags::secret}; |
3441 | + |
3442 | + if (account_param.can_extract_from(dict)) |
3443 | + { |
3444 | + account = account_param.extract_from(dict).as_string(); |
3445 | + if (account.empty()) |
3446 | + { |
3447 | + throw std::runtime_error{"account could not be found"}; |
3448 | + } |
3449 | + } |
3450 | + else |
3451 | + { |
3452 | + throw std::runtime_error{"account could not be found"}; |
3453 | + } |
3454 | + |
3455 | + if (password_param.can_extract_from(dict)) |
3456 | + { |
3457 | + password = password_param.extract_from(dict).as_string(); |
3458 | + } |
3459 | +} |
3460 | + |
3461 | +dummy::Connection::~Connection() |
3462 | +{ |
3463 | + |
3464 | +} |
3465 | + |
3466 | +std::string dummy::Connection::self_identifier() |
3467 | +{ |
3468 | + return account; |
3469 | +} |
3470 | + |
3471 | +shared_ptr<messaging::PresenceManager> dummy::Connection::presence_manager() |
3472 | +{ |
3473 | + return presence_manager_; |
3474 | +} |
3475 | + |
3476 | +shared_ptr<messaging::Messenger> dummy::Connection::messenger() |
3477 | +{ |
3478 | + return messenger_; |
3479 | +} |
3480 | + |
3481 | +std::shared_ptr<messaging::GroupStarter> dummy::Connection::group_starter() |
3482 | +{ |
3483 | + return group_starter_; |
3484 | +} |
3485 | + |
3486 | +void dummy::Connection::connect() |
3487 | +{ |
3488 | + LOG(INFO) << this << __PRETTY_FUNCTION__; |
3489 | + |
3490 | + // initiate other components |
3491 | + messenger_ = Messenger::create(messenger_observer_, shared_from_this()); |
3492 | + group_starter_ = dummy::GroupStarter::create(messenger_); |
3493 | + |
3494 | + // Do something here to actually connect the account |
3495 | + |
3496 | + set_status(Status::connecting, StatusChangedReason::requested); |
3497 | +} |
3498 | + |
3499 | +void dummy::Connection::disconnect(messaging::Connection::StatusChangedReason reason) |
3500 | +{ |
3501 | + LOG(INFO) << this << __PRETTY_FUNCTION__; |
3502 | + try |
3503 | + { |
3504 | + set_status(Status::disconnected, reason); |
3505 | + } |
3506 | + catch (const std::runtime_error &e) |
3507 | + { |
3508 | + LOG(ERROR) << "disconnect failed: " << e.what(); |
3509 | + } |
3510 | +} |
3511 | + |
3512 | +void dummy::Connection::set_status(Status new_status, StatusChangedReason reason) |
3513 | +{ |
3514 | + try |
3515 | + { |
3516 | + announce_status_changed(new_status, reason); |
3517 | + |
3518 | + switch (new_status) |
3519 | + { |
3520 | + case Status::connected: |
3521 | + break; |
3522 | + case Status::connecting: |
3523 | + break; |
3524 | + case Status::disconnected: |
3525 | + if (connector_) { |
3526 | + connector_->release_connection(shared_from_this()); |
3527 | + } |
3528 | + break; |
3529 | + default: |
3530 | + break; |
3531 | + } |
3532 | + } |
3533 | + catch (const std::runtime_error &e) |
3534 | + { |
3535 | + LOG(ERROR) << "set_status failed: " << e.what(); |
3536 | + } |
3537 | +} |
3538 | + |
3539 | +std::string dummy::Connection::normalize_identifier(const std::string &id) |
3540 | +{ |
3541 | + // dummy plugin does not require normalization |
3542 | + return id; |
3543 | +} |
3544 | + |
3545 | +bool dummy::Connection::is_valid_identifier(const std::string &id) |
3546 | +{ |
3547 | + return !id.empty(); |
3548 | +} |
3549 | |
3550 | === added file 'examples/mfw-plugin-dummy/src/dummy/connector.cpp' |
3551 | --- examples/mfw-plugin-dummy/src/dummy/connector.cpp 1970-01-01 00:00:00 +0000 |
3552 | +++ examples/mfw-plugin-dummy/src/dummy/connector.cpp 2017-03-22 21:22:50 +0000 |
3553 | @@ -0,0 +1,95 @@ |
3554 | +#include <dummy/connector.h> |
3555 | +#include <dummy/connection.h> |
3556 | + |
3557 | +#include <messaging/enumerator.h> |
3558 | +#include <messaging/parameter.h> |
3559 | +#include <messaging/plugin.h> |
3560 | + |
3561 | +#include <messaging/boost/variant.h> |
3562 | + |
3563 | +#include <glog/logging.h> |
3564 | + |
3565 | +std::shared_ptr<dummy::Connector> dummy::Connector::create() |
3566 | +{ |
3567 | + return std::shared_ptr<Connector>(new Connector()); |
3568 | +} |
3569 | + |
3570 | +dummy::Connector::Connector() : |
3571 | + params_enum_{ |
3572 | + std::vector<messaging::Parameter>{messaging::Parameter{"account", "s", messaging::Parameter::Flags::required|messaging::Parameter::Flags::required_for_registration}, |
3573 | + messaging::Parameter{"password", "s", messaging::Parameter::Flags::secret}}} |
3574 | +{ |
3575 | + mutable_instance() = this; |
3576 | +} |
3577 | + |
3578 | +dummy::Connector::~Connector() |
3579 | +{ |
3580 | + mutable_instance() = nullptr; |
3581 | +} |
3582 | + |
3583 | +void dummy::Connector::run() |
3584 | +{ |
3585 | + LOG(INFO) << "dummy::Connector::run"; |
3586 | +} |
3587 | + |
3588 | +void dummy::Connector::stop() |
3589 | +{ |
3590 | + LOG(INFO) << "dummy::Connector::stop"; |
3591 | +} |
3592 | + |
3593 | +std::shared_ptr<messaging::Connection> dummy::Connector::request_connection(const std::shared_ptr<messaging::Connection::Observer>& connection_observer, |
3594 | + const std::shared_ptr<messaging::Messenger::Observer>& messenger_observer, |
3595 | + const std::shared_ptr<messaging::PresenceManager::Observer>& presence_observer, |
3596 | + const messaging::Dictionary<std::string, messaging::Variant>& dict) |
3597 | +{ |
3598 | + auto connection = std::make_shared<dummy::Connection>(connection_observer, |
3599 | + messenger_observer, |
3600 | + presence_observer, |
3601 | + dict, |
3602 | + this); |
3603 | + connections_.insert(connection); |
3604 | + return connection; |
3605 | +} |
3606 | + |
3607 | +void dummy::Connector::release_connection(const std::weak_ptr<Connection>& connection) |
3608 | +{ |
3609 | + auto it = connections_.find(connection); |
3610 | + if (it != connections_.end()) |
3611 | + { |
3612 | + connections_.erase(it); |
3613 | + } |
3614 | +} |
3615 | + |
3616 | +const messaging::Enumerator<messaging::Parameter>& dummy::Connector::parameters() const |
3617 | +{ |
3618 | + return params_enum_; |
3619 | +} |
3620 | + |
3621 | +bool dummy::Connector::network_monitor_enabled() |
3622 | +{ |
3623 | + return false; |
3624 | +} |
3625 | + |
3626 | +dummy::Connector*& dummy::Connector::mutable_instance() |
3627 | +{ |
3628 | + static Connector* instance{nullptr}; |
3629 | + return instance; |
3630 | +} |
3631 | + |
3632 | +dummy::Connector* dummy::Connector::instance() |
3633 | +{ |
3634 | + return mutable_instance(); |
3635 | +} |
3636 | + |
3637 | +// Integrate with the messaging fw plugin runtime. |
3638 | +messaging::Connector* MESSAGING_FW_CREATE_FUNCTION() |
3639 | +{ |
3640 | + static auto instance = dummy::Connector::create(); |
3641 | + return instance.get(); |
3642 | +} |
3643 | + |
3644 | +void MESSAGING_FW_DESTROY_FUNCTION(messaging::Connector*) |
3645 | +{ |
3646 | + // Empty on purpose. |
3647 | +} |
3648 | + |
3649 | |
3650 | === added file 'examples/mfw-plugin-dummy/src/dummy/contact_chat.cpp' |
3651 | --- examples/mfw-plugin-dummy/src/dummy/contact_chat.cpp 1970-01-01 00:00:00 +0000 |
3652 | +++ examples/mfw-plugin-dummy/src/dummy/contact_chat.cpp 2017-03-22 21:22:50 +0000 |
3653 | @@ -0,0 +1,58 @@ |
3654 | +#include <dummy/contact_chat.h> |
3655 | + |
3656 | +#include <messaging/message.h> |
3657 | +#include <messaging/recipient.h> |
3658 | + |
3659 | +#include <glog/logging.h> |
3660 | + |
3661 | +using namespace std; |
3662 | + |
3663 | +shared_ptr<dummy::ContactChat> dummy::ContactChat::create(const User& user, |
3664 | + const shared_ptr<messaging::Chat::Observer>& observer) |
3665 | +{ |
3666 | + shared_ptr<dummy::ContactChat> chat(new dummy::ContactChat{user, observer}); |
3667 | + return chat; |
3668 | +} |
3669 | + |
3670 | +shared_ptr<dummy::ContactChat> dummy::ContactChat::create(const messaging::User::shared_ptr& user, |
3671 | + const shared_ptr<messaging::Chat::Observer>& observer) |
3672 | +{ |
3673 | + shared_ptr<dummy::ContactChat> chat(new dummy::ContactChat{user, observer}); |
3674 | + return chat; |
3675 | +} |
3676 | + |
3677 | +dummy::ContactChat::ContactChat(const User& user, |
3678 | + const shared_ptr<messaging::Chat::Observer>& observer) |
3679 | + : Chat{observer} |
3680 | + , recipient(user) |
3681 | +{ |
3682 | +} |
3683 | + |
3684 | +dummy::ContactChat::ContactChat(const messaging::User::shared_ptr& user, |
3685 | + const shared_ptr<messaging::Chat::Observer>& observer) |
3686 | + : ContactChat{User::from_recipient(user), observer} |
3687 | +{ |
3688 | +} |
3689 | + |
3690 | +void dummy::ContactChat::mark_message_as_read(const string &alias) |
3691 | +{ |
3692 | + // Not supported on DUMMY |
3693 | +} |
3694 | + |
3695 | +void dummy::ContactChat::start_typing() |
3696 | +{ |
3697 | + // Typing signal not supported on DUMMY |
3698 | +} |
3699 | + |
3700 | +void dummy::ContactChat::end_typing() |
3701 | +{ |
3702 | + // Typing signal not supported on DUMMY |
3703 | +} |
3704 | + |
3705 | +string dummy::ContactChat::send_message(const messaging::Message& message) |
3706 | +{ |
3707 | + // this method is called when the ui sends a message to any user or group |
3708 | + return string(); |
3709 | +} |
3710 | + |
3711 | + |
3712 | |
3713 | === added file 'examples/mfw-plugin-dummy/src/dummy/group_chat.cpp' |
3714 | --- examples/mfw-plugin-dummy/src/dummy/group_chat.cpp 1970-01-01 00:00:00 +0000 |
3715 | +++ examples/mfw-plugin-dummy/src/dummy/group_chat.cpp 2017-03-22 21:22:50 +0000 |
3716 | @@ -0,0 +1,50 @@ |
3717 | +#include <dummy/group_chat.h> |
3718 | +#include <dummy/group_manager.h> |
3719 | + |
3720 | +#include <messaging/message.h> |
3721 | +#include <messaging/group.h> |
3722 | +#include <messaging/recipient.h> |
3723 | + |
3724 | +#include <glog/logging.h> |
3725 | + |
3726 | +std::shared_ptr<dummy::GroupChat> dummy::GroupChat::create(const std::shared_ptr<messaging::Group> &group, |
3727 | + const std::shared_ptr<messaging::Chat::Observer>& observer) |
3728 | +{ |
3729 | + return std::shared_ptr<dummy::GroupChat>(new dummy::GroupChat{group, observer}); |
3730 | +} |
3731 | + |
3732 | +dummy::GroupChat::GroupChat(const std::shared_ptr<messaging::Group> &group, |
3733 | + const std::shared_ptr<messaging::Chat::Observer>& observer) |
3734 | + : Chat{observer} |
3735 | + , channel_id(group->id()) |
3736 | +{ |
3737 | +} |
3738 | + |
3739 | +std::string dummy::GroupChat::send_message(const messaging::Message& message) |
3740 | +{ |
3741 | + // a message is being sent to this group |
3742 | + return std::string(); |
3743 | +} |
3744 | + |
3745 | +void dummy::GroupChat::mark_message_as_delivered(const std::string &message_token) |
3746 | +{ |
3747 | + LOG(INFO) << __PRETTY_FUNCTION__ << " token:" << message_token; |
3748 | +} |
3749 | + |
3750 | +void dummy::GroupChat::mark_message_as_read(const std::string &alias) |
3751 | +{ |
3752 | +} |
3753 | + |
3754 | +void dummy::GroupChat::start_typing() |
3755 | +{ |
3756 | +} |
3757 | + |
3758 | +void dummy::GroupChat::end_typing() |
3759 | +{ |
3760 | +} |
3761 | + |
3762 | +std::string dummy::GroupChat::id() |
3763 | +{ |
3764 | + return channel_id; |
3765 | +} |
3766 | + |
3767 | |
3768 | === added file 'examples/mfw-plugin-dummy/src/dummy/group_manager.cpp' |
3769 | --- examples/mfw-plugin-dummy/src/dummy/group_manager.cpp 1970-01-01 00:00:00 +0000 |
3770 | +++ examples/mfw-plugin-dummy/src/dummy/group_manager.cpp 2017-03-22 21:22:50 +0000 |
3771 | @@ -0,0 +1,114 @@ |
3772 | +#include <dummy/group_manager.h> |
3773 | + |
3774 | +#include <dummy/messenger.h> |
3775 | +#include <dummy/group_chat.h> |
3776 | +#include <dummy/connection.h> |
3777 | + |
3778 | + |
3779 | +#include <messaging/group.h> |
3780 | +#include <messaging/user.h> |
3781 | + |
3782 | +#include <glog/logging.h> |
3783 | + |
3784 | + |
3785 | +std::shared_ptr<dummy::GroupManager> dummy::GroupManager::create(const std::shared_ptr<messaging::Group>& group, |
3786 | + const std::shared_ptr<Messenger>& messenger) |
3787 | +{ |
3788 | + return std::shared_ptr<dummy::GroupManager>(new dummy::GroupManager{group, messenger}); |
3789 | +} |
3790 | + |
3791 | +dummy::GroupManager::GroupManager(const std::shared_ptr<messaging::Group>& group, |
3792 | + const std::shared_ptr<Messenger>& messenger) |
3793 | + : messaging::GroupManager{} |
3794 | + , messenger_{messenger} |
3795 | + , id(group->id()) |
3796 | + , creator(group->creator()->id()) |
3797 | +{ |
3798 | +} |
3799 | + |
3800 | +dummy::GroupManager::~GroupManager() |
3801 | +{ |
3802 | +} |
3803 | + |
3804 | +void dummy::GroupManager::on_plugged(const std::weak_ptr<messaging::HasInterfaces> &where) |
3805 | +{ |
3806 | + auto sp = where.lock(); |
3807 | + if (sp) { |
3808 | + chat_ = std::dynamic_pointer_cast<dummy::GroupChat>(sp); |
3809 | + } |
3810 | +} |
3811 | + |
3812 | +std::string dummy::GroupManager::group_id() |
3813 | +{ |
3814 | + return id; |
3815 | +} |
3816 | + |
3817 | +std::string dummy::GroupManager::group_title() |
3818 | +{ |
3819 | + return id; |
3820 | +} |
3821 | + |
3822 | +std::string dummy::GroupManager::group_subject() |
3823 | +{ |
3824 | + return std::string{}; |
3825 | +} |
3826 | + |
3827 | +std::shared_ptr<messaging::Member> dummy::GroupManager::group_creator() |
3828 | +{ |
3829 | + return std::make_shared<messaging::Member>(creator); |
3830 | +} |
3831 | + |
3832 | +std::set<std::string> dummy::GroupManager::group_admins() |
3833 | +{ |
3834 | + std::set<std::string> admins; |
3835 | + |
3836 | + return admins; |
3837 | +} |
3838 | + |
3839 | +messaging::Members dummy::GroupManager::members() |
3840 | +{ |
3841 | + return participants; |
3842 | +} |
3843 | + |
3844 | +void dummy::GroupManager::set_observer(const std::shared_ptr<Observer> &observer) |
3845 | +{ |
3846 | + messaging::GroupManager::set_observer(observer); |
3847 | + announce_group_permissions_changed(messaging::GroupManager::permissions()); |
3848 | +} |
3849 | + |
3850 | +void dummy::GroupManager::change_group_title(const std::string &new_title) |
3851 | +{ |
3852 | +} |
3853 | + |
3854 | +void dummy::GroupManager::change_group_subject(const std::string &new_subject) |
3855 | +{ |
3856 | + |
3857 | +} |
3858 | + |
3859 | +void dummy::GroupManager::add_members(const messaging::Members &members) |
3860 | +{ |
3861 | +} |
3862 | + |
3863 | +void dummy::GroupManager::remove_members(const messaging::Members &members) |
3864 | +{ |
3865 | + for (auto member : members) { |
3866 | + if (member->id() == messenger_.lock()->connection->self_identifier()) { |
3867 | + leave_group(); |
3868 | + } |
3869 | + } |
3870 | +} |
3871 | + |
3872 | +void dummy::GroupManager::leave_group() |
3873 | +{ |
3874 | +} |
3875 | + |
3876 | +void dummy::GroupManager::dissolve_group() |
3877 | +{ |
3878 | + // not supported on dummy |
3879 | +} |
3880 | + |
3881 | +bool dummy::GroupManager::persistent() |
3882 | +{ |
3883 | + return false; |
3884 | +} |
3885 | + |
3886 | |
3887 | === added file 'examples/mfw-plugin-dummy/src/dummy/group_starter.cpp' |
3888 | --- examples/mfw-plugin-dummy/src/dummy/group_starter.cpp 1970-01-01 00:00:00 +0000 |
3889 | +++ examples/mfw-plugin-dummy/src/dummy/group_starter.cpp 2017-03-22 21:22:50 +0000 |
3890 | @@ -0,0 +1,85 @@ |
3891 | +#include <messaging/group.h> |
3892 | + |
3893 | +#include <dummy/group_starter.h> |
3894 | +#include <dummy/group_manager.h> |
3895 | +#include <dummy/messenger.h> |
3896 | + |
3897 | +#include <glog/logging.h> |
3898 | + |
3899 | +dummy::GroupStarter::GroupStarter(const std::shared_ptr<dummy::Messenger>& messenger) |
3900 | + : messaging::GroupStarter() |
3901 | + , messenger_{messenger} |
3902 | +{ |
3903 | +} |
3904 | + |
3905 | +std::shared_ptr<dummy::GroupStarter> dummy::GroupStarter::create(const std::shared_ptr<dummy::Messenger>& messenger) |
3906 | +{ |
3907 | + std::shared_ptr<GroupStarter> group_starter(new GroupStarter{messenger}); |
3908 | + return group_starter; |
3909 | +} |
3910 | + |
3911 | +std::shared_ptr<messaging::GroupManager> dummy::GroupStarter::create_group(const std::shared_ptr<messaging::Group> &group) |
3912 | +{ |
3913 | + auto group_manager = dummy::GroupManager::create(group, messenger_.lock()); |
3914 | + group_managers_[group->id()] = group_manager; |
3915 | + |
3916 | + return group_manager; |
3917 | +} |
3918 | + |
3919 | +std::shared_ptr<messaging::GroupManager> dummy::GroupStarter::accept_group(const std::shared_ptr<messaging::Group> &group) |
3920 | +{ |
3921 | + LOG(INFO) << __PRETTY_FUNCTION__ << " ,group_chat_id:" << group->id(); |
3922 | + |
3923 | + std::string group_chat_id = group->id(); |
3924 | + |
3925 | + if (group_chat_id.empty()) |
3926 | + { |
3927 | + throw std::runtime_error{"Cannot accept an invitation with empty chat id"}; |
3928 | + } |
3929 | + |
3930 | + auto it = group_managers_.find(group_chat_id); |
3931 | + if (it != group_managers_.end()) |
3932 | + { |
3933 | + return it->second; |
3934 | + } |
3935 | + |
3936 | + auto group_manager = dummy::GroupManager::create(group, messenger_.lock()); |
3937 | + group_managers_[group->id()] = group_manager; |
3938 | + return group_manager; |
3939 | +} |
3940 | + |
3941 | +std::shared_ptr<messaging::GroupManager> dummy::GroupStarter::rejoin_group(const std::shared_ptr<messaging::Group> &group) |
3942 | +{ |
3943 | + LOG(INFO) << __PRETTY_FUNCTION__ << " group_chat_id:" << group->id(); |
3944 | + std::string group_chat_id = group->id(); |
3945 | + if (group_chat_id.empty()) |
3946 | + { |
3947 | + throw std::runtime_error{"Cannot rejoin with empty chat id"}; |
3948 | + } |
3949 | + |
3950 | + auto it = group_managers_.find(group_chat_id); |
3951 | + if (it != group_managers_.end()) |
3952 | + { |
3953 | + return it->second; |
3954 | + } |
3955 | + |
3956 | + auto group_manager = dummy::GroupManager::create(group, messenger_.lock()); |
3957 | + group_managers_[group->id()] = group_manager; |
3958 | + |
3959 | + return group_manager; |
3960 | +} |
3961 | + |
3962 | +void dummy::GroupStarter::reject_group(const std::shared_ptr<messaging::Group> &group) |
3963 | +{ |
3964 | + LOG(INFO) << __PRETTY_FUNCTION__ << " ,group_chat_id:" << group->id(); |
3965 | +} |
3966 | + |
3967 | +std::shared_ptr<messaging::Broadcast> dummy::GroupStarter::create_broadcast(const messaging::Members& recipients) |
3968 | +{ |
3969 | + |
3970 | +} |
3971 | + |
3972 | +std::map<std::string, std::shared_ptr<dummy::GroupManager>> dummy::GroupStarter::group_managers() |
3973 | +{ |
3974 | + return group_managers_; |
3975 | +} |
3976 | |
3977 | === added file 'examples/mfw-plugin-dummy/src/dummy/messenger.cpp' |
3978 | --- examples/mfw-plugin-dummy/src/dummy/messenger.cpp 1970-01-01 00:00:00 +0000 |
3979 | +++ examples/mfw-plugin-dummy/src/dummy/messenger.cpp 2017-03-22 21:22:50 +0000 |
3980 | @@ -0,0 +1,71 @@ |
3981 | +#include <dummy/messenger.h> |
3982 | +#include <dummy/group_chat.h> |
3983 | +#include <dummy/contact_chat.h> |
3984 | +#include <dummy/group_manager.h> |
3985 | +#include <dummy/connection.h> |
3986 | + |
3987 | +#include <messaging/group.h> |
3988 | +#include <messaging/user.h> |
3989 | +#include <messaging/variant.h> |
3990 | + |
3991 | +#include <glog/logging.h> |
3992 | + |
3993 | +using namespace std; |
3994 | + |
3995 | +dummy::Messenger::Messenger(const std::shared_ptr<messaging::Messenger::Observer>& observer, const std::shared_ptr<dummy::Connection> &_connection) |
3996 | + : messaging::Messenger{observer} |
3997 | + , connection(_connection) |
3998 | +{ |
3999 | +} |
4000 | + |
4001 | +std::shared_ptr<dummy::Messenger> dummy::Messenger::create(const std::shared_ptr<messaging::Messenger::Observer>& observer, const std::shared_ptr<dummy::Connection> &connection) |
4002 | +{ |
4003 | + std::shared_ptr<Messenger> messenger(new Messenger{observer, connection}); |
4004 | + return messenger; |
4005 | +} |
4006 | + |
4007 | +std::shared_ptr<messaging::Chat> dummy::Messenger::create_chat_with(const messaging::Recipient::shared_ptr& recipient, |
4008 | + const std::shared_ptr<messaging::Chat::Observer>& observer) |
4009 | +{ |
4010 | + switch (recipient->type()) |
4011 | + { |
4012 | + case messaging::RecipientType::user: |
4013 | + LOG(INFO) << "Creating user chat" << recipient->id(); |
4014 | + return dummy::ContactChat::create(std::dynamic_pointer_cast<messaging::User>(recipient), observer); |
4015 | + case messaging::RecipientType::group: |
4016 | + LOG(INFO) << "Creating group chat" << recipient->id(); |
4017 | + return dummy::GroupChat::create(std::dynamic_pointer_cast<messaging::Group>(recipient), observer); |
4018 | + case messaging::RecipientType::broadcast: |
4019 | + LOG(ERROR) << "Broadcast chat not supported on DUMMY"; |
4020 | + break; |
4021 | + } |
4022 | + return std::shared_ptr<messaging::Chat>(); |
4023 | +} |
4024 | + |
4025 | +void dummy::Messenger::send_delivery_notification(const std::shared_ptr<dummy::Message>& message) |
4026 | +{ |
4027 | + |
4028 | +} |
4029 | + |
4030 | +std::shared_ptr<dummy::GroupManager> dummy::Messenger::get_group_manager(const std::string &group_chat_id) |
4031 | +{ |
4032 | + auto chat = get_chat(group_chat_id); |
4033 | + if (not chat) { |
4034 | + return nullptr; |
4035 | + } |
4036 | + |
4037 | + auto group_chat = dynamic_pointer_cast<dummy::GroupChat>(chat); |
4038 | + auto group_manager = group_chat->interface<messaging::GroupManager>(); |
4039 | + |
4040 | + if (not group_manager) { |
4041 | + LOG(ERROR) << "Could not find a valid group manager plugged to chat " << group_chat_id; |
4042 | + return nullptr; |
4043 | + } |
4044 | + |
4045 | + return std::dynamic_pointer_cast<dummy::GroupManager>(group_manager); |
4046 | +} |
4047 | + |
4048 | +void dummy::Messenger::remove_chat(const std::string &chat_id) |
4049 | +{ |
4050 | + chats().erase(chat_id); |
4051 | +} |
4052 | |
4053 | === added file 'examples/mfw-plugin-dummy/src/dummy/presence_manager.cpp' |
4054 | --- examples/mfw-plugin-dummy/src/dummy/presence_manager.cpp 1970-01-01 00:00:00 +0000 |
4055 | +++ examples/mfw-plugin-dummy/src/dummy/presence_manager.cpp 2017-03-22 21:22:50 +0000 |
4056 | @@ -0,0 +1,59 @@ |
4057 | +#include <dummy/presence_manager.h> |
4058 | +#include <dummy/user.h> |
4059 | +#include <dummy/connector.h> |
4060 | + |
4061 | +#include <glog/logging.h> |
4062 | + |
4063 | +using namespace std; |
4064 | + |
4065 | +dummy::PresenceManager::PresenceManager( |
4066 | + const std::shared_ptr<messaging::PresenceManager::Observer>& observer, |
4067 | + Connector *connector) |
4068 | + : messaging::PresenceManager{observer} |
4069 | + , connector_{connector} |
4070 | + , statuses_{{"offline", messaging::StatusSpec{ |
4071 | + messaging::PresenceType::offline, |
4072 | + messaging::StatusSpec::Flags::may_set_on_self & |
4073 | + messaging::StatusSpec::Flags::can_have_message}}, |
4074 | + {"available", messaging::StatusSpec{ |
4075 | + messaging::PresenceType::available, |
4076 | + messaging::StatusSpec::Flags::may_set_on_self & |
4077 | + messaging::StatusSpec::Flags::can_have_message}}, |
4078 | + {"unknown", messaging::StatusSpec{ |
4079 | + messaging::PresenceType::unknown, |
4080 | + messaging::StatusSpec::Flags::none}}} |
4081 | +{ |
4082 | +} |
4083 | + |
4084 | +std::shared_ptr<dummy::PresenceManager> dummy::PresenceManager::create(const std::shared_ptr<messaging::PresenceManager::Observer>& observer, |
4085 | + Connector* connector) |
4086 | +{ |
4087 | + std::shared_ptr<PresenceManager> presence(new PresenceManager{observer, connector}); |
4088 | + return presence; |
4089 | +} |
4090 | + |
4091 | +messaging::PresenceManager::StatusMap dummy::PresenceManager::get_valid_statuses() |
4092 | +{ |
4093 | + return statuses_; |
4094 | +} |
4095 | + |
4096 | +void dummy::PresenceManager::set_self_presence(const std::string&, const std::string&) |
4097 | +{ |
4098 | + throw std::logic_error{"Not implemented"}; |
4099 | +} |
4100 | + |
4101 | +void dummy::PresenceManager::request_presence(const std::shared_ptr<messaging::Recipient> &recipient) |
4102 | +{ |
4103 | + |
4104 | +} |
4105 | + |
4106 | +messaging::Presence dummy::PresenceManager::create_presence(const std::string& status, const std::string& status_message) |
4107 | +{ |
4108 | + auto it = statuses_.find(status); |
4109 | + if (it != statuses_.end()) |
4110 | + { |
4111 | + return messaging::Presence{it->second.type, status, status_message}; |
4112 | + } |
4113 | + |
4114 | + throw std::logic_error{"Trying to create a presence from a not specified presence status"}; |
4115 | +} |
4116 | |
4117 | === added file 'examples/mfw-plugin-dummy/src/dummy/user.cpp' |
4118 | --- examples/mfw-plugin-dummy/src/dummy/user.cpp 1970-01-01 00:00:00 +0000 |
4119 | +++ examples/mfw-plugin-dummy/src/dummy/user.cpp 2017-03-22 21:22:50 +0000 |
4120 | @@ -0,0 +1,14 @@ |
4121 | +#include <dummy/user.h> |
4122 | + |
4123 | +#include <messaging/user.h> |
4124 | + |
4125 | +dummy::User dummy::User::from_recipient(const std::shared_ptr<messaging::Recipient> &recipient) |
4126 | +{ |
4127 | + dummy::User user; |
4128 | + user.username = recipient->id(); |
4129 | + return user; |
4130 | +} |
4131 | + |
4132 | +messaging::Recipient::shared_ptr dummy::User::to_recipient() const |
4133 | +{ |
4134 | +} |
FAILED: Continuous integration, rev:78 /jenkins. canonical. com/system- apps/job/ lp-messaging- framework- ci/1/ /jenkins. canonical. com/system- apps/job/ build/2331/ console /jenkins. canonical. com/system- apps/job/ build-0- fetch/2330 /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=amd64, release= xenial+ overlay/ 2152/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=amd64, release= zesty/2152/ console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=armhf, release= xenial+ overlay/ 2152/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=armhf, release= zesty/2152/ console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=i386, release= xenial+ overlay/ 2152/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=i386, release= zesty/2152/ console
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild: /jenkins. canonical. com/system- apps/job/ lp-messaging- framework- ci/1/rebuild
https:/