Merge lp:~saviq/unity/phablet.drop-unity-api into lp:unity/phablet

Proposed by Michał Sawicz
Status: Merged
Approved by: Michael Zanetti
Approved revision: no longer in the source branch.
Merged at revision: 730
Proposed branch: lp:~saviq/unity/phablet.drop-unity-api
Merge into: lp:unity/phablet
Diff against target: 7762 lines (+0/-7328)
67 files modified
CMakeLists.txt (+0/-63)
CTestCustom.cmake.in (+0/-16)
debian/control (+0/-25)
debian/libunity-api-dev.install (+0/-3)
debian/libunity-api-doc.install (+0/-1)
debian/libunity-api.install (+0/-1)
doc/Doxyfile.in (+0/-1826)
include/CMakeLists.txt (+0/-4)
include/unity/CMakeLists.txt (+0/-10)
include/unity/Exception.h (+0/-158)
include/unity/UnityExceptions.h (+0/-258)
include/unity/api/CMakeLists.txt (+0/-12)
include/unity/api/Version.h.in (+0/-103)
include/unity/config.h (+0/-30)
include/unity/internal/ExceptionImpl.h (+0/-60)
include/unity/internal/UnityExceptionsImpl.h (+0/-95)
include/unity/scopes/CMakeLists.txt (+0/-6)
include/unity/util/CMakeLists.txt (+0/-6)
include/unity/util/Daemon.h (+0/-129)
include/unity/util/DefinesPtrs.h (+0/-89)
include/unity/util/FileIO.h (+0/-40)
include/unity/util/NonCopyable.h (+0/-89)
include/unity/util/internal/DaemonImpl.h (+0/-67)
include/unity/util/internal/ResourcePtr.h (+0/-793)
src/CMakeLists.txt (+0/-14)
src/libunity-api.pc.in (+0/-23)
src/unity/CMakeLists.txt (+0/-10)
src/unity/Exception.cpp (+0/-145)
src/unity/UnityExceptions.cpp (+0/-246)
src/unity/api/CMakeLists.txt (+0/-8)
src/unity/api/Version.cpp (+0/-59)
src/unity/api/internal/CMakeLists.txt (+0/-4)
src/unity/api/scopes/CMakeLists.txt (+0/-6)
src/unity/api/scopes/internal/CMakeLists.txt (+0/-4)
src/unity/internal/CMakeLists.txt (+0/-6)
src/unity/internal/ExceptionImpl.cpp (+0/-244)
src/unity/internal/UnityExceptionsImpl.cpp (+0/-126)
src/unity/util/CMakeLists.txt (+0/-8)
src/unity/util/Daemon.cpp (+0/-89)
src/unity/util/FileIO.cpp (+0/-106)
src/unity/util/internal/CMakeLists.txt (+0/-5)
src/unity/util/internal/DaemonImpl.cpp (+0/-271)
tests/CMakeLists.txt (+0/-3)
tests/cleanincludes/CMakeLists.txt (+0/-2)
tests/cleanincludes/includechecker.py (+0/-74)
tests/gtest/CMakeLists.txt (+0/-18)
tests/gtest/libgtest/CMakeLists.txt (+0/-13)
tests/gtest/unity/CMakeLists.txt (+0/-8)
tests/gtest/unity/Exceptions_test.cpp (+0/-536)
tests/gtest/unity/api/CMakeLists.txt (+0/-1)
tests/gtest/unity/api/Version/CMakeLists.txt (+0/-4)
tests/gtest/unity/api/Version/Version_test.cpp (+0/-31)
tests/gtest/unity/util/CMakeLists.txt (+0/-4)
tests/gtest/unity/util/Daemon/CMakeLists.txt (+0/-4)
tests/gtest/unity/util/Daemon/Daemon_test.cpp (+0/-353)
tests/gtest/unity/util/Daemon/daemon-tester.py (+0/-57)
tests/gtest/unity/util/DefinesPtrs/CMakeLists.txt (+0/-4)
tests/gtest/unity/util/DefinesPtrs/DefinesPtrs_test.cpp (+0/-45)
tests/gtest/unity/util/FileIO/CMakeLists.txt (+0/-4)
tests/gtest/unity/util/FileIO/FileIO_test.cpp (+0/-71)
tests/gtest/unity/util/internal/CMakeLists.txt (+0/-1)
tests/gtest/unity/util/internal/ResourcePtr/CMakeLists.txt (+0/-4)
tests/gtest/unity/util/internal/ResourcePtr/ResourcePtr_test.cpp (+0/-529)
tests/headers/CMakeLists.txt (+0/-34)
tests/headers/check_public_headers.py (+0/-99)
tests/headers/compile_headers.py (+0/-158)
valgrind-suppress (+0/-13)
To merge this branch: bzr merge lp:~saviq/unity/phablet.drop-unity-api
Reviewer Review Type Date Requested Status
Michael Zanetti (community) Approve
PS Jenkins bot (community) continuous-integration Approve
Review via email: mp+166019@code.launchpad.net

Commit message

drop unity-api parts that have been split away to lp:unity-api

Description of the change

The unity-api parts were split away to lp:unity-api.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Michael Zanetti (mzanetti) wrote :

looks good to me and makes it saucy :)

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2013-05-28 09:06:22 +0000
3+++ CMakeLists.txt 2013-06-04 09:01:26 +0000
4@@ -47,29 +47,11 @@
5 add_custom_target(cppcheck COMMAND cppcheck --enable=all -q --error-exitcode=2
6 ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
7
8-#
9-# Definitions for testing with valgrind.
10-#
11-
12-configure_file(CTestCustom.cmake.in CTestCustom.cmake) # Tests in CTestCustom.cmake are skipped for valgrind
13-
14-find_program(MEMORYCHECK_COMMAND NAMES valgrind)
15-if (MEMORYCHECK_COMMAND)
16- set(MEMORYCHECK_COMMAND_OPTIONS
17- "--suppressions=${CMAKE_SOURCE_DIR}/valgrind-suppress --leak-check=full --num-callers=40 --error-exitcode=3"
18- )
19- add_custom_target(valgrind DEPENDS NightlyMemCheck)
20-else()
21- message(WARNING "Cannot find valgrind: valgrind target will not be available")
22-endif()
23-
24-
25 include(FindPkgConfig)
26 find_package(Qt5Qml)
27 find_package(Qt5Quick)
28 find_package(Qt5Gui)
29 find_package(Qt5DBus)
30-find_package(Boost 1.49.0 COMPONENTS regex REQUIRED)
31
32 # Standard install paths
33 include(GNUInstallDirs)
34@@ -80,17 +62,10 @@
35
36 include_directories(
37 ${CMAKE_CURRENT_BINARY_DIR}
38- ${CMAKE_CURRENT_BINARY_DIR}/include
39 ${CMAKE_CURRENT_SOURCE_DIR}
40- ${CMAKE_CURRENT_SOURCE_DIR}/include
41 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
42 )
43
44-# When building the library, we set the default symbol visibility
45-# to "hidden", so we don't export things by default.
46-# Exported functions and classes are prefixed by a UNITY_API macro,
47-# which explicitly exports a symbol if UNITY_DLL_EXPORTS is defined.
48-add_definitions(-DUNITY_DLL_EXPORTS)
49 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
50
51 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-permissive -pedantic -Wall -Wextra")
52@@ -109,21 +84,6 @@
53 # "signals" and "slots"
54 add_definitions(-DQT_NO_KEYWORDS)
55
56-# API version
57-set(UNITY_API_MAJOR 0)
58-set(UNITY_API_MINOR 1)
59-set(UNITY_API_MICRO 0)
60-set(UNITY_API_VERSION "${UNITY_API_MAJOR}.${UNITY_API_MINOR}.${UNITY_API_MICRO}")
61-
62-# API library
63-set(UNITY_API_LIB unity-api)
64-
65-# Other libraries we depend on
66-set(OTHER_API_LIBS )
67-
68-# All the libraries we need to link a normal executable that uses the Unity API
69-set(LIBS ${UNITY_API_LIB} ${OTHER_API_LIBS})
70-
71 # Tests
72 include(CTest)
73 enable_testing()
74@@ -171,9 +131,7 @@
75 )
76
77 # add subdirectories to build
78-add_subdirectory(include)
79 add_subdirectory(plugins)
80-add_subdirectory(src)
81
82 # install subdirectories
83 set(QML_DIRS
84@@ -203,27 +161,6 @@
85 )
86
87 #
88-# Documentation
89-#
90-
91-find_package(Doxygen)
92-find_program(DOT_EXECUTABLE dot /usr/bin)
93-if (NOT DOXYGEN_FOUND OR NOT DOT_EXECUTABLE)
94- message(WARNING "Cannot generate documentation: doxygen and/or graphviz not found")
95-else()
96- configure_file(${PROJECT_SOURCE_DIR}/doc/Doxyfile.in ${PROJECT_BINARY_DIR}/doc/Doxyfile @ONLY IMMEDIATE)
97- add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/doc/lib${UNITY_API_LIB}/index.html
98- COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/doc/Doxyfile
99- DEPENDS ${PROJECT_BINARY_DIR}/doc/Doxyfile
100- ${UNITY_API_LIB_SRC}
101- ${UNITY_API_LIB_HDRS})
102- add_custom_target(doc ALL
103- DEPENDS ${PROJECT_BINARY_DIR}/doc/lib${UNITY_API_LIB}/index.html)
104- install(DIRECTORY ${PROJECT_BINARY_DIR}/doc/lib${UNITY_API_LIB}
105- DESTINATION ${CMAKE_INSTALL_PREFIX}/share/doc)
106-endif()
107-
108-#
109 # Translation
110 #
111 add_subdirectory(po)
112
113=== removed file 'CTestCustom.cmake.in'
114--- CTestCustom.cmake.in 2013-04-16 02:37:02 +0000
115+++ CTestCustom.cmake.in 1970-01-01 00:00:00 +0000
116@@ -1,16 +0,0 @@
117-#
118-# Tests listed here will not be run by the valgrind target.
119-#
120-
121-SET(CTEST_CUSTOM_MEMCHECK_IGNORE
122- cleanincludes
123- testAnimationControllerWithSignals
124- testCarousel
125- testClock
126- testCrossFadeImage
127- testIndicatorItem
128- testMathLocal
129- testRatingStars
130- testSideStage
131- testTimeLocal
132- whitespace)
133
134=== modified file 'debian/control'
135--- debian/control 2013-05-31 00:55:24 +0000
136+++ debian/control 2013-06-04 09:01:26 +0000
137@@ -4,16 +4,11 @@
138 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
139 Build-Depends: cmake,
140 debhelper (>= 9),
141- doxygen,
142- graphviz,
143- libboost-regex1.49-dev (>= 1.49),
144- libboost1.49-dev (>= 1.49),
145 libc6-dev,
146 libdee-qt5-dev (>= 3.0),
147 libgl1-mesa-dev[!armhf] | libgl-dev[!armhf],
148 libgl1-mesa-dri,
149 libgles2-mesa-dev[armhf],
150- libgtest-dev,
151 libhud-client2-dev,
152 libpulse-dev,
153 libunity-core-6.0-dev,
154@@ -74,23 +69,3 @@
155 ${shlibs:Depends},
156 Description: Test package for the shell
157 Autopilot tests for the qml-phone-shell package
158-
159-Package: libunity-api
160-Architecture: all
161-Depends: ${misc:Depends}, ${shlibs:Depends}
162-Description: API for shell integration
163- Library to integrate with the Unity shell
164-
165-Package: libunity-api-dev
166-Architecture: all
167-Depends: libboost1.49-dev (>= 1.49),
168- libunity-api (= ${binary:Version}),
169- ${misc:Depends},
170-Description: Header files for Unity API
171- Library to integrate with the Unity shell (dev files)
172-
173-Package: libunity-api-doc
174-Architecture: all
175-Depends: ${misc:Depends}
176-Description: Documentation for Unity API
177- Library to integrate with the Unity shell (documentation)
178
179=== removed file 'debian/libunity-api-dev.install'
180--- debian/libunity-api-dev.install 2013-04-19 01:18:29 +0000
181+++ debian/libunity-api-dev.install 1970-01-01 00:00:00 +0000
182@@ -1,3 +0,0 @@
183-usr/include/unity/*
184-usr/lib/libunity-api.so
185-usr/lib/pkgconfig/libunity-api.pc
186
187=== removed file 'debian/libunity-api-doc.install'
188--- debian/libunity-api-doc.install 2013-04-19 01:18:29 +0000
189+++ debian/libunity-api-doc.install 1970-01-01 00:00:00 +0000
190@@ -1,1 +0,0 @@
191-usr/share/doc/libunity-api/*
192
193=== removed file 'debian/libunity-api.install'
194--- debian/libunity-api.install 2013-04-09 03:34:17 +0000
195+++ debian/libunity-api.install 1970-01-01 00:00:00 +0000
196@@ -1,1 +0,0 @@
197-usr/lib/libunity-api.so.*
198
199=== removed file 'doc/Doxyfile.in'
200--- doc/Doxyfile.in 2013-04-19 01:05:08 +0000
201+++ doc/Doxyfile.in 1970-01-01 00:00:00 +0000
202@@ -1,1826 +0,0 @@
203-# Doxyfile 1.8.1.2
204-
205-# This file describes the settings to be used by the documentation system
206-# doxygen (www.doxygen.org) for a project
207-#
208-# All text after a hash (#) is considered a comment and will be ignored
209-# The format is:
210-# TAG = value [value, ...]
211-# For lists items can also be appended using:
212-# TAG += value [value, ...]
213-# Values that contain spaces should be placed between quotes (" ")
214-
215-#---------------------------------------------------------------------------
216-# Project related configuration options
217-#---------------------------------------------------------------------------
218-
219-# This tag specifies the encoding used for all characters in the config file
220-# that follow. The default is UTF-8 which is also the encoding used for all
221-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
222-# iconv built into libc) for the transcoding. See
223-# http://www.gnu.org/software/libiconv for the list of possible encodings.
224-
225-DOXYFILE_ENCODING = UTF-8
226-
227-# The PROJECT_NAME tag is a single word (or sequence of words) that should
228-# identify the project. Note that if you do not use Doxywizard you need
229-# to put quotes around the project name if it contains spaces.
230-
231-PROJECT_NAME = "My Project"
232-
233-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
234-# This could be handy for archiving the generated documentation or
235-# if some version control system is used.
236-
237-PROJECT_NUMBER =
238-
239-# Using the PROJECT_BRIEF tag one can provide an optional one line description
240-# for a project that appears at the top of each page and should give viewer
241-# a quick idea about the purpose of the project. Keep the description short.
242-
243-PROJECT_BRIEF =
244-
245-# With the PROJECT_LOGO tag one can specify an logo or icon that is
246-# included in the documentation. The maximum height of the logo should not
247-# exceed 55 pixels and the maximum width should not exceed 200 pixels.
248-# Doxygen will copy the logo to the output directory.
249-
250-PROJECT_LOGO =
251-
252-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
253-# base path where the generated documentation will be put.
254-# If a relative path is entered, it will be relative to the location
255-# where doxygen was started. If left blank the current directory will be used.
256-
257-OUTPUT_DIRECTORY = @PROJECT_BINARY_DIR@/doc
258-
259-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
260-# 4096 sub-directories (in 2 levels) under the output directory of each output
261-# format and will distribute the generated files over these directories.
262-# Enabling this option can be useful when feeding doxygen a huge amount of
263-# source files, where putting all generated files in the same directory would
264-# otherwise cause performance problems for the file system.
265-
266-CREATE_SUBDIRS = NO
267-
268-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
269-# documentation generated by doxygen is written. Doxygen will use this
270-# information to generate all constant output in the proper language.
271-# The default language is English, other supported languages are:
272-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
273-# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
274-# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
275-# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
276-# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
277-# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
278-
279-OUTPUT_LANGUAGE = English
280-
281-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
282-# include brief member descriptions after the members that are listed in
283-# the file and class documentation (similar to JavaDoc).
284-# Set to NO to disable this.
285-
286-BRIEF_MEMBER_DESC = YES
287-
288-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
289-# the brief description of a member or function before the detailed description.
290-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
291-# brief descriptions will be completely suppressed.
292-
293-REPEAT_BRIEF = YES
294-
295-# This tag implements a quasi-intelligent brief description abbreviator
296-# that is used to form the text in various listings. Each string
297-# in this list, if found as the leading text of the brief description, will be
298-# stripped from the text and the result after processing the whole list, is
299-# used as the annotated text. Otherwise, the brief description is used as-is.
300-# If left blank, the following values are used ("$name" is automatically
301-# replaced with the name of the entity): "The $name class" "The $name widget"
302-# "The $name file" "is" "provides" "specifies" "contains"
303-# "represents" "a" "an" "the"
304-
305-ABBREVIATE_BRIEF = "The $name class" \
306- "The $name widget" \
307- "The $name file" \
308- is \
309- provides \
310- specifies \
311- contains \
312- represents \
313- a \
314- an \
315- the
316-
317-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
318-# Doxygen will generate a detailed section even if there is only a brief
319-# description.
320-
321-ALWAYS_DETAILED_SEC = NO
322-
323-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
324-# inherited members of a class in the documentation of that class as if those
325-# members were ordinary class members. Constructors, destructors and assignment
326-# operators of the base classes will not be shown.
327-
328-INLINE_INHERITED_MEMB = NO
329-
330-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
331-# path before files name in the file list and in the header files. If set
332-# to NO the shortest path that makes the file name unique will be used.
333-
334-FULL_PATH_NAMES = YES
335-
336-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
337-# can be used to strip a user-defined part of the path. Stripping is
338-# only done if one of the specified strings matches the left-hand part of
339-# the path. The tag can be used to show relative paths in the file list.
340-# If left blank the directory from which doxygen is run is used as the
341-# path to strip.
342-
343-STRIP_FROM_PATH = @PROJECT_SOURCE_DIR@ @PROJECT_BINARY_DIR@
344-
345-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
346-# the path mentioned in the documentation of a class, which tells
347-# the reader which header file to include in order to use a class.
348-# If left blank only the name of the header file containing the class
349-# definition is used. Otherwise one should specify the include paths that
350-# are normally passed to the compiler using the -I flag.
351-
352-STRIP_FROM_INC_PATH = @PROJECT_SOURCE_DIR@/include @PROJECT_BINARY_DIR@/include
353-
354-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
355-# (but less readable) file names. This can be useful if your file system
356-# doesn't support long names like on DOS, Mac, or CD-ROM.
357-
358-SHORT_NAMES = NO
359-
360-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
361-# will interpret the first line (until the first dot) of a JavaDoc-style
362-# comment as the brief description. If set to NO, the JavaDoc
363-# comments will behave just like regular Qt-style comments
364-# (thus requiring an explicit @brief command for a brief description.)
365-
366-JAVADOC_AUTOBRIEF = NO
367-
368-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
369-# interpret the first line (until the first dot) of a Qt-style
370-# comment as the brief description. If set to NO, the comments
371-# will behave just like regular Qt-style comments (thus requiring
372-# an explicit \brief command for a brief description.)
373-
374-QT_AUTOBRIEF = NO
375-
376-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
377-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
378-# comments) as a brief description. This used to be the default behaviour.
379-# The new default is to treat a multi-line C++ comment block as a detailed
380-# description. Set this tag to YES if you prefer the old behaviour instead.
381-
382-MULTILINE_CPP_IS_BRIEF = NO
383-
384-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
385-# member inherits the documentation from any documented member that it
386-# re-implements.
387-
388-INHERIT_DOCS = YES
389-
390-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
391-# a new page for each member. If set to NO, the documentation of a member will
392-# be part of the file/class/namespace that contains it.
393-
394-SEPARATE_MEMBER_PAGES = NO
395-
396-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
397-# Doxygen uses this value to replace tabs by spaces in code fragments.
398-
399-TAB_SIZE = 8
400-
401-# This tag can be used to specify a number of aliases that acts
402-# as commands in the documentation. An alias has the form "name=value".
403-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
404-# put the command \sideeffect (or @sideeffect) in the documentation, which
405-# will result in a user-defined paragraph with heading "Side Effects:".
406-# You can put \n's in the value part of an alias to insert newlines.
407-
408-ALIASES =
409-
410-# This tag can be used to specify a number of word-keyword mappings (TCL only).
411-# A mapping has the form "name=value". For example adding
412-# "class=itcl::class" will allow you to use the command class in the
413-# itcl::class meaning.
414-
415-TCL_SUBST =
416-
417-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
418-# sources only. Doxygen will then generate output that is more tailored for C.
419-# For instance, some of the names that are used will be different. The list
420-# of all members will be omitted, etc.
421-
422-OPTIMIZE_OUTPUT_FOR_C = NO
423-
424-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
425-# sources only. Doxygen will then generate output that is more tailored for
426-# Java. For instance, namespaces will be presented as packages, qualified
427-# scopes will look different, etc.
428-
429-OPTIMIZE_OUTPUT_JAVA = NO
430-
431-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
432-# sources only. Doxygen will then generate output that is more tailored for
433-# Fortran.
434-
435-OPTIMIZE_FOR_FORTRAN = NO
436-
437-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
438-# sources. Doxygen will then generate output that is tailored for
439-# VHDL.
440-
441-OPTIMIZE_OUTPUT_VHDL = NO
442-
443-# Doxygen selects the parser to use depending on the extension of the files it
444-# parses. With this tag you can assign which parser to use for a given extension.
445-# Doxygen has a built-in mapping, but you can override or extend it using this
446-# tag. The format is ext=language, where ext is a file extension, and language
447-# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
448-# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
449-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
450-# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
451-# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
452-
453-EXTENSION_MAPPING =
454-
455-# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
456-# comments according to the Markdown format, which allows for more readable
457-# documentation. See http://daringfireball.net/projects/markdown/ for details.
458-# The output of markdown processing is further processed by doxygen, so you
459-# can mix doxygen, HTML, and XML commands with Markdown formatting.
460-# Disable only in case of backward compatibilities issues.
461-
462-MARKDOWN_SUPPORT = YES
463-
464-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
465-# to include (a tag file for) the STL sources as input, then you should
466-# set this tag to YES in order to let doxygen match functions declarations and
467-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
468-# func(std::string) {}). This also makes the inheritance and collaboration
469-# diagrams that involve STL classes more complete and accurate.
470-
471-BUILTIN_STL_SUPPORT = NO
472-
473-# If you use Microsoft's C++/CLI language, you should set this option to YES to
474-# enable parsing support.
475-
476-CPP_CLI_SUPPORT = NO
477-
478-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
479-# Doxygen will parse them like normal C++ but will assume all classes use public
480-# instead of private inheritance when no explicit protection keyword is present.
481-
482-SIP_SUPPORT = NO
483-
484-# For Microsoft's IDL there are propget and propput attributes to indicate getter
485-# and setter methods for a property. Setting this option to YES (the default)
486-# will make doxygen replace the get and set methods by a property in the
487-# documentation. This will only work if the methods are indeed getting or
488-# setting a simple type. If this is not the case, or you want to show the
489-# methods anyway, you should set this option to NO.
490-
491-IDL_PROPERTY_SUPPORT = YES
492-
493-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
494-# tag is set to YES, then doxygen will reuse the documentation of the first
495-# member in the group (if any) for the other members of the group. By default
496-# all members of a group must be documented explicitly.
497-
498-DISTRIBUTE_GROUP_DOC = NO
499-
500-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
501-# the same type (for instance a group of public functions) to be put as a
502-# subgroup of that type (e.g. under the Public Functions section). Set it to
503-# NO to prevent subgrouping. Alternatively, this can be done per class using
504-# the \nosubgrouping command.
505-
506-SUBGROUPING = YES
507-
508-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
509-# unions are shown inside the group in which they are included (e.g. using
510-# @ingroup) instead of on a separate page (for HTML and Man pages) or
511-# section (for LaTeX and RTF).
512-
513-INLINE_GROUPED_CLASSES = NO
514-
515-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
516-# unions with only public data fields will be shown inline in the documentation
517-# of the scope in which they are defined (i.e. file, namespace, or group
518-# documentation), provided this scope is documented. If set to NO (the default),
519-# structs, classes, and unions are shown on a separate page (for HTML and Man
520-# pages) or section (for LaTeX and RTF).
521-
522-INLINE_SIMPLE_STRUCTS = NO
523-
524-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
525-# is documented as struct, union, or enum with the name of the typedef. So
526-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
527-# with name TypeT. When disabled the typedef will appear as a member of a file,
528-# namespace, or class. And the struct will be named TypeS. This can typically
529-# be useful for C code in case the coding convention dictates that all compound
530-# types are typedef'ed and only the typedef is referenced, never the tag name.
531-
532-TYPEDEF_HIDES_STRUCT = NO
533-
534-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
535-# determine which symbols to keep in memory and which to flush to disk.
536-# When the cache is full, less often used symbols will be written to disk.
537-# For small to medium size projects (<1000 input files) the default value is
538-# probably good enough. For larger projects a too small cache size can cause
539-# doxygen to be busy swapping symbols to and from disk most of the time
540-# causing a significant performance penalty.
541-# If the system has enough physical memory increasing the cache will improve the
542-# performance by keeping more symbols in memory. Note that the value works on
543-# a logarithmic scale so increasing the size by one will roughly double the
544-# memory usage. The cache size is given by this formula:
545-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
546-# corresponding to a cache size of 2^16 = 65536 symbols.
547-
548-SYMBOL_CACHE_SIZE = 0
549-
550-# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
551-# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
552-# their name and scope. Since this can be an expensive process and often the
553-# same symbol appear multiple times in the code, doxygen keeps a cache of
554-# pre-resolved symbols. If the cache is too small doxygen will become slower.
555-# If the cache is too large, memory is wasted. The cache size is given by this
556-# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
557-# corresponding to a cache size of 2^16 = 65536 symbols.
558-
559-LOOKUP_CACHE_SIZE = 0
560-
561-#---------------------------------------------------------------------------
562-# Build related configuration options
563-#---------------------------------------------------------------------------
564-
565-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
566-# documentation are documented, even if no documentation was available.
567-# Private class members and static file members will be hidden unless
568-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
569-
570-EXTRACT_ALL = NO
571-
572-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
573-# will be included in the documentation.
574-
575-EXTRACT_PRIVATE = NO
576-
577-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
578-# scope will be included in the documentation.
579-
580-EXTRACT_PACKAGE = NO
581-
582-# If the EXTRACT_STATIC tag is set to YES all static members of a file
583-# will be included in the documentation.
584-
585-EXTRACT_STATIC = NO
586-
587-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
588-# defined locally in source files will be included in the documentation.
589-# If set to NO only classes defined in header files are included.
590-
591-EXTRACT_LOCAL_CLASSES = YES
592-
593-# This flag is only useful for Objective-C code. When set to YES local
594-# methods, which are defined in the implementation section but not in
595-# the interface are included in the documentation.
596-# If set to NO (the default) only methods in the interface are included.
597-
598-EXTRACT_LOCAL_METHODS = NO
599-
600-# If this flag is set to YES, the members of anonymous namespaces will be
601-# extracted and appear in the documentation as a namespace called
602-# 'anonymous_namespace{file}', where file will be replaced with the base
603-# name of the file that contains the anonymous namespace. By default
604-# anonymous namespaces are hidden.
605-
606-EXTRACT_ANON_NSPACES = NO
607-
608-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
609-# undocumented members of documented classes, files or namespaces.
610-# If set to NO (the default) these members will be included in the
611-# various overviews, but no documentation section is generated.
612-# This option has no effect if EXTRACT_ALL is enabled.
613-
614-HIDE_UNDOC_MEMBERS = NO
615-
616-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
617-# undocumented classes that are normally visible in the class hierarchy.
618-# If set to NO (the default) these classes will be included in the various
619-# overviews. This option has no effect if EXTRACT_ALL is enabled.
620-
621-HIDE_UNDOC_CLASSES = NO
622-
623-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
624-# friend (class|struct|union) declarations.
625-# If set to NO (the default) these declarations will be included in the
626-# documentation.
627-
628-HIDE_FRIEND_COMPOUNDS = NO
629-
630-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
631-# documentation blocks found inside the body of a function.
632-# If set to NO (the default) these blocks will be appended to the
633-# function's detailed documentation block.
634-
635-HIDE_IN_BODY_DOCS = NO
636-
637-# The INTERNAL_DOCS tag determines if documentation
638-# that is typed after a \internal command is included. If the tag is set
639-# to NO (the default) then the documentation will be excluded.
640-# Set it to YES to include the internal documentation.
641-
642-INTERNAL_DOCS = NO
643-
644-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
645-# file names in lower-case letters. If set to YES upper-case letters are also
646-# allowed. This is useful if you have classes or files whose names only differ
647-# in case and if your file system supports case sensitive file names. Windows
648-# and Mac users are advised to set this option to NO.
649-
650-CASE_SENSE_NAMES = NO
651-
652-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
653-# will show members with their full class and namespace scopes in the
654-# documentation. If set to YES the scope will be hidden.
655-
656-HIDE_SCOPE_NAMES = NO
657-
658-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
659-# will put a list of the files that are included by a file in the documentation
660-# of that file.
661-
662-SHOW_INCLUDE_FILES = YES
663-
664-# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
665-# will list include files with double quotes in the documentation
666-# rather than with sharp brackets.
667-
668-FORCE_LOCAL_INCLUDES = NO
669-
670-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
671-# is inserted in the documentation for inline members.
672-
673-INLINE_INFO = YES
674-
675-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
676-# will sort the (detailed) documentation of file and class members
677-# alphabetically by member name. If set to NO the members will appear in
678-# declaration order.
679-
680-SORT_MEMBER_DOCS = YES
681-
682-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
683-# brief documentation of file, namespace and class members alphabetically
684-# by member name. If set to NO (the default) the members will appear in
685-# declaration order.
686-
687-SORT_BRIEF_DOCS = NO
688-
689-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
690-# will sort the (brief and detailed) documentation of class members so that
691-# constructors and destructors are listed first. If set to NO (the default)
692-# the constructors will appear in the respective orders defined by
693-# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
694-# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
695-# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
696-
697-SORT_MEMBERS_CTORS_1ST = NO
698-
699-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
700-# hierarchy of group names into alphabetical order. If set to NO (the default)
701-# the group names will appear in their defined order.
702-
703-SORT_GROUP_NAMES = NO
704-
705-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
706-# sorted by fully-qualified names, including namespaces. If set to
707-# NO (the default), the class list will be sorted only by class name,
708-# not including the namespace part.
709-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
710-# Note: This option applies only to the class list, not to the
711-# alphabetical list.
712-
713-SORT_BY_SCOPE_NAME = NO
714-
715-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
716-# do proper type resolution of all parameters of a function it will reject a
717-# match between the prototype and the implementation of a member function even
718-# if there is only one candidate or it is obvious which candidate to choose
719-# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
720-# will still accept a match between prototype and implementation in such cases.
721-
722-STRICT_PROTO_MATCHING = NO
723-
724-# The GENERATE_TODOLIST tag can be used to enable (YES) or
725-# disable (NO) the todo list. This list is created by putting \todo
726-# commands in the documentation.
727-
728-GENERATE_TODOLIST = YES
729-
730-# The GENERATE_TESTLIST tag can be used to enable (YES) or
731-# disable (NO) the test list. This list is created by putting \test
732-# commands in the documentation.
733-
734-GENERATE_TESTLIST = YES
735-
736-# The GENERATE_BUGLIST tag can be used to enable (YES) or
737-# disable (NO) the bug list. This list is created by putting \bug
738-# commands in the documentation.
739-
740-GENERATE_BUGLIST = YES
741-
742-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
743-# disable (NO) the deprecated list. This list is created by putting
744-# \deprecated commands in the documentation.
745-
746-GENERATE_DEPRECATEDLIST= YES
747-
748-# The ENABLED_SECTIONS tag can be used to enable conditional
749-# documentation sections, marked by \if sectionname ... \endif.
750-
751-ENABLED_SECTIONS =
752-
753-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
754-# the initial value of a variable or macro consists of for it to appear in
755-# the documentation. If the initializer consists of more lines than specified
756-# here it will be hidden. Use a value of 0 to hide initializers completely.
757-# The appearance of the initializer of individual variables and macros in the
758-# documentation can be controlled using \showinitializer or \hideinitializer
759-# command in the documentation regardless of this setting.
760-
761-MAX_INITIALIZER_LINES = 30
762-
763-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
764-# at the bottom of the documentation of classes and structs. If set to YES the
765-# list will mention the files that were used to generate the documentation.
766-
767-SHOW_USED_FILES = YES
768-
769-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
770-# This will remove the Files entry from the Quick Index and from the
771-# Folder Tree View (if specified). The default is YES.
772-
773-SHOW_FILES = YES
774-
775-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
776-# Namespaces page. This will remove the Namespaces entry from the Quick Index
777-# and from the Folder Tree View (if specified). The default is YES.
778-
779-SHOW_NAMESPACES = YES
780-
781-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
782-# doxygen should invoke to get the current version for each file (typically from
783-# the version control system). Doxygen will invoke the program by executing (via
784-# popen()) the command <command> <input-file>, where <command> is the value of
785-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
786-# provided by doxygen. Whatever the program writes to standard output
787-# is used as the file version. See the manual for examples.
788-
789-FILE_VERSION_FILTER =
790-
791-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
792-# by doxygen. The layout file controls the global structure of the generated
793-# output files in an output format independent way. To create the layout file
794-# that represents doxygen's defaults, run doxygen with the -l option.
795-# You can optionally specify a file name after the option, if omitted
796-# DoxygenLayout.xml will be used as the name of the layout file.
797-
798-LAYOUT_FILE =
799-
800-# The CITE_BIB_FILES tag can be used to specify one or more bib files
801-# containing the references data. This must be a list of .bib files. The
802-# .bib extension is automatically appended if omitted. Using this command
803-# requires the bibtex tool to be installed. See also
804-# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
805-# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
806-# feature you need bibtex and perl available in the search path.
807-
808-CITE_BIB_FILES =
809-
810-#---------------------------------------------------------------------------
811-# configuration options related to warning and progress messages
812-#---------------------------------------------------------------------------
813-
814-# The QUIET tag can be used to turn on/off the messages that are generated
815-# by doxygen. Possible values are YES and NO. If left blank NO is used.
816-
817-QUIET = YES
818-
819-# The WARNINGS tag can be used to turn on/off the warning messages that are
820-# generated by doxygen. Possible values are YES and NO. If left blank
821-# NO is used.
822-
823-WARNINGS = YES
824-
825-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
826-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
827-# automatically be disabled.
828-
829-WARN_IF_UNDOCUMENTED = YES
830-
831-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
832-# potential errors in the documentation, such as not documenting some
833-# parameters in a documented function, or documenting parameters that
834-# don't exist or using markup commands wrongly.
835-
836-WARN_IF_DOC_ERROR = YES
837-
838-# The WARN_NO_PARAMDOC option can be enabled to get warnings for
839-# functions that are documented, but have no documentation for their parameters
840-# or return value. If set to NO (the default) doxygen will only warn about
841-# wrong or incomplete parameter documentation, but not about the absence of
842-# documentation.
843-
844-WARN_NO_PARAMDOC = NO
845-
846-# The WARN_FORMAT tag determines the format of the warning messages that
847-# doxygen can produce. The string should contain the $file, $line, and $text
848-# tags, which will be replaced by the file and line number from which the
849-# warning originated and the warning text. Optionally the format may contain
850-# $version, which will be replaced by the version of the file (if it could
851-# be obtained via FILE_VERSION_FILTER)
852-
853-WARN_FORMAT = "$file:$line: $text"
854-
855-# The WARN_LOGFILE tag can be used to specify a file to which warning
856-# and error messages should be written. If left blank the output is written
857-# to stderr.
858-
859-WARN_LOGFILE =
860-
861-#---------------------------------------------------------------------------
862-# configuration options related to the input files
863-#---------------------------------------------------------------------------
864-
865-# The INPUT tag can be used to specify the files and/or directories that contain
866-# documented source files. You may enter file names like "myfile.cpp" or
867-# directories like "/usr/src/myproject". Separate the files or directories
868-# with spaces.
869-
870-INPUT = @PROJECT_BINARY_DIR@/include @PROJECT_SOURCE_DIR@/include @PROJECT_SOURCE_DIR@/src
871-
872-# This tag can be used to specify the character encoding of the source files
873-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
874-# also the default input encoding. Doxygen uses libiconv (or the iconv built
875-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
876-# the list of possible encodings.
877-
878-INPUT_ENCODING = UTF-8
879-
880-# If the value of the INPUT tag contains directories, you can use the
881-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
882-# and *.h) to filter out the source-files in the directories. If left
883-# blank the following patterns are tested:
884-# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
885-# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
886-# *.f90 *.f *.for *.vhd *.vhdl
887-
888-FILE_PATTERNS = *.c \
889- *.cc \
890- *.cxx \
891- *.cpp \
892- *.c++ \
893- *.d \
894- *.java \
895- *.ii \
896- *.ixx \
897- *.ipp \
898- *.i++ \
899- *.inl \
900- *.h \
901- *.hh \
902- *.hxx \
903- *.hpp \
904- *.h++ \
905- *.idl \
906- *.odl \
907- *.cs \
908- *.php \
909- *.php3 \
910- *.inc \
911- *.m \
912- *.markdown \
913- *.md \
914- *.mm \
915- *.dox \
916- *.py \
917- *.f90 \
918- *.f \
919- *.for \
920- *.vhd \
921- *.vhdl
922-
923-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
924-# should be searched for input files as well. Possible values are YES and NO.
925-# If left blank NO is used.
926-
927-RECURSIVE = YES
928-
929-# The EXCLUDE tag can be used to specify files and/or directories that should be
930-# excluded from the INPUT source files. This way you can easily exclude a
931-# subdirectory from a directory tree whose root is specified with the INPUT tag.
932-# Note that relative paths are relative to the directory from which doxygen is
933-# run.
934-
935-EXCLUDE =
936-
937-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
938-# directories that are symbolic links (a Unix file system feature) are excluded
939-# from the input.
940-
941-EXCLUDE_SYMLINKS = NO
942-
943-# If the value of the INPUT tag contains directories, you can use the
944-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
945-# certain files from those directories. Note that the wildcards are matched
946-# against the file with absolute path, so to exclude all test directories
947-# for example use the pattern */test/*
948-
949-EXCLUDE_PATTERNS = */internal/*
950-
951-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
952-# (namespaces, classes, functions, etc.) that should be excluded from the
953-# output. The symbol name can be a fully qualified name, a word, or if the
954-# wildcard * is used, a substring. Examples: ANamespace, AClass,
955-# AClass::ANamespace, ANamespace::*Test
956-
957-EXCLUDE_SYMBOLS =
958-
959-# The EXAMPLE_PATH tag can be used to specify one or more files or
960-# directories that contain example code fragments that are included (see
961-# the \include command).
962-
963-EXAMPLE_PATH =
964-
965-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
966-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
967-# and *.h) to filter out the source-files in the directories. If left
968-# blank all files are included.
969-
970-EXAMPLE_PATTERNS = *
971-
972-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
973-# searched for input files to be used with the \include or \dontinclude
974-# commands irrespective of the value of the RECURSIVE tag.
975-# Possible values are YES and NO. If left blank NO is used.
976-
977-EXAMPLE_RECURSIVE = NO
978-
979-# The IMAGE_PATH tag can be used to specify one or more files or
980-# directories that contain image that are included in the documentation (see
981-# the \image command).
982-
983-IMAGE_PATH =
984-
985-# The INPUT_FILTER tag can be used to specify a program that doxygen should
986-# invoke to filter for each input file. Doxygen will invoke the filter program
987-# by executing (via popen()) the command <filter> <input-file>, where <filter>
988-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
989-# input file. Doxygen will then use the output that the filter program writes
990-# to standard output. If FILTER_PATTERNS is specified, this tag will be
991-# ignored.
992-
993-INPUT_FILTER =
994-
995-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
996-# basis. Doxygen will compare the file name with each pattern and apply the
997-# filter if there is a match. The filters are a list of the form:
998-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
999-# info on how filters are used. If FILTER_PATTERNS is empty or if
1000-# non of the patterns match the file name, INPUT_FILTER is applied.
1001-
1002-FILTER_PATTERNS =
1003-
1004-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
1005-# INPUT_FILTER) will be used to filter the input files when producing source
1006-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
1007-
1008-FILTER_SOURCE_FILES = NO
1009-
1010-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
1011-# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
1012-# and it is also possible to disable source filtering for a specific pattern
1013-# using *.ext= (so without naming a filter). This option only has effect when
1014-# FILTER_SOURCE_FILES is enabled.
1015-
1016-FILTER_SOURCE_PATTERNS =
1017-
1018-#---------------------------------------------------------------------------
1019-# configuration options related to source browsing
1020-#---------------------------------------------------------------------------
1021-
1022-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
1023-# be generated. Documented entities will be cross-referenced with these sources.
1024-# Note: To get rid of all source code in the generated output, make sure also
1025-# VERBATIM_HEADERS is set to NO.
1026-
1027-SOURCE_BROWSER = NO
1028-
1029-# Setting the INLINE_SOURCES tag to YES will include the body
1030-# of functions and classes directly in the documentation.
1031-
1032-INLINE_SOURCES = NO
1033-
1034-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
1035-# doxygen to hide any special comment blocks from generated source code
1036-# fragments. Normal C, C++ and Fortran comments will always remain visible.
1037-
1038-STRIP_CODE_COMMENTS = YES
1039-
1040-# If the REFERENCED_BY_RELATION tag is set to YES
1041-# then for each documented function all documented
1042-# functions referencing it will be listed.
1043-
1044-REFERENCED_BY_RELATION = NO
1045-
1046-# If the REFERENCES_RELATION tag is set to YES
1047-# then for each documented function all documented entities
1048-# called/used by that function will be listed.
1049-
1050-REFERENCES_RELATION = NO
1051-
1052-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
1053-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
1054-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
1055-# link to the source code. Otherwise they will link to the documentation.
1056-
1057-REFERENCES_LINK_SOURCE = YES
1058-
1059-# If the USE_HTAGS tag is set to YES then the references to source code
1060-# will point to the HTML generated by the htags(1) tool instead of doxygen
1061-# built-in source browser. The htags tool is part of GNU's global source
1062-# tagging system (see http://www.gnu.org/software/global/global.html). You
1063-# will need version 4.8.6 or higher.
1064-
1065-USE_HTAGS = NO
1066-
1067-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
1068-# will generate a verbatim copy of the header file for each class for
1069-# which an include is specified. Set to NO to disable this.
1070-
1071-VERBATIM_HEADERS = YES
1072-
1073-#---------------------------------------------------------------------------
1074-# configuration options related to the alphabetical class index
1075-#---------------------------------------------------------------------------
1076-
1077-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
1078-# of all compounds will be generated. Enable this if the project
1079-# contains a lot of classes, structs, unions or interfaces.
1080-
1081-ALPHABETICAL_INDEX = YES
1082-
1083-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
1084-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
1085-# in which this list will be split (can be a number in the range [1..20])
1086-
1087-COLS_IN_ALPHA_INDEX = 5
1088-
1089-# In case all classes in a project start with a common prefix, all
1090-# classes will be put under the same header in the alphabetical index.
1091-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
1092-# should be ignored while generating the index headers.
1093-
1094-IGNORE_PREFIX =
1095-
1096-#---------------------------------------------------------------------------
1097-# configuration options related to the HTML output
1098-#---------------------------------------------------------------------------
1099-
1100-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
1101-# generate HTML output.
1102-
1103-GENERATE_HTML = YES
1104-
1105-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
1106-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1107-# put in front of it. If left blank `html' will be used as the default path.
1108-
1109-HTML_OUTPUT = lib@UNITY_API_LIB@
1110-
1111-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
1112-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
1113-# doxygen will generate files with .html extension.
1114-
1115-HTML_FILE_EXTENSION = .html
1116-
1117-# The HTML_HEADER tag can be used to specify a personal HTML header for
1118-# each generated HTML page. If it is left blank doxygen will generate a
1119-# standard header. Note that when using a custom header you are responsible
1120-# for the proper inclusion of any scripts and style sheets that doxygen
1121-# needs, which is dependent on the configuration options used.
1122-# It is advised to generate a default header using "doxygen -w html
1123-# header.html footer.html stylesheet.css YourConfigFile" and then modify
1124-# that header. Note that the header is subject to change so you typically
1125-# have to redo this when upgrading to a newer version of doxygen or when
1126-# changing the value of configuration settings such as GENERATE_TREEVIEW!
1127-
1128-HTML_HEADER =
1129-
1130-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
1131-# each generated HTML page. If it is left blank doxygen will generate a
1132-# standard footer.
1133-
1134-HTML_FOOTER =
1135-
1136-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
1137-# style sheet that is used by each HTML page. It can be used to
1138-# fine-tune the look of the HTML output. If the tag is left blank doxygen
1139-# will generate a default style sheet. Note that doxygen will try to copy
1140-# the style sheet file to the HTML output directory, so don't put your own
1141-# style sheet in the HTML output directory as well, or it will be erased!
1142-
1143-HTML_STYLESHEET =
1144-
1145-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
1146-# other source files which should be copied to the HTML output directory. Note
1147-# that these files will be copied to the base HTML output directory. Use the
1148-# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
1149-# files. In the HTML_STYLESHEET file, use the file name only. Also note that
1150-# the files will be copied as-is; there are no commands or markers available.
1151-
1152-HTML_EXTRA_FILES =
1153-
1154-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
1155-# Doxygen will adjust the colors in the style sheet and background images
1156-# according to this color. Hue is specified as an angle on a colorwheel,
1157-# see http://en.wikipedia.org/wiki/Hue for more information.
1158-# For instance the value 0 represents red, 60 is yellow, 120 is green,
1159-# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
1160-# The allowed range is 0 to 359.
1161-
1162-HTML_COLORSTYLE_HUE = 220
1163-
1164-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
1165-# the colors in the HTML output. For a value of 0 the output will use
1166-# grayscales only. A value of 255 will produce the most vivid colors.
1167-
1168-HTML_COLORSTYLE_SAT = 100
1169-
1170-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
1171-# the luminance component of the colors in the HTML output. Values below
1172-# 100 gradually make the output lighter, whereas values above 100 make
1173-# the output darker. The value divided by 100 is the actual gamma applied,
1174-# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
1175-# and 100 does not change the gamma.
1176-
1177-HTML_COLORSTYLE_GAMMA = 80
1178-
1179-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
1180-# page will contain the date and time when the page was generated. Setting
1181-# this to NO can help when comparing the output of multiple runs.
1182-
1183-HTML_TIMESTAMP = YES
1184-
1185-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
1186-# documentation will contain sections that can be hidden and shown after the
1187-# page has loaded.
1188-
1189-HTML_DYNAMIC_SECTIONS = NO
1190-
1191-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
1192-# entries shown in the various tree structured indices initially; the user
1193-# can expand and collapse entries dynamically later on. Doxygen will expand
1194-# the tree to such a level that at most the specified number of entries are
1195-# visible (unless a fully collapsed tree already exceeds this amount).
1196-# So setting the number of entries 1 will produce a full collapsed tree by
1197-# default. 0 is a special value representing an infinite number of entries
1198-# and will result in a full expanded tree by default.
1199-
1200-HTML_INDEX_NUM_ENTRIES = 100
1201-
1202-# If the GENERATE_DOCSET tag is set to YES, additional index files
1203-# will be generated that can be used as input for Apple's Xcode 3
1204-# integrated development environment, introduced with OSX 10.5 (Leopard).
1205-# To create a documentation set, doxygen will generate a Makefile in the
1206-# HTML output directory. Running make will produce the docset in that
1207-# directory and running "make install" will install the docset in
1208-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
1209-# it at startup.
1210-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
1211-# for more information.
1212-
1213-GENERATE_DOCSET = NO
1214-
1215-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
1216-# feed. A documentation feed provides an umbrella under which multiple
1217-# documentation sets from a single provider (such as a company or product suite)
1218-# can be grouped.
1219-
1220-DOCSET_FEEDNAME = "Doxygen generated docs"
1221-
1222-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
1223-# should uniquely identify the documentation set bundle. This should be a
1224-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
1225-# will append .docset to the name.
1226-
1227-DOCSET_BUNDLE_ID = org.doxygen.Project
1228-
1229-# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
1230-# the documentation publisher. This should be a reverse domain-name style
1231-# string, e.g. com.mycompany.MyDocSet.documentation.
1232-
1233-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
1234-
1235-# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
1236-
1237-DOCSET_PUBLISHER_NAME = Publisher
1238-
1239-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
1240-# will be generated that can be used as input for tools like the
1241-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
1242-# of the generated HTML documentation.
1243-
1244-GENERATE_HTMLHELP = NO
1245-
1246-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
1247-# be used to specify the file name of the resulting .chm file. You
1248-# can add a path in front of the file if the result should not be
1249-# written to the html output directory.
1250-
1251-CHM_FILE =
1252-
1253-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
1254-# be used to specify the location (absolute path including file name) of
1255-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
1256-# the HTML help compiler on the generated index.hhp.
1257-
1258-HHC_LOCATION =
1259-
1260-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
1261-# controls if a separate .chi index file is generated (YES) or that
1262-# it should be included in the master .chm file (NO).
1263-
1264-GENERATE_CHI = NO
1265-
1266-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
1267-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
1268-# content.
1269-
1270-CHM_INDEX_ENCODING =
1271-
1272-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
1273-# controls whether a binary table of contents is generated (YES) or a
1274-# normal table of contents (NO) in the .chm file.
1275-
1276-BINARY_TOC = NO
1277-
1278-# The TOC_EXPAND flag can be set to YES to add extra items for group members
1279-# to the contents of the HTML help documentation and to the tree view.
1280-
1281-TOC_EXPAND = NO
1282-
1283-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
1284-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
1285-# that can be used as input for Qt's qhelpgenerator to generate a
1286-# Qt Compressed Help (.qch) of the generated HTML documentation.
1287-
1288-GENERATE_QHP = NO
1289-
1290-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
1291-# be used to specify the file name of the resulting .qch file.
1292-# The path specified is relative to the HTML output folder.
1293-
1294-QCH_FILE =
1295-
1296-# The QHP_NAMESPACE tag specifies the namespace to use when generating
1297-# Qt Help Project output. For more information please see
1298-# http://doc.trolltech.com/qthelpproject.html#namespace
1299-
1300-QHP_NAMESPACE = org.doxygen.Project
1301-
1302-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
1303-# Qt Help Project output. For more information please see
1304-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
1305-
1306-QHP_VIRTUAL_FOLDER = doc
1307-
1308-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
1309-# add. For more information please see
1310-# http://doc.trolltech.com/qthelpproject.html#custom-filters
1311-
1312-QHP_CUST_FILTER_NAME =
1313-
1314-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
1315-# custom filter to add. For more information please see
1316-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
1317-# Qt Help Project / Custom Filters</a>.
1318-
1319-QHP_CUST_FILTER_ATTRS =
1320-
1321-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
1322-# project's
1323-# filter section matches.
1324-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
1325-# Qt Help Project / Filter Attributes</a>.
1326-
1327-QHP_SECT_FILTER_ATTRS =
1328-
1329-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
1330-# be used to specify the location of Qt's qhelpgenerator.
1331-# If non-empty doxygen will try to run qhelpgenerator on the generated
1332-# .qhp file.
1333-
1334-QHG_LOCATION =
1335-
1336-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
1337-# will be generated, which together with the HTML files, form an Eclipse help
1338-# plugin. To install this plugin and make it available under the help contents
1339-# menu in Eclipse, the contents of the directory containing the HTML and XML
1340-# files needs to be copied into the plugins directory of eclipse. The name of
1341-# the directory within the plugins directory should be the same as
1342-# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
1343-# the help appears.
1344-
1345-GENERATE_ECLIPSEHELP = NO
1346-
1347-# A unique identifier for the eclipse help plugin. When installing the plugin
1348-# the directory name containing the HTML and XML files should also have
1349-# this name.
1350-
1351-ECLIPSE_DOC_ID = org.doxygen.Project
1352-
1353-# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
1354-# at top of each HTML page. The value NO (the default) enables the index and
1355-# the value YES disables it. Since the tabs have the same information as the
1356-# navigation tree you can set this option to NO if you already set
1357-# GENERATE_TREEVIEW to YES.
1358-
1359-DISABLE_INDEX = NO
1360-
1361-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
1362-# structure should be generated to display hierarchical information.
1363-# If the tag value is set to YES, a side panel will be generated
1364-# containing a tree-like index structure (just like the one that
1365-# is generated for HTML Help). For this to work a browser that supports
1366-# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
1367-# Windows users are probably better off using the HTML help feature.
1368-# Since the tree basically has the same information as the tab index you
1369-# could consider to set DISABLE_INDEX to NO when enabling this option.
1370-
1371-GENERATE_TREEVIEW = YES
1372-
1373-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
1374-# (range [0,1..20]) that doxygen will group on one line in the generated HTML
1375-# documentation. Note that a value of 0 will completely suppress the enum
1376-# values from appearing in the overview section.
1377-
1378-ENUM_VALUES_PER_LINE = 4
1379-
1380-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
1381-# used to set the initial width (in pixels) of the frame in which the tree
1382-# is shown.
1383-
1384-TREEVIEW_WIDTH = 250
1385-
1386-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
1387-# links to external symbols imported via tag files in a separate window.
1388-
1389-EXT_LINKS_IN_WINDOW = NO
1390-
1391-# Use this tag to change the font size of Latex formulas included
1392-# as images in the HTML documentation. The default is 10. Note that
1393-# when you change the font size after a successful doxygen run you need
1394-# to manually remove any form_*.png images from the HTML output directory
1395-# to force them to be regenerated.
1396-
1397-FORMULA_FONTSIZE = 10
1398-
1399-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
1400-# generated for formulas are transparent PNGs. Transparent PNGs are
1401-# not supported properly for IE 6.0, but are supported on all modern browsers.
1402-# Note that when changing this option you need to delete any form_*.png files
1403-# in the HTML output before the changes have effect.
1404-
1405-FORMULA_TRANSPARENT = YES
1406-
1407-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
1408-# (see http://www.mathjax.org) which uses client side Javascript for the
1409-# rendering instead of using prerendered bitmaps. Use this if you do not
1410-# have LaTeX installed or if you want to formulas look prettier in the HTML
1411-# output. When enabled you may also need to install MathJax separately and
1412-# configure the path to it using the MATHJAX_RELPATH option.
1413-
1414-USE_MATHJAX = NO
1415-
1416-# When MathJax is enabled you need to specify the location relative to the
1417-# HTML output directory using the MATHJAX_RELPATH option. The destination
1418-# directory should contain the MathJax.js script. For instance, if the mathjax
1419-# directory is located at the same level as the HTML output directory, then
1420-# MATHJAX_RELPATH should be ../mathjax. The default value points to
1421-# the MathJax Content Delivery Network so you can quickly see the result without
1422-# installing MathJax. However, it is strongly recommended to install a local
1423-# copy of MathJax from http://www.mathjax.org before deployment.
1424-
1425-MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
1426-
1427-# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
1428-# names that should be enabled during MathJax rendering.
1429-
1430-MATHJAX_EXTENSIONS =
1431-
1432-# When the SEARCHENGINE tag is enabled doxygen will generate a search box
1433-# for the HTML output. The underlying search engine uses javascript
1434-# and DHTML and should work on any modern browser. Note that when using
1435-# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
1436-# (GENERATE_DOCSET) there is already a search function so this one should
1437-# typically be disabled. For large projects the javascript based search engine
1438-# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
1439-
1440-SEARCHENGINE = YES
1441-
1442-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
1443-# implemented using a PHP enabled web server instead of at the web client
1444-# using Javascript. Doxygen will generate the search PHP script and index
1445-# file to put on the web server. The advantage of the server
1446-# based approach is that it scales better to large projects and allows
1447-# full text search. The disadvantages are that it is more difficult to setup
1448-# and does not have live searching capabilities.
1449-
1450-SERVER_BASED_SEARCH = NO
1451-
1452-#---------------------------------------------------------------------------
1453-# configuration options related to the LaTeX output
1454-#---------------------------------------------------------------------------
1455-
1456-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
1457-# generate Latex output.
1458-
1459-GENERATE_LATEX = NO
1460-
1461-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
1462-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1463-# put in front of it. If left blank `latex' will be used as the default path.
1464-
1465-LATEX_OUTPUT = latex
1466-
1467-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
1468-# invoked. If left blank `latex' will be used as the default command name.
1469-# Note that when enabling USE_PDFLATEX this option is only used for
1470-# generating bitmaps for formulas in the HTML output, but not in the
1471-# Makefile that is written to the output directory.
1472-
1473-LATEX_CMD_NAME = latex
1474-
1475-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
1476-# generate index for LaTeX. If left blank `makeindex' will be used as the
1477-# default command name.
1478-
1479-MAKEINDEX_CMD_NAME = makeindex
1480-
1481-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
1482-# LaTeX documents. This may be useful for small projects and may help to
1483-# save some trees in general.
1484-
1485-COMPACT_LATEX = NO
1486-
1487-# The PAPER_TYPE tag can be used to set the paper type that is used
1488-# by the printer. Possible values are: a4, letter, legal and
1489-# executive. If left blank a4wide will be used.
1490-
1491-PAPER_TYPE = a4
1492-
1493-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
1494-# packages that should be included in the LaTeX output.
1495-
1496-EXTRA_PACKAGES =
1497-
1498-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
1499-# the generated latex document. The header should contain everything until
1500-# the first chapter. If it is left blank doxygen will generate a
1501-# standard header. Notice: only use this tag if you know what you are doing!
1502-
1503-LATEX_HEADER =
1504-
1505-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
1506-# the generated latex document. The footer should contain everything after
1507-# the last chapter. If it is left blank doxygen will generate a
1508-# standard footer. Notice: only use this tag if you know what you are doing!
1509-
1510-LATEX_FOOTER =
1511-
1512-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
1513-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
1514-# contain links (just like the HTML output) instead of page references
1515-# This makes the output suitable for online browsing using a pdf viewer.
1516-
1517-PDF_HYPERLINKS = YES
1518-
1519-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
1520-# plain latex in the generated Makefile. Set this option to YES to get a
1521-# higher quality PDF documentation.
1522-
1523-USE_PDFLATEX = YES
1524-
1525-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
1526-# command to the generated LaTeX files. This will instruct LaTeX to keep
1527-# running if errors occur, instead of asking the user for help.
1528-# This option is also used when generating formulas in HTML.
1529-
1530-LATEX_BATCHMODE = NO
1531-
1532-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
1533-# include the index chapters (such as File Index, Compound Index, etc.)
1534-# in the output.
1535-
1536-LATEX_HIDE_INDICES = NO
1537-
1538-# If LATEX_SOURCE_CODE is set to YES then doxygen will include
1539-# source code with syntax highlighting in the LaTeX output.
1540-# Note that which sources are shown also depends on other settings
1541-# such as SOURCE_BROWSER.
1542-
1543-LATEX_SOURCE_CODE = NO
1544-
1545-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
1546-# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
1547-# http://en.wikipedia.org/wiki/BibTeX for more info.
1548-
1549-LATEX_BIB_STYLE = plain
1550-
1551-#---------------------------------------------------------------------------
1552-# configuration options related to the RTF output
1553-#---------------------------------------------------------------------------
1554-
1555-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
1556-# The RTF output is optimized for Word 97 and may not look very pretty with
1557-# other RTF readers or editors.
1558-
1559-GENERATE_RTF = NO
1560-
1561-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
1562-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1563-# put in front of it. If left blank `rtf' will be used as the default path.
1564-
1565-RTF_OUTPUT = rtf
1566-
1567-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
1568-# RTF documents. This may be useful for small projects and may help to
1569-# save some trees in general.
1570-
1571-COMPACT_RTF = NO
1572-
1573-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
1574-# will contain hyperlink fields. The RTF file will
1575-# contain links (just like the HTML output) instead of page references.
1576-# This makes the output suitable for online browsing using WORD or other
1577-# programs which support those fields.
1578-# Note: wordpad (write) and others do not support links.
1579-
1580-RTF_HYPERLINKS = NO
1581-
1582-# Load style sheet definitions from file. Syntax is similar to doxygen's
1583-# config file, i.e. a series of assignments. You only have to provide
1584-# replacements, missing definitions are set to their default value.
1585-
1586-RTF_STYLESHEET_FILE =
1587-
1588-# Set optional variables used in the generation of an rtf document.
1589-# Syntax is similar to doxygen's config file.
1590-
1591-RTF_EXTENSIONS_FILE =
1592-
1593-#---------------------------------------------------------------------------
1594-# configuration options related to the man page output
1595-#---------------------------------------------------------------------------
1596-
1597-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
1598-# generate man pages
1599-
1600-GENERATE_MAN = NO
1601-
1602-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
1603-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1604-# put in front of it. If left blank `man' will be used as the default path.
1605-
1606-MAN_OUTPUT = man
1607-
1608-# The MAN_EXTENSION tag determines the extension that is added to
1609-# the generated man pages (default is the subroutine's section .3)
1610-
1611-MAN_EXTENSION = .3
1612-
1613-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
1614-# then it will generate one additional man file for each entity
1615-# documented in the real man page(s). These additional files
1616-# only source the real man page, but without them the man command
1617-# would be unable to find the correct page. The default is NO.
1618-
1619-MAN_LINKS = NO
1620-
1621-#---------------------------------------------------------------------------
1622-# configuration options related to the XML output
1623-#---------------------------------------------------------------------------
1624-
1625-# If the GENERATE_XML tag is set to YES Doxygen will
1626-# generate an XML file that captures the structure of
1627-# the code including all documentation.
1628-
1629-GENERATE_XML = NO
1630-
1631-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
1632-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1633-# put in front of it. If left blank `xml' will be used as the default path.
1634-
1635-XML_OUTPUT = xml
1636-
1637-# The XML_SCHEMA tag can be used to specify an XML schema,
1638-# which can be used by a validating XML parser to check the
1639-# syntax of the XML files.
1640-
1641-XML_SCHEMA =
1642-
1643-# The XML_DTD tag can be used to specify an XML DTD,
1644-# which can be used by a validating XML parser to check the
1645-# syntax of the XML files.
1646-
1647-XML_DTD =
1648-
1649-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
1650-# dump the program listings (including syntax highlighting
1651-# and cross-referencing information) to the XML output. Note that
1652-# enabling this will significantly increase the size of the XML output.
1653-
1654-XML_PROGRAMLISTING = YES
1655-
1656-#---------------------------------------------------------------------------
1657-# configuration options for the AutoGen Definitions output
1658-#---------------------------------------------------------------------------
1659-
1660-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
1661-# generate an AutoGen Definitions (see autogen.sf.net) file
1662-# that captures the structure of the code including all
1663-# documentation. Note that this feature is still experimental
1664-# and incomplete at the moment.
1665-
1666-GENERATE_AUTOGEN_DEF = NO
1667-
1668-#---------------------------------------------------------------------------
1669-# configuration options related to the Perl module output
1670-#---------------------------------------------------------------------------
1671-
1672-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
1673-# generate a Perl module file that captures the structure of
1674-# the code including all documentation. Note that this
1675-# feature is still experimental and incomplete at the
1676-# moment.
1677-
1678-GENERATE_PERLMOD = NO
1679-
1680-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
1681-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
1682-# to generate PDF and DVI output from the Perl module output.
1683-
1684-PERLMOD_LATEX = NO
1685-
1686-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
1687-# nicely formatted so it can be parsed by a human reader. This is useful
1688-# if you want to understand what is going on. On the other hand, if this
1689-# tag is set to NO the size of the Perl module output will be much smaller
1690-# and Perl will parse it just the same.
1691-
1692-PERLMOD_PRETTY = YES
1693-
1694-# The names of the make variables in the generated doxyrules.make file
1695-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
1696-# This is useful so different doxyrules.make files included by the same
1697-# Makefile don't overwrite each other's variables.
1698-
1699-PERLMOD_MAKEVAR_PREFIX =
1700-
1701-#---------------------------------------------------------------------------
1702-# Configuration options related to the preprocessor
1703-#---------------------------------------------------------------------------
1704-
1705-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
1706-# evaluate all C-preprocessor directives found in the sources and include
1707-# files.
1708-
1709-ENABLE_PREPROCESSING = YES
1710-
1711-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
1712-# names in the source code. If set to NO (the default) only conditional
1713-# compilation will be performed. Macro expansion can be done in a controlled
1714-# way by setting EXPAND_ONLY_PREDEF to YES.
1715-
1716-MACRO_EXPANSION = NO
1717-
1718-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
1719-# then the macro expansion is limited to the macros specified with the
1720-# PREDEFINED and EXPAND_AS_DEFINED tags.
1721-
1722-EXPAND_ONLY_PREDEF = NO
1723-
1724-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
1725-# pointed to by INCLUDE_PATH will be searched when a #include is found.
1726-
1727-SEARCH_INCLUDES = YES
1728-
1729-# The INCLUDE_PATH tag can be used to specify one or more directories that
1730-# contain include files that are not input files but should be processed by
1731-# the preprocessor.
1732-
1733-INCLUDE_PATH =
1734-
1735-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
1736-# patterns (like *.h and *.hpp) to filter out the header-files in the
1737-# directories. If left blank, the patterns specified with FILE_PATTERNS will
1738-# be used.
1739-
1740-INCLUDE_FILE_PATTERNS =
1741-
1742-# The PREDEFINED tag can be used to specify one or more macro names that
1743-# are defined before the preprocessor is started (similar to the -D option of
1744-# gcc). The argument of the tag is a list of macros of the form: name
1745-# or name=definition (no spaces). If the definition and the = are
1746-# omitted =1 is assumed. To prevent a macro definition from being
1747-# undefined via #undef or recursively expanded use the := operator
1748-# instead of the = operator.
1749-
1750-PREDEFINED =
1751-
1752-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
1753-# this tag can be used to specify a list of macro names that should be expanded.
1754-# The macro definition that is found in the sources will be used.
1755-# Use the PREDEFINED tag if you want to use a different macro definition that
1756-# overrules the definition found in the source code.
1757-
1758-EXPAND_AS_DEFINED =
1759-
1760-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
1761-# doxygen's preprocessor will remove all references to function-like macros
1762-# that are alone on a line, have an all uppercase name, and do not end with a
1763-# semicolon, because these will confuse the parser if not removed.
1764-
1765-SKIP_FUNCTION_MACROS = YES
1766-
1767-#---------------------------------------------------------------------------
1768-# Configuration::additions related to external references
1769-#---------------------------------------------------------------------------
1770-
1771-# The TAGFILES option can be used to specify one or more tagfiles. For each
1772-# tag file the location of the external documentation should be added. The
1773-# format of a tag file without this location is as follows:
1774-# TAGFILES = file1 file2 ...
1775-# Adding location for the tag files is done as follows:
1776-# TAGFILES = file1=loc1 "file2 = loc2" ...
1777-# where "loc1" and "loc2" can be relative or absolute paths
1778-# or URLs. Note that each tag file must have a unique name (where the name does
1779-# NOT include the path). If a tag file is not located in the directory in which
1780-# doxygen is run, you must also specify the path to the tagfile here.
1781-
1782-TAGFILES =
1783-
1784-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
1785-# a tag file that is based on the input files it reads.
1786-
1787-GENERATE_TAGFILE =
1788-
1789-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
1790-# in the class index. If set to NO only the inherited external classes
1791-# will be listed.
1792-
1793-ALLEXTERNALS = NO
1794-
1795-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
1796-# in the modules index. If set to NO, only the current project's groups will
1797-# be listed.
1798-
1799-EXTERNAL_GROUPS = YES
1800-
1801-# The PERL_PATH should be the absolute path and name of the perl script
1802-# interpreter (i.e. the result of `which perl').
1803-
1804-PERL_PATH = /usr/bin/perl
1805-
1806-#---------------------------------------------------------------------------
1807-# Configuration options related to the dot tool
1808-#---------------------------------------------------------------------------
1809-
1810-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
1811-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
1812-# or super classes. Setting the tag to NO turns the diagrams off. Note that
1813-# this option also works with HAVE_DOT disabled, but it is recommended to
1814-# install and use dot, since it yields more powerful graphs.
1815-
1816-CLASS_DIAGRAMS = YES
1817-
1818-# You can define message sequence charts within doxygen comments using the \msc
1819-# command. Doxygen will then run the mscgen tool (see
1820-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
1821-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
1822-# the mscgen tool resides. If left empty the tool is assumed to be found in the
1823-# default search path.
1824-
1825-DOT_PATH = @DOXYGEN_DOT_PATH@
1826-
1827-# If set to YES, the inheritance and collaboration graphs will hide
1828-# inheritance and usage relations if the target is undocumented
1829-# or is not a class.
1830-
1831-HIDE_UNDOC_RELATIONS = YES
1832-
1833-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
1834-# available from the path. This tool is part of Graphviz, a graph visualization
1835-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
1836-# have no effect if this option is set to NO (the default)
1837-
1838-HAVE_DOT = YES
1839-
1840-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
1841-# allowed to run in parallel. When set to 0 (the default) doxygen will
1842-# base this on the number of processors available in the system. You can set it
1843-# explicitly to a value larger than 0 to get control over the balance
1844-# between CPU load and processing speed.
1845-
1846-DOT_NUM_THREADS = 0
1847-
1848-# By default doxygen will use the Helvetica font for all dot files that
1849-# doxygen generates. When you want a differently looking font you can specify
1850-# the font name using DOT_FONTNAME. You need to make sure dot is able to find
1851-# the font, which can be done by putting it in a standard location or by setting
1852-# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
1853-# directory containing the font.
1854-
1855-DOT_FONTNAME = Helvetica
1856-
1857-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
1858-# The default size is 10pt.
1859-
1860-DOT_FONTSIZE = 10
1861-
1862-# By default doxygen will tell dot to use the Helvetica font.
1863-# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
1864-# set the path where dot can find it.
1865-
1866-DOT_FONTPATH =
1867-
1868-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
1869-# will generate a graph for each documented class showing the direct and
1870-# indirect inheritance relations. Setting this tag to YES will force the
1871-# CLASS_DIAGRAMS tag to NO.
1872-
1873-CLASS_GRAPH = YES
1874-
1875-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
1876-# will generate a graph for each documented class showing the direct and
1877-# indirect implementation dependencies (inheritance, containment, and
1878-# class references variables) of the class with other documented classes.
1879-
1880-COLLABORATION_GRAPH = YES
1881-
1882-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
1883-# will generate a graph for groups, showing the direct groups dependencies
1884-
1885-GROUP_GRAPHS = YES
1886-
1887-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
1888-# collaboration diagrams in a style similar to the OMG's Unified Modeling
1889-# Language.
1890-
1891-UML_LOOK = NO
1892-
1893-# If the UML_LOOK tag is enabled, the fields and methods are shown inside
1894-# the class node. If there are many fields or methods and many nodes the
1895-# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
1896-# threshold limits the number of items for each type to make the size more
1897-# managable. Set this to 0 for no limit. Note that the threshold may be
1898-# exceeded by 50% before the limit is enforced.
1899-
1900-UML_LIMIT_NUM_FIELDS = 10
1901-
1902-# If set to YES, the inheritance and collaboration graphs will show the
1903-# relations between templates and their instances.
1904-
1905-TEMPLATE_RELATIONS = NO
1906-
1907-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
1908-# tags are set to YES then doxygen will generate a graph for each documented
1909-# file showing the direct and indirect include dependencies of the file with
1910-# other documented files.
1911-
1912-INCLUDE_GRAPH = YES
1913-
1914-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
1915-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
1916-# documented header file showing the documented files that directly or
1917-# indirectly include this file.
1918-
1919-INCLUDED_BY_GRAPH = YES
1920-
1921-# If the CALL_GRAPH and HAVE_DOT options are set to YES then
1922-# doxygen will generate a call dependency graph for every global function
1923-# or class method. Note that enabling this option will significantly increase
1924-# the time of a run. So in most cases it will be better to enable call graphs
1925-# for selected functions only using the \callgraph command.
1926-
1927-CALL_GRAPH = NO
1928-
1929-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
1930-# doxygen will generate a caller dependency graph for every global function
1931-# or class method. Note that enabling this option will significantly increase
1932-# the time of a run. So in most cases it will be better to enable caller
1933-# graphs for selected functions only using the \callergraph command.
1934-
1935-CALLER_GRAPH = NO
1936-
1937-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
1938-# will generate a graphical hierarchy of all classes instead of a textual one.
1939-
1940-GRAPHICAL_HIERARCHY = YES
1941-
1942-# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
1943-# then doxygen will show the dependencies a directory has on other directories
1944-# in a graphical way. The dependency relations are determined by the #include
1945-# relations between the files in the directories.
1946-
1947-DIRECTORY_GRAPH = YES
1948-
1949-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
1950-# generated by dot. Possible values are svg, png, jpg, or gif.
1951-# If left blank png will be used. If you choose svg you need to set
1952-# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
1953-# visible in IE 9+ (other browsers do not have this requirement).
1954-
1955-DOT_IMAGE_FORMAT = png
1956-
1957-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
1958-# enable generation of interactive SVG images that allow zooming and panning.
1959-# Note that this requires a modern browser other than Internet Explorer.
1960-# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
1961-# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
1962-# visible. Older versions of IE do not have SVG support.
1963-
1964-INTERACTIVE_SVG = NO
1965-
1966-# The tag DOT_PATH can be used to specify the path where the dot tool can be
1967-# found. If left blank, it is assumed the dot tool can be found in the path.
1968-
1969-DOT_PATH =
1970-
1971-# The DOTFILE_DIRS tag can be used to specify one or more directories that
1972-# contain dot files that are included in the documentation (see the
1973-# \dotfile command).
1974-
1975-DOTFILE_DIRS =
1976-
1977-# The MSCFILE_DIRS tag can be used to specify one or more directories that
1978-# contain msc files that are included in the documentation (see the
1979-# \mscfile command).
1980-
1981-MSCFILE_DIRS =
1982-
1983-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
1984-# nodes that will be shown in the graph. If the number of nodes in a graph
1985-# becomes larger than this value, doxygen will truncate the graph, which is
1986-# visualized by representing a node as a red box. Note that doxygen if the
1987-# number of direct children of the root node in a graph is already larger than
1988-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
1989-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
1990-
1991-DOT_GRAPH_MAX_NODES = 50
1992-
1993-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
1994-# graphs generated by dot. A depth value of 3 means that only nodes reachable
1995-# from the root by following a path via at most 3 edges will be shown. Nodes
1996-# that lay further from the root node will be omitted. Note that setting this
1997-# option to 1 or 2 may greatly reduce the computation time needed for large
1998-# code bases. Also note that the size of a graph can be further restricted by
1999-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
2000-
2001-MAX_DOT_GRAPH_DEPTH = 0
2002-
2003-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
2004-# background. This is disabled by default, because dot on Windows does not
2005-# seem to support this out of the box. Warning: Depending on the platform used,
2006-# enabling this option may lead to badly anti-aliased labels on the edges of
2007-# a graph (i.e. they become hard to read).
2008-
2009-DOT_TRANSPARENT = NO
2010-
2011-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
2012-# files in one run (i.e. multiple -o and -T options on the command line). This
2013-# makes dot run faster, but since only newer versions of dot (>1.8.10)
2014-# support this, this feature is disabled by default.
2015-
2016-DOT_MULTI_TARGETS = NO
2017-
2018-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
2019-# generate a legend page explaining the meaning of the various boxes and
2020-# arrows in the dot generated graphs.
2021-
2022-GENERATE_LEGEND = YES
2023-
2024-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
2025-# remove the intermediate dot files that are used to generate
2026-# the various graphs.
2027-
2028-DOT_CLEANUP = YES
2029
2030=== removed directory 'include'
2031=== removed file 'include/CMakeLists.txt'
2032--- include/CMakeLists.txt 2013-04-22 18:14:52 +0000
2033+++ include/CMakeLists.txt 1970-01-01 00:00:00 +0000
2034@@ -1,4 +0,0 @@
2035-set(HDR_INSTALL_DIR include)
2036-add_subdirectory(unity)
2037-
2038-set(UNITY_API_LIB_HDRS ${UNITY_API_LIB_HDRS} PARENT_SCOPE)
2039
2040=== removed directory 'include/unity'
2041=== removed file 'include/unity/CMakeLists.txt'
2042--- include/unity/CMakeLists.txt 2013-04-22 18:14:52 +0000
2043+++ include/unity/CMakeLists.txt 1970-01-01 00:00:00 +0000
2044@@ -1,10 +0,0 @@
2045-add_subdirectory(api)
2046-add_subdirectory(scopes)
2047-add_subdirectory(util)
2048-
2049-file(GLOB headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
2050-file(GLOB internal_headers "${CMAKE_CURRENT_SOURCE_DIR}/internal/*.h")
2051-
2052-install(FILES ${headers} DESTINATION ${HDR_INSTALL_DIR}/unity)
2053-
2054-set(UNITY_API_LIB_HDRS ${UNITY_API_LIB_HDRS} ${headers} ${internal_headers} PARENT_SCOPE)
2055
2056=== removed file 'include/unity/Exception.h'
2057--- include/unity/Exception.h 2013-04-17 02:18:48 +0000
2058+++ include/unity/Exception.h 1970-01-01 00:00:00 +0000
2059@@ -1,158 +0,0 @@
2060-/*
2061- * Copyright (C) 2013 Canonical Ltd
2062- *
2063- * This program is free software: you can redistribute it and/or modify
2064- * it under the terms of the GNU General Public License version 3 as
2065- * published by the Free Software Foundation.
2066- *
2067- * This program is distributed in the hope that it will be useful,
2068- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2069- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2070- * GNU General Public License for more details.
2071- *
2072- * You should have received a copy of the GNU General Public License
2073- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2074- *
2075- * Authored by: Michi Henning <michi.henning@canonical.com>
2076- */
2077-
2078-#ifndef UNITY_EXCEPTION_H
2079-#define UNITY_EXCEPTION_H
2080-
2081-#include <unity/config.h>
2082-
2083-#include <exception>
2084-#include <string>
2085-#include <memory>
2086-
2087-namespace unity
2088-{
2089-
2090-namespace internal
2091-{
2092-class ExceptionImpl;
2093-}
2094-
2095-// TODO: It probably would be best to split this into a base and ImplBase, with the derived part in the internal
2096-// namespace and declaring self(), the constructor, and pimpl(). That's because the Impl for the exception
2097-// is in the internal namespace, so public API clients can use Exception instances, but they cannot
2098-// create new derived exceptions because the Impl classes are internal to Unity.
2099-
2100-/**
2101-\brief Abstract base class for all Unity exceptions.
2102-
2103-This class is the base class for all Unity exceptions. Besides providing a common base class for
2104-structured exception handling, this class provides features to capture nested exceptions (for
2105-exceptions that are re-thrown) and to chain exceptions into an exception history that allows
2106-a number of exceptions to be remembered before throwing a new exception.
2107-
2108-The exception nesting is provided by the derivation from <code>std::nested_exception</code>. If you
2109-catch an exception and throw another exception from the catch handler, the caught exception
2110-is automatically preserved; you can access nested exceptions by calling the <code>nested_ptr()</code> and
2111-<code>rethrow_nested()</code> member functions of <code>std::nested_exception</code>.
2112-
2113-In addition, you can remember one or more exceptions by calling remember(). This is useful in situations
2114-where you need perform a number of actions that may fail with an error code, and you do not want to
2115-throw an exception until all of the actions have been attempted. This is particularly useful in shutdown
2116-scenarios, where it is often impossible to recover from an error, but it is still desirable to try to
2117-shut down as much as possible before reporting or logging the errors:
2118-
2119-~~~
2120-void
2121-shutdown()
2122-{
2123- using namespace std;
2124-
2125- exception_ptr ep;
2126-
2127- try
2128- {
2129- shutdown_action_1();
2130- }
2131- catch (SomeException const&)
2132- {
2133- ep = make_exception_ptr(current_exception());
2134- }
2135-
2136- try
2137- {
2138- shutdown_action_2();
2139- }
2140- catch (SomeOtherException const&)
2141- {
2142- ep = e.remember(ep);
2143- }
2144-
2145- int err = shutdown_action_3();
2146- if (err != 0)
2147- {
2148- try
2149- {
2150- throw YetAnotherException(err);
2151- }
2152- catch (YetAnotherException const& e)
2153- {
2154- ep = e.remember(ep);
2155- }
2156- }
2157-
2158- if (ep)
2159- {
2160- rethrow_exception(ep);
2161- }
2162-}
2163-~~~
2164-
2165-Calling to_string() on a caught exception returns a string with the entire exception history (both nested and
2166-chained).
2167-
2168-*/
2169-
2170-class UNITY_API Exception : public std::exception, public std::nested_exception
2171-{
2172-public:
2173- //! @cond
2174- Exception(Exception const&);
2175- Exception& operator=(Exception const&);
2176- virtual ~Exception() noexcept;
2177- //! @endcond
2178-
2179- /**
2180- \brief Returns the name of the exception.
2181-
2182- Derived classes must override what() to return <i>only</i> the (fully-qualified) name of the derived
2183- exception. If the derived class sets a reason string (or contains other details), it should <i>not</i>
2184- include the reason or details as part of the string return returned by what().
2185- */
2186- virtual char const* what() const noexcept = 0;
2187-
2188- virtual std::string reason() const;
2189-
2190- virtual std::string to_string(std::string const& indent = " ") const;
2191- virtual std::string to_string(int indent_level, std::string const& indent) const;
2192-
2193- std::exception_ptr remember(std::exception_ptr earlier_exception);
2194- std::exception_ptr get_earlier() const noexcept;
2195-
2196- /**
2197- \brief Returns a <code>std::exception_ptr</code> to <code>this</code>.
2198-
2199- \note Derived exceptions must implement this member function so the implemention of remember()
2200- (provided by this abstract base class) can return a <code>std::exception_ptr</code> to its own derived exception.
2201- */
2202- virtual std::exception_ptr self() const = 0;
2203-
2204-protected:
2205- //! @cond
2206- Exception(std::shared_ptr<internal::ExceptionImpl> const& derived);
2207- internal::ExceptionImpl* pimpl() const noexcept; // No need to reimplement in derived
2208- //! @endcond
2209-
2210-private:
2211- std::shared_ptr<internal::ExceptionImpl> p_; // shared_ptr instead of unique_ptr because
2212- // exceptions must be copyable
2213-};
2214-
2215-} // namespace unity
2216-
2217-#endif
2218
2219=== removed file 'include/unity/UnityExceptions.h'
2220--- include/unity/UnityExceptions.h 2013-04-17 02:18:48 +0000
2221+++ include/unity/UnityExceptions.h 1970-01-01 00:00:00 +0000
2222@@ -1,258 +0,0 @@
2223-/*
2224- * Copyright (C) 2013 Canonical Ltd
2225- *
2226- * This program is free software: you can redistribute it and/or modify
2227- * it under the terms of the GNU General Public License version 3 as
2228- * published by the Free Software Foundation.
2229- *
2230- * This program is distributed in the hope that it will be useful,
2231- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2232- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2233- * GNU General Public License for more details.
2234- *
2235- * You should have received a copy of the GNU General Public License
2236- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2237- *
2238- * Authored by: Michi Henning <michi.henning@canonical.com>
2239- */
2240-
2241-#ifndef UNITY_EXCEPTIONS_H
2242-#define UNITY_EXCEPTIONS_H
2243-
2244-#include <unity/Exception.h>
2245-
2246-namespace unity
2247-{
2248-
2249-namespace internal
2250-{
2251-class InvalidArgumentExceptionImpl;
2252-}
2253-
2254-/**
2255-\brief Exception to indicate that an invalid argument was passed to a function, such as passing <code>nullptr</code>
2256- when the function expects the argument to be non-null.
2257-*/
2258-
2259-class UNITY_API InvalidArgumentException : public Exception
2260-{
2261-public:
2262- /**
2263- \brief Constructs the exception.
2264- \param reason Further details about the cause of the exception.
2265- */
2266- explicit InvalidArgumentException(std::string const& reason);
2267- //! @cond
2268- InvalidArgumentException(InvalidArgumentException const&);
2269- InvalidArgumentException& operator=(InvalidArgumentException const&);
2270- virtual ~InvalidArgumentException() noexcept;
2271- //! @endcond
2272-
2273- /**
2274- \brief Returns the fully-qualified name of the exception.
2275- */
2276- virtual char const* what() const noexcept override;
2277-
2278- /**
2279- \brief Returns a <code>std::exception_ptr</code> to <code>this</code>.
2280- */
2281- virtual std::exception_ptr self() const override;
2282-};
2283-
2284-namespace internal
2285-{
2286-class LogicExceptionImpl;
2287-}
2288-
2289-/**
2290-\brief Exception to indicate a logic error, such as driving the API incorrectly, such as calling methods
2291- in the wrong worder.
2292-*/
2293-
2294-class UNITY_API LogicException : public Exception
2295-{
2296-public:
2297- /**
2298- \brief Constructs the exception.
2299- \param reason Further details about the cause of the exception.
2300- */
2301- explicit LogicException(std::string const& reason);
2302- //! @cond
2303- LogicException(LogicException const&);
2304- LogicException& operator=(LogicException const&);
2305- virtual ~LogicException() noexcept;
2306- //! @endcond
2307-
2308- /**
2309- \brief Returns the fully-qualified name of the exception.
2310- */
2311- virtual char const* what() const noexcept override;
2312-
2313- /**
2314- \brief Returns a <code>std::exception_ptr</code> to <code>this</code>.
2315- */
2316- virtual std::exception_ptr self() const override;
2317-};
2318-
2319-namespace internal
2320-{
2321-class ShutdownExceptionImpl;
2322-}
2323-
2324-/**
2325-\brief Exception to indicate errors during shutdown.
2326-
2327- Usually, it is not possible to handle or recover
2328- from errors that arise during shutdown. This exception is thrown once all possible shutdown actions
2329- have been carried out and provides information about anything that went wrong via the exception
2330- chaining mechanism of the unity::Exception base class.
2331-*/
2332-
2333-class UNITY_API ShutdownException : public Exception
2334-{
2335-public:
2336- /**
2337- \brief Constructs the exception.
2338- \param reason Further details about the cause of the exception.
2339- */
2340- explicit ShutdownException(std::string const& reason);
2341- //! @cond
2342- ShutdownException(ShutdownException const&);
2343- ShutdownException& operator=(ShutdownException const&);
2344- virtual ~ShutdownException() noexcept;
2345- //! @endcond
2346-
2347- /**
2348- \brief Returns the fully-qualified name of the exception.
2349- */
2350- virtual char const* what() const noexcept override;
2351-
2352- /**
2353- \brief Returns a <code>std::exception_ptr</code> to <code>this</code>.
2354- */
2355- virtual std::exception_ptr self() const override;
2356-};
2357-
2358-namespace internal
2359-{
2360-class FileExceptionImpl;
2361-}
2362-
2363-/**
2364-\brief Exception to indicate file I/O errors, such as failure to open or write to a file.
2365-*/
2366-
2367-class UNITY_API FileException : public Exception
2368-{
2369-public:
2370- /**
2371- \brief Constructs the exception.
2372- */
2373- /**
2374- \brief Constructs the exception from a reason string and and error number.
2375- \param reason Further details about the cause of the exception.
2376- \param err The UNIX <code>errno</code> value for the error.
2377- */
2378- FileException(std::string const& reason, int err);
2379- //! @cond
2380- FileException(FileException const&);
2381- FileException& operator=(FileException const&);
2382- virtual ~FileException() noexcept;
2383- //! @endcond
2384-
2385- /**
2386- \brief Returns the fully-qualified name of the exception.
2387- */
2388- virtual char const* what() const noexcept override;
2389-
2390- /**
2391- \brief Returns a <code>std::exception_ptr</code> to <code>this</code>.
2392- */
2393- virtual std::exception_ptr self() const override;
2394-
2395- /**
2396- \return Returns the error number that was passed to the constructor.
2397- */
2398- int error() const noexcept;
2399-};
2400-
2401-namespace internal
2402-{
2403-class SyscallExceptionImpl;
2404-}
2405-
2406-/**
2407-\brief Exception to indicate system or library call errors that set <code>errno</code>.
2408-*/
2409-
2410-class UNITY_API SyscallException : public Exception
2411-{
2412-public:
2413- /**
2414- \brief Constructs the exception.
2415- */
2416- /**
2417- \brief Constructs the exception from a reason string and and error number.
2418- \param reason Further details about the cause of the exception.
2419- \param err The UNIX <code>errno</code> value for the error.
2420- */
2421- SyscallException(std::string const& reason, int err);
2422- //! @cond
2423- SyscallException(SyscallException const&);
2424- SyscallException& operator=(SyscallException const&);
2425- virtual ~SyscallException() noexcept;
2426- //! @endcond
2427-
2428- /**
2429- \brief Returns the fully-qualified name of the exception.
2430- */
2431- virtual char const* what() const noexcept override;
2432-
2433- /**
2434- \brief Returns a <code>std::exception_ptr</code> to <code>this</code>.
2435- */
2436- virtual std::exception_ptr self() const override;
2437-
2438- /**
2439- \return Returns the error number that was passed to the constructor.
2440- */
2441- int error() const noexcept;
2442-};
2443-
2444-namespace internal
2445-{
2446-class ResourceExceptionImpl;
2447-}
2448-
2449-/**
2450-\brief Exception for miscellaneous errors, such as failure of a third-party library or hitting resource limitations.
2451-*/
2452-
2453-class UNITY_API ResourceException : public Exception
2454-{
2455-public:
2456- /**
2457- \brief Constructs the exception.
2458- \param reason Further details about the cause of the exception.
2459- */
2460- ResourceException(std::string const& reason);
2461- //! @cond
2462- ResourceException(ResourceException const&);
2463- ResourceException& operator=(ResourceException const&);
2464- virtual ~ResourceException() noexcept;
2465- //! @endcond
2466-
2467- /**
2468- \brief Returns the fully-qualified name of the exception.
2469- */
2470- virtual char const* what() const noexcept override;
2471-
2472- /**
2473- \brief Returns a <code>std::exception_ptr</code> to <code>this</code>.
2474- */
2475- virtual std::exception_ptr self() const override;
2476-};
2477-
2478-} // namespace unity
2479-
2480-#endif
2481
2482=== removed directory 'include/unity/api'
2483=== removed file 'include/unity/api/CMakeLists.txt'
2484--- include/unity/api/CMakeLists.txt 2013-04-22 18:14:52 +0000
2485+++ include/unity/api/CMakeLists.txt 1970-01-01 00:00:00 +0000
2486@@ -1,12 +0,0 @@
2487-file(GLOB headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
2488-file(GLOB internal_headers "${CMAKE_CURRENT_SOURCE_DIR}/internal/*.h")
2489-
2490-#
2491-# Generated headers
2492-#
2493-configure_file(Version.h.in Version.h)
2494-set(headers ${headers} ${CMAKE_CURRENT_BINARY_DIR}/Version.h)
2495-
2496-install(FILES ${headers} DESTINATION ${HDR_INSTALL_DIR}/unity/api)
2497-
2498-set(UNITY_API_LIB_HDRS ${UNITY_API_LIB_HDRS} ${headers} ${internal_headers} PARENT_SCOPE)
2499
2500=== removed file 'include/unity/api/Version.h.in'
2501--- include/unity/api/Version.h.in 2013-04-18 00:06:43 +0000
2502+++ include/unity/api/Version.h.in 1970-01-01 00:00:00 +0000
2503@@ -1,103 +0,0 @@
2504-//
2505-// DO NOT EDIT Version.h (this file)! It is generated from Version.h.in.
2506-//
2507-
2508-/*
2509- * Copyright (C) 2013 Canonical Ltd
2510- *
2511- * This program is free software: you can redistribute it and/or modify
2512- * it under the terms of the GNU General Public License version 3 as
2513- * published by the Free Software Foundation.
2514- *
2515- * This program is distributed in the hope that it will be useful,
2516- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2517- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2518- * GNU General Public License for more details.
2519- *
2520- * You should have received a copy of the GNU General Public License
2521- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2522- *
2523- * Authored by: Michi Henning <michi.henning@canonical.com>
2524- */
2525-
2526-#include <unity/config.h>
2527-
2528-#ifndef UNITY_API_VERSION_H
2529-#define UNITY_API_VERSION_H
2530-
2531-#define UNITY_API_VERSION_MAJOR @UNITY_API_MAJOR@
2532-#define UNITY_API_VERSION_MINOR @UNITY_API_MINOR@
2533-#define UNITY_API_VERSION_MICRO @UNITY_API_MICRO@
2534-
2535-#define UNITY_API_VERSION_STRING "@UNITY_API_VERSION@"
2536-
2537-namespace unity
2538-{
2539-
2540-namespace api
2541-{
2542-
2543-/**
2544-\brief Class to obtain version information for the Unity API at run time.
2545-
2546-Version information is represented as
2547-<i>&lt;<code>major</code>&gt;</i>.<i>&lt;<code>minor</code>&gt;</i>.<i>&lt;<code>micro</code>&gt;</i>.
2548-
2549-Releases that differ in the major or minor version number are binary incompatible.
2550-
2551-Releases of the library that differ only in the micro version number are binary compatible with older releases,
2552-so client code does not need to be recompiled to use the newer library version.
2553-
2554-A different minor version is compatible at the API level, that is, it may add new APIs, but does not change existing
2555-ones. API clients must be recompiled for a new minor version.
2556-
2557-A different major version indicates incompatible API changes.
2558-*/
2559-
2560-// Version could be a namespace instead of a class, but that requires a lower-case name,
2561-// which is inconsistent with the remainder of the API.
2562-
2563-class UNITY_API Version
2564-{
2565-public:
2566- /**
2567- \brief Returns the major version number of the Unity API library.
2568-
2569- The major version number is also available as the macro <code>UNITY_API_VERSION_MAJOR</code>.
2570- */
2571- static int major_version();
2572-
2573- /**
2574- \brief Returns the minor version number of the Unity API library.
2575-
2576- The minor version number is also available as the macro <code>UNITY_API_VERSION_MINOR</code>.
2577- */
2578- static int minor_version();
2579-
2580- /**
2581- \brief Returns the micro version number of the Unity API library.
2582-
2583- The micro version number is also available as the macro <code>UNITY_API_VERSION_MICRO</code>.
2584- */
2585- static int micro_version();
2586-
2587- /**
2588- \brief Returns the Unity API version as a string in the format
2589- <i>&lt;<code>major</code>&gt;</i>.<i>&lt;<code>minor</code>&gt;</i>.<i>&lt;<code>micro</code>&gt;</i>.
2590-
2591- The version string is also available as the macro <code>UNITY_API_VERSION_STRING</code>.
2592- */
2593- static const char* str(); // Returns "major.minor.micro"
2594-
2595- // TODO: Add methods to report compiler version and compiler flags
2596-
2597-private:
2598- Version() = delete;
2599- ~Version() = delete;
2600-};
2601-
2602-} // namespace api
2603-
2604-} // namespace unity
2605-
2606-#endif
2607
2608=== removed directory 'include/unity/api/internal'
2609=== removed file 'include/unity/config.h'
2610--- include/unity/config.h 2013-04-08 03:05:05 +0000
2611+++ include/unity/config.h 1970-01-01 00:00:00 +0000
2612@@ -1,30 +0,0 @@
2613-/*
2614- * Copyright (C) 2013 Canonical Ltd
2615- *
2616- * This program is free software: you can redistribute it and/or modify
2617- * it under the terms of the GNU General Public License version 3 as
2618- * published by the Free Software Foundation.
2619- *
2620- * This program is distributed in the hope that it will be useful,
2621- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2622- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2623- * GNU General Public License for more details.
2624- *
2625- * You should have received a copy of the GNU General Public License
2626- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2627- *
2628- * Authored by: Michi Henning <michi.henning@canonical.com>
2629- */
2630-
2631-#ifndef UNITY_CONFIG_H
2632-#define UNITY_CONFIG_H
2633-
2634-#define UNITY_HELPER_DLL_EXPORT __attribute__ ((visibility ("default")))
2635-
2636-#ifdef UNITY_DLL_EXPORTS // Defined if we are building the Unity API library
2637- #define UNITY_API UNITY_HELPER_DLL_EXPORT
2638-#else
2639- #define UNITY_API /**/
2640-#endif
2641-
2642-#endif
2643
2644=== removed directory 'include/unity/internal'
2645=== removed file 'include/unity/internal/ExceptionImpl.h'
2646--- include/unity/internal/ExceptionImpl.h 2013-04-04 02:16:16 +0000
2647+++ include/unity/internal/ExceptionImpl.h 1970-01-01 00:00:00 +0000
2648@@ -1,60 +0,0 @@
2649-/*
2650- * Copyright (C) 2013 Canonical Ltd
2651- *
2652- * This program is free software: you can redistribute it and/or modify
2653- * it under the terms of the GNU General Public License version 3 as
2654- * published by the Free Software Foundation.
2655- *
2656- * This program is distributed in the hope that it will be useful,
2657- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2658- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2659- * GNU General Public License for more details.
2660- *
2661- * You should have received a copy of the GNU General Public License
2662- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2663- *
2664- * Authored by: Michi Henning <michi.henning@canonical.com>
2665- */
2666-
2667-#ifndef UNITY_INTERNAL_EXCEPTIONIMPL_H
2668-#define UNITY_INTERNAL_EXCEPTIONIMPL_H
2669-
2670-#include <unity/util/NonCopyable.h>
2671-
2672-#include <string>
2673-#include <exception>
2674-
2675-namespace unity
2676-{
2677-
2678-class Exception;
2679-
2680-namespace internal
2681-{
2682-
2683-class ExceptionImpl : private util::NonCopyable
2684-{
2685-public:
2686- explicit ExceptionImpl(std::string const& reason);
2687-
2688- virtual char const* what() const noexcept = 0;
2689- virtual std::string reason() const;
2690- virtual std::string to_string(std::nested_exception const& nested, int indent_level, std::string const& indent) const;
2691-
2692- std::exception_ptr remember(unity::Exception const* env, std::exception_ptr earlier_exception);
2693- std::exception_ptr remember(unity::Exception const* env, Exception const& earlier_exception);
2694- std::exception_ptr get_earlier() const noexcept;
2695-
2696-protected:
2697- virtual ~ExceptionImpl() noexcept;
2698-
2699-private:
2700- std::string const reason_;
2701- std::exception_ptr previous_;
2702-};
2703-
2704-} // namespace internal
2705-
2706-} // namespace unity
2707-
2708-#endif
2709
2710=== removed file 'include/unity/internal/UnityExceptionsImpl.h'
2711--- include/unity/internal/UnityExceptionsImpl.h 2013-04-04 02:16:16 +0000
2712+++ include/unity/internal/UnityExceptionsImpl.h 1970-01-01 00:00:00 +0000
2713@@ -1,95 +0,0 @@
2714-/*
2715- * Copyright (C) 2012 Canonical Ltd
2716- *
2717- * This program is free software: you can redistribute it and/or modify
2718- * it under the terms of the GNU General Public License version 3 as
2719- * published by the Free Software Foundation.
2720- *
2721- * This program is distributed in the hope that it will be useful,
2722- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2723- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2724- * GNU General Public License for more details.
2725- *
2726- * You should have received a copy of the GNU General Public License
2727- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2728- *
2729- * Authored by: Michi Henning <michi.henning@canonical.com>
2730- */
2731-
2732-#ifndef UNITY_INTERNAL_UNITYEXCEPTIONSIMPL_H
2733-#define UNITY_INTERNAL_UNITYEXCEPTIONSIMPL_H
2734-
2735-#include <unity/internal/ExceptionImpl.h>
2736-
2737-#include <string>
2738-#include <exception>
2739-
2740-namespace unity
2741-{
2742-
2743-class Exception;
2744-
2745-namespace internal
2746-{
2747-
2748-class InvalidArgumentExceptionImpl : public ExceptionImpl
2749-{
2750-public:
2751- InvalidArgumentExceptionImpl(std::string const& reason);
2752-
2753- virtual char const* what() const noexcept override;
2754-};
2755-
2756-class LogicExceptionImpl : public ExceptionImpl
2757-{
2758-public:
2759- LogicExceptionImpl(std::string const& reason);
2760-
2761- virtual char const* what() const noexcept override;
2762-};
2763-
2764-class ShutdownExceptionImpl : public ExceptionImpl
2765-{
2766-public:
2767- ShutdownExceptionImpl(std::string const& reason);
2768-
2769- virtual char const* what() const noexcept override;
2770-};
2771-
2772-class FileExceptionImpl : public ExceptionImpl
2773-{
2774-public:
2775- FileExceptionImpl(std::string const& reason, int err);
2776-
2777- virtual char const* what() const noexcept override;
2778- int error() const noexcept;
2779-
2780-private:
2781- int errno_;
2782-};
2783-
2784-class SyscallExceptionImpl : public ExceptionImpl
2785-{
2786-public:
2787- SyscallExceptionImpl(std::string const& reason, int err);
2788-
2789- virtual char const* what() const noexcept override;
2790- int error() const noexcept;
2791-
2792-private:
2793- int const errno_;
2794-};
2795-
2796-class ResourceExceptionImpl : public ExceptionImpl
2797-{
2798-public:
2799- ResourceExceptionImpl(std::string const& reason);
2800-
2801- virtual char const* what() const noexcept override;
2802-};
2803-
2804-} // namespace internal
2805-
2806-} // namespace unity
2807-
2808-#endif
2809
2810=== removed directory 'include/unity/scopes'
2811=== removed file 'include/unity/scopes/CMakeLists.txt'
2812--- include/unity/scopes/CMakeLists.txt 2013-04-22 18:14:52 +0000
2813+++ include/unity/scopes/CMakeLists.txt 1970-01-01 00:00:00 +0000
2814@@ -1,6 +0,0 @@
2815-file(GLOB headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
2816-file(GLOB internal_headers "${CMAKE_CURRENT_SOURCE_DIR}/internal/*.h")
2817-
2818-install(FILES ${headers} DESTINATION include/unity/scopes)
2819-
2820-set(UNITY_API_LIB_HDRS ${UNITY_API_LIB_HDRS} ${headers} ${internal_headers} PARENT_SCOPE)
2821
2822=== removed directory 'include/unity/scopes/internal'
2823=== removed directory 'include/unity/util'
2824=== removed file 'include/unity/util/CMakeLists.txt'
2825--- include/unity/util/CMakeLists.txt 2013-04-22 18:14:52 +0000
2826+++ include/unity/util/CMakeLists.txt 1970-01-01 00:00:00 +0000
2827@@ -1,6 +0,0 @@
2828-file(GLOB headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
2829-file(GLOB internal_headers "${CMAKE_CURRENT_SOURCE_DIR}/internal/*.h")
2830-
2831-install(FILES ${headers} DESTINATION ${HDR_INSTALL_DIR}/unity/util)
2832-
2833-set(UNITY_API_LIB_HDRS ${UNITY_API_LIB_HDRS} ${headers} ${internal_headers} PARENT_SCOPE)
2834
2835=== removed file 'include/unity/util/Daemon.h'
2836--- include/unity/util/Daemon.h 2013-04-08 03:05:05 +0000
2837+++ include/unity/util/Daemon.h 1970-01-01 00:00:00 +0000
2838@@ -1,129 +0,0 @@
2839-/*
2840- * Copyright (C) 2013 Canonical Ltd
2841- *
2842- * This program is free software: you can redistribute it and/or modify
2843- * it under the terms of the GNU General Public License version 3 as
2844- * published by the Free Software Foundation.
2845- *
2846- * This program is distributed in the hope that it will be useful,
2847- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2848- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2849- * GNU General Public License for more details.
2850- *
2851- * You should have received a copy of the GNU General Public License
2852- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2853- *
2854- * Authored by: Michi Henning <michi.henning@canonical.com>
2855- */
2856-
2857-#ifndef UNITY_UTIL_DAEMON_H
2858-#define UNITY_UTIL_DAEMON_H
2859-
2860-#include <unity/util/DefinesPtrs.h>
2861-#include <unity/util/NonCopyable.h>
2862-
2863-#include <sys/types.h>
2864-
2865-namespace unity
2866-{
2867-
2868-namespace util
2869-{
2870-
2871-namespace internal
2872-{
2873-class DaemonImpl;
2874-}
2875-
2876-/**
2877-\class Daemon
2878-\brief Helper class to turn a process into a daemon.
2879-
2880-To turn a process into a daemon, instantiate this class and call daemonize_me().
2881-
2882-The new process becomes a session leader without a control terminal. The standard
2883-file descriptors (<code>stdin</code>, <code>stdout</code>, and stderr) are closed
2884-and re-opened to <code>/dev/null</code>.
2885-
2886-By default, any file descriptors (other than the standard three) that are open in the process
2887-remain open to the same destinations in the daemon. If you want to have other descriptors closed, call
2888-close_fds() before calling daemonize_me(). This will close all file descriptors > 2.
2889-
2890-By default, the signal disposition of the daemon is unchanged. To reset all signals to their
2891-default disposition, call reset_signals() before calling daemonize_me().
2892-
2893-By default, the umask of the daemon is unchanged. To set a different umask, call set_umask()
2894-before calling daemonize_me().
2895-
2896-By default, the working directory of the daemon is unchanged. To run the daemon with a different
2897-working directory, call set_working_dir() before calling daemonize_me(). Note that the working
2898-directory should be set to a path that is in the root file system. If the working directory
2899-is in any other file system, that file system cannot be unmounted while the daemon is running.
2900-
2901-Note: This class is not async signal-safe. Do not call daemonize_me() from a a signal handler.
2902-*/
2903-
2904-class UNITY_API Daemon final : public util::DefinesPtrs<Daemon>, private NonCopyable
2905-{
2906-public:
2907- /**
2908- \brief Create a Daemon instance.
2909- \return A <code>unique_ptr</code> to the instance.
2910- */
2911- static UPtr create();
2912-
2913- /**
2914- \brief Causes daemonize_me() to close all open file descriptors other than the standard file
2915- descriptors (which are connected <code>/dev/null</code>).
2916- */
2917- void close_fds() noexcept;
2918-
2919- /**
2920- \brief Causes daemonize_me() to reset all signals to their default behavior.
2921- */
2922- void reset_signals() noexcept;
2923-
2924- /**
2925- \brief Causes daemonize_me() to set the umask.
2926- \param mask The umask for the daemon process.
2927- */
2928- void set_umask(mode_t mask) noexcept;
2929-
2930- /**
2931- \brief Causes daemonize_me() to set the working directory.
2932- \param working_directory The working directory for the daemon process.
2933- \throws SyscallException The process could not change the working directory to the specified directory.
2934- \note Daemon processes should set their working to "/" or to a directory that is part of the root file system.
2935- Otherwise, the file system containing the daemon's working directory cannot be unmounted without first
2936- killing the daemon process.
2937- */
2938- void set_working_directory(std::string const& working_directory);
2939-
2940- /**
2941- \brief Turns the calling process into a daemon.
2942-
2943- By default, daemonize_me() leaves open file descriptors, signal disposition, umask, and working
2944- directory unchanged. Call the corresponding member function before calling daemonize_me() to
2945- change this behavior as appropriate.
2946-
2947- \note Calling daemonize_me() more than once is safe; any changes to file descriptors, signal disposition,
2948- umask, or working directory as requested by calling the other member functions will be correctly set
2949- for the calling process. However, daemonize_me() is not a cheap call because it calls <code>fork()</code>;
2950- the normal use pattern is to create a Daemon instance, select the desired settings, call daemonize_me(),
2951- and let the instance go out of scope.
2952- */
2953- void daemonize_me();
2954-
2955- ~Daemon() noexcept;
2956-
2957-private:
2958- Daemon(); // Class is final, instantiation only via create()
2959-
2960- std::unique_ptr<internal::DaemonImpl> p_;
2961-};
2962-
2963-} // namespace util
2964-
2965-} // namespace unity
2966-
2967-#endif
2968
2969=== removed file 'include/unity/util/DefinesPtrs.h'
2970--- include/unity/util/DefinesPtrs.h 2013-04-09 02:00:18 +0000
2971+++ include/unity/util/DefinesPtrs.h 1970-01-01 00:00:00 +0000
2972@@ -1,89 +0,0 @@
2973-/*
2974- * Copyright (C) 2013 Canonical Ltd
2975- *
2976- * This program is free software: you can redistribute it and/or modify
2977- * it under the terms of the GNU General Public License version 3 as
2978- * published by the Free Software Foundation.
2979- *
2980- * This program is distributed in the hope that it will be useful,
2981- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2982- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2983- * GNU General Public License for more details.
2984- *
2985- * You should have received a copy of the GNU General Public License
2986- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2987- *
2988- * Authored by: Michi Henning <michi.henning@canonical.com>
2989- */
2990-
2991-#ifndef UNITY_UTIL_DEFINESPTRS_H
2992-#define UNITY_UTIL_DEFINESPTRS_H
2993-
2994-#include <memory>
2995-
2996-namespace unity
2997-{
2998-
2999-namespace util
3000-{
3001-
3002-/**
3003-\brief Helper template to inject smart pointer definitions into a class.
3004-
3005-This template injects type definitions for smart pointer types into a class. It is useful to
3006-establish a common naming convention for smart pointers across a project.
3007-
3008-You can use the template as follows. Note that the template parameter is the name of the class
3009-being defined ("curiously recurring template pattern").
3010-
3011-~~~
3012-* class MyClass : public util::DefinesPtrs<MyClass>
3013-* {
3014-* public:
3015-* // MyClass now provides public typedefs for SPtr, SCPtr, UPtr, and UCPtr.
3016-* // ...
3017-* };
3018-~~~
3019-
3020-Callers of <code>MyClass</code> can now, for example, write
3021-
3022-~~~
3023-* MyClass::UPtr p(new MyClass);
3024-~~~
3025-
3026-*/
3027-
3028-template <typename T>
3029-class DefinesPtrs
3030-{
3031-public:
3032- /**
3033- A <code>std::shared_ptr</code> to a non-constant instance.
3034- */
3035- typedef std::shared_ptr<T> SPtr;
3036-
3037- /**
3038- A <code>std::shared_ptr</code> to a constant instance.
3039- */
3040- typedef std::shared_ptr<T const> SCPtr;
3041-
3042- /**
3043- A <code>std::unique_ptr</code> to a non-constant instance.
3044- */
3045- typedef std::unique_ptr<T> UPtr;
3046-
3047- /**
3048- A <code>std::unique_ptr</code> to a constant instance.
3049- */
3050- typedef std::unique_ptr<T const> UCPtr;
3051-
3052-protected: // Not meant to be instantiated stand-alone
3053- DefinesPtrs() = default;
3054- virtual ~DefinesPtrs() = default;
3055-};
3056-
3057-} // namespace util
3058-
3059-} // namespace unity
3060-
3061-#endif
3062
3063=== removed file 'include/unity/util/FileIO.h'
3064--- include/unity/util/FileIO.h 2013-04-08 03:05:05 +0000
3065+++ include/unity/util/FileIO.h 1970-01-01 00:00:00 +0000
3066@@ -1,40 +0,0 @@
3067-/*
3068- * Copyright (C) 2013 Canonical Ltd
3069- *
3070- * This program is free software: you can redistribute it and/or modify
3071- * it under the terms of the GNU General Public License version 3 as
3072- * published by the Free Software Foundation.
3073- *
3074- * This program is distributed in the hope that it will be useful,
3075- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3076- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3077- * GNU General Public License for more details.
3078- *
3079- * You should have received a copy of the GNU General Public License
3080- * along with this program. If not, see <http://www.gnu.org/licenses/>.
3081- *
3082- * Authored by: Michi Henning <michi.henning@canonical.com>
3083- */
3084-
3085-#ifndef UNITY_UTIL_FILEIO_H
3086-#define UNITY_UTIL_FILEIO_H
3087-
3088-#include <unity/config.h>
3089-
3090-#include <string>
3091-#include <vector>
3092-
3093-namespace unity
3094-{
3095-
3096-namespace util
3097-{
3098-
3099-UNITY_API std::string read_text_file(std::string const& filename);
3100-UNITY_API std::vector<uint8_t> read_binary_file(std::string const& filename);
3101-
3102-} // namespace util
3103-
3104-} // namespace unity
3105-
3106-#endif
3107
3108=== removed file 'include/unity/util/NonCopyable.h'
3109--- include/unity/util/NonCopyable.h 2013-04-08 03:05:05 +0000
3110+++ include/unity/util/NonCopyable.h 1970-01-01 00:00:00 +0000
3111@@ -1,89 +0,0 @@
3112-/*
3113- * Copyright (C) 2013 Canonical Ltd
3114- *
3115- * This program is free software: you can redistribute it and/or modify
3116- * it under the terms of the GNU General Public License version 3 as
3117- * published by the Free Software Foundation.
3118- *
3119- * This program is distributed in the hope that it will be useful,
3120- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3121- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3122- * GNU General Public License for more details.
3123- *
3124- * You should have received a copy of the GNU General Public License
3125- * along with this program. If not, see <http://www.gnu.org/licenses/>.
3126- *
3127- * Authored by: Michi Henning <michi.henning@canonical.com>
3128- */
3129-
3130-//
3131-// Simple class to disable copy and assignment. (Provided here to avoid having to use
3132-// the equivalent boost version.)
3133-//
3134-// Use like this:
3135-//
3136-// class MyClass : private util::NonCopyable
3137-// {
3138-// // ...
3139-// };
3140-//
3141-
3142-#ifndef UNITY_UTIL_NONCOPYABLE_H
3143-#define UNITY_UTIL_NONCOPYABLE_H
3144-
3145-#include <unity/config.h>
3146-
3147-namespace unity
3148-{
3149-
3150-namespace util
3151-{
3152-
3153-namespace NonCopyable_ // Prevent unintended ADL
3154-{
3155-
3156-/**
3157-\brief Helper class to prevent a class from being copied.
3158-
3159-This class disables the copy constructor and assignment operator of a class to prevent it from being copied.
3160-This makes the fact that a class is not copyable immediately visible on reading the class definition,
3161-rather than having to read through the entire class to look for a copy constructor and assignment operator
3162-in the private section, or having to look for <code> = delete;</code> on the corresponding definitions.
3163-
3164-To use the class, use private inheritance:
3165-~~~
3166-* class MyClass : private unity::util::NonCopyable
3167-* {
3168-* public:
3169-* // MyClass cannot be copied now
3170-* // ...
3171-* };
3172-~~~
3173-
3174-\note Do not use public or protected inheritance for this class. Private inheritance prevents accidental polymorphism, such as
3175-~~~
3176-* void some_method(NonCopyable& param); // Bad, permits unrelated classes to be passed
3177-~~~
3178-
3179-*/
3180-
3181-class UNITY_API NonCopyable
3182-{
3183-protected:
3184- NonCopyable() = default;
3185- ~NonCopyable() = default;
3186-
3187-private:
3188- NonCopyable(NonCopyable const&) = delete;
3189- NonCopyable& operator=(NonCopyable const&) = delete;
3190-};
3191-
3192-} // namespace NonCopyable_
3193-
3194-typedef NonCopyable_::NonCopyable NonCopyable;
3195-
3196-} // namespace util
3197-
3198-} // namespace unity
3199-
3200-#endif
3201
3202=== removed directory 'include/unity/util/internal'
3203=== removed file 'include/unity/util/internal/DaemonImpl.h'
3204--- include/unity/util/internal/DaemonImpl.h 2013-04-04 02:16:16 +0000
3205+++ include/unity/util/internal/DaemonImpl.h 1970-01-01 00:00:00 +0000
3206@@ -1,67 +0,0 @@
3207-/*
3208- * Copyright (C) 2013 Canonical Ltd
3209- *
3210- * This program is free software: you can redistribute it and/or modify
3211- * it under the terms of the GNU General Public License version 3 as
3212- * published by the Free Software Foundation.
3213- *
3214- * This program is distributed in the hope that it will be useful,
3215- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3216- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3217- * GNU General Public License for more details.
3218- *
3219- * You should have received a copy of the GNU General Public License
3220- * along with this program. If not, see <http://www.gnu.org/licenses/>.
3221- *
3222- * Authored by: Michi Henning <michi.henning@canonical.com>
3223- */
3224-
3225-#ifndef UNITY_UTIL_DAEMONIMPL_H
3226-#define UNITY_UTIL_DAEMONIMPL_H
3227-
3228-#include <unity/UnityExceptions.h>
3229-#include <unity/util/NonCopyable.h>
3230-
3231-#include <sys/types.h>
3232-
3233-#include <string>
3234-
3235-namespace unity
3236-{
3237-
3238-namespace util
3239-{
3240-
3241-namespace internal
3242-{
3243-
3244-class DaemonImpl final : private NonCopyable
3245-{
3246-public:
3247- DaemonImpl();
3248- ~DaemonImpl() = default;
3249-
3250- void close_fds() noexcept;
3251- void reset_signals() noexcept;
3252- void set_umask(mode_t mask) noexcept;
3253- void set_working_directory(std::string const& working_directory);
3254-
3255- void daemonize_me();
3256-
3257-private:
3258- bool close_fds_;
3259- bool reset_signals_;
3260- bool set_umask_;
3261- mode_t umask_;
3262- std::string working_directory_;
3263-
3264- void close_open_files() noexcept;
3265-};
3266-
3267-} // namespace internal
3268-
3269-} // namespace util
3270-
3271-} // namespace unity
3272-
3273-#endif
3274
3275=== removed file 'include/unity/util/internal/ResourcePtr.h'
3276--- include/unity/util/internal/ResourcePtr.h 2013-04-10 03:39:55 +0000
3277+++ include/unity/util/internal/ResourcePtr.h 1970-01-01 00:00:00 +0000
3278@@ -1,793 +0,0 @@
3279-/*
3280- * Copyright (C) 2013 Canonical Ltd
3281- *
3282- * This program is free software: you can redistribute it and/or modify
3283- * it under the terms of the GNU General Public License version 3 as
3284- * published by the Free Software Foundation.
3285- *
3286- * This program is distributed in the hope that it will be useful,
3287- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3288- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3289- * GNU General Public License for more details.
3290- *
3291- * You should have received a copy of the GNU General Public License
3292- * along with this program. If not, see <http://www.gnu.org/licenses/>.
3293- *
3294- * Authored by: Michi Henning <michi.henning@canonical.com>
3295- */
3296-
3297-#ifndef UNITY_UTIL_INTERNAL_RESOURCEPTR_H
3298-#define UNITY_UTIL_INTERNAL_RESOURCEPTR_H
3299-
3300-#include <unity/util/NonCopyable.h>
3301-
3302-#include <boost/type_traits.hpp>
3303-
3304-#include <mutex>
3305-
3306-namespace unity
3307-{
3308-
3309-namespace util
3310-{
3311-
3312-namespace internal
3313-{
3314-
3315-namespace
3316-{
3317-
3318-// Simple helper class so we can adopt a lock without inconvenient syntax.
3319-
3320-template<typename T>
3321-class LockAdopter
3322-{
3323-public:
3324- LockAdopter(T& mutex) noexcept
3325- : m_(mutex, std::adopt_lock)
3326- {
3327- assert(!mutex.try_lock()); // Mutex must be locked to be adoptable.
3328- }
3329-
3330-private:
3331- std::unique_lock<T> m_;
3332-};
3333-
3334-} // namespace
3335-
3336-/**
3337-\brief Class to guarantee deallocation of arbitrary resources.
3338-
3339-ResourcePtr is a generalized resource pointer that guarantees deallocation.
3340-It is intended for arbitrary pairs of allocate/deallocate functions, such
3341-as <code>XCreateDisplay</code>/<code>XDestroyDisplay</code>.
3342-
3343-The resource managed by this class must be default-constructible, copy-constructible, and assignable.
3344-
3345-ResourcePtr essentially does what <code>std::unique_ptr</code> does, but it works with opaque types
3346-and resource allocation functions that do not return a pointer type, such as <code>open()</code>.
3347-
3348-ResourcePtr is thread-safe.
3349-
3350-\note Do not use reset() to set the resource to the "no resource allocated" state.
3351- Instead, call dealloc() to do this. ResourcePtr has no idea
3352- what a "not allocated" resource value looks like and therefore cannot test
3353- for it. If you use reset() to install a "no resource allocated" value for
3354- for the resource, the deleter will eventually be called with this value
3355- as its argument. Whether this is benign or not depends on the deleter. For
3356- example, <code>XFree()</code> must not be called with a <code>nullptr</code> argument.
3357-
3358-\note Do not call get() or release() if no resource is currently allocated.
3359- Doing so throws <code>std::logic_error</code>.
3360-
3361-Here is an example that shows how to use this for a <code>glXCreateContext</code>/<code>GLXDestroyContext</code> pair.
3362-The returned <code>GLXContext</code> is a pointer to an opaque type; <code>std::unique_ptr</code> cannot be used
3363-for this, even with a custom deleter, because the signatures of the allocator and deallocator
3364-do not match <code>unique_ptr</code>'s expectations.
3365-
3366-~~~
3367-ResourcePtr<GLXContext, std::function<void(GLXContext)>> context =
3368- std::bind(&glXDestroyContext, display_, std::placeholders::_1);
3369-~~~
3370-
3371-display_ is declared as
3372-
3373-~~~
3374- Display* display_;
3375-~~~
3376-
3377-in this case.
3378-
3379-The deleter for the resource can return any type (including int, such as returned by <code>XDestroyWindow()</code>),
3380-and it must accept a single argument of the resource type (<code>GLXContext</code> in this example).
3381-
3382-<code>glXDestroyContext()</code> expects the display pointer as the first argument so, for this example,
3383-<code>std::bind</code> converts the binary <code>glXDestroyContext()</code> function into a
3384-unary function suitable as the deleter.
3385-
3386-Rather than mucking around with <code>std::bind</code>, it is often easier to use a lambda. For example:
3387-
3388-~~~
3389-ResourcePtr<GLXContext, std::function<void(GLXContext)>> context =
3390- [this](GLXContext c) { this->dealloc_GLXContext(c); };
3391-~~~
3392-
3393-This calls a member function <code>dealloc_GLXContext()</code> that, in turn calls <code>glXDestroyContext()</code>
3394-and supplies the display parameter.
3395-
3396-\note Even though you can use ResourcePtr to deallocate dynamic memory, doing so is discouraged.
3397-Use <code>std::unique_ptr</code> instead, which is better suited to the task.
3398-*/
3399-
3400-// TODO: Discuss throwing deleters and requirements (copy constructible, etc.) on deleter.
3401-
3402-template<typename R, typename D>
3403-class ResourcePtr final : private NonCopyable
3404-{
3405-public:
3406- /**
3407- \typedef element_type
3408- The type of resource managed by this ResourcePtr.
3409- */
3410- typedef R element_type;
3411-
3412- /**
3413- \typedef deleter_type
3414- A function object or lvalue reference to a function or function object. The ResourcePtr
3415- calls this to deallocate the resource.
3416- */
3417- typedef D deleter_type;
3418-
3419- explicit ResourcePtr(D d);
3420- ResourcePtr(R r, D d);
3421- ResourcePtr(ResourcePtr&& r);
3422- ResourcePtr& operator=(ResourcePtr&& r);
3423- ~ResourcePtr() noexcept;
3424-
3425- void swap(ResourcePtr& other);
3426-
3427- void reset(R r);
3428- R release();
3429- void dealloc();
3430-
3431- R get() const;
3432- bool has_resource() const noexcept;
3433- explicit operator bool() const noexcept;
3434- D& get_deleter() noexcept;
3435- D const& get_deleter() const noexcept;
3436-
3437- typename std::enable_if<boost::has_equal_to<R>::value, bool>::type
3438- operator==(ResourcePtr const& rhs) const;
3439-
3440- typename std::enable_if<boost::has_equal_to<R>::value, bool>::type
3441- operator!=(ResourcePtr const& rhs) const;
3442-
3443- typename std::enable_if<boost::has_less<R>::value, bool>::type
3444- operator<(ResourcePtr const& rhs) const;
3445-
3446- typename std::enable_if<boost::has_less<R>::value &&
3447- boost::has_equal_to<R>::value, bool>::type
3448- operator<=(ResourcePtr const& rhs) const;
3449-
3450- typename std::enable_if<boost::has_less<R>::value &&
3451- boost::has_equal_to<R>::value, bool>::type
3452- operator>(ResourcePtr const& rhs) const;
3453-
3454- typename std::enable_if<boost::has_less<R>::value, bool>::type
3455- operator>=(ResourcePtr const& rhs) const;
3456-
3457-private:
3458- R resource_; // The managed resource.
3459- D delete_; // The deleter to call.
3460- bool initialized_; // True while we have a resource assigned.
3461- mutable std::mutex m_; // Protects this instance.
3462-
3463- typedef std::lock_guard<decltype(m_)> AutoLock;
3464- typedef LockAdopter<decltype(m_)> AdoptLock;
3465-};
3466-
3467-/**
3468-Constructs a ResourcePtr with the specified deleter. No resource is held, so a call to has_resource()
3469-after constructing a ResourcePtr this way returns <code>false</code>.
3470-*/
3471-
3472-template<typename R, typename D>
3473-ResourcePtr<R, D>::
3474-ResourcePtr(D d)
3475- : delete_(d), initialized_(false)
3476-{
3477-}
3478-
3479-/**
3480-Constructs a ResourcePtr with the specified resource and deleter. has_resource() returns <code>true</code> after
3481-calling this constructor.
3482-
3483-\note It is legal to pass a resource that represents the "not allocated" state. For example, the
3484- following code passes the value <code>-1</code> to <code>close()</code> if the call to <code>open()</code> fails:
3485-
3486-~~~
3487-ResourcePtr<int, decltype(&::close)> fd(::open("/somefile", O_RDONLY), ::close);
3488-~~~
3489- When the ResourcePtr goes out of scope, this results in a call to <code>close(-1)</code>. In this case,
3490- the call with an invalid file descriptor is harmless (but causes noise from diagnostic tools, such as
3491- <code>valgrind</code>). However, depending on the specific deleter, passing an invalid value to the deleter may
3492- have more serious consequences.
3493-
3494- To avoid the problem, you can delay initialization of the ResourcePtr until you know that the
3495- resource was successfully allocated, for example:
3496-~~~
3497- int tmp_fd = ::open(filename.c_str(), O_RDONLY);
3498- if (tmp_fd == -1)
3499- {
3500- throw FileException(filename.c_str());
3501- }
3502- util::internal::ResourcePtr<int, decltype(&::close)> fd(tmp_fd, ::close(fd));
3503-~~~
3504- Alternatively, you can use a deleter function that tests the resource value
3505- for validity and avoids calling the deleter with an invalid value:
3506-~~~
3507- util::internal::ResourcePtr<int, std::function<void(int)>> fd(
3508- ::open(filename.c_str(), O_RDONLY),
3509- [](int fd) { if (fd != -1) ::close(fd); }
3510- );
3511-~~~
3512- Note that, with the second approach, a call to get() will succeed and return -1 rather than throwing an
3513- exception, so the first approach is the recommended one.
3514-*/
3515-
3516-template<typename R, typename D>
3517-ResourcePtr<R, D>::
3518-ResourcePtr(R r, D d)
3519- : resource_(r), delete_(d), initialized_(true)
3520-{
3521-}
3522-
3523-/**
3524-Constructs a ResourcePtr by transferring ownership from <code>r</code> to <code>this</code>.
3525-
3526-If the resource's move or copy constructor throws, the exception is propagated to the caller.
3527-The strong exception guarantee is preserved if it is provided by the resource.
3528-*/
3529-// TODO: Mark as nothrow if the resource has a nothrow move constructor or nothrow copy constructor
3530-
3531-template<typename R, typename D>
3532-ResourcePtr<R, D>::
3533-ResourcePtr(ResourcePtr<R, D>&& r)
3534- : resource_(std::move(r.resource_)), delete_(r.delete_), initialized_(r.initialized_)
3535-{
3536- r.initialized_ = false; // Stop r from deleting its resource, if it held any. No need to lock: r is a temporary.
3537-}
3538-
3539-/**
3540-Assigns the resource held by <code>r</code>, transferring ownership. After the transfer,
3541-<code>r.has_resource()</code> returns <code>false</code>, and <code>this.has_resource()</code> returns
3542-the value of <code>r.has_resource()</code> prior to the assignment.
3543-*/
3544-// TODO: document exception safety behavior
3545-
3546-template<typename R, typename D>
3547-ResourcePtr<R, D>&
3548-ResourcePtr<R, D>::
3549-operator=(ResourcePtr&& r)
3550-{
3551- AutoLock lock(m_);
3552-
3553- if (initialized_) // If we hold a resource, deallocate it first.
3554- {
3555- initialized_ = false; // If the deleter throws, we will not try it again for the same resource.
3556- delete_(resource_); // Delete our own resource.
3557- }
3558-
3559- // r is a temporary, so we don't need to lock it.
3560-
3561- resource_ = std::move(r.resource_);
3562- initialized_ = r.initialized_;
3563- r.initialized_ = false; // Stop r from deleting its resource, if it held any.
3564- delete_ = r.delete_;
3565-
3566- return *this;
3567-}
3568-
3569-/**
3570-Destroys the ResourcePtr. If a resource is held, it calls the deleter for the current resource (if any).
3571-*/
3572-
3573-template<typename R, typename D>
3574-ResourcePtr<R, D>::
3575-~ResourcePtr() noexcept
3576-{
3577- try
3578- {
3579- dealloc();
3580- }
3581- catch (...)
3582- {
3583- }
3584-}
3585-
3586-/**
3587-Swaps the resource and deleter of <code>this</code> with the resource and deleter of <code>other</code>
3588-using argument dependent lookup (ADL).
3589-
3590-If the underlying swap throws an exception, that exception is propagated to the caller, and the resource
3591-held by the ResourcePtr is unchanged.
3592-*/
3593-// TODO Split this into throw and no-throw versions depending on the underlying swap?
3594-
3595-template<typename R, typename D>
3596-void
3597-ResourcePtr<R, D>::
3598-swap(ResourcePtr& other)
3599-{
3600- if (this == &other) // This is necessary to avoid deadlock for self-swap
3601- {
3602- return;
3603- }
3604-
3605- std::lock(m_, other.m_);
3606- AdoptLock left(m_);
3607- AdoptLock right(other.m_);
3608-
3609- using std::swap; // Enable ADL
3610- swap(resource_, other.resource_);
3611- swap(delete_, other.delete_);
3612- swap(initialized_, other.initialized_);
3613-}
3614-
3615-// The non-member swap() must be in the same namespace as ResourcePtr, so it will work with ADL. And, once it is
3616-// defined here, there is no point in adding a specialization to namespace std any longer, because ADL
3617-// will find it here anyway.
3618-
3619-/**
3620-Swaps the resource and deleter of <code>lhs</code> with the resource and deleter of <code>rhs</code>
3621-by calling <code>lhs.swap(rhs)</code>.
3622-
3623-If the underlying swap throws an exception, that exception is propagated to the caller, and the resource
3624-held by the ResourcePtr is unchanged.
3625-*/
3626-// TODO Split this into throw and no-throw versions depending on the underlying swap?
3627-
3628-template<typename R, typename D>
3629-void
3630-swap(unity::util::internal::ResourcePtr<R, D>& lhs, unity::util::internal::ResourcePtr<R, D>& rhs)
3631-{
3632- lhs.swap(rhs);
3633-}
3634-
3635-/**
3636-Assigns a new resource to <code>this</code>, first deallocating the current resource (if any).
3637-
3638-If the deleter for the current resource throws an exception, the exception is propagated to the caller. In this
3639-case, the transfer of <code>r</code> to <code>this</code> is still carried out so, after the call to reset(),
3640-<code>this</code> manages <code>r</code>, whether the deleter throws or not. (If the deleter <i>does</i> throw,
3641-no attempt is made to call the deleter again for the same resource.)
3642-*/
3643-
3644-template<typename R, typename D>
3645-void
3646-ResourcePtr<R, D>::
3647-reset(R r)
3648-{
3649- AutoLock lock(m_);
3650-
3651- bool has_old = initialized_;
3652- R old_resource;
3653-
3654- if (has_old)
3655- {
3656- old_resource = resource_;
3657- }
3658- resource_ = r;
3659- initialized_ = true; // If the deleter throws, we still satisfy the postcondition: resource_ == r.
3660- if (has_old)
3661- {
3662- delete_(old_resource);
3663- }
3664-}
3665-
3666-/**
3667-Releases ownership of the current resource without calling the deleter.
3668-\return The current resource.
3669-\throw std::logic_error if has_resource() is false.
3670-*/
3671-
3672-template<typename R, typename D>
3673-inline
3674-R
3675-ResourcePtr<R, D>::
3676-release()
3677-{
3678- AutoLock lock(m_);
3679-
3680- if (!initialized_)
3681- {
3682- throw std::logic_error("release() called on ResourcePtr without resource");
3683- }
3684- initialized_ = false;
3685- return resource_;
3686-}
3687-
3688-/**
3689-Calls the deleter for the current resource.
3690-
3691-If the deleter throws, the resource is considered in the "not allocated" state,
3692-that is, no attempt is made to call the deleter again for this resource.
3693-*/
3694-
3695-template<typename R, typename D>
3696-void
3697-ResourcePtr<R, D>::
3698-dealloc()
3699-{
3700- AutoLock lock(m_);
3701-
3702- if (!initialized_)
3703- {
3704- return;
3705- }
3706- initialized_ = false; // If the deleter throws, we will not try it again for the same resource.
3707- delete_(resource_);
3708-}
3709-
3710-/**
3711-Returns the current resource. If no resource is currently held, get() throws <code>std::logic_error</code>.
3712-\return The current resource (if any).
3713-
3714-If the resource's copy constructor throws an exception, that exception is propagated to the caller.
3715-
3716-\throw std::logic_error if has_resource() is false.
3717-*/
3718-
3719-template<typename R, typename D>
3720-inline
3721-R
3722-ResourcePtr<R, D>::
3723-get() const
3724-{
3725- AutoLock lock(m_);
3726-
3727- if (!initialized_)
3728- {
3729- throw std::logic_error("get() called on ResourcePtr without resource");
3730- }
3731- return resource_;
3732-}
3733-
3734-/**
3735-\return <code>true</code> if <code>this</code> currently manages a resource; <code>false</code>, otherwise.
3736-*/
3737-
3738-template<typename R, typename D>
3739-inline
3740-bool
3741-ResourcePtr<R, D>::
3742-has_resource() const noexcept
3743-{
3744- AutoLock lock(m_);
3745- return initialized_;
3746-}
3747-
3748-/**
3749-Synonym for has_resource().
3750-*/
3751-
3752-template<typename R, typename D>
3753-inline
3754-ResourcePtr<R, D>::
3755-operator bool() const noexcept
3756-{
3757- return has_resource();
3758-}
3759-
3760-/**
3761-\return The deleter for the resource.
3762-*/
3763-
3764-template<typename R, typename D>
3765-inline
3766-D&
3767-ResourcePtr<R, D>::
3768-get_deleter() noexcept
3769-{
3770- AutoLock lock(m_);
3771- return delete_;
3772-}
3773-
3774-/**
3775-\return The deleter for the resource.
3776-*/
3777-
3778-template<typename R, typename D>
3779-inline
3780-D const&
3781-ResourcePtr<R, D>::
3782-get_deleter() const noexcept
3783-{
3784- AutoLock lock(m_);
3785- return delete_;
3786-}
3787-
3788-/**
3789-\brief Compares two instances for equality by calling the corresponding operator on the resource.
3790-
3791-Two instances that do not hold a resource are equal. An instance that does not hold a resource is not equal
3792-to any instance that holds a resource.
3793-
3794-If the underlying operator throws an exception, that exception is propagated to the caller.
3795-
3796-\note This operator is available only if the underlying resource provides <code>operator==</code>.
3797-*/
3798-
3799-template<typename R, typename D>
3800-typename std::enable_if<boost::has_equal_to<R>::value, bool>::type
3801-ResourcePtr<R, D>::
3802-operator==(ResourcePtr<R, D> const& rhs) const
3803-{
3804- if (this == &rhs) // This is necessary to avoid deadlock for self-comparison
3805- {
3806- return true;
3807- }
3808-
3809- std::lock(m_, rhs.m_);
3810- AdoptLock left(m_);
3811- AdoptLock right(rhs.m_);
3812-
3813- if (!initialized_)
3814- {
3815- return !rhs.initialized_; // Equal if both are not initialized
3816- }
3817- else if (!rhs.initialized_)
3818- {
3819- return false; // Not equal if lhs initialized, but rhs not initialized
3820- }
3821- else
3822- {
3823- return resource_ == rhs.resource_;
3824- }
3825-}
3826-
3827-/**
3828-\brief Compares two instances for inequality by calling the corresponding operator on the resource.
3829-
3830-If the underlying operator throws an exception, that exception is propagated to the caller.
3831-
3832-\note This operator is available only if the underlying resource provides <code>operator!=</code>.
3833-*/
3834-
3835-template<typename R, typename D>
3836-inline
3837-typename std::enable_if<boost::has_equal_to<R>::value, bool>::type
3838-ResourcePtr<R, D>::
3839-operator!=(ResourcePtr<R, D> const& rhs) const
3840-{
3841- return !(*this == rhs);
3842-}
3843-
3844-/**
3845-\brief Returns <code>true</code> if <code>this</code> is less than <code>rhs</code> by calling the
3846-corresponding operator on the resource.
3847-
3848-An instance that does not hold a resource is less than any instance that holds a resource.
3849-
3850-If the underlying operator throws an exception, that exception is propagated to the caller.
3851-
3852-\note This operator is available only if the underlying resource provides <code>operator\<</code>.
3853-*/
3854-
3855-template<typename R, typename D>
3856-typename std::enable_if<boost::has_less<R>::value, bool>::type
3857-ResourcePtr<R, D>::
3858-operator<(ResourcePtr<R, D> const& rhs) const
3859-{
3860- if (this == &rhs) // This is necessary to avoid deadlock for self-comparison
3861- {
3862- return false;
3863- }
3864-
3865- std::lock(m_, rhs.m_);
3866- AdoptLock left(m_);
3867- AdoptLock right(rhs.m_);
3868-
3869- if (!initialized_)
3870- {
3871- return rhs.initialized_; // Not initialized is less than initialized
3872- }
3873- else if (!rhs.initialized_) // Initialized is not less than not initialized
3874- {
3875- return false;
3876- }
3877- else
3878- {
3879- return resource_ < rhs.resource_;
3880- }
3881-}
3882-
3883-/**
3884-\brief Returns <code>true</code> if <code>this</code> is less than or equal to <code>rhs</code> by calling the
3885-corresponding operator on the resource.
3886-
3887-An instance that does not hold a resource is less than any instance that holds a resource.
3888-Two instances that do not hold a resource are equal.
3889-
3890-If the underlying operator throws an exception, that exception is propagated to the caller.
3891-
3892-\note This operator is available only if the underlying resource provides <code>operator\<=</code>.
3893-*/
3894-
3895-template<typename R, typename D>
3896-typename std::enable_if<boost::has_less<R>::value && boost::has_equal_to<R>::value, bool>::type
3897-ResourcePtr<R, D>::
3898-operator<=(ResourcePtr<R, D> const& rhs) const
3899-{
3900- if (this == &rhs) // This is necessary to avoid deadlock for self-comparison
3901- {
3902- return true;
3903- }
3904-
3905- // We can't just write:
3906- //
3907- // return *this < rhs || *this == rhs;
3908- //
3909- // because that creates a race condition: the locks would be released and
3910- // re-aquired in between the two comparisons.
3911-
3912- std::lock(m_, rhs.m_);
3913- AdoptLock left(m_);
3914- AdoptLock right(rhs.m_);
3915-
3916- return resource_ < rhs.resource_ || resource_ == rhs.resource_;
3917-}
3918-
3919-/**
3920-\brief Returns <code>true</code> if <code>this</code> is greater than <code>rhs</code> by calling the
3921-corresponding operator on the resource.
3922-
3923-An instance that holds a resource is greater than any instance that does not hold a resource.
3924-
3925-If the underlying operator throws an exception, that exception is propagated to the caller.
3926-
3927-\note This operator is available only if the underlying resource provides <code>operator\></code>.
3928-*/
3929-
3930-template<typename R, typename D>
3931-inline
3932-typename std::enable_if<boost::has_less<R>::value && boost::has_equal_to<R>::value, bool>::type
3933-ResourcePtr<R, D>::
3934-operator>(ResourcePtr<R, D> const& rhs) const
3935-{
3936- return !(*this <= rhs);
3937-}
3938-
3939-/**
3940-\brief Returns <code>true</code> if <code>this</code> is greater than or equal to <code>rhs</code> by calling the
3941-corresponding operator on the resource.
3942-
3943-An instance that holds a resource is greater than any instance that does not hold a resource.
3944-Two instances that do not hold a resource are equal.
3945-
3946-If the underlying operator throws an exception, that exception is propagated to the caller.
3947-
3948-\note This operator is available only if the underlying resource provides <code>operator\>=</code>.
3949-*/
3950-
3951-template<typename R, typename D>
3952-inline
3953-typename std::enable_if<boost::has_less<R>::value, bool>::type
3954-ResourcePtr<R, D>::
3955-operator>=(ResourcePtr<R, D> const& rhs) const
3956-{
3957- return !(*this < rhs);
3958-}
3959-
3960-} // namespace internal
3961-
3962-} // namespace util
3963-
3964-} // namespace unity
3965-
3966-// Specializations in namespace std, so we play nicely with STL and metaprogramming.
3967-
3968-namespace std
3969-{
3970-
3971-/**
3972-\brief Function object for equality comparison.
3973-*/
3974-
3975-template<typename R, typename D>
3976-struct equal_to<unity::util::internal::ResourcePtr<R, D>>
3977-{
3978- /**
3979- Invokes <code>operator==</code> on <code>lhs</code>.
3980- */
3981- bool operator()(unity::util::internal::ResourcePtr<R, D> const& lhs, unity::util::internal::ResourcePtr<R, D> const& rhs) const
3982- {
3983- return lhs == rhs;
3984- }
3985-};
3986-
3987-/**
3988-\brief Function object for inequality comparison.
3989-*/
3990-
3991-template<typename R, typename D>
3992-struct not_equal_to<unity::util::internal::ResourcePtr<R, D>>
3993-{
3994- /**
3995- Invokes <code>operator!=</code> on <code>lhs</code>.
3996- */
3997- bool operator()(unity::util::internal::ResourcePtr<R, D> const& lhs, unity::util::internal::ResourcePtr<R, D> const& rhs) const
3998- {
3999- return lhs != rhs;
4000- }
4001-};
4002-
4003-/**
4004-\brief Function object for less than comparison.
4005-*/
4006-
4007-template<typename R, typename D>
4008-struct less<unity::util::internal::ResourcePtr<R, D>>
4009-{
4010- /**
4011- Invokes <code>operator\<</code> on <code>lhs</code>.
4012- */
4013- bool operator()(unity::util::internal::ResourcePtr<R, D> const& lhs, unity::util::internal::ResourcePtr<R, D> const& rhs) const
4014- {
4015- return lhs < rhs;
4016- }
4017-};
4018-
4019-/**
4020-\brief Function object for less than or equal comparison.
4021-*/
4022-
4023-template<typename R, typename D>
4024-struct less_equal<unity::util::internal::ResourcePtr<R, D>>
4025-{
4026- /**
4027- Invokes <code>operator\<=</code> on <code>lhs</code>.
4028- */
4029- bool operator()(unity::util::internal::ResourcePtr<R, D> const& lhs, unity::util::internal::ResourcePtr<R, D> const& rhs) const
4030- {
4031- return lhs <= rhs;
4032- }
4033-};
4034-
4035-/**
4036-\brief Function object for greater than comparison.
4037-*/
4038-
4039-template<typename R, typename D>
4040-struct greater<unity::util::internal::ResourcePtr<R, D>>
4041-{
4042- /**
4043- Invokes <code>operator\></code> on <code>lhs</code>.
4044- */
4045- bool operator()(unity::util::internal::ResourcePtr<R, D> const& lhs, unity::util::internal::ResourcePtr<R, D> const& rhs) const
4046- {
4047- return lhs > rhs;
4048- }
4049-};
4050-
4051-/**
4052-\brief Function object for less than or equal comparison.
4053-*/
4054-
4055-template<typename R, typename D>
4056-struct greater_equal<unity::util::internal::ResourcePtr<R, D>>
4057-{
4058- /**
4059- Invokes <code>operator\>=</code> on <code>lhs</code>.
4060- */
4061- bool operator()(unity::util::internal::ResourcePtr<R, D> const& lhs, unity::util::internal::ResourcePtr<R, D> const& rhs) const
4062- {
4063- return lhs >= rhs;
4064- }
4065-};
4066-
4067-// TODO: provide hash if std::hash<R> exists.
4068-
4069-} // namespace std
4070-
4071-#endif
4072
4073=== removed directory 'src'
4074=== removed file 'src/CMakeLists.txt'
4075--- src/CMakeLists.txt 2013-04-22 18:14:52 +0000
4076+++ src/CMakeLists.txt 1970-01-01 00:00:00 +0000
4077@@ -1,14 +0,0 @@
4078-add_subdirectory(unity)
4079-
4080-add_library(${UNITY_API_LIB} SHARED ${UNITY_API_LIB_SRC})
4081-set_target_properties(${UNITY_API_LIB} PROPERTIES
4082- VERSION "${UNITY_API_MAJOR}.${UNITY_API_MINOR}"
4083- SOVERSION "${UNITY_API_MAJOR}.${UNITY_API_MINOR}"
4084-)
4085-
4086-install(TARGETS ${UNITY_API_LIB} LIBRARY DESTINATION lib)
4087-
4088-configure_file(lib${UNITY_API_LIB}.pc.in lib${UNITY_API_LIB}.pc @ONLY)
4089-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/lib${UNITY_API_LIB}.pc DESTINATION lib/pkgconfig)
4090-
4091-set(UNITY_API_LIB_SRC ${UNITY_API_LIB_SRC} ${UNITY_SRC} PARENT_SCOPE)
4092
4093=== removed file 'src/libunity-api.pc.in'
4094--- src/libunity-api.pc.in 2013-04-09 03:34:17 +0000
4095+++ src/libunity-api.pc.in 1970-01-01 00:00:00 +0000
4096@@ -1,23 +0,0 @@
4097-#
4098-# Copyright (C) 2013 Canonical Ltd
4099-#
4100-# This program is free software: you can redistribute it and/or modify
4101-# it under the terms of the GNU General Public License version 3 as
4102-# published by the Free Software Foundation.
4103-#
4104-# This program is distributed in the hope that it will be useful,
4105-# but WITHOUT ANY WARRANTY; without even the implied warranty of
4106-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4107-# GNU General Public License for more details.
4108-#
4109-# You should have received a copy of the GNU General Public License
4110-# along with this program. If not, see <http://www.gnu.org/licenses/>.
4111-#
4112-# Authored by: Michi Henning <michi.henning@canonical.com>
4113-#
4114-
4115-Name: lib@UNITY_API_LIB@
4116-Description: Unity API library
4117-Version: @UNITY_API_MAJOR@.@UNITY_API_MINOR@
4118-Libs: -L@CMAKE_INSTALL_PREFIX@/lib -lunity-api
4119-Cflags: -I@CMAKE_INSTALL_PREFIX@/include
4120
4121=== removed directory 'src/unity'
4122=== removed file 'src/unity/CMakeLists.txt'
4123--- src/unity/CMakeLists.txt 2013-04-16 00:25:34 +0000
4124+++ src/unity/CMakeLists.txt 1970-01-01 00:00:00 +0000
4125@@ -1,10 +0,0 @@
4126-add_subdirectory(api)
4127-add_subdirectory(internal)
4128-add_subdirectory(util)
4129-
4130-set(UNITY_SRC
4131- ${CMAKE_CURRENT_SOURCE_DIR}/Exception.cpp
4132- ${CMAKE_CURRENT_SOURCE_DIR}/UnityExceptions.cpp
4133-)
4134-
4135-set(UNITY_API_LIB_SRC ${UNITY_API_LIB_SRC} ${UNITY_SRC} PARENT_SCOPE)
4136
4137=== removed file 'src/unity/Exception.cpp'
4138--- src/unity/Exception.cpp 2013-04-17 02:18:48 +0000
4139+++ src/unity/Exception.cpp 1970-01-01 00:00:00 +0000
4140@@ -1,145 +0,0 @@
4141-/*
4142- * Copyright (C) 2012 Canonical Ltd
4143- *
4144- * This program is free software: you can redistribute it and/or modify
4145- * it under the terms of the GNU General Public License version 3 as
4146- * published by the Free Software Foundation.
4147- *
4148- * This program is distributed in the hope that it will be useful,
4149- * but WITHOUT ANY WARRANTY; without even the implied warranty of
4150- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4151- * GNU General Public License for more details.
4152- *
4153- * You should have received a copy of the GNU General Public License
4154- * along with this program. If not, see <http://www.gnu.org/licenses/>.
4155- *
4156- * Authored by: Michi Henning <michi.henning@canonical.com>
4157- */
4158-
4159-#include <unity/Exception.h>
4160-#include <unity/internal/ExceptionImpl.h>
4161-
4162-using namespace std;
4163-
4164-namespace unity
4165-{
4166-
4167-//! @cond
4168-
4169-Exception::
4170-Exception(shared_ptr<internal::ExceptionImpl> const& derived)
4171- : p_(derived)
4172-{
4173-}
4174-
4175-Exception::
4176-Exception(Exception const&) = default;
4177-
4178-Exception&
4179-Exception::
4180-operator=(Exception const&) = default;
4181-
4182-Exception::
4183-~Exception() noexcept = default;
4184-
4185-//! @endcond
4186-
4187-/**
4188-\brief Returns the reason set by the derived class's constructor (empty string if none).
4189-
4190-Derived classes should include any other state information, such as the value of data members or
4191-other relevant detail in the <code>reason</code> string they pass to the protected constructor.
4192-*/
4193-
4194-string
4195-Exception::
4196-reason() const
4197-{
4198- return p_->reason();
4199-}
4200-
4201-/**
4202-Returns a string describing the exception, including any exceptions that were nested or chained.
4203-
4204-Nested exceptions are indented according to their nesting level. If the exception contains chained
4205-exceptions, these are shown in oldest-to-newest order.
4206-
4207-\param indent This controls the amount of indenting per level. The default indent is four spaces.
4208-\return The string describing the exception.
4209-
4210-\note The default implementation of this member function calls <code>to_string(0, indent)</code>.
4211-*/
4212-
4213-string
4214-Exception::
4215-to_string(std::string const& indent) const
4216-{
4217- return p_->to_string(*this, 0, indent);
4218-}
4219-
4220-/**
4221-Returns a string describing the exception, including any exceptions that were nested or chained.
4222-
4223-Nested exceptions are indented according to their nesting level. If the exception contains chained
4224-exceptions, these are shown in oldest-to-newest order.
4225-
4226-\param indent_level This controls the indent level. The value <code>0</code> indicates
4227- the outermost level (no indent).
4228-\param indent This controls the amount of indenting per level. The passed string is prependended
4229- <i><code>indent_level</code></i> times to each line.
4230-\return The string describing the exception.
4231-
4232-\note This member function has a default implementation, so derived classes do not need to override it
4233- unless they want to change the formatting of the returned string.
4234-*/
4235-
4236-string
4237-Exception::
4238-to_string(int indent_level, std::string const& indent) const
4239-{
4240- return p_->to_string(*this, indent_level, indent);
4241-}
4242-
4243-/**
4244-Adds an exception to the exception history chain.
4245-
4246-\param earlier_exception The parameter must be a <code>nullptr</code> or a <code>std::exception_ptr</code>
4247-to an exception that was remembered earlier. This allows a sequence of exceptions to be remembered without
4248-having to throw them and is useful for example, in shutdown scenarios where any one of a sequence of steps
4249-can fail, but we want to continue and try all the following steps and only throw after all of them have been
4250-tried. In this case, each step that fails can add itself to the sequence of remembered exceptions, and finally
4251-throw something like <code>ShutdownException</code>.
4252-\return A <code>std::exception_ptr</code> to <code>this</code>.
4253-*/
4254-
4255-exception_ptr
4256-Exception::
4257-remember(exception_ptr earlier_exception)
4258-{
4259- return p_->remember(this, earlier_exception);
4260-}
4261-
4262-/**
4263-Returns the previous exception.
4264-\return Returns the next-older remembered exception, or <code>nullptr</code>, if none.
4265-*/
4266-
4267-exception_ptr
4268-Exception::
4269-get_earlier() const noexcept
4270-{
4271- return p_->get_earlier();
4272-}
4273-
4274-//! @cond
4275-
4276-internal::ExceptionImpl*
4277-Exception::
4278-pimpl() const noexcept
4279-{
4280- return p_.get();
4281-}
4282-
4283-//! @endcond
4284-
4285-} // namespace unity
4286
4287=== removed file 'src/unity/UnityExceptions.cpp'
4288--- src/unity/UnityExceptions.cpp 2013-04-04 02:16:16 +0000
4289+++ src/unity/UnityExceptions.cpp 1970-01-01 00:00:00 +0000
4290@@ -1,246 +0,0 @@
4291-/*
4292- * Copyright (C) 2012 Canonical Ltd
4293- *
4294- * This program is free software: you can redistribute it and/or modify
4295- * it under the terms of the GNU General Public License version 3 as
4296- * published by the Free Software Foundation.
4297- *
4298- * This program is distributed in the hope that it will be useful,
4299- * but WITHOUT ANY WARRANTY; without even the implied warranty of
4300- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4301- * GNU General Public License for more details.
4302- *
4303- * You should have received a copy of the GNU General Public License
4304- * along with this program. If not, see <http://www.gnu.org/licenses/>.
4305- *
4306- * Authored by: Michi Henning <michi.henning@canonical.com>
4307- */
4308-
4309-#include <unity/UnityExceptions.h>
4310-#include <unity/internal/UnityExceptionsImpl.h>
4311-
4312-using namespace std;
4313-
4314-namespace unity
4315-{
4316-
4317-InvalidArgumentException::
4318-InvalidArgumentException(string const& reason)
4319- : Exception(make_shared<internal::InvalidArgumentExceptionImpl>(reason))
4320-{
4321-}
4322-
4323-InvalidArgumentException::
4324-InvalidArgumentException(InvalidArgumentException const&) = default;
4325-
4326-//! @cond
4327-
4328-InvalidArgumentException&
4329-InvalidArgumentException::
4330-operator=(InvalidArgumentException const&) = default;
4331-
4332-
4333-InvalidArgumentException::
4334-~InvalidArgumentException() noexcept = default;
4335-
4336-//! @endcond
4337-
4338-char const*
4339-InvalidArgumentException::
4340-what() const noexcept
4341-{
4342- return dynamic_cast<internal::InvalidArgumentExceptionImpl*>(pimpl())->what();
4343-}
4344-
4345-exception_ptr
4346-InvalidArgumentException::
4347-self() const
4348-{
4349- return make_exception_ptr(*this);
4350-}
4351-
4352-LogicException::
4353-LogicException(string const& reason)
4354- : Exception(make_shared<internal::LogicExceptionImpl>(reason))
4355-{
4356-}
4357-
4358-LogicException::
4359-LogicException(LogicException const&) = default;
4360-
4361-//! @cond
4362-
4363-LogicException&
4364-LogicException::
4365-operator=(LogicException const&) = default;
4366-
4367-LogicException::
4368-~LogicException() noexcept = default;
4369-
4370-//! @endcond
4371-
4372-char const*
4373-LogicException::
4374-what() const noexcept
4375-{
4376- return dynamic_cast<internal::LogicExceptionImpl*>(pimpl())->what();
4377-}
4378-
4379-exception_ptr
4380-LogicException::
4381-self() const
4382-{
4383- return make_exception_ptr(*this);
4384-}
4385-
4386-ShutdownException::
4387-ShutdownException(string const& reason)
4388- : Exception(make_shared<internal::ShutdownExceptionImpl>(reason))
4389-{
4390-}
4391-
4392-ShutdownException::
4393-ShutdownException(ShutdownException const&) = default;
4394-
4395-//! @cond
4396-
4397-ShutdownException&
4398-ShutdownException::
4399-operator=(ShutdownException const&) = default;
4400-
4401-ShutdownException::
4402-~ShutdownException() noexcept = default;
4403-
4404-//! @endcond
4405-
4406-char const*
4407-ShutdownException::
4408-what() const noexcept
4409-{
4410- return dynamic_cast<internal::ShutdownExceptionImpl*>(pimpl())->what();
4411-}
4412-
4413-exception_ptr
4414-ShutdownException::
4415-self() const
4416-{
4417- return make_exception_ptr(*this);
4418-}
4419-
4420-FileException::
4421-FileException(string const& reason, int err)
4422- : Exception(make_shared<internal::FileExceptionImpl>(reason, err))
4423-{
4424-}
4425-
4426-FileException::
4427-FileException(FileException const&) = default;
4428-
4429-//! @cond
4430-
4431-FileException&
4432-FileException::
4433-operator=(FileException const&) = default;
4434-
4435-FileException::
4436-~FileException() noexcept = default;
4437-
4438-//! @endcond
4439-
4440-char const*
4441-FileException::
4442-what() const noexcept
4443-{
4444- return dynamic_cast<internal::FileExceptionImpl*>(pimpl())->what();
4445-}
4446-
4447-int
4448-FileException::
4449-error() const noexcept
4450-{
4451- return dynamic_cast<internal::FileExceptionImpl*>(pimpl())->error();
4452-}
4453-
4454-exception_ptr
4455-FileException::
4456-self() const
4457-{
4458- return make_exception_ptr(*this);
4459-}
4460-
4461-SyscallException::
4462-SyscallException(string const& reason, int err)
4463- : Exception(make_shared<internal::SyscallExceptionImpl>(reason, err))
4464-{
4465-}
4466-
4467-SyscallException::
4468-SyscallException(SyscallException const&) = default;
4469-
4470-//! @cond
4471-
4472-SyscallException&
4473-SyscallException::
4474-operator=(SyscallException const&) = default;
4475-
4476-SyscallException::
4477-~SyscallException() noexcept = default;
4478-
4479-//! @endcond
4480-
4481-char const*
4482-SyscallException::
4483-what() const noexcept
4484-{
4485- return dynamic_cast<internal::SyscallExceptionImpl*>(pimpl())->what();
4486-}
4487-
4488-int
4489-SyscallException::
4490-error() const noexcept
4491-{
4492- return dynamic_cast<internal::SyscallExceptionImpl*>(pimpl())->error();
4493-}
4494-
4495-exception_ptr
4496-SyscallException::
4497-self() const
4498-{
4499- return make_exception_ptr(*this);
4500-}
4501-
4502-ResourceException::
4503-ResourceException(string const& reason)
4504- : Exception(make_shared<internal::ResourceExceptionImpl>(reason))
4505-{
4506-}
4507-
4508-ResourceException::
4509-ResourceException(ResourceException const&) = default;
4510-
4511-//! @cond
4512-
4513-ResourceException&
4514-ResourceException::
4515-operator=(ResourceException const&) = default;
4516-
4517-ResourceException::
4518-~ResourceException() noexcept = default;
4519-
4520-//! @endcond
4521-
4522-char const*
4523-ResourceException::
4524-what() const noexcept
4525-{
4526- return dynamic_cast<internal::ResourceExceptionImpl*>(pimpl())->what();
4527-}
4528-
4529-exception_ptr
4530-ResourceException::
4531-self() const
4532-{
4533- return make_exception_ptr(*this);
4534-}
4535-
4536-} // namespace unity
4537
4538=== removed directory 'src/unity/api'
4539=== removed file 'src/unity/api/CMakeLists.txt'
4540--- src/unity/api/CMakeLists.txt 2013-04-16 00:25:34 +0000
4541+++ src/unity/api/CMakeLists.txt 1970-01-01 00:00:00 +0000
4542@@ -1,8 +0,0 @@
4543-add_subdirectory(internal)
4544-add_subdirectory(scopes)
4545-
4546-set(API_SRC
4547- ${CMAKE_CURRENT_SOURCE_DIR}/Version.cpp
4548-)
4549-
4550-set(UNITY_API_LIB_SRC ${UNITY_API_LIB_SRC} ${API_SRC} PARENT_SCOPE)
4551
4552=== removed file 'src/unity/api/Version.cpp'
4553--- src/unity/api/Version.cpp 2013-04-04 02:16:16 +0000
4554+++ src/unity/api/Version.cpp 1970-01-01 00:00:00 +0000
4555@@ -1,59 +0,0 @@
4556-/*
4557- * Copyright (C) 2013 Canonical Ltd
4558- *
4559- * This program is free software: you can redistribute it and/or modify
4560- * it under the terms of the GNU General Public License version 3 as
4561- * published by the Free Software Foundation.
4562- *
4563- * This program is distributed in the hope that it will be useful,
4564- * but WITHOUT ANY WARRANTY; without even the implied warranty of
4565- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4566- * GNU General Public License for more details.
4567- *
4568- * You should have received a copy of the GNU General Public License
4569- * along with this program. If not, see <http://www.gnu.org/licenses/>.
4570- *
4571- * Authored by: Michi Henning <michi.henning@canonical.com>
4572- */
4573-
4574-#include <unity/api/Version.h>
4575-
4576-using namespace std;
4577-
4578-namespace unity
4579-{
4580-
4581-namespace api
4582-{
4583-
4584-int
4585-Version::
4586-major_version()
4587-{
4588- return UNITY_API_VERSION_MAJOR;
4589-}
4590-
4591-int
4592-Version::
4593-minor_version()
4594-{
4595- return UNITY_API_VERSION_MINOR;
4596-}
4597-
4598-int
4599-Version::
4600-micro_version()
4601-{
4602- return UNITY_API_VERSION_MICRO;
4603-}
4604-
4605-char const*
4606-Version::
4607-str()
4608-{
4609- return UNITY_API_VERSION_STRING;
4610-}
4611-
4612-} // namespace api
4613-
4614-} // namespace unity
4615
4616=== removed directory 'src/unity/api/internal'
4617=== removed file 'src/unity/api/internal/CMakeLists.txt'
4618--- src/unity/api/internal/CMakeLists.txt 2013-04-16 00:25:34 +0000
4619+++ src/unity/api/internal/CMakeLists.txt 1970-01-01 00:00:00 +0000
4620@@ -1,4 +0,0 @@
4621-set(API_INTERNAL_SRC
4622-)
4623-
4624-set(UNITY_API_LIB_SRC ${UNITY_API_LIB_SRC} ${API_INTERNAL_SRC} PARENT_SCOPE)
4625
4626=== removed directory 'src/unity/api/scopes'
4627=== removed file 'src/unity/api/scopes/CMakeLists.txt'
4628--- src/unity/api/scopes/CMakeLists.txt 2013-04-16 00:25:34 +0000
4629+++ src/unity/api/scopes/CMakeLists.txt 1970-01-01 00:00:00 +0000
4630@@ -1,6 +0,0 @@
4631-add_subdirectory(internal)
4632-
4633-set(SCOPES_SRC
4634-)
4635-
4636-set(UNITY_API_LIB_SRC ${UNITY_API_LIB_SRC} ${SCOPES_SRC} PARENT_SCOPE)
4637
4638=== removed directory 'src/unity/api/scopes/internal'
4639=== removed file 'src/unity/api/scopes/internal/CMakeLists.txt'
4640--- src/unity/api/scopes/internal/CMakeLists.txt 2013-04-22 18:14:52 +0000
4641+++ src/unity/api/scopes/internal/CMakeLists.txt 1970-01-01 00:00:00 +0000
4642@@ -1,4 +0,0 @@
4643-set(SCOPES_INTERNAL_SRC
4644-)
4645-
4646-set(UNITY_API_LIB_SRC ${UNITY_API_LIB_SRC} ${SCOPES_INTERNAL_SRC} PARENT_SCOPE)
4647
4648=== removed directory 'src/unity/internal'
4649=== removed file 'src/unity/internal/CMakeLists.txt'
4650--- src/unity/internal/CMakeLists.txt 2013-04-16 00:25:34 +0000
4651+++ src/unity/internal/CMakeLists.txt 1970-01-01 00:00:00 +0000
4652@@ -1,6 +0,0 @@
4653-set(UNITY_INTERNAL_SRC
4654- ${CMAKE_CURRENT_SOURCE_DIR}/ExceptionImpl.cpp
4655- ${CMAKE_CURRENT_SOURCE_DIR}/UnityExceptionsImpl.cpp
4656-)
4657-
4658-set(UNITY_API_LIB_SRC ${UNITY_API_LIB_SRC} ${UNITY_INTERNAL_SRC} PARENT_SCOPE)
4659
4660=== removed file 'src/unity/internal/ExceptionImpl.cpp'
4661--- src/unity/internal/ExceptionImpl.cpp 2013-04-04 02:16:16 +0000
4662+++ src/unity/internal/ExceptionImpl.cpp 1970-01-01 00:00:00 +0000
4663@@ -1,244 +0,0 @@
4664-/*
4665- * Copyright (C) 2013 Canonical Ltd
4666- *
4667- * This program is free software: you can redistribute it and/or modify
4668- * it under the terms of the GNU General Public License version 3 as
4669- * published by the Free Software Foundation.
4670- *
4671- * This program is distributed in the hope that it will be useful,
4672- * but WITHOUT ANY WARRANTY; without even the implied warranty of
4673- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4674- * GNU General Public License for more details.
4675- *
4676- * You should have received a copy of the GNU General Public License
4677- * along with this program. If not, see <http://www.gnu.org/licenses/>.
4678- *
4679- * Authored by: Michi Henning <michi.henning@canonical.com>
4680- */
4681-
4682-#include <unity/internal/ExceptionImpl.h>
4683-#include <unity/Exception.h>
4684-
4685-using namespace std;
4686-
4687-namespace unity
4688-{
4689-
4690-namespace internal
4691-{
4692-
4693-ExceptionImpl::
4694-ExceptionImpl(string const& reason)
4695- : reason_(reason)
4696-{
4697-}
4698-
4699-ExceptionImpl::
4700-~ExceptionImpl() noexcept = default;
4701-
4702-string
4703-ExceptionImpl::
4704-reason() const
4705-{
4706- return reason_;
4707-}
4708-
4709-namespace
4710-{
4711-
4712-//
4713-// Return the margin string for the indent level and indent.
4714-//
4715-
4716-string
4717-get_margin(int indent_level, string const& indent)
4718-{
4719- string margin;
4720- for (int i = 0; i < indent_level; ++i)
4721- {
4722- margin += indent;
4723- }
4724- return margin;
4725-}
4726-
4727-//
4728-// Follow the nested exceptions that were rethrown along the call stack, printing them into s.
4729-//
4730-
4731-void
4732-print_name_and_reason(string& s, nested_exception const& nested)
4733-{
4734- // Add the what() string if this is a std::exception.
4735-
4736- std::exception const* std_exception = dynamic_cast<std::exception const*>(&nested);
4737- if (std_exception)
4738- {
4739- s += std_exception->what();
4740- }
4741-
4742- // Add the reason if this is a unity::Exception.
4743-
4744- unity::Exception const* unity_exception = dynamic_cast<unity::Exception const*>(&nested);
4745- if (unity_exception)
4746- {
4747- string reason = unity_exception->reason();
4748- if (!reason.empty())
4749- {
4750- s += ": " + reason;
4751- }
4752- }
4753-
4754- // Append info about unknown std::exception and std::nested_exception.
4755-
4756- if (!unity_exception)
4757- {
4758- if (std_exception)
4759- {
4760- s += " (derived from std::exception and std::nested_exception)";
4761- }
4762- else
4763- {
4764- s += "std::nested_exception";
4765- }
4766- }
4767-}
4768-
4769-void
4770-follow_nested(string& s, nested_exception const& nested, int indent_level, std::string const& indent)
4771-{
4772- if (nested.nested_ptr())
4773- {
4774- string margin = get_margin(indent_level, indent);
4775-
4776- s += ":\n";
4777- try
4778- {
4779- nested.rethrow_nested();
4780- }
4781- catch (std::nested_exception const& e)
4782- {
4783- unity::Exception const* ge = dynamic_cast<unity::Exception const*>(&e);
4784- if (ge)
4785- {
4786- s += ge->to_string(indent_level + 1, indent);
4787- }
4788- else
4789- {
4790- s += margin + indent;
4791- print_name_and_reason(s, e);
4792- follow_nested(s, e, indent_level + 1, indent);
4793- }
4794- }
4795- catch (std::exception const& e)
4796- {
4797- s += margin + indent;
4798- s += e.what(); // Can show only what() for std::exception.
4799- }
4800- catch (...)
4801- {
4802- s += margin + indent;
4803- s += "unknown exception"; // Best we can do for an exception whose type we don't know.
4804- }
4805- }
4806-}
4807-
4808-//
4809-// Follow the history chain and print each exception in the chain.
4810-//
4811-
4812-void
4813-follow_history(string& s, int& count, unity::Exception const& e, int indent_level, std::string const& indent)
4814-{
4815- if (!e.get_earlier())
4816- {
4817- count = 1; // We have reached the oldest exception; set exception generation count and terminate recursion.
4818- }
4819- else
4820- {
4821- try
4822- {
4823- rethrow_exception(e.get_earlier());
4824- }
4825- catch (unity::Exception const& e)
4826- {
4827- // Recurse along the chain until we hit the end, then, as we pop back up the levels, we increment the
4828- // count and print it as a generation number for the exception information.
4829- // A bit like the "kicks" in "Inception", except that the deepest level is level 1...
4830-
4831- follow_history(s, count, e, indent_level, indent);
4832- }
4833- ++count;
4834- }
4835-
4836- // Show info for this exception.
4837-
4838- s += "\n" + get_margin(indent_level, indent) + "Exception #";
4839- s += to_string(count) + ":\n";
4840- s += get_margin(indent_level, indent) + indent;
4841- print_name_and_reason(s, e);
4842- follow_nested(s, e, indent_level + 1, indent);
4843-}
4844-
4845-} // namespace
4846-
4847-string
4848-ExceptionImpl::
4849-to_string(nested_exception const& nested, int indent_level, string const& indent) const
4850-{
4851- string margin = get_margin(indent_level, indent);
4852- string s = margin;
4853- s += what();
4854-
4855- string r = reason();
4856- if (!r.empty())
4857- {
4858- s += ": " + r;
4859- }
4860-
4861- // Check whether there is an exception history and print each exception in the history.
4862-
4863- unity::Exception const* unity_exception(dynamic_cast<unity::Exception const*>(&nested));
4864- if (unity_exception && unity_exception->get_earlier())
4865- {
4866- s += "\n" + margin + indent + "Exception history:";
4867- try
4868- {
4869- rethrow_exception(unity_exception->get_earlier());
4870- }
4871- catch (unity::Exception const& e)
4872- {
4873- int count;
4874- follow_history(s, count, e, indent_level + 2, indent);
4875- }
4876- }
4877-
4878- // Print this and any nested exceptions.
4879-
4880- follow_nested(s, nested, indent_level, indent);
4881-
4882- return s;
4883-}
4884-
4885-exception_ptr
4886-ExceptionImpl::
4887-remember(Exception const* env, exception_ptr earlier_exception)
4888-{
4889- // Doesn't prevent loops, but protects against accidental self-assignment.
4890-
4891- if (previous_ != earlier_exception)
4892- {
4893- previous_ = earlier_exception;
4894- }
4895- return env->self();
4896-}
4897-
4898-exception_ptr
4899-ExceptionImpl::
4900-get_earlier() const noexcept
4901-{
4902- return previous_;
4903-}
4904-
4905-} // namespace internal
4906-
4907-} // namespace unity
4908
4909=== removed file 'src/unity/internal/UnityExceptionsImpl.cpp'
4910--- src/unity/internal/UnityExceptionsImpl.cpp 2013-04-04 02:16:16 +0000
4911+++ src/unity/internal/UnityExceptionsImpl.cpp 1970-01-01 00:00:00 +0000
4912@@ -1,126 +0,0 @@
4913-/*
4914- * Copyright (C) 2012 Canonical Ltd
4915- *
4916- * This program is free software: you can redistribute it and/or modify
4917- * it under the terms of the GNU General Public License version 3 as
4918- * published by the Free Software Foundation.
4919- *
4920- * This program is distributed in the hope that it will be useful,
4921- * but WITHOUT ANY WARRANTY; without even the implied warranty of
4922- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4923- * GNU General Public License for more details.
4924- *
4925- * You should have received a copy of the GNU General Public License
4926- * along with this program. If not, see <http://www.gnu.org/licenses/>.
4927- *
4928- * Authored by: Michi Henning <michi.henning@canonical.com>
4929- */
4930-
4931-#include <unity/internal/UnityExceptionsImpl.h>
4932-
4933-using namespace std;
4934-
4935-namespace unity
4936-{
4937-
4938-namespace internal
4939-{
4940-
4941-InvalidArgumentExceptionImpl::
4942-InvalidArgumentExceptionImpl(string const& reason)
4943- : ExceptionImpl(reason)
4944-{
4945-}
4946-
4947-char const*
4948-InvalidArgumentExceptionImpl::
4949-what() const noexcept
4950-{
4951- return "unity::InvalidArgumentException";
4952-}
4953-
4954-LogicExceptionImpl::
4955-LogicExceptionImpl(string const& reason)
4956- : ExceptionImpl(reason)
4957-{
4958-}
4959-
4960-char const*
4961-LogicExceptionImpl::
4962-what() const noexcept
4963-{
4964- return "unity::LogicException";
4965-}
4966-
4967-ShutdownExceptionImpl::
4968-ShutdownExceptionImpl(string const& reason)
4969- : ExceptionImpl(reason)
4970-{
4971-}
4972-
4973-char const*
4974-ShutdownExceptionImpl::
4975-what() const noexcept
4976-{
4977- return "unity::ShutdownException";
4978-}
4979-
4980-FileExceptionImpl::
4981-FileExceptionImpl(string const& reason, int err)
4982- : ExceptionImpl(reason + (err == 0 ? "" : " (errno = " + std::to_string(err) + ")"))
4983- , errno_(err)
4984-{
4985-}
4986-
4987-char const*
4988-FileExceptionImpl::
4989-what() const noexcept
4990-{
4991- return "unity::FileException";
4992-}
4993-
4994-int
4995-FileExceptionImpl::
4996-error() const noexcept
4997-{
4998- return errno_;
4999-}
5000-
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches