From 8455e108bcedf7d00230a7a9e60fa3a6cb993a15 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Wed, 18 Oct 2017 09:02:25 +0100 Subject: [PATCH] Merge remote-tracking branch 'origin/feature/Timer_triggered_messages' into development # Conflicts: # examples/ArmTimerCallbacks/RTE/Device/STM32F401RETx/startup_stm32f401xe.s # examples/ArmTimerCallbacks/RTE/Device/STM32F401RETx/system_stm32f4xx.c # examples/FunctionInterruptSimulation/FunctionInterruptSimulation.cpp # examples/FunctionInterruptSimulation/vs2017/FunctionInterruptSimulation.sln # examples/FunctionInterruptSimulation/vs2017/FunctionInterruptSimulation.vcxproj # examples/FunctionInterruptSimulation/vs2017/FunctionInterruptSimulation.vcxproj.filters # test/codeblocks/ETL.cbp # test/codeblocks/ETL.depend # test/codeblocks/ETL.layout # test/test_cyclic_value.cpp # test/vs2017/etl.vcxproj # test/vs2017/etl.vcxproj.filters --- .../ArmTimerCallbacks.uvoptx | 274 + .../ArmTimerCallbacks.uvprojx | 469 + .../STM32F401RETx/startup_stm32f401xe.s | 392 + .../Device/STM32F401RETx/system_stm32f4xx.c | 763 + .../RTE/_Target_1/RTE_Components.h | 21 + examples/ArmTimerCallbacks/Retarget.c | 52 + examples/ArmTimerCallbacks/Serial.c | 98 + examples/ArmTimerCallbacks/Serial.h | 23 + examples/ArmTimerCallbacks/etl_profile.h | 21 + examples/ArmTimerCallbacks/main.cpp | 147 + .../FunctionInterruptSimulation/etl_profile.h | 48 + .../FunctionInterruptSimulation/etl_user.h | 3 - .../vs2017/FunctionInterruptSimulation.sln | 20 +- .../FunctionInterruptSimulation.vcxproj | 19 +- ...unctionInterruptSimulation.vcxproj.filters | 2 +- .../QueuedMessageRouter.cpp | 164 + .../vs2017/.vs/QueuedMessageRouter.sqlite | Bin 0 -> 278528 bytes .../vs2017/QueuedMessageRouter.sln | 31 + .../vs2017/QueuedMessageRouter.vcxproj | 157 + .../QueuedMessageRouter.vcxproj.filters | 27 + .../QueuedMessageRouter/vs2017/etl_profile.h | 48 + library.properties | 6 +- src/algorithm.h | 1 + src/alignment.h | 1 + src/array.h | 1 + src/atomic.h | 51 + src/atomic/atomic_arm.h | 613 + src/atomic/atomic_gcc.h | 613 + src/atomic/atomic_windows.h | 104 + src/binary.h | 1 + src/bloom_filter.h | 1 + src/callback_timer.h | 684 + src/checksum.h | 1 + src/constant.h | 2 + src/container.h | 2 + src/crc16.cpp | 2 + src/crc16_ccitt.cpp | 2 + src/crc16_kermit.cpp | 2 + src/crc32.cpp | 2 + src/crc64_ecma.cpp | 2 + src/cyclic_value.h | 1 + src/debounce.h | 1 + src/deque.h | 1 + src/endianness.h | 1 + src/enum_type.h | 2 + src/error_handler.cpp | 1 + src/error_handler.h | 1 + src/exception.h | 2 + src/factorial.h | 2 + src/factory.h | 1 + src/fibonacci.h | 2 + src/fixed_iterator.h | 2 + src/forward_list.h | 1 + src/fsm.h | 1 + src/fsm_generator.h | 1 + src/function.h | 2 + src/functional.h | 2 + src/hash.h | 2 + src/icache.h | 1 + src/ihash.h | 1 + src/instance_count.h | 2 + src/integral_limits.h | 2 +- src/intrusive_links.h | 1 + src/intrusive_queue.h | 1 + src/intrusive_stack.h | 1 + src/io_port.h | 1 + src/iterator.h | 1 + src/largest.h | 1 + src/largest_generator.h | 1 + src/log.h | 2 + src/memory.h | 1 + src/message.h | 1 + src/message_bus.h | 1 + src/message_router.h | 1 + src/message_router_generator.h | 1 + src/message_timer.h | 651 + src/message_types.h | 2 + src/numeric.h | 2 + src/observer.h | 2 + src/parameter_type.h | 1 + src/platform.h | 72 +- src/pool.h | 2 +- src/power.h | 2 + src/private/pvoidvector.cpp | 1 + src/private/vector_base.h | 1 + src/profiles/arduino_arm.h | 50 + src/profiles/armv5.h | 50 + src/profiles/armv6.h | 50 + src/profiles/cpp03.h | 50 + src/profiles/cpp11.h | 50 + src/profiles/cpp14.h | 50 + src/profiles/gcc_generic.h | 50 + src/profiles/gcc_linux_x86.h | 50 + src/profiles/gcc_windows_x86.h | 50 + src/profiles/msvc_x86.h | 50 + src/profiles/ticc.h | 50 + src/queue.h | 1 + src/radix.h | 1 + src/random.cpp | 1 + src/random.h | 2 + src/reference_flat_multimap.h | 1 + src/scheduler.h | 1 + src/smallest.h | 1 + src/smallest_generator.h | 1 + src/sqrt.h | 2 + src/stack.h | 1 + src/task.h | 1 + src/timer.h | 101 + src/type_def.h | 2 + src/type_lookup.h | 1 + src/type_lookup_generator.h | 1 + src/user_type.h | 2 + src/utility.h | 1 + src/visitor.h | 2 + test/codeblocks/ETL.cbp | 22 +- test/codeblocks/ETL.depend | 12063 ++++++++++++++++ test/codeblocks/ETL.layout | 145 +- test/etl_profile.h | 48 + test/test_callback_timer.cpp | 508 + test/test_cyclic_value.cpp | 4 +- test/test_forward_list.cpp | 2 - test/test_intrusive_forward_list.cpp | 2 - test/test_intrusive_list.cpp | 2 - test/test_message_timer.cpp | 577 + test/vs2015/etl.sln | 25 - test/vs2015/etl.vcxproj | 452 - test/vs2015/etl.vcxproj.filters | 869 -- test/vs2017/etl.vcxproj | 31 +- test/vs2017/etl.vcxproj.filters | 186 +- 129 files changed, 19666 insertions(+), 1595 deletions(-) create mode 100644 examples/ArmTimerCallbacks/ArmTimerCallbacks.uvoptx create mode 100644 examples/ArmTimerCallbacks/ArmTimerCallbacks.uvprojx create mode 100644 examples/ArmTimerCallbacks/RTE/Device/STM32F401RETx/startup_stm32f401xe.s create mode 100644 examples/ArmTimerCallbacks/RTE/Device/STM32F401RETx/system_stm32f4xx.c create mode 100644 examples/ArmTimerCallbacks/RTE/_Target_1/RTE_Components.h create mode 100644 examples/ArmTimerCallbacks/Retarget.c create mode 100644 examples/ArmTimerCallbacks/Serial.c create mode 100644 examples/ArmTimerCallbacks/Serial.h create mode 100644 examples/ArmTimerCallbacks/etl_profile.h create mode 100644 examples/ArmTimerCallbacks/main.cpp create mode 100644 examples/FunctionInterruptSimulation/etl_profile.h delete mode 100644 examples/FunctionInterruptSimulation/etl_user.h create mode 100644 examples/QueuedMessageRouter/QueuedMessageRouter.cpp create mode 100644 examples/QueuedMessageRouter/vs2017/.vs/QueuedMessageRouter.sqlite create mode 100644 examples/QueuedMessageRouter/vs2017/QueuedMessageRouter.sln create mode 100644 examples/QueuedMessageRouter/vs2017/QueuedMessageRouter.vcxproj create mode 100644 examples/QueuedMessageRouter/vs2017/QueuedMessageRouter.vcxproj.filters create mode 100644 examples/QueuedMessageRouter/vs2017/etl_profile.h create mode 100644 src/atomic.h create mode 100644 src/atomic/atomic_arm.h create mode 100644 src/atomic/atomic_gcc.h create mode 100644 src/atomic/atomic_windows.h create mode 100644 src/callback_timer.h create mode 100644 src/message_timer.h create mode 100644 src/profiles/arduino_arm.h create mode 100644 src/profiles/armv5.h create mode 100644 src/profiles/armv6.h create mode 100644 src/profiles/cpp03.h create mode 100644 src/profiles/cpp11.h create mode 100644 src/profiles/cpp14.h create mode 100644 src/profiles/gcc_generic.h create mode 100644 src/profiles/gcc_linux_x86.h create mode 100644 src/profiles/gcc_windows_x86.h create mode 100644 src/profiles/msvc_x86.h create mode 100644 src/profiles/ticc.h create mode 100644 src/timer.h create mode 100644 test/codeblocks/ETL.depend create mode 100644 test/etl_profile.h create mode 100644 test/test_callback_timer.cpp create mode 100644 test/test_message_timer.cpp delete mode 100644 test/vs2015/etl.sln delete mode 100644 test/vs2015/etl.vcxproj delete mode 100644 test/vs2015/etl.vcxproj.filters diff --git a/examples/ArmTimerCallbacks/ArmTimerCallbacks.uvoptx b/examples/ArmTimerCallbacks/ArmTimerCallbacks.uvoptx new file mode 100644 index 00000000..8a5d0503 --- /dev/null +++ b/examples/ArmTimerCallbacks/ArmTimerCallbacks.uvoptx @@ -0,0 +1,274 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Listings\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 5 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066CFF485550707267024134 -O207 -SF4000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P2 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F401RETx$CMSIS\Flash\STM32F4xx_512.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_512 -FS08000000 -FL080000 -FP0($$Device:STM32F401RETx$CMSIS\Flash\STM32F4xx_512.FLM)) + + + + + + 0 + 1 + returnCode + + + 1 + 1 + short_toggle + + + 2 + 1 + timer + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 1 + 0 + 2 + 10000000 + + + + + + Source Group 1 + 1 + 0 + 0 + 0 + + 1 + 1 + 8 + 0 + 0 + 0 + .\main.cpp + main.cpp + 0 + 0 + + + 1 + 2 + 5 + 0 + 0 + 0 + .\etl_profile.h + etl_profile.h + 0 + 0 + + + + + ::Board Support + 1 + 0 + 0 + 1 + + + + ::CMSIS + 0 + 0 + 0 + 1 + + + + ::Device + 1 + 0 + 0 + 1 + + +
diff --git a/examples/ArmTimerCallbacks/ArmTimerCallbacks.uvprojx b/examples/ArmTimerCallbacks/ArmTimerCallbacks.uvprojx new file mode 100644 index 00000000..1d18e62d --- /dev/null +++ b/examples/ArmTimerCallbacks/ArmTimerCallbacks.uvprojx @@ -0,0 +1,469 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + 5060528::V5.06 update 5 (build 528)::ARMCC + 0 + + + STM32F401RETx + STMicroelectronics + Keil.STM32F4xx_DFP.2.11.0 + http://www.keil.com/pack + IRAM(0x20000000,0x18000) IROM(0x08000000,0x80000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_512 -FS08000000 -FL080000 -FP0($$Device:STM32F401RETx$CMSIS\Flash\STM32F4xx_512.FLM)) + 0 + $$Device:STM32F401RETx$Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h + + + + + + + + + + $$Device:STM32F401RETx$CMSIS\SVD\STM32F401xE.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Objects\ + ArmTimerCallbacks + 1 + 0 + 0 + 1 + 1 + .\Listings\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM4 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 0 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x18000 + + + 1 + 0x8000000 + 0x80000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x80000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x18000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 4 + 0 + 0 + 1 + 0 + 0 + 1 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 3 + 3 + 1 + 1 + 0 + 0 + 0 + + + + + ..\..\src;..\ArmTimerCallbacks + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Source Group 1 + + + main.cpp + 8 + .\main.cpp + + + etl_profile.h + 5 + .\etl_profile.h + + + + + ::Board Support + + + ::CMSIS + + + ::Device + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RTE\Device\STM32F401RETx\startup_stm32f401xe.s + + + + + + + + RTE\Device\STM32F401RETx\system_stm32f4xx.c + + + + + + + + + +
diff --git a/examples/ArmTimerCallbacks/RTE/Device/STM32F401RETx/startup_stm32f401xe.s b/examples/ArmTimerCallbacks/RTE/Device/STM32F401RETx/startup_stm32f401xe.s new file mode 100644 index 00000000..dc82c615 --- /dev/null +++ b/examples/ArmTimerCallbacks/RTE/Device/STM32F401RETx/startup_stm32f401xe.s @@ -0,0 +1,392 @@ +;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** +;* File Name : startup_stm32f401xe.s +;* Author : MCD Application Team +;* Version : V2.6.0 +;* Date : 04-November-2016 +;* Description : STM32F401xe devices vector table for MDK-ARM toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM4 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;******************************************************************************* +; +;* Redistribution and use in source and binary forms, with or without modification, +;* are permitted provided that the following conditions are met: +;* 1. Redistributions of source code must retain the above copyright notice, +;* this list of conditions and the following disclaimer. +;* 2. Redistributions in binary form must reproduce the above copyright notice, +;* this list of conditions and the following disclaimer in the documentation +;* and/or other materials provided with the distribution. +;* 3. Neither the name of STMicroelectronics nor the names of its contributors +;* may be used to endorse or promote products derived from this software +;* without specific prior written permission. +;* +;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +; +;******************************************************************************* + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000200 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window WatchDog + DCD PVD_IRQHandler ; PVD through EXTI Line detection + DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line + DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line + DCD FLASH_IRQHandler ; FLASH + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line0 + DCD EXTI1_IRQHandler ; EXTI Line1 + DCD EXTI2_IRQHandler ; EXTI Line2 + DCD EXTI3_IRQHandler ; EXTI Line3 + DCD EXTI4_IRQHandler ; EXTI Line4 + DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 + DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 + DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 + DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 + DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 + DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 + DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 + DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD EXTI9_5_IRQHandler ; External Line[9:5]s + DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 + DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 + DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 + DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD 0 ; Reserved + DCD EXTI15_10_IRQHandler ; External Line[15:10]s + DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line + DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 + DCD 0 ; Reserved + DCD SDIO_IRQHandler ; SDIO + DCD TIM5_IRQHandler ; TIM5 + DCD SPI3_IRQHandler ; SPI3 + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 + DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 + DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 + DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 + DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD OTG_FS_IRQHandler ; USB OTG FS + DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 + DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 + DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 + DCD USART6_IRQHandler ; USART6 + DCD I2C3_EV_IRQHandler ; I2C3 event + DCD I2C3_ER_IRQHandler ; I2C3 error + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD FPU_IRQHandler ; FPU + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SPI4_IRQHandler ; SPI4 + +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMP_STAMP_IRQHandler [WEAK] + EXPORT RTC_WKUP_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Stream0_IRQHandler [WEAK] + EXPORT DMA1_Stream1_IRQHandler [WEAK] + EXPORT DMA1_Stream2_IRQHandler [WEAK] + EXPORT DMA1_Stream3_IRQHandler [WEAK] + EXPORT DMA1_Stream4_IRQHandler [WEAK] + EXPORT DMA1_Stream5_IRQHandler [WEAK] + EXPORT DMA1_Stream6_IRQHandler [WEAK] + EXPORT ADC_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] + EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] + EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTC_Alarm_IRQHandler [WEAK] + EXPORT OTG_FS_WKUP_IRQHandler [WEAK] + EXPORT DMA1_Stream7_IRQHandler [WEAK] + EXPORT SDIO_IRQHandler [WEAK] + EXPORT TIM5_IRQHandler [WEAK] + EXPORT SPI3_IRQHandler [WEAK] + EXPORT DMA2_Stream0_IRQHandler [WEAK] + EXPORT DMA2_Stream1_IRQHandler [WEAK] + EXPORT DMA2_Stream2_IRQHandler [WEAK] + EXPORT DMA2_Stream3_IRQHandler [WEAK] + EXPORT DMA2_Stream4_IRQHandler [WEAK] + EXPORT OTG_FS_IRQHandler [WEAK] + EXPORT DMA2_Stream5_IRQHandler [WEAK] + EXPORT DMA2_Stream6_IRQHandler [WEAK] + EXPORT DMA2_Stream7_IRQHandler [WEAK] + EXPORT USART6_IRQHandler [WEAK] + EXPORT I2C3_EV_IRQHandler [WEAK] + EXPORT I2C3_ER_IRQHandler [WEAK] + EXPORT FPU_IRQHandler [WEAK] + EXPORT SPI4_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMP_STAMP_IRQHandler +RTC_WKUP_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Stream0_IRQHandler +DMA1_Stream1_IRQHandler +DMA1_Stream2_IRQHandler +DMA1_Stream3_IRQHandler +DMA1_Stream4_IRQHandler +DMA1_Stream5_IRQHandler +DMA1_Stream6_IRQHandler +ADC_IRQHandler +EXTI9_5_IRQHandler +TIM1_BRK_TIM9_IRQHandler +TIM1_UP_TIM10_IRQHandler +TIM1_TRG_COM_TIM11_IRQHandler +TIM1_CC_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +EXTI15_10_IRQHandler +RTC_Alarm_IRQHandler +OTG_FS_WKUP_IRQHandler +DMA1_Stream7_IRQHandler +SDIO_IRQHandler +TIM5_IRQHandler +SPI3_IRQHandler +DMA2_Stream0_IRQHandler +DMA2_Stream1_IRQHandler +DMA2_Stream2_IRQHandler +DMA2_Stream3_IRQHandler +DMA2_Stream4_IRQHandler +OTG_FS_IRQHandler +DMA2_Stream5_IRQHandler +DMA2_Stream6_IRQHandler +DMA2_Stream7_IRQHandler +USART6_IRQHandler +I2C3_EV_IRQHandler +I2C3_ER_IRQHandler +FPU_IRQHandler +SPI4_IRQHandler + + B . + + ENDP + + ALIGN + +;******************************************************************************* +; User Stack and Heap initialization +;******************************************************************************* + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + END + +;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** diff --git a/examples/ArmTimerCallbacks/RTE/Device/STM32F401RETx/system_stm32f4xx.c b/examples/ArmTimerCallbacks/RTE/Device/STM32F401RETx/system_stm32f4xx.c new file mode 100644 index 00000000..bca0633d --- /dev/null +++ b/examples/ArmTimerCallbacks/RTE/Device/STM32F401RETx/system_stm32f4xx.c @@ -0,0 +1,763 @@ +/** + ****************************************************************************** + * @file system_stm32f4xx.c + * @author MCD Application Team + * @version V2.6.0 + * @date 04-November-2016 + * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File. + * + * This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32f4xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f4xx_system + * @{ + */ + +/** @addtogroup STM32F4xx_System_Private_Includes + * @{ + */ + + +#include "stm32f4xx.h" + +#if !defined (HSE_VALUE) + #define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @} + */ + +/** @addtogroup STM32F4xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F4xx_System_Private_Defines + * @{ + */ + +/************************* Miscellaneous Configuration ************************/ +/*!< Uncomment the following line if you need to use external SRAM or SDRAM as data memory */ +#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)\ + || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\ + || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) +/* #define DATA_IN_ExtSRAM */ +#endif /* STM32F40xxx || STM32F41xxx || STM32F42xxx || STM32F43xxx || STM32F469xx || STM32F479xx ||\ + STM32F412Zx || STM32F412Vx */ + +#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\ + || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) +/* #define DATA_IN_ExtSDRAM */ +#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx ||\ + STM32F479xx */ + +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +/******************************************************************************/ + +/** + * @} + */ + +/** @addtogroup STM32F4xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F4xx_System_Private_Variables + * @{ + */ + /* This variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) by calling HAL API function HAL_RCC_GetHCLKFreq() + 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency + Note: If you use this function to configure the system clock; then there + is no need to call the 2 first functions listed above, since SystemCoreClock + variable is updated automatically. + */ +uint32_t SystemCoreClock = 16000000; +const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; +const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4}; +/** + * @} + */ + +/** @addtogroup STM32F4xx_System_Private_FunctionPrototypes + * @{ + */ + +#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM) + static void SystemInit_ExtMemCtl(void); +#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */ + +/** + * @} + */ + +/** @addtogroup STM32F4xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system + * Initialize the FPU setting, vector table location and External memory + * configuration. + * @param None + * @retval None + */ +void SystemInit(void) +{ + /* FPU settings ------------------------------------------------------------*/ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ + #endif + /* Reset the RCC clock configuration to the default reset state ------------*/ + /* Set HSION bit */ + RCC->CR |= (uint32_t)0x00000001; + + /* Reset CFGR register */ + RCC->CFGR = 0x00000000; + + /* Reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (uint32_t)0xFEF6FFFF; + + /* Reset PLLCFGR register */ + RCC->PLLCFGR = 0x24003010; + + /* Reset HSEBYP bit */ + RCC->CR &= (uint32_t)0xFFFBFFFF; + + /* Disable all interrupts */ + RCC->CIR = 0x00000000; + +#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM) + SystemInit_ExtMemCtl(); +#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */ + + /* Configure the Vector Table location add offset address ------------------*/ +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ +#endif +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + * or HSI_VALUE(*) multiplied/divided by the PLL factors. + * + * (*) HSI_VALUE is a constant defined in stm32f4xx_hal_conf.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32f4xx_hal_conf.h file (its value + * depends on the application requirements), user has to ensure that HSE_VALUE + * is same as the real frequency of the crystal used. Otherwise, this function + * may have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * + * @param None + * @retval None + */ +void SystemCoreClockUpdate(void) +{ + uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2; + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) + { + case 0x00: /* HSI used as system clock source */ + SystemCoreClock = HSI_VALUE; + break; + case 0x04: /* HSE used as system clock source */ + SystemCoreClock = HSE_VALUE; + break; + case 0x08: /* PLL used as system clock source */ + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N + SYSCLK = PLL_VCO / PLL_P + */ + pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22; + pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; + + if (pllsource != 0) + { + /* HSE used as PLL clock source */ + pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); + } + else + { + /* HSI used as PLL clock source */ + pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); + } + + pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2; + SystemCoreClock = pllvco/pllp; + break; + default: + SystemCoreClock = HSI_VALUE; + break; + } + /* Compute HCLK frequency --------------------------------------------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; + /* HCLK frequency */ + SystemCoreClock >>= tmp; +} + +#if defined (DATA_IN_ExtSRAM) && defined (DATA_IN_ExtSDRAM) +#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\ + || defined(STM32F469xx) || defined(STM32F479xx) +/** + * @brief Setup the external memory controller. + * Called in startup_stm32f4xx.s before jump to main. + * This function configures the external memories (SRAM/SDRAM) + * This SRAM/SDRAM will be used as program data memory (including heap and stack). + * @param None + * @retval None + */ +void SystemInit_ExtMemCtl(void) +{ + __IO uint32_t tmp = 0x00; + + register uint32_t tmpreg = 0, timeout = 0xFFFF; + register __IO uint32_t index; + + /* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH and GPIOI interface clock */ + RCC->AHB1ENR |= 0x000001F8; + + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN); + + /* Connect PDx pins to FMC Alternate function */ + GPIOD->AFR[0] = 0x00CCC0CC; + GPIOD->AFR[1] = 0xCCCCCCCC; + /* Configure PDx pins in Alternate function mode */ + GPIOD->MODER = 0xAAAA0A8A; + /* Configure PDx pins speed to 100 MHz */ + GPIOD->OSPEEDR = 0xFFFF0FCF; + /* Configure PDx pins Output type to push-pull */ + GPIOD->OTYPER = 0x00000000; + /* No pull-up, pull-down for PDx pins */ + GPIOD->PUPDR = 0x00000000; + + /* Connect PEx pins to FMC Alternate function */ + GPIOE->AFR[0] = 0xC00CC0CC; + GPIOE->AFR[1] = 0xCCCCCCCC; + /* Configure PEx pins in Alternate function mode */ + GPIOE->MODER = 0xAAAA828A; + /* Configure PEx pins speed to 100 MHz */ + GPIOE->OSPEEDR = 0xFFFFC3CF; + /* Configure PEx pins Output type to push-pull */ + GPIOE->OTYPER = 0x00000000; + /* No pull-up, pull-down for PEx pins */ + GPIOE->PUPDR = 0x00000000; + + /* Connect PFx pins to FMC Alternate function */ + GPIOF->AFR[0] = 0xCCCCCCCC; + GPIOF->AFR[1] = 0xCCCCCCCC; + /* Configure PFx pins in Alternate function mode */ + GPIOF->MODER = 0xAA800AAA; + /* Configure PFx pins speed to 50 MHz */ + GPIOF->OSPEEDR = 0xAA800AAA; + /* Configure PFx pins Output type to push-pull */ + GPIOF->OTYPER = 0x00000000; + /* No pull-up, pull-down for PFx pins */ + GPIOF->PUPDR = 0x00000000; + + /* Connect PGx pins to FMC Alternate function */ + GPIOG->AFR[0] = 0xCCCCCCCC; + GPIOG->AFR[1] = 0xCCCCCCCC; + /* Configure PGx pins in Alternate function mode */ + GPIOG->MODER = 0xAAAAAAAA; + /* Configure PGx pins speed to 50 MHz */ + GPIOG->OSPEEDR = 0xAAAAAAAA; + /* Configure PGx pins Output type to push-pull */ + GPIOG->OTYPER = 0x00000000; + /* No pull-up, pull-down for PGx pins */ + GPIOG->PUPDR = 0x00000000; + + /* Connect PHx pins to FMC Alternate function */ + GPIOH->AFR[0] = 0x00C0CC00; + GPIOH->AFR[1] = 0xCCCCCCCC; + /* Configure PHx pins in Alternate function mode */ + GPIOH->MODER = 0xAAAA08A0; + /* Configure PHx pins speed to 50 MHz */ + GPIOH->OSPEEDR = 0xAAAA08A0; + /* Configure PHx pins Output type to push-pull */ + GPIOH->OTYPER = 0x00000000; + /* No pull-up, pull-down for PHx pins */ + GPIOH->PUPDR = 0x00000000; + + /* Connect PIx pins to FMC Alternate function */ + GPIOI->AFR[0] = 0xCCCCCCCC; + GPIOI->AFR[1] = 0x00000CC0; + /* Configure PIx pins in Alternate function mode */ + GPIOI->MODER = 0x0028AAAA; + /* Configure PIx pins speed to 50 MHz */ + GPIOI->OSPEEDR = 0x0028AAAA; + /* Configure PIx pins Output type to push-pull */ + GPIOI->OTYPER = 0x00000000; + /* No pull-up, pull-down for PIx pins */ + GPIOI->PUPDR = 0x00000000; + +/*-- FMC Configuration -------------------------------------------------------*/ + /* Enable the FMC interface clock */ + RCC->AHB3ENR |= 0x00000001; + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN); + + FMC_Bank5_6->SDCR[0] = 0x000019E4; + FMC_Bank5_6->SDTR[0] = 0x01115351; + + /* SDRAM initialization sequence */ + /* Clock enable command */ + FMC_Bank5_6->SDCMR = 0x00000011; + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* Delay */ + for (index = 0; index<1000; index++); + + /* PALL command */ + FMC_Bank5_6->SDCMR = 0x00000012; + timeout = 0xFFFF; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* Auto refresh command */ + FMC_Bank5_6->SDCMR = 0x00000073; + timeout = 0xFFFF; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* MRD register program */ + FMC_Bank5_6->SDCMR = 0x00046014; + timeout = 0xFFFF; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* Set refresh count */ + tmpreg = FMC_Bank5_6->SDRTR; + FMC_Bank5_6->SDRTR = (tmpreg | (0x0000027C<<1)); + + /* Disable write protection */ + tmpreg = FMC_Bank5_6->SDCR[0]; + FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF); + +#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) + /* Configure and enable Bank1_SRAM2 */ + FMC_Bank1->BTCR[2] = 0x00001011; + FMC_Bank1->BTCR[3] = 0x00000201; + FMC_Bank1E->BWTR[2] = 0x0fffffff; +#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */ +#if defined(STM32F469xx) || defined(STM32F479xx) + /* Configure and enable Bank1_SRAM2 */ + FMC_Bank1->BTCR[2] = 0x00001091; + FMC_Bank1->BTCR[3] = 0x00110212; + FMC_Bank1E->BWTR[2] = 0x0fffffff; +#endif /* STM32F469xx || STM32F479xx */ + + (void)(tmp); +} +#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */ +#elif defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM) +/** + * @brief Setup the external memory controller. + * Called in startup_stm32f4xx.s before jump to main. + * This function configures the external memories (SRAM/SDRAM) + * This SRAM/SDRAM will be used as program data memory (including heap and stack). + * @param None + * @retval None + */ +void SystemInit_ExtMemCtl(void) +{ + __IO uint32_t tmp = 0x00; +#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\ + || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) +#if defined (DATA_IN_ExtSDRAM) + register uint32_t tmpreg = 0, timeout = 0xFFFF; + register __IO uint32_t index; + +#if defined(STM32F446xx) + /* Enable GPIOA, GPIOC, GPIOD, GPIOE, GPIOF, GPIOG interface + clock */ + RCC->AHB1ENR |= 0x0000007D; +#else + /* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH and GPIOI interface + clock */ + RCC->AHB1ENR |= 0x000001F8; +#endif /* STM32F446xx */ + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN); + +#if defined(STM32F446xx) + /* Connect PAx pins to FMC Alternate function */ + GPIOA->AFR[0] |= 0xC0000000; + GPIOA->AFR[1] |= 0x00000000; + /* Configure PDx pins in Alternate function mode */ + GPIOA->MODER |= 0x00008000; + /* Configure PDx pins speed to 50 MHz */ + GPIOA->OSPEEDR |= 0x00008000; + /* Configure PDx pins Output type to push-pull */ + GPIOA->OTYPER |= 0x00000000; + /* No pull-up, pull-down for PDx pins */ + GPIOA->PUPDR |= 0x00000000; + + /* Connect PCx pins to FMC Alternate function */ + GPIOC->AFR[0] |= 0x00CC0000; + GPIOC->AFR[1] |= 0x00000000; + /* Configure PDx pins in Alternate function mode */ + GPIOC->MODER |= 0x00000A00; + /* Configure PDx pins speed to 50 MHz */ + GPIOC->OSPEEDR |= 0x00000A00; + /* Configure PDx pins Output type to push-pull */ + GPIOC->OTYPER |= 0x00000000; + /* No pull-up, pull-down for PDx pins */ + GPIOC->PUPDR |= 0x00000000; +#endif /* STM32F446xx */ + + /* Connect PDx pins to FMC Alternate function */ + GPIOD->AFR[0] = 0x000000CC; + GPIOD->AFR[1] = 0xCC000CCC; + /* Configure PDx pins in Alternate function mode */ + GPIOD->MODER = 0xA02A000A; + /* Configure PDx pins speed to 50 MHz */ + GPIOD->OSPEEDR = 0xA02A000A; + /* Configure PDx pins Output type to push-pull */ + GPIOD->OTYPER = 0x00000000; + /* No pull-up, pull-down for PDx pins */ + GPIOD->PUPDR = 0x00000000; + + /* Connect PEx pins to FMC Alternate function */ + GPIOE->AFR[0] = 0xC00000CC; + GPIOE->AFR[1] = 0xCCCCCCCC; + /* Configure PEx pins in Alternate function mode */ + GPIOE->MODER = 0xAAAA800A; + /* Configure PEx pins speed to 50 MHz */ + GPIOE->OSPEEDR = 0xAAAA800A; + /* Configure PEx pins Output type to push-pull */ + GPIOE->OTYPER = 0x00000000; + /* No pull-up, pull-down for PEx pins */ + GPIOE->PUPDR = 0x00000000; + + /* Connect PFx pins to FMC Alternate function */ + GPIOF->AFR[0] = 0xCCCCCCCC; + GPIOF->AFR[1] = 0xCCCCCCCC; + /* Configure PFx pins in Alternate function mode */ + GPIOF->MODER = 0xAA800AAA; + /* Configure PFx pins speed to 50 MHz */ + GPIOF->OSPEEDR = 0xAA800AAA; + /* Configure PFx pins Output type to push-pull */ + GPIOF->OTYPER = 0x00000000; + /* No pull-up, pull-down for PFx pins */ + GPIOF->PUPDR = 0x00000000; + + /* Connect PGx pins to FMC Alternate function */ + GPIOG->AFR[0] = 0xCCCCCCCC; + GPIOG->AFR[1] = 0xCCCCCCCC; + /* Configure PGx pins in Alternate function mode */ + GPIOG->MODER = 0xAAAAAAAA; + /* Configure PGx pins speed to 50 MHz */ + GPIOG->OSPEEDR = 0xAAAAAAAA; + /* Configure PGx pins Output type to push-pull */ + GPIOG->OTYPER = 0x00000000; + /* No pull-up, pull-down for PGx pins */ + GPIOG->PUPDR = 0x00000000; + +#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\ + || defined(STM32F469xx) || defined(STM32F479xx) + /* Connect PHx pins to FMC Alternate function */ + GPIOH->AFR[0] = 0x00C0CC00; + GPIOH->AFR[1] = 0xCCCCCCCC; + /* Configure PHx pins in Alternate function mode */ + GPIOH->MODER = 0xAAAA08A0; + /* Configure PHx pins speed to 50 MHz */ + GPIOH->OSPEEDR = 0xAAAA08A0; + /* Configure PHx pins Output type to push-pull */ + GPIOH->OTYPER = 0x00000000; + /* No pull-up, pull-down for PHx pins */ + GPIOH->PUPDR = 0x00000000; + + /* Connect PIx pins to FMC Alternate function */ + GPIOI->AFR[0] = 0xCCCCCCCC; + GPIOI->AFR[1] = 0x00000CC0; + /* Configure PIx pins in Alternate function mode */ + GPIOI->MODER = 0x0028AAAA; + /* Configure PIx pins speed to 50 MHz */ + GPIOI->OSPEEDR = 0x0028AAAA; + /* Configure PIx pins Output type to push-pull */ + GPIOI->OTYPER = 0x00000000; + /* No pull-up, pull-down for PIx pins */ + GPIOI->PUPDR = 0x00000000; +#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */ + +/*-- FMC Configuration -------------------------------------------------------*/ + /* Enable the FMC interface clock */ + RCC->AHB3ENR |= 0x00000001; + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN); + + /* Configure and enable SDRAM bank1 */ +#if defined(STM32F446xx) + FMC_Bank5_6->SDCR[0] = 0x00001954; +#else + FMC_Bank5_6->SDCR[0] = 0x000019E4; +#endif /* STM32F446xx */ + FMC_Bank5_6->SDTR[0] = 0x01115351; + + /* SDRAM initialization sequence */ + /* Clock enable command */ + FMC_Bank5_6->SDCMR = 0x00000011; + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* Delay */ + for (index = 0; index<1000; index++); + + /* PALL command */ + FMC_Bank5_6->SDCMR = 0x00000012; + timeout = 0xFFFF; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* Auto refresh command */ +#if defined(STM32F446xx) + FMC_Bank5_6->SDCMR = 0x000000F3; +#else + FMC_Bank5_6->SDCMR = 0x00000073; +#endif /* STM32F446xx */ + timeout = 0xFFFF; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* MRD register program */ +#if defined(STM32F446xx) + FMC_Bank5_6->SDCMR = 0x00044014; +#else + FMC_Bank5_6->SDCMR = 0x00046014; +#endif /* STM32F446xx */ + timeout = 0xFFFF; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* Set refresh count */ + tmpreg = FMC_Bank5_6->SDRTR; +#if defined(STM32F446xx) + FMC_Bank5_6->SDRTR = (tmpreg | (0x0000050C<<1)); +#else + FMC_Bank5_6->SDRTR = (tmpreg | (0x0000027C<<1)); +#endif /* STM32F446xx */ + + /* Disable write protection */ + tmpreg = FMC_Bank5_6->SDCR[0]; + FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF); +#endif /* DATA_IN_ExtSDRAM */ +#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx || STM32F479xx */ + +#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)\ + || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\ + || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) + +#if defined(DATA_IN_ExtSRAM) +/*-- GPIOs Configuration -----------------------------------------------------*/ + /* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */ + RCC->AHB1ENR |= 0x00000078; + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIODEN); + + /* Connect PDx pins to FMC Alternate function */ + GPIOD->AFR[0] = 0x00CCC0CC; + GPIOD->AFR[1] = 0xCCCCCCCC; + /* Configure PDx pins in Alternate function mode */ + GPIOD->MODER = 0xAAAA0A8A; + /* Configure PDx pins speed to 100 MHz */ + GPIOD->OSPEEDR = 0xFFFF0FCF; + /* Configure PDx pins Output type to push-pull */ + GPIOD->OTYPER = 0x00000000; + /* No pull-up, pull-down for PDx pins */ + GPIOD->PUPDR = 0x00000000; + + /* Connect PEx pins to FMC Alternate function */ + GPIOE->AFR[0] = 0xC00CC0CC; + GPIOE->AFR[1] = 0xCCCCCCCC; + /* Configure PEx pins in Alternate function mode */ + GPIOE->MODER = 0xAAAA828A; + /* Configure PEx pins speed to 100 MHz */ + GPIOE->OSPEEDR = 0xFFFFC3CF; + /* Configure PEx pins Output type to push-pull */ + GPIOE->OTYPER = 0x00000000; + /* No pull-up, pull-down for PEx pins */ + GPIOE->PUPDR = 0x00000000; + + /* Connect PFx pins to FMC Alternate function */ + GPIOF->AFR[0] = 0x00CCCCCC; + GPIOF->AFR[1] = 0xCCCC0000; + /* Configure PFx pins in Alternate function mode */ + GPIOF->MODER = 0xAA000AAA; + /* Configure PFx pins speed to 100 MHz */ + GPIOF->OSPEEDR = 0xFF000FFF; + /* Configure PFx pins Output type to push-pull */ + GPIOF->OTYPER = 0x00000000; + /* No pull-up, pull-down for PFx pins */ + GPIOF->PUPDR = 0x00000000; + + /* Connect PGx pins to FMC Alternate function */ + GPIOG->AFR[0] = 0x00CCCCCC; + GPIOG->AFR[1] = 0x000000C0; + /* Configure PGx pins in Alternate function mode */ + GPIOG->MODER = 0x00085AAA; + /* Configure PGx pins speed to 100 MHz */ + GPIOG->OSPEEDR = 0x000CAFFF; + /* Configure PGx pins Output type to push-pull */ + GPIOG->OTYPER = 0x00000000; + /* No pull-up, pull-down for PGx pins */ + GPIOG->PUPDR = 0x00000000; + +/*-- FMC/FSMC Configuration --------------------------------------------------*/ + /* Enable the FMC/FSMC interface clock */ + RCC->AHB3ENR |= 0x00000001; + +#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN); + /* Configure and enable Bank1_SRAM2 */ + FMC_Bank1->BTCR[2] = 0x00001011; + FMC_Bank1->BTCR[3] = 0x00000201; + FMC_Bank1E->BWTR[2] = 0x0fffffff; +#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */ +#if defined(STM32F469xx) || defined(STM32F479xx) + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN); + /* Configure and enable Bank1_SRAM2 */ + FMC_Bank1->BTCR[2] = 0x00001091; + FMC_Bank1->BTCR[3] = 0x00110212; + FMC_Bank1E->BWTR[2] = 0x0fffffff; +#endif /* STM32F469xx || STM32F479xx */ +#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx)|| defined(STM32F417xx)\ + || defined(STM32F412Zx) || defined(STM32F412Vx) + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FSMCEN); + /* Configure and enable Bank1_SRAM2 */ + FSMC_Bank1->BTCR[2] = 0x00001011; + FSMC_Bank1->BTCR[3] = 0x00000201; + FSMC_Bank1E->BWTR[2] = 0x0FFFFFFF; +#endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F412Zx || STM32F412Vx */ + +#endif /* DATA_IN_ExtSRAM */ +#endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx ||\ + STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Vx */ + (void)(tmp); +} +#endif /* DATA_IN_ExtSRAM && DATA_IN_ExtSDRAM */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/examples/ArmTimerCallbacks/RTE/_Target_1/RTE_Components.h b/examples/ArmTimerCallbacks/RTE/_Target_1/RTE_Components.h new file mode 100644 index 00000000..c72d4b59 --- /dev/null +++ b/examples/ArmTimerCallbacks/RTE/_Target_1/RTE_Components.h @@ -0,0 +1,21 @@ + +/* + * Auto generated Run-Time-Environment Component Configuration File + * *** Do not modify ! *** + * + * Project: 'ArmTimerCallbacks' + * Target: 'Target 1' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "stm32f4xx.h" + +#define RTE_DEVICE_STARTUP_STM32F4XX /* Device Startup for STM32F4 */ + +#endif /* RTE_COMPONENTS_H */ diff --git a/examples/ArmTimerCallbacks/Retarget.c b/examples/ArmTimerCallbacks/Retarget.c new file mode 100644 index 00000000..675056c8 --- /dev/null +++ b/examples/ArmTimerCallbacks/Retarget.c @@ -0,0 +1,52 @@ +/*---------------------------------------------------------------------------- + * Name: Retarget.c + * Purpose: 'Retarget' layer for target-dependent low level functions + * Note(s): + *---------------------------------------------------------------------------- + * This file is part of the uVision/ARM development tools. + * This software may only be used under the terms of a valid, current, + * end user licence from KEIL for a compatible version of KEIL software + * development tools. Nothing else gives you the right to use this software. + * + * This software is supplied "AS IS" without warranties of any kind. + * + * Copyright (c) 2011 Keil - An ARM Company. All rights reserved. + *----------------------------------------------------------------------------*/ + +#include +#include +#include "Serial.h" + +//#pragma import(__use_no_semihosting_swi) + + + +//struct __FILE { int handle; /* Add whatever you need here */ }; +FILE __stdout; +FILE __stdin; + + +int fputc(int c, FILE *f) { + return (SER_PutChar(c)); +} + + +int fgetc(FILE *f) { + return (SER_GetChar()); +} + + +int ferror(FILE *f) { + /* Your implementation of ferror */ + return EOF; +} + + +void _ttywrch(int c) { + SER_PutChar(c); +} + + +void _sys_exit(int return_code) { +label: goto label; /* endless loop */ +} diff --git a/examples/ArmTimerCallbacks/Serial.c b/examples/ArmTimerCallbacks/Serial.c new file mode 100644 index 00000000..80840c44 --- /dev/null +++ b/examples/ArmTimerCallbacks/Serial.c @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------- + * Name: Serial.c + * Purpose: Low Level Serial Routines + * Note(s): possible defines select the used communication interface: + * __DBG_ITM - ITM SWO interface + * - USART2 interface (default) + *---------------------------------------------------------------------------- + * This file is part of the uVision/ARM development tools. + * This software may only be used under the terms of a valid, current, + * end user licence from KEIL for a compatible version of KEIL software + * development tools. Nothing else gives you the right to use this software. + * + * This software is supplied "AS IS" without warranties of any kind. + * + * Copyright (c) 2014 Keil - An ARM Company. All rights reserved. + *----------------------------------------------------------------------------*/ + +#include "stm32f4xx.h" // Device header +#include "Serial.h" + +#ifdef __DBG_ITM +volatile int ITM_RxBuffer; /* CMSIS Debug Input */ +#endif + +/*---------------------------------------------------------------------------- + Define USART + *----------------------------------------------------------------------------*/ +#define USARTx USART2 + + +/*---------------------------------------------------------------------------- + Define Baudrate setting (BRR) for USART + *----------------------------------------------------------------------------*/ +#define __DIV(__PCLK, __BAUD) ((__PCLK*25)/(4*__BAUD)) +#define __DIVMANT(__PCLK, __BAUD) (__DIV(__PCLK, __BAUD)/100) +#define __DIVFRAQ(__PCLK, __BAUD) (((__DIV(__PCLK, __BAUD) - (__DIVMANT(__PCLK, __BAUD) * 100)) * 16 + 50) / 100) +#define __USART_BRR(__PCLK, __BAUD) ((__DIVMANT(__PCLK, __BAUD) << 4)|(__DIVFRAQ(__PCLK, __BAUD) & 0x0F)) + + +/*---------------------------------------------------------------------------- + Initialize UART pins, Baudrate + *----------------------------------------------------------------------------*/ +void SER_Initialize (void) { + +#ifdef __DBG_ITM + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* CMSIS Debug Input */ +#else + RCC->AHB1ENR |= ( 1ul << 0); /* Enable GPIOA clock */ + RCC->APB1ENR |= ( 1ul << 17); /* Enable USART#2 clock */ + + /* Configure PA3 to USART2_RX, PA2 to USART2_TX */ + GPIOA->AFR[0] &= ~((15ul << 4* 3) | (15ul << 4* 2) ); + GPIOA->AFR[0] |= (( 7ul << 4* 3) | ( 7ul << 4* 2) ); + GPIOA->MODER &= ~(( 3ul << 2* 3) | ( 3ul << 2* 2) ); + GPIOA->MODER |= (( 2ul << 2* 3) | ( 2ul << 2* 2) ); + + USARTx->BRR = __USART_BRR(12000000ul, 115200ul); /* 115200 baud @ 12MHz */ + USARTx->CR3 = 0x0000; /* no flow control */ + USARTx->CR2 = 0x0000; /* 1 stop bit */ + USARTx->CR1 = (( 1ul << 2) | /* enable RX */ + ( 1ul << 3) | /* enable TX */ + ( 0ul << 12) | /* 1 start bit, 8 data bits */ + ( 1ul << 13) ); /* enable USART */ +#endif +} + + +/*---------------------------------------------------------------------------- + Write character to Serial Port + *----------------------------------------------------------------------------*/ +int SER_PutChar (int ch) { + +#ifdef __DBG_ITM + ITM_SendChar (ch & 0xFF); +#else + while (!(USARTx->SR & 0x0080)); + USARTx->DR = (ch & 0xFF); +#endif + + return (ch); +} + +/*---------------------------------------------------------------------------- + Read character from Serial Port + *----------------------------------------------------------------------------*/ +int SER_GetChar (void) { + +#ifdef __DBG_ITM + if (ITM_CheckChar()) + return ITM_ReceiveChar(); +#else + if (USARTx->SR & 0x0020) + return (USARTx->DR); +#endif + + return (-1); +} + diff --git a/examples/ArmTimerCallbacks/Serial.h b/examples/ArmTimerCallbacks/Serial.h new file mode 100644 index 00000000..f8ebf812 --- /dev/null +++ b/examples/ArmTimerCallbacks/Serial.h @@ -0,0 +1,23 @@ +/*---------------------------------------------------------------------------- + * Name: Serial.h + * Purpose: Low level serial definitions + * Note(s): + *---------------------------------------------------------------------------- + * This file is part of the uVision/ARM development tools. + * This software may only be used under the terms of a valid, current, + * end user licence from KEIL for a compatible version of KEIL software + * development tools. Nothing else gives you the right to use this software. + * + * This software is supplied "AS IS" without warranties of any kind. + * + * Copyright (c) 2014 Keil - An ARM Company. All rights reserved. + *----------------------------------------------------------------------------*/ + +#ifndef SERIAL_H +#define SERIAL_H + +extern void SER_Initialize(void); +extern int SER_GetChar (void); +extern int SER_PutChar (int c); + +#endif diff --git a/examples/ArmTimerCallbacks/etl_profile.h b/examples/ArmTimerCallbacks/etl_profile.h new file mode 100644 index 00000000..4560ba1e --- /dev/null +++ b/examples/ArmTimerCallbacks/etl_profile.h @@ -0,0 +1,21 @@ + +#ifndef __ETL_PROFILE_H__ +#define __ETL_PROFILE_H__ + +#define ETL_THROW_EXCEPTIONS +#define ETL_VERBOSE_ERRORS +#define ETL_CHECK_PUSH_POP +#define ETL_ISTRING_REPAIR_ENABLE +#define ETL_IVECTOR_REPAIR_ENABLE +#define ETL_IDEQUE_REPAIR_ENABLE +#define ETL_IN_UNIT_TEST + +#if (__CC_ARM == 1) + // ARM5 compiler + #include "profiles/armv5.h" +#else + // ARM6 compiler + #include "profiles/armv6.h" +#endif + +#endif diff --git a/examples/ArmTimerCallbacks/main.cpp b/examples/ArmTimerCallbacks/main.cpp new file mode 100644 index 00000000..05f19b17 --- /dev/null +++ b/examples/ArmTimerCallbacks/main.cpp @@ -0,0 +1,147 @@ + +#include + +extern "C" +{ + #include "Board_LED.h" // ::Board Support:LED + #include "Board_Buttons.h" // ::Board Support:Buttons + + #include "stm32f4xx.h" // Device header +} + +#include "function.h" +#include "callback_timer.h" + +const int N_TIMERS = 4; + +etl::callback_timer callback_timer; + +etl::timer::id::type short_toggle; +etl::timer::id::type long_toggle; +etl::timer::id::type start_timers; +etl::timer::id::type swap_timers; + +/*---------------------------------------------------------------------------- + * SystemCoreClockConfigure: configure SystemCoreClock using HSI + (HSE is not populated on Nucleo board) + *----------------------------------------------------------------------------*/ +void SystemCoreClockConfigure(void) { + + RCC->CR |= ((uint32_t)RCC_CR_HSION); // Enable HSI + while ((RCC->CR & RCC_CR_HSIRDY) == 0); // Wait for HSI Ready + + RCC->CFGR = RCC_CFGR_SW_HSI; // HSI is system clock + while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_HSI); // Wait for HSI used as system clock + + FLASH->ACR = FLASH_ACR_PRFTEN; // Enable Prefetch Buffer + FLASH->ACR |= FLASH_ACR_ICEN; // Instruction cache enable + FLASH->ACR |= FLASH_ACR_DCEN; // Data cache enable + FLASH->ACR |= FLASH_ACR_LATENCY_5WS; // Flash 5 wait state + + RCC->CFGR |= RCC_CFGR_HPRE_DIV1; // HCLK = SYSCLK + RCC->CFGR |= RCC_CFGR_PPRE1_DIV4; // APB1 = HCLK/4 + RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; // APB2 = HCLK/2 + + RCC->CR &= ~RCC_CR_PLLON; // Disable PLL + + // PLL configuration: VCO = HSI/M * N, Sysclk = VCO/P + RCC->PLLCFGR = ( 16ul | // PLL_M = 16 + (384ul << 6) | // PLL_N = 384 + ( 3ul << 16) | // PLL_P = 8 + (RCC_PLLCFGR_PLLSRC_HSI) | // PLL_SRC = HSI + ( 8ul << 24) ); // PLL_Q = 8 + + RCC->CR |= RCC_CR_PLLON; // Enable PLL + while((RCC->CR & RCC_CR_PLLRDY) == 0) __NOP(); // Wait till PLL is ready + + RCC->CFGR &= ~RCC_CFGR_SW; // Select PLL as system clock source + RCC->CFGR |= RCC_CFGR_SW_PLL; + while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL); // Wait till PLL is system clock src +} + +void StartTimers() +{ + callback_timer.start(short_toggle); + callback_timer.start(swap_timers); +} + +void SwapTimers() +{ + static bool state = false; + + if (!state) + { + callback_timer.stop(short_toggle); + callback_timer.start(long_toggle); + } + else + { + callback_timer.start(short_toggle); + callback_timer.stop(long_toggle); + } + + state = !state; + + callback_timer.start(swap_timers); +} + +void LedToggle() +{ + static bool state = false; + + if (state) + { + LED_On(0); + } + else + { + LED_Off(0); + } + + state = !state; +} + +int main() +{ + SystemCoreClockConfigure(); // configure HSI as System Clock + SystemCoreClockUpdate(); + + LED_Initialize(); + Buttons_Initialize(); + + // The LEDs will start flashing fast after 2 seconds. + // After another 5 seconds they will start flashing slower. + short_toggle = callback_timer.register_timer(LedToggle, 50, etl::timer::mode::REPEATING); + long_toggle = callback_timer.register_timer(LedToggle, 100, etl::timer::mode::REPEATING); + start_timers = callback_timer.register_timer(StartTimers, 2000, etl::timer::mode::SINGLE_SHOT); + swap_timers = callback_timer.register_timer(SwapTimers, 1500, etl::timer::mode::SINGLE_SHOT); + + SysTick_Config(SystemCoreClock / 1000); + + callback_timer.enable(true); + + callback_timer.start(start_timers); + + while (true) + { + __NOP(); + } +} + +extern "C" +{ + void SysTick_Handler() + { + const uint32_t TICK = 1; + static uint32_t nticks = TICK; + + if (callback_timer.tick(nticks)) + { + nticks = TICK; + } + else + { + nticks += TICK; + } + } +} diff --git a/examples/FunctionInterruptSimulation/etl_profile.h b/examples/FunctionInterruptSimulation/etl_profile.h new file mode 100644 index 00000000..a321fa85 --- /dev/null +++ b/examples/FunctionInterruptSimulation/etl_profile.h @@ -0,0 +1,48 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_PROFILE_H__ +#define __ETL_PROFILE_H__ + +#define ETL_THROW_EXCEPTIONS +#define ETL_VERBOSE_ERRORS +#define ETL_CHECK_PUSH_POP +#define ETL_ISTRING_REPAIR_ENABLE +#define ETL_IVECTOR_REPAIR_ENABLE +#define ETL_IDEQUE_REPAIR_ENABLE +#define ETL_IN_UNIT_TEST + +#ifdef _MSC_VER + #include "profiles/msvc_x86.h" +#else + #include "profiles/gcc_windows_x86.h" +#endif + +#endif diff --git a/examples/FunctionInterruptSimulation/etl_user.h b/examples/FunctionInterruptSimulation/etl_user.h deleted file mode 100644 index 8ff4c6fe..00000000 --- a/examples/FunctionInterruptSimulation/etl_user.h +++ /dev/null @@ -1,3 +0,0 @@ - -#define ETL_THROW_EXCEPTIONS -#define ETL_VERBOSE_ERRORS \ No newline at end of file diff --git a/examples/FunctionInterruptSimulation/vs2017/FunctionInterruptSimulation.sln b/examples/FunctionInterruptSimulation/vs2017/FunctionInterruptSimulation.sln index e19d8e7f..bfec4d4e 100644 --- a/examples/FunctionInterruptSimulation/vs2017/FunctionInterruptSimulation.sln +++ b/examples/FunctionInterruptSimulation/vs2017/FunctionInterruptSimulation.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.26730.16 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FunctionInterruptSimulation", "FunctionInterruptSimulation.vcxproj", "{2873A2D7-5112-4941-83AA-F98751BE5289}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FunctionInterruptSimulation", "FunctionInterruptSimulation.vcxproj", "{5157DB15-C255-4E47-9FB1-AF388437F90F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -13,19 +13,19 @@ Global Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2873A2D7-5112-4941-83AA-F98751BE5289}.Debug|x64.ActiveCfg = Debug|x64 - {2873A2D7-5112-4941-83AA-F98751BE5289}.Debug|x64.Build.0 = Debug|x64 - {2873A2D7-5112-4941-83AA-F98751BE5289}.Debug|x86.ActiveCfg = Debug|Win32 - {2873A2D7-5112-4941-83AA-F98751BE5289}.Debug|x86.Build.0 = Debug|Win32 - {2873A2D7-5112-4941-83AA-F98751BE5289}.Release|x64.ActiveCfg = Release|x64 - {2873A2D7-5112-4941-83AA-F98751BE5289}.Release|x64.Build.0 = Release|x64 - {2873A2D7-5112-4941-83AA-F98751BE5289}.Release|x86.ActiveCfg = Release|Win32 - {2873A2D7-5112-4941-83AA-F98751BE5289}.Release|x86.Build.0 = Release|Win32 + {5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x64.ActiveCfg = Debug|x64 + {5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x64.Build.0 = Debug|x64 + {5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x86.ActiveCfg = Debug|Win32 + {5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x86.Build.0 = Debug|Win32 + {5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x64.ActiveCfg = Release|x64 + {5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x64.Build.0 = Release|x64 + {5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x86.ActiveCfg = Release|Win32 + {5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {C8193019-E546-4904-A25F-27FC525CC526} + SolutionGuid = {260225EB-60CB-44CC-A60C-16A23BBC10EB} EndGlobalSection EndGlobal diff --git a/examples/FunctionInterruptSimulation/vs2017/FunctionInterruptSimulation.vcxproj b/examples/FunctionInterruptSimulation/vs2017/FunctionInterruptSimulation.vcxproj index 50cf05be..3c2ce147 100644 --- a/examples/FunctionInterruptSimulation/vs2017/FunctionInterruptSimulation.vcxproj +++ b/examples/FunctionInterruptSimulation/vs2017/FunctionInterruptSimulation.vcxproj @@ -18,9 +18,15 @@ x64 + + + + + + 15.0 - {2873A2D7-5112-4941-83AA-F98751BE5289} + {5157DB15-C255-4E47-9FB1-AF388437F90F} Win32Proj FunctionInterruptSimulation 10.0.15063.0 @@ -89,6 +95,7 @@ Disabled WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true + ../../../src Console @@ -97,12 +104,12 @@ - NotUsing + Use Level3 Disabled _DEBUG;_CONSOLE;%(PreprocessorDefinitions) true - ../../../src;%(AdditionalIncludeDirectories) + ../../../src Console @@ -143,12 +150,6 @@ true - - - - - - diff --git a/examples/FunctionInterruptSimulation/vs2017/FunctionInterruptSimulation.vcxproj.filters b/examples/FunctionInterruptSimulation/vs2017/FunctionInterruptSimulation.vcxproj.filters index 91680b76..9901d8b7 100644 --- a/examples/FunctionInterruptSimulation/vs2017/FunctionInterruptSimulation.vcxproj.filters +++ b/examples/FunctionInterruptSimulation/vs2017/FunctionInterruptSimulation.vcxproj.filters @@ -20,7 +20,7 @@ - + Header Files diff --git a/examples/QueuedMessageRouter/QueuedMessageRouter.cpp b/examples/QueuedMessageRouter/QueuedMessageRouter.cpp new file mode 100644 index 00000000..c66d389e --- /dev/null +++ b/examples/QueuedMessageRouter/QueuedMessageRouter.cpp @@ -0,0 +1,164 @@ + +#include "queue.h" +#include "message_router.h" + +#include +#include + +//***************************************************************************** +// The messages. +//***************************************************************************** +struct Message1 : public etl::message<1> +{ + Message1(int i_) + : i(i_) + { + } + + int i; +}; + +struct Message2 : public etl::message<2> +{ + Message2(double d_) + : d(d_) + { + } + + double d; +}; + +struct Message3 : public etl::message<3> +{ + Message3(const std::string& s_) + : s(s_) + { + } + + std::string s; +}; + +struct Message4 : public etl::message<4> +{ +}; + +//***************************************************************************** +// The message router. +// Handles message types Message1, Message2, Message3. +//***************************************************************************** +class Router : public etl::message_router +{ +public: + + typedef etl::message_router Base_t; + + using Base_t::receive; + + //*************************************************************************** + Router() + : message_router(1) + { + } + + //*************************************************************************** + // Override the base class's receive function. + void receive(etl::imessage_router& sender_, const etl::imessage& msg_) + { + if (accepts(msg_)) + { + // Place in queue. + queue.emplace(&sender_, msg_); + + std::cout << "Queueing message " << int(msg_.message_id) << std::endl; + } + else + { + std::cout << "Ignoring message " << int(msg_.message_id) << std::endl; + } + } + + //*************************************************************************** + void process_queue() + { + while (!queue.empty()) + { + Item& item = queue.front(); + etl::imessage& msg = item.packet.get(); + etl::imessage_router& sender = *item.sender; + std::cout << "Processing message " << int(msg.message_id) << std::endl; + + // Call the base class's receive function. + // This will route it to the correct on_receive handler. + Base_t::receive(sender, msg); + + queue.pop(); + } + } + + //*************************************************************************** + void on_receive(etl::imessage_router& sender, const Message1& msg) + { + std::cout << " Received message " << int(msg.message_id) << " : '" << msg.i << "'" << std::endl; + } + + //*************************************************************************** + void on_receive(etl::imessage_router& sender, const Message2& msg) + { + std::cout << " Received message " << int(msg.message_id) << " : '" << msg.d << "'" << std::endl; + } + + //*************************************************************************** + void on_receive(etl::imessage_router& sender, const Message3& msg) + { + std::cout << " Received message " << int(msg.message_id) << " : '" << msg.s << "'" << std::endl; + } + + //*************************************************************************** + void on_receive_unknown(etl::imessage_router& sender, const etl::imessage& msg) + { + std::cout << " Received unknown message " << int(msg.message_id) << std::endl; + } + +private: + + struct Item + { + Item(etl::imessage_router* sender_, const etl::imessage& msg_) + : sender(sender_), + packet(msg_) + { + } + + etl::imessage_router* sender; + message_packet packet; + }; + + etl::queue queue; +}; + +//***************************************************************************** +// The test application. +//***************************************************************************** +int main() +{ + Router router; + + Message1 m1(1); + Message2 m2(1.2); + Message3 m3("Hello"); + + etl::send_message(router, m1); + etl::send_message(router, Message1(2)); + etl::send_message(router, m2); + etl::send_message(router, Message2(3.4)); + etl::send_message(router, m3); + etl::send_message(router, Message3("World")); + etl::send_message(router, Message4()); + + std::cout << std::endl; + + router.process_queue(); + + return 0; +} + diff --git a/examples/QueuedMessageRouter/vs2017/.vs/QueuedMessageRouter.sqlite b/examples/QueuedMessageRouter/vs2017/.vs/QueuedMessageRouter.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..2572d76ef2a2e251849d46ab244b5419711b8b18 GIT binary patch literal 278528 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 T1J@#W6U3GnI`Pn%931~YCDseX literal 0 HcmV?d00001 diff --git a/examples/QueuedMessageRouter/vs2017/QueuedMessageRouter.sln b/examples/QueuedMessageRouter/vs2017/QueuedMessageRouter.sln new file mode 100644 index 00000000..95115bc1 --- /dev/null +++ b/examples/QueuedMessageRouter/vs2017/QueuedMessageRouter.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26730.10 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QueuedMessageRouter", "QueuedMessageRouter.vcxproj", "{2BB47D48-5EFC-4C38-B2BE-002172F00E3B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2BB47D48-5EFC-4C38-B2BE-002172F00E3B}.Debug|x64.ActiveCfg = Debug|x64 + {2BB47D48-5EFC-4C38-B2BE-002172F00E3B}.Debug|x64.Build.0 = Debug|x64 + {2BB47D48-5EFC-4C38-B2BE-002172F00E3B}.Debug|x86.ActiveCfg = Debug|Win32 + {2BB47D48-5EFC-4C38-B2BE-002172F00E3B}.Debug|x86.Build.0 = Debug|Win32 + {2BB47D48-5EFC-4C38-B2BE-002172F00E3B}.Release|x64.ActiveCfg = Release|x64 + {2BB47D48-5EFC-4C38-B2BE-002172F00E3B}.Release|x64.Build.0 = Release|x64 + {2BB47D48-5EFC-4C38-B2BE-002172F00E3B}.Release|x86.ActiveCfg = Release|Win32 + {2BB47D48-5EFC-4C38-B2BE-002172F00E3B}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {98B87835-6672-45D4-95BF-CC5C22C87D2C} + EndGlobalSection +EndGlobal diff --git a/examples/QueuedMessageRouter/vs2017/QueuedMessageRouter.vcxproj b/examples/QueuedMessageRouter/vs2017/QueuedMessageRouter.vcxproj new file mode 100644 index 00000000..98bf7e9e --- /dev/null +++ b/examples/QueuedMessageRouter/vs2017/QueuedMessageRouter.vcxproj @@ -0,0 +1,157 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 15.0 + {2BB47D48-5EFC-4C38-B2BE-002172F00E3B} + Win32Proj + QueuedMessageRouter + 10.0.15063.0 + + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + NotUsing + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + ../../../src;../vs2017 + + + + Console + true + + + + + Use + Level3 + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Use + Level3 + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + + + Console + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/QueuedMessageRouter/vs2017/QueuedMessageRouter.vcxproj.filters b/examples/QueuedMessageRouter/vs2017/QueuedMessageRouter.vcxproj.filters new file mode 100644 index 00000000..ef62273b --- /dev/null +++ b/examples/QueuedMessageRouter/vs2017/QueuedMessageRouter.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + + + Header Files + + + \ No newline at end of file diff --git a/examples/QueuedMessageRouter/vs2017/etl_profile.h b/examples/QueuedMessageRouter/vs2017/etl_profile.h new file mode 100644 index 00000000..a321fa85 --- /dev/null +++ b/examples/QueuedMessageRouter/vs2017/etl_profile.h @@ -0,0 +1,48 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_PROFILE_H__ +#define __ETL_PROFILE_H__ + +#define ETL_THROW_EXCEPTIONS +#define ETL_VERBOSE_ERRORS +#define ETL_CHECK_PUSH_POP +#define ETL_ISTRING_REPAIR_ENABLE +#define ETL_IVECTOR_REPAIR_ENABLE +#define ETL_IDEQUE_REPAIR_ENABLE +#define ETL_IN_UNIT_TEST + +#ifdef _MSC_VER + #include "profiles/msvc_x86.h" +#else + #include "profiles/gcc_windows_x86.h" +#endif + +#endif diff --git a/library.properties b/library.properties index 2e0be5a4..0d293558 100644 --- a/library.properties +++ b/library.properties @@ -1,9 +1,9 @@ name=Embedded Template Library -version=9.6.1 +version=10.0.0 author= John Wellbelove maintainer=John Wellbelove sentence=A C++ template library tailored for embedded systems. -paragraph=Requires some support from STL. See http://andybrown.me.uk/2011/01/15/the-standard-template-library-stl-for-avr-with-c-streams/ +paragraph=Requires some support from STL. See http://andybrown.me.uk/2011/01/15/the-standard-template-library-stl-for-avr-with-c-streams/ or https://github.com/mike-matera/ArduinoSTL.git for Arduino. category=Other -url=http://www.etlcpp.com/ +url=https://www.etlcpp.com/ architectures=* diff --git a/src/algorithm.h b/src/algorithm.h index 3f2b0575..ba94a610 100644 --- a/src/algorithm.h +++ b/src/algorithm.h @@ -43,6 +43,7 @@ SOFTWARE. #include #include +#include "platform.h" #include "iterator.h" #include "type_traits.h" diff --git a/src/alignment.h b/src/alignment.h index eac7fe2d..f54ee145 100644 --- a/src/alignment.h +++ b/src/alignment.h @@ -33,6 +33,7 @@ SOFTWARE. #include +#include "platform.h" #include "type_traits.h" #include "static_assert.h" diff --git a/src/array.h b/src/array.h index 7505c1e0..22d7a5c9 100644 --- a/src/array.h +++ b/src/array.h @@ -36,6 +36,7 @@ SOFTWARE. #include #include +#include "platform.h" #include "exception.h" #include "type_traits.h" #include "parameter_type.h" diff --git a/src/atomic.h b/src/atomic.h new file mode 100644 index 00000000..652f815d --- /dev/null +++ b/src/atomic.h @@ -0,0 +1,51 @@ +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_ATOMIC__ +#define __ETL_ATOMIC__ + +#include "platform.h" + +#if ETL_ATOMIC_SUPPORTED == 1 + #include + + namespace etl + { + typedef std::atomic atomic_uint32_t; + } +#elif defined(ETL_COMPILER_ARM) + #include "atomic/atomic_arm.h" +#elif defined(ETL_COMPILER_GCC) + #include "atomic/atomic_gcc.h" +#elif defined(ETL_COMPILER_MSVC) + #include "atomic/atomic_windows.h" +#else + #warning NO ATOMIC SUPPORT DEFINED! +#endif + +#endif diff --git a/src/atomic/atomic_arm.h b/src/atomic/atomic_arm.h new file mode 100644 index 00000000..fb776409 --- /dev/null +++ b/src/atomic/atomic_arm.h @@ -0,0 +1,613 @@ +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_ATOMIC_ARM__ +#define __ETL_ATOMIC_ARM__ + +#include "../platform.h" +#include "../type_traits.h" +#include "../char_traits.h" +#include "../static_assert.h" +#include "../nullptr.h" + +#include + +namespace etl +{ + //*************************************************************************** + // Atomic type for pre C++11 GCC compilers that support the builtin 'fetch' functions. + // Only integral and pointer types are supported. + //*************************************************************************** + template + class atomic + { + public: + + STATIC_ASSERT(etl::is_integral::value, "Only integral types are supported"); + + atomic() + : value(0) + { + } + + atomic(T v) + : value(v) + { + } + + // Assignment + T operator =(T v) + { + __sync_lock_test_and_set(&value, v); + + return v; + } + + T operator =(T v) volatile + { + __sync_lock_test_and_set(&value, v); + + return v; + } + + // Pre-increment + T operator ++() + { + return fetch_add(1) + 1; + } + + T operator ++() volatile + { + return fetch_add(1) + 1; + } + + // Post-increment + T operator ++(int) + { + return fetch_add(1); + } + + T operator ++(int) volatile + { + return fetch_add(1); + } + + // Pre-decrement + T operator --() + { + return fetch_sub(1) + 1; + } + + T operator --() volatile + { + return fetch_sub(1) + 1; + } + + // Post-decrement + T operator --(int) + { + return fetch_sub(1); + } + + T operator --(int) volatile + { + return fetch_sub(1); + } + + // Add + T operator +=(T v) + { + return fetch_add(v) + v; + } + + T operator +=(T v) volatile + { + return fetch_add(v) + v; + } + + // Subtract + T operator -=(T v) + { + return fetch_sub(v) - v; + } + + T operator -=(T v) volatile + { + return fetch_sub(v) - v; + } + + // And + T operator &=(T v) + { + return fetch_and(v) & v; + } + + T operator &=(T v) volatile + { + return fetch_and(v) & v; + } + + // Or + T operator |=(T v) + { + return fetch_or(v) | v; + } + + T operator |=(T v) volatile + { + return fetch_or(v) | v; + } + + // Exclusive or + T operator ^=(T v) + { + return fetch_xor(v) ^ v; + } + + T operator ^=(T v) volatile + { + return fetch_xor(v) ^ v; + } + + // Conversion operator + operator T () const + { + return __sync_fetch_and_add(const_cast(&value), 0); + } + + operator T() volatile const + { + return __sync_fetch_and_add(const_cast(&value), 0); + } + + // Is lock free? + bool is_lock_free() const + { + return true; + } + + bool is_lock_free() const volatile + { + return true; + } + + // Store + void store(T v) + { + __sync_lock_test_and_set(&value, v); + } + + void store(T v) volatile + { + __sync_lock_test_and_set(&value, v); + } + + // Load + T load() + { + return __sync_fetch_and_add(&value, 0); + } + + T load() volatile + { + return __sync_fetch_and_add(&value, 0); + } + + // Fetch add + T fetch_add(T v) + { + return __sync_fetch_and_add(&value, v); + } + + T fetch_add(T v) volatile + { + return __sync_fetch_and_add(&value, v); + } + + // Fetch subtract + T fetch_sub(T v) + { + return __sync_fetch_and_sub(&value, v); + } + + T fetch_sub(T v) volatile + { + return __sync_fetch_and_sub(&value, v); + } + + // Fetch or + T fetch_or(T v) + { + return __sync_fetch_and_or(&value, v); + } + + T fetch_or(T v) volatile + { + return __sync_fetch_and_or(&value, v); + } + + // Fetch and + T fetch_and(T v) + { + return __sync_fetch_and_and(&value, v); + } + + T fetch_and(T v) volatile + { + return __sync_fetch_and_and(&value, v); + } + + // Fetch exclusive or + T fetch_xor(T v) + { + return __sync_fetch_and_xor(&value, v); + } + + T fetch_xor(T v) volatile + { + return __sync_fetch_and_xor(&value, v); + } + + // Exchange + T exchange(T v) + { + return __sync_lock_test_and_set(&value, v); + } + + T exchange(T v) volatile + { + return __sync_lock_test_and_set(&value, v); + } + + // Compare exchange weak + bool compare_exchange_weak(T& expected, T desired) + { + return __sync_bool_compare_and_swap(&value, expected, desired); + } + + bool compare_exchange_weak(T& expected, T desired) volatile + { + return __sync_bool_compare_and_swap(&value, expected, desired); + } + + // Compare exchange strong + bool compare_exchange_strong(T& expected, T desired) + { + T old = expected; + + while (!compare_exchange_weak(old, desired)) + { + if (memcmp(&old, &expected, sizeof(T))) + { + expected = old; + return false; + } + } + + return true; + } + + bool compare_exchange_strong(T& expected, T desired) volatile + { + T old = expected; + + while (!compare_exchange_weak(old, desired)) + { + if (memcmp(&old, &expected, sizeof(T))) + { + expected = old; + return false; + } + } + + return true; + } + + private: + + atomic& operator =(const atomic&); + atomic& operator =(const atomic&) volatile; + + T value; + }; + + //*************************************************************************** + // Specialisation for pointers. + //*************************************************************************** + template + class atomic + { + public: + + atomic() + : value(nullptr) + { + } + + atomic(T v) + : value(v) + { + } + + // Assignment + T operator =(T* v) + { + __sync_lock_test_and_set(&value, v); + + return v; + } + + T operator =(T* v) volatile + { + __sync_lock_test_and_set(&value, v); + + return v; + } + + // Pre-increment + T operator ++() + { + return fetch_add(1) + 1; + } + + T operator ++() volatile + { + return fetch_add(1) + 1; + } + + // Post-increment + T operator ++(int) + { + return fetch_add(1); + } + + T operator ++(int) volatile + { + return fetch_add(1); + } + + // Pre-decrement + T operator --() + { + return fetch_sub(1) + 1; + } + + T operator --() volatile + { + return fetch_sub(1) + 1; + } + + // Post-decrement + T operator --(int) + { + return fetch_sub(1); + } + + T operator --(int) volatile + { + return fetch_sub(1); + } + + // Add + T* operator +=(std::ptrdiff_t v) + { + return fetch_add(v) + v; + } + + T* operator +=(std::ptrdiff_t v) volatile + { + return fetch_add(v) + v; + } + + // Subtract + T* operator -=(std::ptrdiff_t v) + { + return fetch_sub(v) - v; + } + + T* operator -=(std::ptrdiff_t v) volatile + { + return fetch_sub(v) - v; + } + + // Conversion operator + operator T () const + { + return __sync_fetch_and_add(const_cast(&value), 0); + } + + operator T() volatile const + { + return __sync_fetch_and_add(const_cast(&value), 0); + } + + // Is lock free? + bool is_lock_free() const + { + return true; + } + + bool is_lock_free() const volatile + { + return true; + } + + // Store + void store(T v) + { + __sync_lock_test_and_set(&value, v); + } + + void store(T v) volatile + { + __sync_lock_test_and_set(&value, v); + } + + // Load + T load() + { + return __sync_fetch_and_add(&value, 0); + } + + T load() volatile + { + return __sync_fetch_and_add(&value, 0); + } + + // Fetch add + T* fetch_add(std::ptrdiff_t v) + { + return __sync_fetch_and_add(&value, v); + } + + T* fetch_add(std::ptrdiff_t v) volatile + { + return __sync_fetch_and_add(&value, v); + } + + // Fetch subtract + T* fetch_sub(std::ptrdiff_t v) + { + return __sync_fetch_and_sub(&value, v); + } + + T* fetch_sub(std::ptrdiff_t v) volatile + { + return __sync_fetch_and_sub(&value, v); + } + + // Exchange + T exchange(T v) + { + return __sync_lock_test_and_set(&value, v); + } + + T exchange(T v) volatile + { + return __sync_lock_test_and_set(&value, v); + } + + // Compare exchange weak + bool compare_exchange_weak(T& expected, T desired) + { + return __sync_bool_compare_and_swap(&value, expected, desired); + } + + bool compare_exchange_weak(T& expected, T desired) volatile + { + return __sync_bool_compare_and_swap(&value, expected, desired); + } + + // Compare exchange strong + bool compare_exchange_strong(T& expected, T desired) + { + T old = expected; + + while (!compare_exchange_weak(old, desired)) + { + if (memcmp(&old, &expected, sizeof(T))) + { + expected = old; + return false; + } + } + + return true; + } + + bool compare_exchange_strong(T& expected, T desired) volatile + { + T old = expected; + + while (!compare_exchange_weak(old, desired)) + { + if (memcmp(&old, &expected, sizeof(T))) + { + expected = old; + return false; + } + } + + return true; + } + + private: + + atomic& operator =(const atomic&); + atomic& operator =(const atomic&) volatile; + + T* value; + }; + + typedef etl::atomic atomic_char; + typedef etl::atomic atomic_schar; + typedef etl::atomic atomic_uchar; + typedef etl::atomic atomic_short; + typedef etl::atomic atomic_ushort; + typedef etl::atomic atomic_int; + typedef etl::atomic atomic_uint; + typedef etl::atomic atomic_long; + typedef etl::atomic atomic_ulong; + typedef etl::atomic atomic_llong; + typedef etl::atomic atomic_ullong; + typedef etl::atomic atomic_wchar_t; + typedef etl::atomic atomic_char16_t; + typedef etl::atomic atomic_char32_t; + typedef etl::atomic atomic_uint8_t; + typedef etl::atomic atomic_int8_t; + typedef etl::atomic atomic_uint16_t; + typedef etl::atomic atomic_int16_t; + typedef etl::atomic atomic_uint32_t; + typedef etl::atomic atomic_int32_t; + typedef etl::atomic atomic_uint64_t; + typedef etl::atomic atomic_int64_t; + typedef etl::atomic atomic_int_least8_t; + typedef etl::atomic atomic_uint_least8_t; + typedef etl::atomic atomic_int_least16_t; + typedef etl::atomic atomic_uint_least16_t; + typedef etl::atomic atomic_int_least32_t; + typedef etl::atomic atomic_uint_least32_t; + typedef etl::atomic atomic_int_least64_t; + typedef etl::atomic atomic_uint_least64_t; + typedef etl::atomic atomic_int_fast8_t; + typedef etl::atomic atomic_uint_fast8_t; + typedef etl::atomic atomic_int_fast16_t; + typedef etl::atomic atomic_uint_fast16_t; + typedef etl::atomic atomic_int_fast32_t; + typedef etl::atomic atomic_uint_fast32_t; + typedef etl::atomic atomic_int_fast64_t; + typedef etl::atomic atomic_uint_fast64_t; + typedef etl::atomic atomic_intptr_t; + typedef etl::atomic atomic_uintptr_t; + typedef etl::atomic atomic_size_t; + typedef etl::atomic atomic_ptrdiff_t; + typedef etl::atomic atomic_intmax_t; + typedef etl::atomic atomic_uintmax_t; +} + +#endif diff --git a/src/atomic/atomic_gcc.h b/src/atomic/atomic_gcc.h new file mode 100644 index 00000000..f2e6c402 --- /dev/null +++ b/src/atomic/atomic_gcc.h @@ -0,0 +1,613 @@ +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_ATOMIC_GCC__ +#define __ETL_ATOMIC_GCC__ + +#include "../platform.h" +#include "../type_traits.h" +#include "../char_traits.h" +#include "../static_assert.h" +#include "../nullptr.h" + +#include + +namespace etl +{ + //*************************************************************************** + // Atomic type for pre C++11 GCC compilers that support the builtin 'fetch' functions. + // Only integral and pointer types are supported. + //*************************************************************************** + template + class atomic + { + public: + + STATIC_ASSERT(etl::is_integral::value, "Only integral types are supported"); + + atomic() + : value(0) + { + } + + atomic(T v) + : value(v) + { + } + + // Assignment + T operator =(T v) + { + __sync_lock_test_and_set(&value, v); + + return v; + } + + T operator =(T v) volatile + { + __sync_lock_test_and_set(&value, v); + + return v; + } + + // Pre-increment + T operator ++() + { + return fetch_add(1) + 1; + } + + T operator ++() volatile + { + return fetch_add(1) + 1; + } + + // Post-increment + T operator ++(int) + { + return fetch_add(1); + } + + T operator ++(int) volatile + { + return fetch_add(1); + } + + // Pre-decrement + T operator --() + { + return fetch_sub(1) + 1; + } + + T operator --() volatile + { + return fetch_sub(1) + 1; + } + + // Post-decrement + T operator --(int) + { + return fetch_sub(1); + } + + T operator --(int) volatile + { + return fetch_sub(1); + } + + // Add + T operator +=(T v) + { + return fetch_add(v) + v; + } + + T operator +=(T v) volatile + { + return fetch_add(v) + v; + } + + // Subtract + T operator -=(T v) + { + return fetch_sub(v) - v; + } + + T operator -=(T v) volatile + { + return fetch_sub(v) - v; + } + + // And + T operator &=(T v) + { + return fetch_and(v) & v; + } + + T operator &=(T v) volatile + { + return fetch_and(v) & v; + } + + // Or + T operator |=(T v) + { + return fetch_or(v) | v; + } + + T operator |=(T v) volatile + { + return fetch_or(v) | v; + } + + // Exclusive or + T operator ^=(T v) + { + return fetch_xor(v) ^ v; + } + + T operator ^=(T v) volatile + { + return fetch_xor(v) ^ v; + } + + // Conversion operator + operator T () const + { + return __sync_fetch_and_add(const_cast(&value), 0); + } + + operator T() volatile const + { + return __sync_fetch_and_add(const_cast(&value), 0); + } + + // Is lock free? + bool is_lock_free() const + { + return true; + } + + bool is_lock_free() const volatile + { + return true; + } + + // Store + void store(T v) + { + __sync_lock_test_and_set(&value, v); + } + + void store(T v) volatile + { + __sync_lock_test_and_set(&value, v); + } + + // Load + T load() + { + return __sync_fetch_and_add(&value, 0); + } + + T load() volatile + { + return __sync_fetch_and_add(&value, 0); + } + + // Fetch add + T fetch_add(T v) + { + return __sync_fetch_and_add(&value, v); + } + + T fetch_add(T v) volatile + { + return __sync_fetch_and_add(&value, v); + } + + // Fetch subtract + T fetch_sub(T v) + { + return __sync_fetch_and_sub(&value, v); + } + + T fetch_sub(T v) volatile + { + return __sync_fetch_and_sub(&value, v); + } + + // Fetch or + T fetch_or(T v) + { + return __sync_fetch_and_or(&value, v); + } + + T fetch_or(T v) volatile + { + return __sync_fetch_and_or(&value, v); + } + + // Fetch and + T fetch_and(T v) + { + return __sync_fetch_and_and(&value, v); + } + + T fetch_and(T v) volatile + { + return __sync_fetch_and_and(&value, v); + } + + // Fetch exclusive or + T fetch_xor(T v) + { + return __sync_fetch_and_xor(&value, v); + } + + T fetch_xor(T v) volatile + { + return __sync_fetch_and_xor(&value, v); + } + + // Exchange + T exchange(T v) + { + return __sync_lock_test_and_set(&value, v); + } + + T exchange(T v) volatile + { + return __sync_lock_test_and_set(&value, v); + } + + // Compare exchange weak + bool compare_exchange_weak(T& expected, T desired) + { + return __sync_bool_compare_and_swap(&value, expected, desired); + } + + bool compare_exchange_weak(T& expected, T desired) volatile + { + return __sync_bool_compare_and_swap(&value, expected, desired); + } + + // Compare exchange strong + bool compare_exchange_strong(T& expected, T desired) + { + T old = expected; + + while (!compare_exchange_weak(old, desired)) + { + if (memcmp(&old, &expected, sizeof(T))) + { + expected = old; + return false; + } + } + + return true; + } + + bool compare_exchange_strong(T& expected, T desired) volatile + { + T old = expected; + + while (!compare_exchange_weak(old, desired)) + { + if (memcmp(&old, &expected, sizeof(T))) + { + expected = old; + return false; + } + } + + return true; + } + + private: + + atomic& operator =(const atomic&); + atomic& operator =(const atomic&) volatile; + + T value; + }; + + //*************************************************************************** + // Specialisation for pointers. + //*************************************************************************** + template + class atomic + { + public: + + atomic() + : value(nullptr) + { + } + + atomic(T v) + : value(v) + { + } + + // Assignment + T operator =(T* v) + { + __sync_lock_test_and_set(&value, v); + + return v; + } + + T operator =(T* v) volatile + { + __sync_lock_test_and_set(&value, v); + + return v; + } + + // Pre-increment + T operator ++() + { + return fetch_add(1) + 1; + } + + T operator ++() volatile + { + return fetch_add(1) + 1; + } + + // Post-increment + T operator ++(int) + { + return fetch_add(1); + } + + T operator ++(int) volatile + { + return fetch_add(1); + } + + // Pre-decrement + T operator --() + { + return fetch_sub(1) + 1; + } + + T operator --() volatile + { + return fetch_sub(1) + 1; + } + + // Post-decrement + T operator --(int) + { + return fetch_sub(1); + } + + T operator --(int) volatile + { + return fetch_sub(1); + } + + // Add + T* operator +=(std::ptrdiff_t v) + { + return fetch_add(v) + v; + } + + T* operator +=(std::ptrdiff_t v) volatile + { + return fetch_add(v) + v; + } + + // Subtract + T* operator -=(std::ptrdiff_t v) + { + return fetch_sub(v) - v; + } + + T* operator -=(std::ptrdiff_t v) volatile + { + return fetch_sub(v) - v; + } + + // Conversion operator + operator T () const + { + return __sync_fetch_and_add(const_cast(&value), 0); + } + + operator T() volatile const + { + return __sync_fetch_and_add(const_cast(&value), 0); + } + + // Is lock free? + bool is_lock_free() const + { + return true; + } + + bool is_lock_free() const volatile + { + return true; + } + + // Store + void store(T v) + { + __sync_lock_test_and_set(&value, v); + } + + void store(T v) volatile + { + __sync_lock_test_and_set(&value, v); + } + + // Load + T load() + { + return __sync_fetch_and_add(&value, 0); + } + + T load() volatile + { + return __sync_fetch_and_add(&value, 0); + } + + // Fetch add + T* fetch_add(std::ptrdiff_t v) + { + return __sync_fetch_and_add(&value, v); + } + + T* fetch_add(std::ptrdiff_t v) volatile + { + return __sync_fetch_and_add(&value, v); + } + + // Fetch subtract + T* fetch_sub(std::ptrdiff_t v) + { + return __sync_fetch_and_sub(&value, v); + } + + T* fetch_sub(std::ptrdiff_t v) volatile + { + return __sync_fetch_and_sub(&value, v); + } + + // Exchange + T exchange(T v) + { + return __sync_lock_test_and_set(&value, v); + } + + T exchange(T v) volatile + { + return __sync_lock_test_and_set(&value, v); + } + + // Compare exchange weak + bool compare_exchange_weak(T& expected, T desired) + { + return __sync_bool_compare_and_swap(&value, expected, desired); + } + + bool compare_exchange_weak(T& expected, T desired) volatile + { + return __sync_bool_compare_and_swap(&value, expected, desired); + } + + // Compare exchange strong + bool compare_exchange_strong(T& expected, T desired) + { + T old = expected; + + while (!compare_exchange_weak(old, desired)) + { + if (memcmp(&old, &expected, sizeof(T))) + { + expected = old; + return false; + } + } + + return true; + } + + bool compare_exchange_strong(T& expected, T desired) volatile + { + T old = expected; + + while (!compare_exchange_weak(old, desired)) + { + if (memcmp(&old, &expected, sizeof(T))) + { + expected = old; + return false; + } + } + + return true; + } + + private: + + atomic& operator =(const atomic&); + atomic& operator =(const atomic&) volatile; + + T* value; + }; + + typedef etl::atomic atomic_char; + typedef etl::atomic atomic_schar; + typedef etl::atomic atomic_uchar; + typedef etl::atomic atomic_short; + typedef etl::atomic atomic_ushort; + typedef etl::atomic atomic_int; + typedef etl::atomic atomic_uint; + typedef etl::atomic atomic_long; + typedef etl::atomic atomic_ulong; + typedef etl::atomic atomic_llong; + typedef etl::atomic atomic_ullong; + typedef etl::atomic atomic_wchar_t; + typedef etl::atomic atomic_char16_t; + typedef etl::atomic atomic_char32_t; + typedef etl::atomic atomic_uint8_t; + typedef etl::atomic atomic_int8_t; + typedef etl::atomic atomic_uint16_t; + typedef etl::atomic atomic_int16_t; + typedef etl::atomic atomic_uint32_t; + typedef etl::atomic atomic_int32_t; + typedef etl::atomic atomic_uint64_t; + typedef etl::atomic atomic_int64_t; + typedef etl::atomic atomic_int_least8_t; + typedef etl::atomic atomic_uint_least8_t; + typedef etl::atomic atomic_int_least16_t; + typedef etl::atomic atomic_uint_least16_t; + typedef etl::atomic atomic_int_least32_t; + typedef etl::atomic atomic_uint_least32_t; + typedef etl::atomic atomic_int_least64_t; + typedef etl::atomic atomic_uint_least64_t; + typedef etl::atomic atomic_int_fast8_t; + typedef etl::atomic atomic_uint_fast8_t; + typedef etl::atomic atomic_int_fast16_t; + typedef etl::atomic atomic_uint_fast16_t; + typedef etl::atomic atomic_int_fast32_t; + typedef etl::atomic atomic_uint_fast32_t; + typedef etl::atomic atomic_int_fast64_t; + typedef etl::atomic atomic_uint_fast64_t; + typedef etl::atomic atomic_intptr_t; + typedef etl::atomic atomic_uintptr_t; + typedef etl::atomic atomic_size_t; + typedef etl::atomic atomic_ptrdiff_t; + typedef etl::atomic atomic_intmax_t; + typedef etl::atomic atomic_uintmax_t; +} + +#endif diff --git a/src/atomic/atomic_windows.h b/src/atomic/atomic_windows.h new file mode 100644 index 00000000..9b7a2ed3 --- /dev/null +++ b/src/atomic/atomic_windows.h @@ -0,0 +1,104 @@ +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_ATOMIC_WINDOWS__ +#define __ETL_ATOMIC_WINDOWS__ + +#include "../platform.h" + +#include +#include + +namespace etl +{ + class atomic_uint32_t + { + public: + + atomic_uint32_t() + { + InterlockedExchange(&value, 0); + } + + atomic_uint32_t(uint32_t v) + { + InterlockedExchange(&value, v); + } + + atomic_uint32_t& operator =(uint32_t v) + { + InterlockedExchange(&value, v); + + return *this; + } + + atomic_uint32_t& operator ++() + { + InterlockedIncrement(&value); + + return *this; + } + + volatile atomic_uint32_t& operator ++() volatile + { + InterlockedIncrement(&value); + + return *this; + } + + atomic_uint32_t& operator --() + { + InterlockedDecrement(&value); + + return *this; + } + + volatile atomic_uint32_t& operator --() volatile + { + InterlockedDecrement(&value); + + return *this; + } + + operator uint32_t () const + { + return InterlockedAdd((volatile long*)&value, 0); + } + + operator uint32_t() volatile const + { + return InterlockedAdd((volatile long*)&value, 0); + } + + private: + + uint32_t value; + }; +} + +#endif diff --git a/src/binary.h b/src/binary.h index e5f6aa5d..1717168d 100644 --- a/src/binary.h +++ b/src/binary.h @@ -38,6 +38,7 @@ SOFTWARE. #include #include +#include "platform.h" #include "type_traits.h" #include "integral_limits.h" #include "static_assert.h" diff --git a/src/bloom_filter.h b/src/bloom_filter.h index 3407d6e6..cb2cb48a 100644 --- a/src/bloom_filter.h +++ b/src/bloom_filter.h @@ -31,6 +31,7 @@ SOFTWARE. #ifndef __ETL_BLOOM_FILTER__ #define __ETL_BLOOM_FILTER__ +#include "platform.h" #include "parameter_type.h" #include "bitset.h" #include "type_traits.h" diff --git a/src/callback_timer.h b/src/callback_timer.h new file mode 100644 index 00000000..545c414a --- /dev/null +++ b/src/callback_timer.h @@ -0,0 +1,684 @@ +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_CALLBACK_TIMER__ +#define __ETL_CALLBACK_TIMER__ + +#include +#include + +#include "platform.h" +#include "nullptr.h" +#include "function.h" +#include "static_assert.h" +#include "timer.h" +#include "atomic.h" + +#undef ETL_FILE +#define ETL_FILE "42" + +namespace etl +{ + //************************************************************************* + /// The configuration of a timer. + struct callback_timer_data + { + //******************************************* + callback_timer_data() + : p_callback(nullptr), + period(0), + delta(etl::timer::state::INACTIVE), + id(etl::timer::id::NO_TIMER), + previous(etl::timer::id::NO_TIMER), + next(etl::timer::id::NO_TIMER), + repeating(true), + is_c_callback(true) + { + } + + //******************************************* + /// C function callback + //******************************************* + callback_timer_data(etl::timer::id::type id_, + void (*p_callback_)(), + uint32_t period_, + bool repeating_) + : p_callback(reinterpret_cast(p_callback_)), + period(period_), + delta(etl::timer::state::INACTIVE), + id(id_), + previous(etl::timer::id::NO_TIMER), + next(etl::timer::id::NO_TIMER), + repeating(repeating_), + is_c_callback(true) + { + } + + //******************************************* + /// ETL function callback + //******************************************* + callback_timer_data(etl::timer::id::type id_, + etl::ifunction& callback_, + uint32_t period_, + bool repeating_) + : p_callback(reinterpret_cast(&callback_)), + period(period_), + delta(etl::timer::state::INACTIVE), + id(id_), + previous(etl::timer::id::NO_TIMER), + next(etl::timer::id::NO_TIMER), + repeating(repeating_), + is_c_callback(false) + { + } + + //******************************************* + /// Returns true if the timer is active. + //******************************************* + bool is_active() const + { + return delta != etl::timer::state::INACTIVE; + } + + //******************************************* + /// Sets the timer to the inactive state. + //******************************************* + void set_inactive() + { + delta = etl::timer::state::INACTIVE; + } + + void* p_callback; + uint32_t period; + uint32_t delta; + etl::timer::id::type id; + uint_least8_t previous; + uint_least8_t next; + bool repeating; + bool is_c_callback; + + private: + + // Disabled. + callback_timer_data(const callback_timer_data& other); + callback_timer_data& operator =(const callback_timer_data& other); + }; + + namespace __private_callback_timer__ + { + //************************************************************************* + /// A specialised intrusive linked list for timer data. + //************************************************************************* + class list + { + public: + + //******************************* + list(etl::callback_timer_data* ptimers_) + : head(etl::timer::id::NO_TIMER), + tail(etl::timer::id::NO_TIMER), + current(etl::timer::id::NO_TIMER), + ptimers(ptimers_) + { + } + + //******************************* + bool empty() const + { + return head == etl::timer::id::NO_TIMER; + } + + //******************************* + // Inserts the timer at the correct delta position + //******************************* + void insert(etl::timer::id::type id_) + { + etl::callback_timer_data& timer = ptimers[id_]; + + if (head == etl::timer::id::NO_TIMER) + { + // No entries yet. + head = id_; + tail = id_; + timer.previous = etl::timer::id::NO_TIMER; + timer.next = etl::timer::id::NO_TIMER; + } + else + { + // We already have entries. + etl::timer::id::type test_id = begin(); + + while (test_id != etl::timer::id::NO_TIMER) + { + etl::callback_timer_data& test = ptimers[test_id]; + + // Find the correct place to insert. + if (timer.delta <= test.delta) + { + if (test.id == head) + { + head = timer.id; + } + + // Insert before test. + timer.previous = test.previous; + test.previous = timer.id; + timer.next = test.id; + + // Adjust the next delta to compensate. + test.delta -= timer.delta; + + if (timer.previous != etl::timer::id::NO_TIMER) + { + ptimers[timer.previous].next = timer.id; + } + break; + } + else + { + timer.delta -= test.delta; + } + + test_id = next(test_id); + } + + // Reached the end? + if (test_id == etl::timer::id::NO_TIMER) + { + // Tag on to the tail. + ptimers[tail].next = timer.id; + timer.previous = tail; + timer.next = etl::timer::id::NO_TIMER; + tail = timer.id; + } + } + } + + //******************************* + void remove(etl::timer::id::type id_, bool has_expired) + { + etl::callback_timer_data& timer = ptimers[id_]; + + if (head == id_) + { + head = timer.next; + } + else + { + ptimers[timer.previous].next = timer.next; + } + + if (tail == id_) + { + tail = timer.previous; + } + else + { + ptimers[timer.next].previous = timer.previous; + } + + if (!has_expired) + { + // Adjust the next delta. + if (timer.next != etl::timer::id::NO_TIMER) + { + ptimers[timer.next].delta += timer.delta; + } + } + + timer.previous = etl::timer::id::NO_TIMER; + timer.next = etl::timer::id::NO_TIMER; + timer.delta = etl::timer::state::INACTIVE; + } + + //******************************* + etl::callback_timer_data& front() + { + return ptimers[head]; + } + + //******************************* + etl::timer::id::type begin() + { + current = head; + return current; + } + + //******************************* + etl::timer::id::type previous(etl::timer::id::type last) + { + current = ptimers[last].previous; + return current; + } + + //******************************* + etl::timer::id::type next(etl::timer::id::type last) + { + current = ptimers[last].next; + return current; + } + + //******************************* + void clear() + { + etl::timer::id::type id = begin(); + + while (id != etl::timer::id::NO_TIMER) + { + etl::callback_timer_data& timer = ptimers[id]; + id = next(id); + timer.next = etl::timer::id::NO_TIMER; + } + + head = etl::timer::id::NO_TIMER; + tail = etl::timer::id::NO_TIMER; + current = etl::timer::id::NO_TIMER; + } + + private: + + etl::timer::id::type head; + etl::timer::id::type tail; + etl::timer::id::type current; + + etl::callback_timer_data* const ptimers; + }; + } + + //*************************************************************************** + /// Interface for callback timer + //*************************************************************************** + class icallback_timer + { + public: + + //******************************************* + /// Register a timer. + //******************************************* + etl::timer::id::type register_timer(void (*p_callback_)(), + uint32_t period_, + bool repeating_) + { + etl::timer::id::type id = etl::timer::id::NO_TIMER; + + disable_timer_updates(); + + bool is_space = (registered_timers < MAX_TIMERS); + + if (is_space) + { + // Search for the free space. + for (uint_least8_t i = 0; i < MAX_TIMERS; ++i) + { + etl::callback_timer_data& timer = timer_array[i]; + + if (timer.id == etl::timer::id::NO_TIMER) + { + // Create in-place. + new (&timer) callback_timer_data(i, p_callback_, period_, repeating_); + ++registered_timers; + id = i; + break; + } + } + } + + enable_timer_updates(); + + return id; + } + + //******************************************* + /// Register a timer. + //******************************************* + etl::timer::id::type register_timer(etl::ifunction& callback_, + uint32_t period_, + bool repeating_) + { + etl::timer::id::type id = etl::timer::id::NO_TIMER; + + disable_timer_updates(); + + bool is_space = (registered_timers < MAX_TIMERS); + + if (is_space) + { + // Search for the free space. + for (uint_least8_t i = 0; i < MAX_TIMERS; ++i) + { + etl::callback_timer_data& timer = timer_array[i]; + + if (timer.id == etl::timer::id::NO_TIMER) + { + // Create in-place. + new (&timer) callback_timer_data(i, callback_, period_, repeating_); + ++registered_timers; + id = i; + break; + } + } + } + + enable_timer_updates(); + + return id; + } + + //******************************************* + /// Unregister a timer. + //******************************************* + bool unregister_timer(etl::timer::id::type id_) + { + bool result = false; + + if (id_ != etl::timer::id::NO_TIMER) + { + disable_timer_updates(); + + etl::callback_timer_data& timer = timer_array[id_]; + + if (timer.id != etl::timer::id::NO_TIMER) + { + if (timer.is_active()) + { + active_list.remove(timer.id, false); + + // Reset in-place. + new (&timer) callback_timer_data(); + --registered_timers; + + result = true; + } + } + + enable_timer_updates(); + } + + return result; + } + + //******************************************* + /// Enable/disable the timer. + //******************************************* + void enable(bool state_) + { + enabled = state_; + } + + //******************************************* + /// Get the enable/disable state. + //******************************************* + bool is_running() const + { + return enabled; + } + + //******************************************* + /// Clears the timer of data. + //******************************************* + void clear() + { + disable_timer_updates(); + + active_list.clear(); + + for (int i = 0; i < MAX_TIMERS; ++i) + { + new (&timer_array[i]) callback_timer_data(); + } + + registered_timers = 0; + tick_count = 0; + + enable_timer_updates(); + } + + //******************************************* + // Called by the timer service to indicate the + // amount of time that has elapsed since the + // last call to 'tick'. + //******************************************* + bool tick(uint32_t count) + { + if (enabled) + { + tick_count += count; + + if (process_semaphore == 0) + { + // We have something to do? + while (!active_list.empty() && (tick_count >= active_list.front().delta)) + { + etl::callback_timer_data& timer = active_list.front(); + + tick_count -= timer.delta; + + active_list.remove(timer.id, true); + + if (timer.repeating) + { + timer.delta = timer.period; + active_list.insert(timer.id); + } + + if (timer.p_callback != nullptr) + { + if (timer.is_c_callback) + { + reinterpret_cast(timer.p_callback)(); + } + else + { + (*reinterpret_cast*>(timer.p_callback))(); + } + } + } + } + } + + return enabled; + } + + //******************************************* + /// Starts a timer. + //******************************************* + bool start(etl::timer::id::type id_, bool immediate_ = false) + { + bool result = false; + + disable_timer_updates(); + + // Valid timer id? + if (id_ != etl::timer::id::NO_TIMER) + { + etl::callback_timer_data& timer = timer_array[id_]; + + // Registered timer? + if (timer.id != etl::timer::id::NO_TIMER) + { + // Has a valid period. + if (timer.period != etl::timer::state::INACTIVE) + { + if (timer.is_active()) + { + active_list.remove(timer.id, false); + } + + timer.delta = tick_count; + + if (!immediate_) + { + timer.delta += timer.period; + } + + active_list.insert(timer.id); + result = true; + } + } + } + + enable_timer_updates(); + + return result; + } + + //******************************************* + /// Stops a timer. + //******************************************* + bool stop(etl::timer::id::type id_) + { + bool result = false; + + disable_timer_updates(); + + // Valid timer id? + if (id_ != etl::timer::id::NO_TIMER) + { + etl::callback_timer_data& timer = timer_array[id_]; + + // Registered timer? + if (timer.id != etl::timer::id::NO_TIMER) + { + if (timer.is_active()) + { + active_list.remove(timer.id, false); + result = true; + } + } + } + + enable_timer_updates(); + + return result; + } + + //******************************************* + /// Sets a timer's period. + //******************************************* + bool set_period(etl::timer::id::type id_, uint32_t period_) + { + if (stop(id_)) + { + timer_array[id_].period = period_; + return start(id_); + } + + return false; + } + + //******************************************* + /// Sets a timer's mode. + //******************************************* + bool set_mode(etl::timer::id::type id_, bool repeating_) + { + if (stop(id_)) + { + timer_array[id_].repeating = repeating_; + return start(id_); + } + + return false; + } + + protected: + + //******************************************* + /// Constructor. + //******************************************* + icallback_timer(callback_timer_data* const timer_array_, const uint_least8_t MAX_TIMERS_) + : timer_array(timer_array_), + active_list(timer_array_), + enabled(false), + process_semaphore(0), + tick_count(0), + registered_timers(0), + MAX_TIMERS(MAX_TIMERS_) + { + } + + private: + + //******************************************* + /// Enable timer callback events. + //******************************************* + void enable_timer_updates() + { + --process_semaphore; + } + + //******************************************* + /// Disable timer callback events. + //******************************************* + void disable_timer_updates() + { + ++process_semaphore; + } + + // The array of timer data structures. + callback_timer_data* const timer_array; + + // The list of active timers. + __private_callback_timer__::list active_list; + + volatile bool enabled; + volatile etl::timer_semaphore_t process_semaphore; + volatile uint32_t tick_count; + volatile uint_least8_t registered_timers; + + public: + + const uint_least8_t MAX_TIMERS; + }; + + //*************************************************************************** + /// The callback timer + //*************************************************************************** + template + class callback_timer : public etl::icallback_timer + { + public: + + STATIC_ASSERT(MAX_TIMERS_ <= 254, "No more than 254 timers are allowed"); + + //******************************************* + /// Constructor. + //******************************************* + callback_timer() + : icallback_timer(timer_array, MAX_TIMERS_) + { + } + + private: + + callback_timer_data timer_array[MAX_TIMERS_]; + }; +} + +#undef ETL_FILE + +#endif diff --git a/src/checksum.h b/src/checksum.h index b6bb0ee4..d981400a 100644 --- a/src/checksum.h +++ b/src/checksum.h @@ -29,6 +29,7 @@ SOFTWARE. #include +#include "platform.h" #include "binary.h" #include "frame_check_sequence.h" diff --git a/src/constant.h b/src/constant.h index 86a643b8..d9bb8302 100644 --- a/src/constant.h +++ b/src/constant.h @@ -31,6 +31,8 @@ SOFTWARE. #ifndef __ETL_CONSTANT__ #define __ETL_CONSTANT__ +#include "platform.h" + //***************************************************************************** ///\defgroup constant constant ///\ingroup utilities diff --git a/src/container.h b/src/container.h index 1cf87391..961ed90f 100644 --- a/src/container.h +++ b/src/container.h @@ -34,6 +34,8 @@ SOFTWARE. #include #include +#include "platform.h" + ///\defgroup container container ///\ingroup utilities diff --git a/src/crc16.cpp b/src/crc16.cpp index f5194058..734d379b 100644 --- a/src/crc16.cpp +++ b/src/crc16.cpp @@ -30,6 +30,8 @@ SOFTWARE. #include +#include "platform.h" + namespace etl { //*************************************************************************** diff --git a/src/crc16_ccitt.cpp b/src/crc16_ccitt.cpp index 6c800d74..443873a9 100644 --- a/src/crc16_ccitt.cpp +++ b/src/crc16_ccitt.cpp @@ -30,6 +30,8 @@ SOFTWARE. #include +#include "platform.h" + namespace etl { //*************************************************************************** diff --git a/src/crc16_kermit.cpp b/src/crc16_kermit.cpp index c7363d14..93836b02 100644 --- a/src/crc16_kermit.cpp +++ b/src/crc16_kermit.cpp @@ -30,6 +30,8 @@ SOFTWARE. #include +#include "platform.h" + namespace etl { //*************************************************************************** diff --git a/src/crc32.cpp b/src/crc32.cpp index 9b7c0be6..6ef84f49 100644 --- a/src/crc32.cpp +++ b/src/crc32.cpp @@ -30,6 +30,8 @@ SOFTWARE. #include +#include "platform.h" + namespace etl { //*************************************************************************** diff --git a/src/crc64_ecma.cpp b/src/crc64_ecma.cpp index 7b41a3d0..82a92b0e 100644 --- a/src/crc64_ecma.cpp +++ b/src/crc64_ecma.cpp @@ -30,6 +30,8 @@ SOFTWARE. #include +#include "platform.h" + namespace etl { //*************************************************************************** diff --git a/src/cyclic_value.h b/src/cyclic_value.h index e583c500..e3f6ac66 100644 --- a/src/cyclic_value.h +++ b/src/cyclic_value.h @@ -39,6 +39,7 @@ SOFTWARE. #include +#include "platform.h" #include "static_assert.h" #include "exception.h" #include "static_assert.h" diff --git a/src/debounce.h b/src/debounce.h index 729451f2..19e26c20 100644 --- a/src/debounce.h +++ b/src/debounce.h @@ -33,6 +33,7 @@ SOFTWARE. #include +#include "platform.h" #include "static_assert.h" namespace etl diff --git a/src/deque.h b/src/deque.h index 8aae018c..db9779af 100644 --- a/src/deque.h +++ b/src/deque.h @@ -36,6 +36,7 @@ SOFTWARE. #include #include +#include "platform.h" #include "container.h" #include "alignment.h" #include "array.h" diff --git a/src/endianness.h b/src/endianness.h index c5600534..ec8ff167 100644 --- a/src/endianness.h +++ b/src/endianness.h @@ -33,6 +33,7 @@ SOFTWARE. #include +#include "platform.h" #include "enum_type.h" ///\defgroup endian endian diff --git a/src/enum_type.h b/src/enum_type.h index 82415064..00866597 100644 --- a/src/enum_type.h +++ b/src/enum_type.h @@ -31,6 +31,8 @@ SOFTWARE. #ifndef __ETL_ENUM_TYPE__ #define __ETL_ENUM_TYPE__ +#include "platform.h" + ///\defgroup enum_type enum_type /// Smart enumerations.
/// A method of declaring enumerations that allow grouping within a structure. diff --git a/src/error_handler.cpp b/src/error_handler.cpp index 5a02d220..2107e0b5 100644 --- a/src/error_handler.cpp +++ b/src/error_handler.cpp @@ -28,6 +28,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ******************************************************************************/ +#include "platform.h" #include "error_handler.h" #include "nullptr.h" diff --git a/src/error_handler.h b/src/error_handler.h index e9a8bba4..c107344f 100644 --- a/src/error_handler.h +++ b/src/error_handler.h @@ -38,6 +38,7 @@ SOFTWARE. #include +#include "platform.h" #include "exception.h" #include "function.h" diff --git a/src/exception.h b/src/exception.h index 3b39f1e9..8c4301a2 100644 --- a/src/exception.h +++ b/src/exception.h @@ -31,6 +31,8 @@ SOFTWARE. #ifndef __ETL_EXCEPTION__ #define __ETL_EXCEPTION__ +#include "platform.h" + ///\defgroup exception exception /// The base class for all ETL exceptions. ///\ingroup utilities diff --git a/src/factorial.h b/src/factorial.h index 07dedeed..688ae817 100644 --- a/src/factorial.h +++ b/src/factorial.h @@ -33,6 +33,8 @@ SOFTWARE. #include +#include "platform.h" + ///\defgroup factorial factorial /// fibonacci : Calculates the Nth factorial value. ///\ingroup maths diff --git a/src/factory.h b/src/factory.h index c4406385..6aaeb11c 100644 --- a/src/factory.h +++ b/src/factory.h @@ -31,6 +31,7 @@ SOFTWARE. #include +#include "platform.h" #include "error_handler.h" #include "exception.h" #include "largest.h" diff --git a/src/fibonacci.h b/src/fibonacci.h index d3765111..70930633 100644 --- a/src/fibonacci.h +++ b/src/fibonacci.h @@ -33,6 +33,8 @@ SOFTWARE. #include +#include "platform.h" + ///\defgroup fibonacci fibonacci /// fibonacci : Calculates the Nth Fibonacci value. ///\ingroup maths diff --git a/src/fixed_iterator.h b/src/fixed_iterator.h index 8357f30a..12396ea3 100644 --- a/src/fixed_iterator.h +++ b/src/fixed_iterator.h @@ -33,6 +33,8 @@ SOFTWARE. #include +#include "platform.h" + ///\defgroup iterator Iterator types namespace etl diff --git a/src/forward_list.h b/src/forward_list.h index 463ba95a..7154e072 100644 --- a/src/forward_list.h +++ b/src/forward_list.h @@ -36,6 +36,7 @@ SOFTWARE. #include #include +#include "platform.h" #include "pool.h" #include "container.h" #include "exception.h" diff --git a/src/fsm.h b/src/fsm.h index 39ae4b85..7771c04b 100644 --- a/src/fsm.h +++ b/src/fsm.h @@ -53,6 +53,7 @@ SOFTWARE. #include +#include "platform.h" #include "array.h" #include "nullptr.h" #include "error_handler.h" diff --git a/src/fsm_generator.h b/src/fsm_generator.h index 9dbf6066..fc18c240 100644 --- a/src/fsm_generator.h +++ b/src/fsm_generator.h @@ -65,6 +65,7 @@ cog.outl("//******************************************************************** #include +#include "platform.h" #include "array.h" #include "nullptr.h" #include "error_handler.h" diff --git a/src/function.h b/src/function.h index 198a23e9..f90ceaab 100644 --- a/src/function.h +++ b/src/function.h @@ -31,6 +31,8 @@ SOFTWARE. #ifndef __ETL_FUNCTION__ #define __ETL_FUNCTION__ +#include "platform.h" + //***************************************************************************** ///\defgroup function function /// A set of wrapper templates to allow a member or static function to be called diff --git a/src/functional.h b/src/functional.h index 31353980..a2187d5c 100644 --- a/src/functional.h +++ b/src/functional.h @@ -31,6 +31,8 @@ SOFTWARE. #ifndef __ETL_FUNCTIONAL__ #define __ETL_FUNCTIONAL__ +#include "platform.h" + ///\defgroup functional functional ///\ingroup utilities diff --git a/src/hash.h b/src/hash.h index 39408f3a..505b75a9 100644 --- a/src/hash.h +++ b/src/hash.h @@ -34,6 +34,8 @@ SOFTWARE. #include #include +#include "platform.h" + // The default hash calculation. #include "fnv_1.h" #include "type_traits.h" diff --git a/src/icache.h b/src/icache.h index 3017ce77..1cd6fc62 100644 --- a/src/icache.h +++ b/src/icache.h @@ -35,6 +35,7 @@ SOFTWARE. #ifndef __ETL_ICACHE__ #define __ETL_ICACHE__ +#include "platform.h" #include "function.h" #include "nullptr.h" diff --git a/src/ihash.h b/src/ihash.h index 4450e9c5..e5b2e3a1 100644 --- a/src/ihash.h +++ b/src/ihash.h @@ -34,6 +34,7 @@ SOFTWARE. #include #include +#include "platform.h" #include "exception.h" #include "error_handler.h" diff --git a/src/instance_count.h b/src/instance_count.h index 37e29e37..4c389663 100644 --- a/src/instance_count.h +++ b/src/instance_count.h @@ -31,6 +31,8 @@ SOFTWARE. #ifndef __ETL_INSTANCE_COUNT__ #define __ETL_INSTANCE_COUNT__ +#include "platform.h" + ///\defgroup instance_count instance count ///\ingroup utilities diff --git a/src/integral_limits.h b/src/integral_limits.h index 25f917e2..f231bf48 100644 --- a/src/integral_limits.h +++ b/src/integral_limits.h @@ -34,8 +34,8 @@ SOFTWARE. #include #include -#include "type_traits.h" #include "platform.h" +#include "type_traits.h" #ifdef ETL_COMPILER_MICROSOFT #undef min diff --git a/src/intrusive_links.h b/src/intrusive_links.h index 35a8e345..ee69a950 100644 --- a/src/intrusive_links.h +++ b/src/intrusive_links.h @@ -34,6 +34,7 @@ SOFTWARE. #include #include +#include "platform.h" #include "nullptr.h" #include "type_traits.h" #include "exception.h" diff --git a/src/intrusive_queue.h b/src/intrusive_queue.h index 176fca44..d8910cf3 100644 --- a/src/intrusive_queue.h +++ b/src/intrusive_queue.h @@ -33,6 +33,7 @@ SOFTWARE. #include +#include "platform.h" #include "type_traits.h" #include "error_handler.h" #include "intrusive_links.h" diff --git a/src/intrusive_stack.h b/src/intrusive_stack.h index 7b00af72..16b7edf8 100644 --- a/src/intrusive_stack.h +++ b/src/intrusive_stack.h @@ -33,6 +33,7 @@ SOFTWARE. #include +#include "platform.h" #include "type_traits.h" #include "error_handler.h" #include "intrusive_links.h" diff --git a/src/io_port.h b/src/io_port.h index e60d0767..ed422983 100644 --- a/src/io_port.h +++ b/src/io_port.h @@ -38,6 +38,7 @@ SOFTWARE. #include #include +#include "platform.h" #include "nullptr.h" #include "parameter_type.h" diff --git a/src/iterator.h b/src/iterator.h index e451c62b..7b17e0cc 100644 --- a/src/iterator.h +++ b/src/iterator.h @@ -33,6 +33,7 @@ SOFTWARE. #include +#include "platform.h" #include "type_traits.h" ///\defgroup iterator iterator diff --git a/src/largest.h b/src/largest.h index a3334c99..bb82dc28 100644 --- a/src/largest.h +++ b/src/largest.h @@ -56,6 +56,7 @@ SOFTWARE. ///\defgroup largest largest ///\ingroup utilities +#include "platform.h" #include "type_traits.h" #include "smallest.h" #include "static_assert.h" diff --git a/src/largest_generator.h b/src/largest_generator.h index 27464662..202fde53 100644 --- a/src/largest_generator.h +++ b/src/largest_generator.h @@ -68,6 +68,7 @@ cog.outl("//******************************************************************** ///\defgroup largest largest ///\ingroup utilities +#include "platform.h" #include "type_traits.h" #include "smallest.h" #include "static_assert.h" diff --git a/src/log.h b/src/log.h index 26d9b5fe..bf9aa7ab 100644 --- a/src/log.h +++ b/src/log.h @@ -33,6 +33,8 @@ SOFTWARE. #include +#include "platform.h" + ///\defgroup log log /// log : Calculates logs to any base, rounded down to the nearest integer.
/// log2 : Calculates logs to base 2, rounded down to the nearest integer.
diff --git a/src/memory.h b/src/memory.h index 6af5d1c5..2d440653 100644 --- a/src/memory.h +++ b/src/memory.h @@ -34,6 +34,7 @@ SOFTWARE. #include #include +#include "platform.h" #include "type_traits.h" ///\defgroup memory memory diff --git a/src/message.h b/src/message.h index 4605bc71..b7139e2d 100644 --- a/src/message.h +++ b/src/message.h @@ -31,6 +31,7 @@ SOFTWARE. #include +#include "platform.h" #include "error_handler.h" #include "exception.h" #include "message_types.h" diff --git a/src/message_bus.h b/src/message_bus.h index 5d5514e3..00d52a6d 100644 --- a/src/message_bus.h +++ b/src/message_bus.h @@ -32,6 +32,7 @@ SOFTWARE. #include #include +#include "platform.h" #include "algorithm.h" #include "vector.h" #include "nullptr.h" diff --git a/src/message_router.h b/src/message_router.h index 9a63bea1..522716b7 100644 --- a/src/message_router.h +++ b/src/message_router.h @@ -53,6 +53,7 @@ SOFTWARE. #include +#include "platform.h" #include "message.h" #include "message_types.h" #include "alignment.h" diff --git a/src/message_router_generator.h b/src/message_router_generator.h index 9e528136..16936bcf 100644 --- a/src/message_router_generator.h +++ b/src/message_router_generator.h @@ -65,6 +65,7 @@ cog.outl("//******************************************************************** #include +#include "platform.h" #include "message.h" #include "message_types.h" #include "alignment.h" diff --git a/src/message_timer.h b/src/message_timer.h new file mode 100644 index 00000000..ed238086 --- /dev/null +++ b/src/message_timer.h @@ -0,0 +1,651 @@ +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_MESSAGE_TIMER__ +#define __ETL_MESSAGE_TIMER__ + +#include +#include + +#include "platform.h" +#include "nullptr.h" +#include "message_types.h" +#include "message.h" +#include "message_router.h" +#include "message_bus.h" +#include "static_assert.h" +#include "timer.h" + +#undef ETL_FILE +#define ETL_FILE "41" + +namespace etl +{ + //************************************************************************* + /// The configuration of a timer. + struct message_timer_data + { + //******************************************* + message_timer_data() + : p_message(nullptr), + p_router(nullptr), + period(0), + delta(etl::timer::state::INACTIVE), + destination_router_id(etl::imessage_bus::ALL_MESSAGE_ROUTERS), + id(etl::timer::id::NO_TIMER), + previous(etl::timer::id::NO_TIMER), + next(etl::timer::id::NO_TIMER), + repeating(true) + { + } + + //******************************************* + message_timer_data(etl::timer::id::type id_, + const etl::imessage& message_, + etl::imessage_router& irouter_, + uint32_t period_, + bool repeating_, + etl::message_router_id_t destination_router_id_) + : p_message(&message_), + p_router(&irouter_), + period(period_), + delta(etl::timer::state::INACTIVE), + id(id_), + previous(etl::timer::id::NO_TIMER), + next(etl::timer::id::NO_TIMER), + repeating(repeating_) + { + if (irouter_.get_message_router_id() == etl::imessage_router::MESSAGE_BUS) + { + destination_router_id = destination_router_id_; + } + else + { + destination_router_id = etl::imessage_bus::ALL_MESSAGE_ROUTERS; + } + } + + //******************************************* + /// Returns true if the timer is active. + //******************************************* + bool is_active() const + { + return delta != etl::timer::state::INACTIVE; + } + + //******************************************* + /// Sets the timer to the inactive state. + //******************************************* + void set_inactive() + { + delta = etl::timer::state::INACTIVE; + } + + const etl::imessage* p_message; + etl::imessage_router* p_router; + uint32_t period; + uint32_t delta; + etl::message_router_id_t destination_router_id; + etl::timer::id::type id; + uint_least8_t previous; + uint_least8_t next; + bool repeating; + + private: + + // Disabled. + message_timer_data(const message_timer_data& other); + message_timer_data& operator =(const message_timer_data& other); + }; + + namespace __private_message_timer__ + { + //************************************************************************* + /// A specialised intrusive linked list for timer data. + //************************************************************************* + class list + { + public: + + //******************************* + list(etl::message_timer_data* ptimers_) + : head(etl::timer::id::NO_TIMER), + tail(etl::timer::id::NO_TIMER), + current(etl::timer::id::NO_TIMER), + ptimers(ptimers_) + { + } + + //******************************* + bool empty() const + { + return head == etl::timer::id::NO_TIMER; + } + + //******************************* + // Inserts the timer at the correct delta position + //******************************* + void insert(etl::timer::id::type id_) + { + etl::message_timer_data& timer = ptimers[id_]; + + if (head == etl::timer::id::NO_TIMER) + { + // No entries yet. + head = id_; + tail = id_; + timer.previous = etl::timer::id::NO_TIMER; + timer.next = etl::timer::id::NO_TIMER; + } + else + { + // We already have entries. + etl::timer::id::type test_id = begin(); + + while (test_id != etl::timer::id::NO_TIMER) + { + etl::message_timer_data& test = ptimers[test_id]; + + // Find the correct place to insert. + if (timer.delta <= test.delta) + { + if (test.id == head) + { + head = timer.id; + } + + // Insert before test. + timer.previous = test.previous; + test.previous = timer.id; + timer.next = test.id; + + // Adjust the next delta to compensate. + test.delta -= timer.delta; + + if (timer.previous != etl::timer::id::NO_TIMER) + { + ptimers[timer.previous].next = timer.id; + } + break; + } + else + { + timer.delta -= test.delta; + } + + test_id = next(test_id); + } + + // Reached the end? + if (test_id == etl::timer::id::NO_TIMER) + { + // Tag on to the tail. + ptimers[tail].next = timer.id; + timer.previous = tail; + timer.next = etl::timer::id::NO_TIMER; + tail = timer.id; + } + } + } + + //******************************* + void remove(etl::timer::id::type id_, bool has_expired) + { + etl::message_timer_data& timer = ptimers[id_]; + + if (head == id_) + { + head = timer.next; + } + else + { + ptimers[timer.previous].next = timer.next; + } + + if (tail == id_) + { + tail = timer.previous; + } + else + { + ptimers[timer.next].previous = timer.previous; + } + + if (!has_expired) + { + // Adjust the next delta. + if (timer.next != etl::timer::id::NO_TIMER) + { + ptimers[timer.next].delta += timer.delta; + } + } + + timer.previous = etl::timer::id::NO_TIMER; + timer.next = etl::timer::id::NO_TIMER; + timer.delta = etl::timer::state::INACTIVE; + } + + //******************************* + etl::message_timer_data& front() + { + return ptimers[head]; + } + + //******************************* + etl::timer::id::type begin() + { + current = head; + return current; + } + + //******************************* + etl::timer::id::type previous(etl::timer::id::type last) + { + current = ptimers[last].previous; + return current; + } + + //******************************* + etl::timer::id::type next(etl::timer::id::type last) + { + current = ptimers[last].next; + return current; + } + + //******************************* + void clear() + { + etl::timer::id::type id = begin(); + + while (id != etl::timer::id::NO_TIMER) + { + etl::message_timer_data& timer = ptimers[id]; + id = next(id); + timer.next = etl::timer::id::NO_TIMER; + } + + head = etl::timer::id::NO_TIMER; + tail = etl::timer::id::NO_TIMER; + current = etl::timer::id::NO_TIMER; + } + + private: + + etl::timer::id::type head; + etl::timer::id::type tail; + etl::timer::id::type current; + + etl::message_timer_data* const ptimers; + }; + } + + //*************************************************************************** + /// Interface for message timer + //*************************************************************************** + class imessage_timer + { + public: + + //******************************************* + /// Register a timer. + //******************************************* + etl::timer::id::type register_timer(const etl::imessage& message_, + etl::imessage_router& router_, + uint32_t period_, + bool repeating_, + etl::message_router_id_t destination_router_id_ = etl::imessage_router::ALL_MESSAGE_ROUTERS) + { + etl::timer::id::type id = etl::timer::id::NO_TIMER; + + disable_timer_updates(); + + bool is_space = (registered_timers < MAX_TIMERS); + + if (is_space) + { + // There's no point adding null message routers. + if (router_.get_message_router_id() != etl::imessage_router::NULL_MESSAGE_ROUTER) + { + // Search for the free space. + for (uint_least8_t i = 0; i < MAX_TIMERS; ++i) + { + etl::message_timer_data& timer = timer_array[i]; + + if (timer.id == etl::timer::id::NO_TIMER) + { + // Create in-place. + new (&timer) message_timer_data(i, message_, router_, period_, repeating_, destination_router_id_); + ++registered_timers; + id = i; + break; + } + } + } + } + + enable_timer_updates(); + + return id; + } + + //******************************************* + /// Unregister a timer. + //******************************************* + bool unregister_timer(etl::timer::id::type id_) + { + bool result = false; + + if (id_ != etl::timer::id::NO_TIMER) + { + disable_timer_updates(); + + etl::message_timer_data& timer = timer_array[id_]; + + if (timer.id != etl::timer::id::NO_TIMER) + { + if (timer.is_active()) + { + active_list.remove(timer.id, true); + + // Reset in-place. + new (&timer) message_timer_data(); + --registered_timers; + + result = true; + } + } + + enable_timer_updates(); + } + + return result; + } + + //******************************************* + /// Enable/disable the timer. + //******************************************* + void enable(bool state_) + { + enabled = state_; + } + + //******************************************* + /// Get the enable/disable state. + //******************************************* + bool is_running() const + { + return enabled; + } + + //******************************************* + /// Clears the timer of data. + //******************************************* + void clear() + { + disable_timer_updates(); + + active_list.clear(); + + for (int i = 0; i < MAX_TIMERS; ++i) + { + new (&timer_array[i]) message_timer_data(); + } + + registered_timers = 0; + tick_count = 0; + + enable_timer_updates(); + } + + //******************************************* + // Called by the timer service to indicate the + // amount of time that has elapsed since the + // last call to 'tick'. + //******************************************* + bool tick(uint32_t count) + { + if (enabled) + { + tick_count += count; + + if (process_semaphore == 0) + { + // We have something to do? + while (!active_list.empty() && (tick_count >= active_list.front().delta)) + { + etl::message_timer_data& timer = active_list.front(); + + tick_count -= timer.delta; + + active_list.remove(timer.id, true); + + if (timer.repeating) + { + timer.delta = timer.period; + active_list.insert(timer.id); + } + + if (timer.p_router != nullptr) + { + if (timer.p_router->get_message_router_id() == etl::imessage_router::MESSAGE_BUS) + { + // Send to a message bus. + etl::imessage_bus& bus = static_cast(*(timer.p_router)); + bus.receive(timer.destination_router_id, *(timer.p_message)); + } + else + { + // Send to a router. + timer.p_router->receive(*(timer.p_message)); + } + } + } + } + } + + return enabled; + } + + //******************************************* + /// Starts a timer. + //******************************************* + bool start(etl::timer::id::type id_, bool immediate_ = false) + { + bool result = false; + + disable_timer_updates(); + + // Valid timer id? + if (id_ != etl::timer::id::NO_TIMER) + { + etl::message_timer_data& timer = timer_array[id_]; + + // Registered timer? + if (timer.id != etl::timer::id::NO_TIMER) + { + // Has a valid period. + if (timer.period != etl::timer::state::INACTIVE) + { + if (timer.is_active()) + { + active_list.remove(timer.id, false); + } + + timer.delta = tick_count; + + if (!immediate_) + { + timer.delta += timer.period; + } + + active_list.insert(timer.id); + result = true; + } + } + } + + enable_timer_updates(); + + return result; + } + + //******************************************* + /// Stops a timer. + //******************************************* + bool stop(etl::timer::id::type id_) + { + bool result = false; + + disable_timer_updates(); + + // Valid timer id? + if (id_ != etl::timer::id::NO_TIMER) + { + etl::message_timer_data& timer = timer_array[id_]; + + // Registered timer? + if (timer.id != etl::timer::id::NO_TIMER) + { + if (timer.is_active()) + { + active_list.remove(timer.id, false); + result = true; + } + } + } + + enable_timer_updates(); + + return result; + } + + //******************************************* + /// Sets a timer's period. + //******************************************* + bool set_period(etl::timer::id::type id_, uint32_t period_) + { + if (stop(id_)) + { + timer_array[id_].period = period_; + return start(id_); + } + + return false; + } + + //******************************************* + /// Sets a timer's mode. + //******************************************* + bool set_mode(etl::timer::id::type id_, bool repeating_) + { + if (stop(id_)) + { + timer_array[id_].repeating = repeating_; + return start(id_); + } + + return false; + } + + protected: + + //******************************************* + /// Constructor. + //******************************************* + imessage_timer(message_timer_data* const timer_array_, const uint_least8_t MAX_TIMERS_) + : timer_array(timer_array_), + active_list(timer_array_), + enabled(false), + process_semaphore(0), + tick_count(0), + registered_timers(0), + MAX_TIMERS(MAX_TIMERS_) + { + } + + private: + + //******************************************* + /// Enable timer callback events. + //******************************************* + void enable_timer_updates() + { + --process_semaphore; + } + + //******************************************* + /// Disable timer callback events. + //******************************************* + void disable_timer_updates() + { + ++process_semaphore; + } + + // The array of timer data structures. + message_timer_data* const timer_array; + + // The list of active timers. + __private_message_timer__::list active_list; + + volatile bool enabled; + volatile etl::timer_semaphore_t process_semaphore; + volatile uint32_t tick_count; + volatile uint_least8_t registered_timers; + + public: + + const uint_least8_t MAX_TIMERS; + }; + + //*************************************************************************** + /// The message timer + //*************************************************************************** + template + class message_timer : public etl::imessage_timer + { + public: + + STATIC_ASSERT(MAX_TIMERS_ <= 254, "No more than 254 timers are allowed"); + + //******************************************* + /// Constructor. + //******************************************* + message_timer() + : imessage_timer(timer_array, MAX_TIMERS_) + { + } + + private: + + message_timer_data timer_array[MAX_TIMERS_]; + }; +} + +#undef ETL_FILE + +#endif diff --git a/src/message_types.h b/src/message_types.h index a049dae9..2e5f7b05 100644 --- a/src/message_types.h +++ b/src/message_types.h @@ -31,6 +31,8 @@ SOFTWARE. #include +#include "platform.h" + namespace etl { /// Allow alternative type for message id. diff --git a/src/numeric.h b/src/numeric.h index 064bab64..ed3a4c08 100644 --- a/src/numeric.h +++ b/src/numeric.h @@ -31,6 +31,8 @@ SOFTWARE. #ifndef __ETL_NUMERIC__ #define __ETL_NUMERIC__ +#include "platform.h" + ///\defgroup numeric numeric ///\ingroup utilities diff --git a/src/observer.h b/src/observer.h index f46e4256..4b6766dc 100644 --- a/src/observer.h +++ b/src/observer.h @@ -52,6 +52,8 @@ SOFTWARE. //***************************************************************************** #include + +#include "platform.h" #include "vector.h" #include "exception.h" #include "error_handler.h" diff --git a/src/parameter_type.h b/src/parameter_type.h index a3b8ff43..75203c53 100644 --- a/src/parameter_type.h +++ b/src/parameter_type.h @@ -31,6 +31,7 @@ SOFTWARE. #ifndef __ETL_PARAMETER__ #define __ETL_PARAMETER__ +#include "platform.h" #include "type_traits.h" namespace etl diff --git a/src/platform.h b/src/platform.h index 843d6eac..f862ee91 100644 --- a/src/platform.h +++ b/src/platform.h @@ -5,7 +5,7 @@ The MIT License(MIT) Embedded Template Library. https://github.com/ETLCPP/etl -http://www.etlcpp.com +https://www.etlcpp.com Copyright(c) 2016 jwellbelove @@ -28,70 +28,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ******************************************************************************/ -#include -#include - -// Define the compiler. -#if defined(__IAR_SYSTEMS_ICC__) - #define ETL_COMPILER_IAR -#elif defined(__KEIL__) && !defined(__GNUC__) - #define ETL_COMPILER_KEIL -#elif defined(__ghs__) - #define ETL_COMPILER_GREEN_HILLS -#elif defined(__INTEL_COMPILER) - #define ETL_COMPILER_INTEL -#elif defined(_MSC_VER) - #define ETL_COMPILER_MICROSOFT -#elif defined(__GNUC__) - #define ETL_COMPILER_GCC -#elif defined(__TI_COMPILER_VERSION__) - #define ETL_COMPILER_TI -#elif defined(_MRI) - #define ETL_COMPILER_MICROTEC -#elif defined(__HIGHC__) - #define ETL_COMPILER_METAWARE_HIGH -#elif defined(__llvm__) - #define ETL_COMPILER_LLVM -#elif defined(__KCC_VERSION) - #define ETL_COMPILER_KAI -#elif defined(_COMO__) - #define ETL_COMPILER_COMEAU -#elif defined(__BORLANDC__) - #define ETL_COMPILER_BORLAND -#elif defined(__CC_ARM) - #define ETL_COMPILER_ARM -#elif defined(__MRC__) - #define ETL_COMPILER_MPW -#else - #define ETL_COMPILER_GENERIC -#endif - -#if (__cplusplus >= 201103L) || (!defined(ARDUINO) && (defined(ETL_COMPILER_MICROSOFT) && (_MSC_VER >= 1600))) - #define ETL_CPP11_SUPPORTED 1 -#else - #define ETL_CPP11_SUPPORTED 0 -#endif - -#if (__cplusplus >= 201402L) || (!defined(ARDUINO) && (defined(ETL_COMPILER_MICROSOFT) && (_MSC_VER >= 1900))) - #define ETL_CPP14_SUPPORTED 1 -#else - #define ETL_CPP14_SUPPORTED 0 -#endif - -#if (ETL_CPP11_SUPPORTED) - #define ETL_NO_NULLPTR_SUPPORT 0 - #define ETL_NO_LARGE_CHAR_SUPPORT 0 -#else - #define ETL_NO_NULLPTR_SUPPORT 1 - #define ETL_NO_LARGE_CHAR_SUPPORT 1 -#endif - -// Check to see if the compiler supports C++11 'is_trivially_xxx' traits. -#if (ETL_CPP14_SUPPORTED) - #define ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED 1 -#else - #define ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED 0 -#endif +#ifndef __ETL_PLATFORM__ +#define __ETL_PLATFORM__ // Some targets do not support 8bit types. #define ETL_8BIT_SUPPORT (CHAR_BIT == 8) @@ -101,3 +39,7 @@ SOFTWARE. #else #define ETL_DEBUG 0 #endif + +#include "etl_profile.h" + +#endif diff --git a/src/pool.h b/src/pool.h index 2d0fd9dd..470386e5 100644 --- a/src/pool.h +++ b/src/pool.h @@ -31,11 +31,11 @@ SOFTWARE. #ifndef __ETL_POOL__ #define __ETL_POOL__ +#include "platform.h" #include "alignment.h" #include "array.h" #include "container.h" #include "integral_limits.h" -#include "platform.h" #include "nullptr.h" #include "alignment.h" #include "error_handler.h" diff --git a/src/power.h b/src/power.h index fe306bb4..76f1f5c7 100644 --- a/src/power.h +++ b/src/power.h @@ -33,6 +33,8 @@ SOFTWARE. #include #include + +#include "platform.h" #include "log.h" ///\defgroup power power diff --git a/src/private/pvoidvector.cpp b/src/private/pvoidvector.cpp index 6b74805d..e714921e 100644 --- a/src/private/pvoidvector.cpp +++ b/src/private/pvoidvector.cpp @@ -28,6 +28,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ******************************************************************************/ +#include "../platform.h" #include "pvoidvector.h" namespace etl diff --git a/src/private/vector_base.h b/src/private/vector_base.h index 84c7255e..e874f443 100644 --- a/src/private/vector_base.h +++ b/src/private/vector_base.h @@ -37,6 +37,7 @@ SOFTWARE. #include +#include "../platform.h" #include "../exception.h" #include "../error_handler.h" #include "../debug_count.h" diff --git a/src/profiles/arduino_arm.h b/src/profiles/arduino_arm.h new file mode 100644 index 00000000..d67d29c0 --- /dev/null +++ b/src/profiles/arduino_arm.h @@ -0,0 +1,50 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_ARDUINO__ +#define __ETL_ARDUINO__ + +//***************************************************************************** +// Arduino +//***************************************************************************** + +#include + +#define ETL_TARGET_DEVICE_ARM +#define ETL_TARGET_OS_NONE +#define ETL_COMPILER_GCC +#define ETL_CPP11_SUPPORTED 0 +#define ETL_CPP14_SUPPORTED 0 +#define ETL_NO_NULLPTR_SUPPORT 1 +#define ETL_NO_LARGE_CHAR_SUPPORT 1 +#define ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED 0 +#define ETL_ATOMIC_SUPPORTED 0 + +#endif diff --git a/src/profiles/armv5.h b/src/profiles/armv5.h new file mode 100644 index 00000000..2066a11d --- /dev/null +++ b/src/profiles/armv5.h @@ -0,0 +1,50 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_ARMV5__ +#define __ETL_ARMV5__ + +//***************************************************************************** +// ARM Compiler Version 5 +//***************************************************************************** + +#include + +#define ETL_TARGET_DEVICE_ARM +#define ETL_TARGET_OS_NONE +#define ETL_COMPILER_ARM +#define ETL_CPP11_SUPPORTED 0 +#define ETL_CPP14_SUPPORTED 0 +#define ETL_NO_NULLPTR_SUPPORT 1 +#define ETL_NO_LARGE_CHAR_SUPPORT 1 +#define ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED 0 +#define ETL_ATOMIC_SUPPORTED 0 + +#endif diff --git a/src/profiles/armv6.h b/src/profiles/armv6.h new file mode 100644 index 00000000..2128fdbf --- /dev/null +++ b/src/profiles/armv6.h @@ -0,0 +1,50 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_ARMV6__ +#define __ETL_ARMV6__ + +//***************************************************************************** +// ARM Compiler Version 6 +//***************************************************************************** + +#include + +#define ETL_TARGET_DEVICE_ARM +#define ETL_TARGET_OS_NONE +#define ETL_COMPILER_LLVM +#define ETL_CPP11_SUPPORTED 1 +#define ETL_CPP14_SUPPORTED 0 +#define ETL_NO_NULLPTR_SUPPORT 0 +#define ETL_NO_LARGE_CHAR_SUPPORT 0 +#define ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED 1 +#define ETL_ATOMIC_SUPPORTED 1 + +#endif diff --git a/src/profiles/cpp03.h b/src/profiles/cpp03.h new file mode 100644 index 00000000..2faff448 --- /dev/null +++ b/src/profiles/cpp03.h @@ -0,0 +1,50 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_CPP03__ +#define __ETL_CPP03__ + +//***************************************************************************** +// Generic C++03 +//***************************************************************************** + +#include + +#define ETL_TARGET_DEVICE_GENERIC +#define ETL_TARGET_OS_NONE +#define ETL_COMPILER_GENERIC +#define ETL_CPP11_SUPPORTED 0 +#define ETL_CPP14_SUPPORTED 0 +#define ETL_NO_NULLPTR_SUPPORT 1 +#define ETL_NO_LARGE_CHAR_SUPPORT 1 +#define ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED 0 +#define ETL_ATOMIC_SUPPORTED 0 + +#endif diff --git a/src/profiles/cpp11.h b/src/profiles/cpp11.h new file mode 100644 index 00000000..38a42b39 --- /dev/null +++ b/src/profiles/cpp11.h @@ -0,0 +1,50 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_CPP11__ +#define __ETL_CPP11__ + +//***************************************************************************** +// Generic C++11 +//***************************************************************************** + +#include + +#define ETL_TARGET_DEVICE_GENERIC +#define ETL_TARGET_OS_NONE +#define ETL_COMPILER_GENERIC +#define ETL_CPP11_SUPPORTED 1 +#define ETL_CPP14_SUPPORTED 0 +#define ETL_NO_NULLPTR_SUPPORT 0 +#define ETL_NO_LARGE_CHAR_SUPPORT 0 +#define ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED 1 +#define ETL_ATOMIC_SUPPORTED 1 + +#endif diff --git a/src/profiles/cpp14.h b/src/profiles/cpp14.h new file mode 100644 index 00000000..f967aa05 --- /dev/null +++ b/src/profiles/cpp14.h @@ -0,0 +1,50 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_CPP14__ +#define __ETL_CPP14__ + +//***************************************************************************** +// Generic C++14 +//***************************************************************************** + +#include + +#define ETL_TARGET_DEVICE_GENERIC +#define ETL_TARGET_OS_NONE +#define ETL_COMPILER_GENERIC +#define ETL_CPP11_SUPPORTED 1 +#define ETL_CPP14_SUPPORTED 1 +#define ETL_NO_NULLPTR_SUPPORT 0 +#define ETL_NO_LARGE_CHAR_SUPPORT 0 +#define ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED 1 +#define ETL_ATOMIC_SUPPORTED 1 + +#endif diff --git a/src/profiles/gcc_generic.h b/src/profiles/gcc_generic.h new file mode 100644 index 00000000..5a11b7b2 --- /dev/null +++ b/src/profiles/gcc_generic.h @@ -0,0 +1,50 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_GCC__ +#define __ETL_GCC__ + +//***************************************************************************** +// GCC +//***************************************************************************** + +#include + +#define ETL_TARGET_DEVICE_GENERIC +#define ETL_TARGET_OS_NONE +#define ETL_COMPILER_GCC +#define ETL_CPP11_SUPPORTED (__cplusplus >= 201103L) +#define ETL_CPP14_SUPPORTED (__cplusplus >= 201402L) +#define ETL_NO_NULLPTR_SUPPORT !ETL_CPP11_SUPPORTED +#define ETL_NO_LARGE_CHAR_SUPPORT !ETL_CPP11_SUPPORTED +#define ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED ETL_CPP14_SUPPORTED +#define ETL_ATOMIC_SUPPORTED ETL_CPP11_SUPPORTED + +#endif diff --git a/src/profiles/gcc_linux_x86.h b/src/profiles/gcc_linux_x86.h new file mode 100644 index 00000000..d905a6ff --- /dev/null +++ b/src/profiles/gcc_linux_x86.h @@ -0,0 +1,50 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_GCC__ +#define __ETL_GCC__ + +//***************************************************************************** +// GCC +//***************************************************************************** + +#include + +#define ETL_TARGET_DEVICE_X86 +#define ETL_TARGET_OS_LINUX +#define ETL_COMPILER_GCC +#define ETL_CPP11_SUPPORTED (__cplusplus >= 201103L) +#define ETL_CPP14_SUPPORTED (__cplusplus >= 201402L) +#define ETL_NO_NULLPTR_SUPPORT !ETL_CPP11_SUPPORTED +#define ETL_NO_LARGE_CHAR_SUPPORT !ETL_CPP11_SUPPORTED +#define ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED ETL_CPP14_SUPPORTED +#define ETL_ATOMIC_SUPPORTED ETL_CPP11_SUPPORTED + +#endif diff --git a/src/profiles/gcc_windows_x86.h b/src/profiles/gcc_windows_x86.h new file mode 100644 index 00000000..c8dea2c0 --- /dev/null +++ b/src/profiles/gcc_windows_x86.h @@ -0,0 +1,50 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_GCC__ +#define __ETL_GCC__ + +//***************************************************************************** +// GCC +//***************************************************************************** + +#include + +#define ETL_TARGET_DEVICE_X86 +#define ETL_TARGET_OS_WINDOWS +#define ETL_COMPILER_GCC +#define ETL_CPP11_SUPPORTED (__cplusplus >= 201103L) +#define ETL_CPP14_SUPPORTED (__cplusplus >= 201402L) +#define ETL_NO_NULLPTR_SUPPORT !ETL_CPP11_SUPPORTED +#define ETL_NO_LARGE_CHAR_SUPPORT !ETL_CPP11_SUPPORTED +#define ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED ETL_CPP14_SUPPORTED +#define ETL_ATOMIC_SUPPORTED ETL_CPP11_SUPPORTED + +#endif diff --git a/src/profiles/msvc_x86.h b/src/profiles/msvc_x86.h new file mode 100644 index 00000000..803eead8 --- /dev/null +++ b/src/profiles/msvc_x86.h @@ -0,0 +1,50 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_MSVC__ +#define __ETL_MSVC__ + +//***************************************************************************** +// Microsoft Visual Studio +//***************************************************************************** + +#include + +#define ETL_TARGET_DEVICE_X86 +#define ETL_TARGET_OS_WINDOWS +#define ETL_COMPILER_MICROSOFT +#define ETL_CPP11_SUPPORTED (_MSC_VER >= 1600) +#define ETL_CPP14_SUPPORTED (_MSC_VER >= 1900) +#define ETL_NO_NULLPTR_SUPPORT !ETL_CPP11_SUPPORTED +#define ETL_NO_LARGE_CHAR_SUPPORT !ETL_CPP11_SUPPORTED +#define ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED ETL_CPP14_SUPPORTED +#define ETL_ATOMIC_SUPPORTED ETL_CPP11_SUPPORTED + +#endif diff --git a/src/profiles/ticc.h b/src/profiles/ticc.h new file mode 100644 index 00000000..4f4d3c90 --- /dev/null +++ b/src/profiles/ticc.h @@ -0,0 +1,50 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_TICC__ +#define __ETL_TICC__ + +//***************************************************************************** +// Texas Instruments Code Composer +//***************************************************************************** + +#include + +#define ETL_TARGET_DEVICE_GENERIC +#define ETL_TARGET_OS_NONE +#define ETL_COMPILER_TI +#define ETL_CPP11_SUPPORTED 0 +#define ETL_CPP14_SUPPORTED 0 +#define ETL_NO_NULLPTR_SUPPORT 1 +#define ETL_NO_LARGE_CHAR_SUPPORT 1 +#define ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED 0 +#define ETL_ATOMIC_SUPPORTED 0 + +#endif diff --git a/src/queue.h b/src/queue.h index 7e9b35fe..3ba4d0fa 100644 --- a/src/queue.h +++ b/src/queue.h @@ -34,6 +34,7 @@ SOFTWARE. #include #include +#include "platform.h" #include "container.h" #include "alignment.h" #include "array.h" diff --git a/src/radix.h b/src/radix.h index a2a1a8d9..2e830341 100644 --- a/src/radix.h +++ b/src/radix.h @@ -33,6 +33,7 @@ SOFTWARE. #include +#include "platform.h" #include "enum_type.h" ///\defgroup radix radix diff --git a/src/random.cpp b/src/random.cpp index 63b69718..4edb6188 100644 --- a/src/random.cpp +++ b/src/random.cpp @@ -28,6 +28,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ******************************************************************************/ +#include "platform.h" #include "random.h" namespace etl diff --git a/src/random.h b/src/random.h index 0cfdf05b..f47212f4 100644 --- a/src/random.h +++ b/src/random.h @@ -33,6 +33,8 @@ SOFTWARE. #include +#include "platform.h" + namespace etl { //*************************************************************************** diff --git a/src/reference_flat_multimap.h b/src/reference_flat_multimap.h index 1f892593..5b78750b 100644 --- a/src/reference_flat_multimap.h +++ b/src/reference_flat_multimap.h @@ -33,6 +33,7 @@ SOFTWARE. #include +#include "platform.h" #include "exception.h" #include "error_handler.h" #include "debug_count.h" diff --git a/src/scheduler.h b/src/scheduler.h index 388b0a8c..473d15ac 100644 --- a/src/scheduler.h +++ b/src/scheduler.h @@ -31,6 +31,7 @@ SOFTWARE. #include +#include "platform.h" #include "vector.h" #include "nullptr.h" #include "error_handler.h" diff --git a/src/smallest.h b/src/smallest.h index 16a2ed7c..f6c8c36c 100644 --- a/src/smallest.h +++ b/src/smallest.h @@ -55,6 +55,7 @@ SOFTWARE. #include +#include "platform.h" #include "integral_limits.h" ///\defgroup smallest smallest diff --git a/src/smallest_generator.h b/src/smallest_generator.h index 1c99c09c..99923b5e 100644 --- a/src/smallest_generator.h +++ b/src/smallest_generator.h @@ -67,6 +67,7 @@ cog.outl("//******************************************************************** #include +#include "platform.h" #include "integral_limits.h" ///\defgroup smallest smallest diff --git a/src/sqrt.h b/src/sqrt.h index 481122dd..faeb8806 100644 --- a/src/sqrt.h +++ b/src/sqrt.h @@ -32,6 +32,8 @@ SOFTWARE. #define __ETL_SQRT__ #include + +#include "platform.h" #include "type_traits.h" #include "constant.h" diff --git a/src/stack.h b/src/stack.h index d41e38b3..6be1692b 100644 --- a/src/stack.h +++ b/src/stack.h @@ -35,6 +35,7 @@ SOFTWARE. #include #include +#include "platform.h" #include "container.h" #include "alignment.h" #include "array.h" diff --git a/src/task.h b/src/task.h index dbe410f1..0cd1f88e 100644 --- a/src/task.h +++ b/src/task.h @@ -31,6 +31,7 @@ SOFTWARE. #include +#include "platform.h" #include "error_handler.h" #include "exception.h" diff --git a/src/timer.h b/src/timer.h new file mode 100644 index 00000000..e91d1f5e --- /dev/null +++ b/src/timer.h @@ -0,0 +1,101 @@ +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_TIMER__ +#define __ETL_TIMER__ + +#include + +#include "platform.h" + +#include "atomic.h" + +//***************************************************************************** +// Definitions common to timers. +//***************************************************************************** + +namespace etl +{ +#ifdef ETL_TIMER_SEMAPHORE_TYPE + typedef ETL_TIMER_SEMAPHORE_TYPE timer_semaphore_t; +#else + typedef etl::atomic_uint32_t timer_semaphore_t; +#endif + + //*************************************************************************** + /// Common definitions for the timer framework. + //*************************************************************************** + struct timer + { + // Timer modes. + struct mode + { + enum + { + SINGLE_SHOT = false, + REPEATING = true + }; + + typedef bool type; + }; + + // Timer start status. + struct start + { + enum + { + DELAYED = false, + IMMEDIATE = true + }; + + typedef bool type; + }; + + // Timer id. + struct id + { + enum + { + NO_TIMER = 255 + }; + + typedef uint_least8_t type; + }; + + // Timer state. + struct state + { + enum + { + INACTIVE = 0xFFFFFFFF + }; + }; + }; +} + +#endif diff --git a/src/type_def.h b/src/type_def.h index e35257b1..7d486960 100644 --- a/src/type_def.h +++ b/src/type_def.h @@ -31,6 +31,8 @@ SOFTWARE. #ifndef __ETL_TYPE_DEF__ #define __ETL_TYPE_DEF__ +#include "platform.h" + namespace etl { #define ETL_TYPEDEF(T, name) class name##_tag; typedef etl::type_def name diff --git a/src/type_lookup.h b/src/type_lookup.h index 0a7eb03a..a00c4e76 100644 --- a/src/type_lookup.h +++ b/src/type_lookup.h @@ -31,6 +31,7 @@ SOFTWARE. #include +#include "platform.h" #include "type_traits.h" #include "static_assert.h" diff --git a/src/type_lookup_generator.h b/src/type_lookup_generator.h index f1316b46..7e363cb0 100644 --- a/src/type_lookup_generator.h +++ b/src/type_lookup_generator.h @@ -31,6 +31,7 @@ SOFTWARE. #include +#include "platform.h" #include "type_traits.h" #include "static_assert.h" diff --git a/src/user_type.h b/src/user_type.h index 4ecb193c..4815ed55 100644 --- a/src/user_type.h +++ b/src/user_type.h @@ -31,6 +31,8 @@ SOFTWARE. #ifndef __ETL_USER_TYPE__ #define __ETL_USER_TYPE__ +#include "platform.h" + ///\defgroup user_type user_type /// Smart enumerations.
/// A method of declaring a user type that also contains a set of constants, diff --git a/src/utility.h b/src/utility.h index 81a27a17..db6aa911 100644 --- a/src/utility.h +++ b/src/utility.h @@ -31,6 +31,7 @@ SOFTWARE. #ifndef __ETL_UTILITY__ #define __ETL_UTILITY__ +#include "platform.h" #include "type_traits.h" ///\defgroup utility utility diff --git a/src/visitor.h b/src/visitor.h index c7af3547..b6c412d0 100644 --- a/src/visitor.h +++ b/src/visitor.h @@ -31,6 +31,8 @@ SOFTWARE. #ifndef __ETL_VISITOR__ #define __ETL_VISITOR__ +#include "platform.h" + //***************************************************************************** ///\defgroup visitor visitor /// A set of template classes for easy implementation of the visitor pattern.
diff --git a/test/codeblocks/ETL.cbp b/test/codeblocks/ETL.cbp index 3d05f91b..f38ea2a7 100644 --- a/test/codeblocks/ETL.cbp +++ b/test/codeblocks/ETL.cbp @@ -16,9 +16,6 @@ - - - @@ -37,9 +34,6 @@ - - - @@ -52,12 +46,6 @@ - - - - - - @@ -71,6 +59,7 @@ + @@ -144,6 +133,7 @@ + @@ -180,6 +170,7 @@ + @@ -267,7 +258,11 @@ +<<<<<<< HEAD +======= + +>>>>>>> origin/feature/Timer_triggered_messages @@ -278,6 +273,7 @@ + @@ -319,6 +315,7 @@ + @@ -365,6 +362,7 @@ + diff --git a/test/codeblocks/ETL.depend b/test/codeblocks/ETL.depend new file mode 100644 index 00000000..707aee8a --- /dev/null +++ b/test/codeblocks/ETL.depend @@ -0,0 +1,12063 @@ +# depslib dependency file v1.0 +1424729709 source:u:\users\john\documents\programming\github\etl\crc16.cpp + + +1507907758 + +1424729709 source:u:\users\john\documents\programming\github\etl\crc16_ccitt.cpp + + +1424729709 source:u:\users\john\documents\programming\github\etl\crc32.cpp + + +1424729709 source:u:\users\john\documents\programming\github\etl\crc64_ecma.cpp + + +1424729709 source:u:\users\john\documents\programming\github\etl\crc8_ccitt.cpp + + +1424729709 source:u:\users\john\documents\programming\github\etl\test\main.cpp + + +1452692153 +/UnitTest++.h> + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\unittest++.h + "UnitTestPP.h" + +1494161659 P.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\unittestpp.h + "Config.h" + "TestMacros.h" + "CheckMacros.h" + "TestRunner.h" + "TimeConstraint.h" + "ReportAssert.h" + +1494161659 ert.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\config.h + +1416833504 u:\users\john\documents\programming\github\unittest-cpp\unittest++\testmacros.h + "Config.h" + "TestSuite.h" + "ExceptionMacros.h" + "ExecuteTest.h" + "AssertException.h" + "TestDetails.h" + "MemoryOutStream.h" + "Posix/SignalTranslator.h" + +1494165259 nalTranslator.h" + +1416833496 u:\users\john\documents\programming\github\unittest-cpp\unittest++\testsuite.h + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\exceptionmacros.h + "Config.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\executetest.h + "Config.h" + "ExceptionMacros.h" + "TestDetails.h" + "TestResults.h" + "MemoryOutStream.h" + "AssertException.h" + "CurrentTest.h" + "ReportAssertImpl.h" + "Posix/SignalTranslator.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\testdetails.h + "HelperMacros.h" + +1494165259 ros.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\helpermacros.h + "Config.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\testresults.h + "HelperMacros.h" + +1417973669 u:\users\john\documents\programming\github\unittest-cpp\unittest++\memoryoutstream.h + "Config.h" + "HelperMacros.h" + + + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\assertexception.h + "Config.h" + "HelperMacros.h" + + +1507807483 > + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\currenttest.h + "HelperMacros.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\reportassertimpl.h + "Config.h" + "HelperMacros.h" + + +1417875049 u:\users\john\documents\programming\github\unittest-cpp\unittest++\posix\signaltranslator.h + + + +1414931290 u:\users\john\documents\programming\github\unittest-cpp\unittest++\checkmacros.h + "HelperMacros.h" + "ExceptionMacros.h" + "Checks.h" + "AssertException.h" + "MemoryOutStream.h" + "TestDetails.h" + "CurrentTest.h" + "ReportAssertImpl.h" + +1494165259 ertImpl.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\checks.h + "Config.h" + "TestResults.h" + "MemoryOutStream.h" + +1494161659 Stream.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\testrunner.h + "Test.h" + "TestList.h" + "CurrentTest.h" + +1494165259 st.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\test.h + "TestDetails.h" + +1494165259 ls.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\testlist.h + "HelperMacros.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\timeconstraint.h + "TimeHelpers.h" + "HelperMacros.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\timehelpers.h + "Config.h" + "Posix/TimeHelpers.h" + "Win32/TimeHelpers.h" + +1494165259 eHelpers.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\posix\timehelpers.h + + +1494165259 h> + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\win32\timehelpers.h + "../Config.h" + "../HelperMacros.h" + +1494165259 Macros.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\reportassert.h + "HelperMacros.h" + +1428227985 source:u:\users\john\documents\programming\github\etl\test\test_array.cpp + + "../array.h" + + + + "../integral_limits.h" + +1452516033 al_limits.h" + +1424729709 u:\users\john\documents\programming\github\etl\array.h + + + + + "exception.h" + "type_traits.h" + "parameter_type.h" + "static_assert.h" + "error_handler.h" + +1494277861 dler.h" + +1507728173 .h" + +1424729709 u:\users\john\documents\programming\github\etl\exception.h + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_container.cpp + + "../container.h" + + +1452516033 ner.h" + +1424729709 u:\users\john\documents\programming\github\etl\container.h + + + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_crc.cpp + + + + + + "../crc8_ccitt.h" + "../crc16.h" + "../crc16_ccitt.h" + "../crc16_kermit.h" + "../crc32.h" + "../crc64_ecma.h" + "../endian.h" + +1452701006 ecma.h" + +1424729709 u:\users\john\documents\programming\github\etl\crc8_ccitt.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1424729709 u:\users\john\documents\programming\github\etl\crc16.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1424729709 u:\users\john\documents\programming\github\etl\crc16_ccitt.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1424729709 u:\users\john\documents\programming\github\etl\crc16_kermit.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1424729709 u:\users\john\documents\programming\github\etl\crc32.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1424729709 u:\users\john\documents\programming\github\etl\crc64_ecma.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_cyclic_value.cpp + + "../cyclic_value.h" + +1452516033 _value.h" + +1424729709 u:\users\john\documents\programming\github\etl\cyclic_value.h + + + "static_assert.h" + "exception.h" + +1424729709 u:\users\john\documents\programming\github\etl\static_assert.h + +1427741862 source:u:\users\john\documents\programming\github\etl\test\test_deque.cpp + + "ExtraCheckMacros.h" + "../deque.h" + "data.h" + + + + + + +1427740329 u:\users\john\documents\programming\github\etl\deque.h + + + + + "ideque.h" + "container.h" + "alignment.h" + "array.h" + +1424729709 u:\users\john\documents\programming\github\etl\ideque.h + + + "algorithm.h" + "type_traits.h" + "deque_base.h" + "parameter_type.h" + "error_handler.h" + +1415199768 e.h" + +1427740329 u:\users\john\documents\programming\github\etl\type_traits.h + + "nullptr.h" + +1507064935 " + +1424729709 u:\users\john\documents\programming\github\etl\nullptr.h + +1424729709 u:\users\john\documents\programming\github\etl\deque_base.h + + "exception.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_enum_type.cpp + + + "../enum_type.h" + +1452516033 ype.h" + +1424729709 u:\users\john\documents\programming\github\etl\enum_type.h + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_exception.cpp + + + "../exception.h" + +1452516033 ion.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_function.cpp + + "../function.h" + +1452516033 on.h" + +1424729709 u:\users\john\documents\programming\github\etl\function.h + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_largest.cpp + + "../largest.h" + + +1506012495 ts> + +1424729709 u:\users\john\documents\programming\github\etl\largest.h + "type_traits.h" + +1494165259 ts.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_list.cpp + + "ExtraCheckMacros.h" + "../list.h" + "data.h" + + + + + +1428221662 source:u:\users\john\documents\programming\github\etl\test\test_map.cpp + + + + + + + + + + "../map.h" + +1421966497 u:\users\john\documents\programming\github\etl\test\extracheckmacros.h + + + + + + + + + +1452516033 +/ReportAssertImpl.h> + +1424729709 u:\users\john\documents\programming\github\etl\list.h + + "ilist.h" + "container.h" + "pool.h" + +1427740329 u:\users\john\documents\programming\github\etl\map.h + + + + "imap.h" + "container.h" + "pool.h" + +1427740329 u:\users\john\documents\programming\github\etl\ilist.h + + + + + "nullptr.h" + "list_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + +1428221662 u:\users\john\documents\programming\github\etl\imap.h + + + + + "nullptr.h" + "map_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + +1424729709 u:\users\john\documents\programming\github\etl\list_base.h + + "exception.h" + +1424729709 u:\users\john\documents\programming\github\etl\map_base.h + + "exception.h" + +1414930704 source:u:\users\john\documents\programming\github\etl\test\test_math.cpp + + "../log.h" + "../pow.h" + +1424729709 u:\users\john\documents\programming\github\etl\log.h + + +1415195892 u:\users\john\documents\programming\github\etl\pow.h + + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_numeric.cpp + + "../numeric.h" + + + +1424729709 u:\users\john\documents\programming\github\etl\numeric.h + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_observer.cpp + + "../observer.h" + +1452696227 er.h" + +1424729709 u:\users\john\documents\programming\github\etl\observer.h + + "vector.h" + "exception.h" + "error_handler.h" + +1427740330 u:\users\john\documents\programming\github\etl\vector.h + + + + "ivector.h" + "container.h" + "alignment.h" + "array.h" + +1428224415 u:\users\john\documents\programming\github\etl\ivector.h + + + + + "algorithm.h" + "vector_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1415195892 se.h" + +1424729709 u:\users\john\documents\programming\github\etl\vector_base.h + + "exception.h" + "error_handler.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_queue.cpp + + + "../queue.h" + +1507728173 h" + +1427740329 u:\users\john\documents\programming\github\etl\queue.h + + + "iqueue.h" + "container.h" + "alignment.h" + "array.h" + +1424729709 u:\users\john\documents\programming\github\etl\iqueue.h + + "queue_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1424729709 u:\users\john\documents\programming\github\etl\queue_base.h + + "exception.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_stack.cpp + + + "data.h" + "../stack.h" + +1427740329 u:\users\john\documents\programming\github\etl\stack.h + + + + "istack.h" + "container.h" + "alignment.h" + "array.h" + +1424729709 u:\users\john\documents\programming\github\etl\istack.h + + "stack_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1424729709 u:\users\john\documents\programming\github\etl\stack_base.h + + "exception.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_type_traits.cpp + + "../type_traits.h" + + +1415196048 raits.h" + +1426202987 source:u:\users\john\documents\programming\github\etl\test\test_vector.cpp + + + + + "../vector.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_visitor.cpp + + "../visitor.h" + +1452516033 r.h" + +1424729709 u:\users\john\documents\programming\github\etl\visitor.h + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\assertexception.cpp + "AssertException.h" + +1494165259 eption.h" + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\checks.cpp + "Checks.h" + + +1417973661 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\compositetestreporter.cpp + "CompositeTestReporter.h" + + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\compositetestreporter.h + "TestReporter.h" + +1494165259 ter.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\testreporter.h + "HelperMacros.h" + +1417973667 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\currenttest.cpp + "CurrentTest.h" + + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\deferredtestreporter.cpp + "Config.h" + "DeferredTestReporter.h" + "TestDetails.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\deferredtestreporter.h + "Config.h" + "TestReporter.h" + "DeferredTestResult.h" + + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\deferredtestresult.h + "Config.h" + "HelperMacros.h" + + + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\deferredtestresult.cpp + "Config.h" + "DeferredTestResult.h" + + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\memoryoutstream.cpp + "MemoryOutStream.h" + + + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\reportassert.cpp + "ReportAssert.h" + "ReportAssertImpl.h" + "AssertException.h" + "CurrentTest.h" + "TestResults.h" + "TestDetails.h" + "ReportAssertImpl.h" + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\test.cpp + "Config.h" + "Test.h" + "TestList.h" + "TestResults.h" + "AssertException.h" + "MemoryOutStream.h" + "ExecuteTest.h" + "Posix/SignalTranslator.h" + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\testdetails.cpp + "TestDetails.h" + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\testlist.cpp + "TestList.h" + "Test.h" + + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\testreporter.cpp + "TestReporter.h" + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\testreporterstdout.cpp + "TestReporterStdout.h" + + "TestDetails.h" + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\testreporterstdout.h + "TestReporter.h" + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\testresults.cpp + "TestResults.h" + "TestReporter.h" + "TestDetails.h" + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\testrunner.cpp + "TestRunner.h" + "TestResults.h" + "TestReporter.h" + "TestReporterStdout.h" + "TimeHelpers.h" + "MemoryOutStream.h" + + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\timeconstraint.cpp + "TimeConstraint.h" + "TestResults.h" + "MemoryOutStream.h" + "CurrentTest.h" + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\win32\timehelpers.cpp + "TimeHelpers.h" + + +1414849210 source:u:\users\john\documents\programming\github\unittest-cpp\unittest++\xmltestreporter.cpp + "Config.h" + "XmlTestReporter.h" + + + + +1414849210 u:\users\john\documents\programming\github\unittest-cpp\unittest++\xmltestreporter.h + "Config.h" + "DeferredTestReporter.h" + + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/AssertException.cpp + "AssertException.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/AssertException.h + "Config.h" + "HelperMacros.h" + + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/Config.h + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/HelperMacros.h + "Config.h" + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/Checks.cpp + "Checks.h" + + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/Checks.h + "Config.h" + "TestResults.h" + "MemoryOutStream.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TestResults.h + "HelperMacros.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/MemoryOutStream.h + "Config.h" + "HelperMacros.h" + + + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/CompositeTestReporter.cpp + "CompositeTestReporter.h" + + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/CompositeTestReporter.h + "TestReporter.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TestReporter.h + "HelperMacros.h" + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/CurrentTest.cpp + "CurrentTest.h" + + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/CurrentTest.h + "HelperMacros.h" + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/DeferredTestReporter.cpp + "Config.h" + "DeferredTestReporter.h" + "TestDetails.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/DeferredTestReporter.h + "Config.h" + "TestReporter.h" + "DeferredTestResult.h" + + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/DeferredTestResult.h + "Config.h" + "HelperMacros.h" + + + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TestDetails.h + "HelperMacros.h" + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/DeferredTestResult.cpp + "Config.h" + "DeferredTestResult.h" + + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/MemoryOutStream.cpp + "MemoryOutStream.h" + + + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/ReportAssert.cpp + "ReportAssert.h" + "ReportAssertImpl.h" + "AssertException.h" + "CurrentTest.h" + "TestResults.h" + "TestDetails.h" + "ReportAssertImpl.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/ReportAssert.h + "HelperMacros.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/ReportAssertImpl.h + "Config.h" + "HelperMacros.h" + + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/Test.cpp + "Config.h" + "Test.h" + "TestList.h" + "TestResults.h" + "AssertException.h" + "MemoryOutStream.h" + "ExecuteTest.h" + "Posix/SignalTranslator.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/Test.h + "TestDetails.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TestList.h + "HelperMacros.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/ExecuteTest.h + "Config.h" + "ExceptionMacros.h" + "TestDetails.h" + "TestResults.h" + "MemoryOutStream.h" + "AssertException.h" + "CurrentTest.h" + "ReportAssertImpl.h" + "Posix/SignalTranslator.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/ExceptionMacros.h + "Config.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/Posix/SignalTranslator.h + + + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TestDetails.cpp + "TestDetails.h" + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TestList.cpp + "TestList.h" + "Test.h" + + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TestReporter.cpp + "TestReporter.h" + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TestReporterStdout.cpp + "TestReporterStdout.h" + + "TestDetails.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TestReporterStdout.h + "TestReporter.h" + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TestResults.cpp + "TestResults.h" + "TestReporter.h" + "TestDetails.h" + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TestRunner.cpp + "TestRunner.h" + "TestResults.h" + "TestReporter.h" + "TestReporterStdout.h" + "TimeHelpers.h" + "MemoryOutStream.h" + + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TestRunner.h + "Test.h" + "TestList.h" + "CurrentTest.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TimeHelpers.h + "Config.h" + "Posix/TimeHelpers.h" + "Win32/TimeHelpers.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/Posix/TimeHelpers.h + + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/Win32/TimeHelpers.h + "../Config.h" + "../HelperMacros.h" + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TimeConstraint.cpp + "TimeConstraint.h" + "TestResults.h" + "MemoryOutStream.h" + "CurrentTest.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TimeConstraint.h + "TimeHelpers.h" + "HelperMacros.h" + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/Posix/SignalTranslator.cpp + "SignalTranslator.h" + +1494161659 nslator.h" + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/Posix/TimeHelpers.cpp + "TimeHelpers.h" + + +1414845610 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/XmlTestReporter.cpp + "Config.h" + "XmlTestReporter.h" + + + + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/XmlTestReporter.h + "Config.h" + "DeferredTestReporter.h" + + +1414928322 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/etl/crc16.cpp + + +1414928464 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/etl/crc16_ccitt.cpp + + +1414929156 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/etl/crc32.cpp + + +1414929243 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/etl/crc64_ecma.cpp + + +1414929413 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/etl/crc8_ccitt.cpp + + +1414173716 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/etl/test/main.cpp + + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/UnitTest++.h + "UnitTestPP.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/UnitTestPP.h + "Config.h" + "TestMacros.h" + "CheckMacros.h" + "TestRunner.h" + "TimeConstraint.h" + "ReportAssert.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TestMacros.h + "Config.h" + "TestSuite.h" + "ExceptionMacros.h" + "ExecuteTest.h" + "AssertException.h" + "TestDetails.h" + "MemoryOutStream.h" + "Posix/SignalTranslator.h" + +1414845610 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/TestSuite.h + +1414927690 /mnt/hgfs/W7 My Documents/Programming/GitHub/unittest-cpp/UnitTest++/CheckMacros.h + "HelperMacros.h" + "ExceptionMacros.h" + "Checks.h" + "AssertException.h" + "MemoryOutStream.h" + "TestDetails.h" + "CurrentTest.h" + "ReportAssertImpl.h" + +1415139017 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/etl/test/test_array.cpp + + "../array.h" + + + + + +1415725454 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/array.h + + + + + "exception.h" + +1415195892 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/exception.h + +1414586788 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/etl/test/test_container.cpp + + "../container.h" + + +1415195892 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/container.h + + +1414929413 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/etl/test/test_crc.cpp + + + + + "../crc8_ccitt.h" + "../crc16.h" + "../crc16_ccitt.h" + "../crc16_kermit.h" + "../crc32.h" + "../crc64_ecma.h" + +1415195892 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/crc8_ccitt.h + + +1415195892 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/crc16.h + + +1415195892 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/crc16_ccitt.h + + +1414884332 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/crc16_kermit.h + + +1415195892 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/crc32.h + + +1415195892 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/crc64_ecma.h + + +1415139747 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/etl/test/test_cyclic_value.cpp + + "../cyclic_value.h" + +1415195892 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/cyclic_value.h + + + "static_assert.h" + "exception.h" + +1415195891 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/static_assert.h + +1415274001 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/etl/test/test_deque.cpp + + "../deque.h" + + + +1415276665 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/deque.h + + + + "ideque.h" + "container.h" + +1415199768 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/ideque.h + + + "type_traits.h" + "deque_base.h" + +1415196262 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/type_traits.h + + "nullptr.h" + +1415195892 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/nullptr.h + +1415195892 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/deque_base.h + + "exception.h" + +1414345217 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/etl/test/test_enum_type.cpp + + + "../enum_type.h" + +1415195892 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/enum_type.h + +1414344663 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/etl/test/test_exception.cpp + + + "../exception.h" + +1414347748 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/etl/test/test_function.cpp + + "../function.h" + +1415195892 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/function.h + +1415199647 source:/mnt/hgfs/W7 My Documents/Programming/GitHub/etl/test/test_largest.cpp + + "../largest.h" + + +1415195892 /mnt/hgfs/W7 My Documents/Programming/GitHub/etl/largest.h + +1427740329 source:u:\users\john\documents\programming\github\etl\test\test_bitset.cpp + + + + + "../bitset.h" + +1427740329 u:\users\john\documents\programming\github\etl\bitset.h + + + + + + "integral_limits.h" + "smallest.h" + "array.h" + "nullptr.h" + "log.h" + "ibitset.h" + "binary.h" + +1424729709 u:\users\john\documents\programming\github\etl\integral_limits.h + + + "type_traits.h" + +1424729709 u:\users\john\documents\programming\github\etl\smallest.h + + "integral_limits.h" + +1502812474 limits.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_forward_list.cpp + + "ExtraCheckMacros.h" + "data.h" + "../forward_list.h" + + + + + + +1424729709 u:\users\john\documents\programming\github\etl\forward_list.h + + "pool.h" + "iforward_list.h" + "container.h" + +1427740329 u:\users\john\documents\programming\github\etl\iforward_list.h + + + + + "pool.h" + "nullptr.h" + "forward_list_base.h" + "type_traits.h" + "parameter_type.h" + +1507064935 _type.h" + +1424729709 u:\users\john\documents\programming\github\etl\forward_list_base.h + + "exception.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\crc16_kermit.cpp + + +1427740329 source:u:\users\john\documents\programming\github\etl\test\test_alignment.cpp + + "../alignment.h" + "../type_traits.h" + + + + + +1427740329 u:\users\john\documents\programming\github\etl\alignment.h + + "type_traits.h" + "static_assert.h" + +1507728173 sert.h" + +1424729709 u:\users\john\documents\programming\github\etl\parameter_type.h + "type_traits.h" + +1424729709 u:\users\john\documents\programming\github\etl\endian.h + + "enum_type.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_integral_limits.cpp + + + + + "../integral_limits.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_maths.cpp + + "../log.h" + "../power.h" + "../fibonacci.h" + "../factorial.h" + +1452700712 ial.h" + +1427741862 source:u:\users\john\documents\programming\github\etl\test\test_pool.cpp + + "ExtraCheckMacros.h" + "data.h" + + + "../pool.h" + +1427740329 u:\users\john\documents\programming\github\etl\pool.h + "alignment.h" + "array.h" + "bitset.h" + "ipool.h" + + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_smallest.cpp + + "../smallest.h" + + +1427741862 source:u:\users\john\documents\programming\github\etl\test\test_variant.cpp + + "ExtraCheckMacros.h" + "../variant.h" + + + + +1427740330 u:\users\john\documents\programming\github\etl\variant.h + + "array.h" + "largest.h" + "exception.h" + "type_traits.h" + "integral_limits.h" + "static_assert.h" + "alignment.h" + "error_handler.h" + +1424729709 u:\users\john\documents\programming\github\etl\power.h + + "log.h" + +1424729709 u:\users\john\documents\programming\github\etl\fibonacci.h + + +1424729709 u:\users\john\documents\programming\github\etl\factorial.h + + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_algorithm.cpp + + "../algorithm.h" + "../container.h" + + + + + +1424729709 u:\users\john\documents\programming\github\etl\algorithm.h + + + + + "type_traits.h" + +1416912728 u:\users\john\documents\programming\github\etl\platform.h + +1424729709 u:\users\john\documents\programming\github\etl\error_handler.h + "exception.h" + "function.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_error_handler.cpp + + "../error_handler.h" + "../exception.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\error_handler.cpp + "error_handler.h" + "nullptr.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_functional.cpp + + "../functional.h" + + + + +1424729709 u:\users\john\documents\programming\github\etl\functional.h + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_instance_count.cpp + + "../instance_count.h" + + + + +1424729709 u:\users\john\documents\programming\github\etl\instance_count.h + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_checksum.cpp + + + + + + "../checksum.h" + "../endian.h" + +1424729709 u:\users\john\documents\programming\github\etl\checksum.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_fnv_1.cpp + + + + + + "../fnv_1.h" + "../endian.h" + +1424729709 u:\users\john\documents\programming\github\etl\fnv_1.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_endian.cpp + + + "../endian.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_hash.cpp + + + + + + "../hash.h" + +1424729709 u:\users\john\documents\programming\github\etl\hash.h + + "fnv_1.h" + "type_traits.h" + +1427740329 u:\users\john\documents\programming\github\etl\ibitset.h + "integral_limits.h" + +1423387319 source:u:\users\john\documents\programming\github\etl\test\test_lookup.cpp + + + + + + + + + "../lookup.h" + +1423387319 u:\users\john\documents\programming\github\etl\lookup.h + + + + "ilookup.h" + "vector.h" + +1423387319 u:\users\john\documents\programming\github\etl\ilookup.h + + + + + + "lookup_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1423387319 u:\users\john\documents\programming\github\etl\lookup_base.h + + "exception.h" + "ivector.h" + "error_handler.h" + +1427740329 u:\users\john\documents\programming\github\etl\ipool.h + + "pool_base.h" + "nullptr.h" + "error_handler.h" + +1424729709 u:\users\john\documents\programming\github\etl\pool_base.h + + "exception.h" + "error_handler.h" + +1419179526 source:u:\users\john\documents\programming\github\etl\test\test_singleton.cpp + + "../singleton.h" + +1419179526 ton.h" + +1419179259 u:\users\john\documents\programming\github\etl\singleton.h + +1424729709 u:\users\john\documents\programming\github\etl\test\data.h + + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_bloom_filter.cpp + + + + "../bloom_filter.h" + "../fnv_1.h" + "../crc16.h" + "../crc16_ccitt.h" + "../crc32.h" + +1424729709 u:\users\john\documents\programming\github\etl\bloom_filter.h + "parameter_type.h" + "bitset.h" + "type_traits.h" + "log.h" + "power.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_fixed_iterator.cpp + + + + "../fixed_iterator.h" + +1452516033 iterator.h" + +1424729709 u:\users\john\documents\programming\github\etl\fixed_iterator.h + + +1424729709 u:\users\john\documents\programming\github\etl\ihash.h + + + "exception.h" + "endian.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_binary.cpp + + + "../binary.h" + "../bitset.h" + "../fnv_1.h" + "../integral_limits.h" + +1427740329 u:\users\john\documents\programming\github\etl\binary.h + "type_traits.h" + "integral_limits.h" + "static_assert.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_flat_map.cpp + + + + + + + + + "data.h" + "../flat_map.h" + +1452516120 ap.h" + +1427740329 u:\users\john\documents\programming\github\etl\flat_map.h + + + + "iflat_map.h" + "vector.h" + +1427740329 u:\users\john\documents\programming\github\etl\iflat_map.h + + + + + + "flat_map_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1424729709 u:\users\john\documents\programming\github\etl\flat_map_base.h + + "exception.h" + "ivector.h" + "error_handler.h" + +1424729709 source:u:\users\john\documents\programming\github\etl\test\test_flat_set.cpp + + + + + + + + + "data.h" + "../flat_set.h" + +1452516033 et.h" + +1427740329 u:\users\john\documents\programming\github\etl\flat_set.h + + + + "iflat_set.h" + "vector.h" + +1427740329 u:\users\john\documents\programming\github\etl\iflat_set.h + + + + + + "flat_set_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1424729709 u:\users\john\documents\programming\github\etl\flat_set_base.h + + "exception.h" + "ivector.h" + "error_handler.h" + +1427740329 source:u:\users\john\documents\programming\github\etl\test\test_io_port.cpp + + "../io_port.h" + + +1427740329 u:\users\john\documents\programming\github\etl\io_port.h + + "nullptr.h" + "parameter_type.h" + +1428222717 source:u:\users\john\documents\programming\github\etl\test\test_optional.cpp + + + + "../optional.h" + "../vector.h" + "data.h" + +1428223015 u:\users\john\documents\programming\github\etl\optional.h + "alignment.h" + "type_traits.h" + "exception.h" + +1428224872 source:u:\users\john\documents\programming\github\etl\test\test_set.cpp + + + + + + + + + "../set.h" + +1427741862 u:\users\john\documents\programming\github\etl\set.h + + + + "iset.h" + "container.h" + "pool.h" + +1427746630 u:\users\john\documents\programming\github\etl\iset.h + + + + + "nullptr.h" + "set_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + +1427741862 u:\users\john\documents\programming\github\etl\set_base.h + + "exception.h" + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/AssertException.cpp + "AssertException.h" + "AssertException.h" + "AssertException.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/AssertException.h + "Config.h" + "HelperMacros.h" + + "Config.h" + "HelperMacros.h" + + "Config.h" + "HelperMacros.h" + + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/Config.h + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/HelperMacros.h + "Config.h" + "Config.h" + "Config.h" + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/Checks.cpp + "Checks.h" + + "Checks.h" + + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/Checks.h + "Config.h" + "TestResults.h" + "MemoryOutStream.h" + "Config.h" + "TestResults.h" + "MemoryOutStream.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TestResults.h + "HelperMacros.h" + "HelperMacros.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/MemoryOutStream.h + "Config.h" + "HelperMacros.h" + + + "Config.h" + "HelperMacros.h" + + + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/CompositeTestReporter.cpp + "CompositeTestReporter.h" + + "CompositeTestReporter.h" + + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/CompositeTestReporter.h + "TestReporter.h" + "TestReporter.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TestReporter.h + "HelperMacros.h" + "HelperMacros.h" + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/CurrentTest.cpp + "CurrentTest.h" + + "CurrentTest.h" + + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/CurrentTest.h + "HelperMacros.h" + "HelperMacros.h" + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/DeferredTestReporter.cpp + "Config.h" + "DeferredTestReporter.h" + "TestDetails.h" + "Config.h" + "DeferredTestReporter.h" + "TestDetails.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/DeferredTestReporter.h + "Config.h" + "TestReporter.h" + "DeferredTestResult.h" + + "Config.h" + "TestReporter.h" + "DeferredTestResult.h" + + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/DeferredTestResult.h + "Config.h" + "HelperMacros.h" + + + "Config.h" + "HelperMacros.h" + + + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TestDetails.h + "HelperMacros.h" + "HelperMacros.h" + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/DeferredTestResult.cpp + "Config.h" + "DeferredTestResult.h" + + "Config.h" + "DeferredTestResult.h" + + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/MemoryOutStream.cpp + "MemoryOutStream.h" + + + "MemoryOutStream.h" + + + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/Posix/SignalTranslator.cpp + "SignalTranslator.h" + "SignalTranslator.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/Posix/SignalTranslator.h + + + + + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/Posix/TimeHelpers.cpp + "TimeHelpers.h" + + "TimeHelpers.h" + + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/Posix/TimeHelpers.h + + + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/ReportAssert.cpp + "ReportAssert.h" + "ReportAssertImpl.h" + "AssertException.h" + "CurrentTest.h" + "TestResults.h" + "TestDetails.h" + "ReportAssertImpl.h" + "ReportAssert.h" + "ReportAssertImpl.h" + "AssertException.h" + "CurrentTest.h" + "TestResults.h" + "TestDetails.h" + "ReportAssertImpl.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/ReportAssert.h + "HelperMacros.h" + "HelperMacros.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/ReportAssertImpl.h + "Config.h" + "HelperMacros.h" + + "Config.h" + "HelperMacros.h" + + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/Test.cpp + "Config.h" + "Test.h" + "TestList.h" + "TestResults.h" + "AssertException.h" + "MemoryOutStream.h" + "ExecuteTest.h" + "Posix/SignalTranslator.h" + "Config.h" + "Test.h" + "TestList.h" + "TestResults.h" + "AssertException.h" + "MemoryOutStream.h" + "ExecuteTest.h" + "Posix/SignalTranslator.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/Test.h + "TestDetails.h" + "TestDetails.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TestList.h + "HelperMacros.h" + "HelperMacros.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/ExecuteTest.h + "Config.h" + "ExceptionMacros.h" + "TestDetails.h" + "TestResults.h" + "MemoryOutStream.h" + "AssertException.h" + "CurrentTest.h" + "ReportAssertImpl.h" + "Posix/SignalTranslator.h" + "Config.h" + "ExceptionMacros.h" + "TestDetails.h" + "TestResults.h" + "MemoryOutStream.h" + "AssertException.h" + "RequiredCheckException.h" + "CurrentTest.h" + "ReportAssertImpl.h" + "Posix/SignalTranslator.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/ExceptionMacros.h + "Config.h" + "Config.h" + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TestDetails.cpp + "TestDetails.h" + "TestDetails.h" + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TestList.cpp + "TestList.h" + "Test.h" + + "TestList.h" + "Test.h" + + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TestReporter.cpp + "TestReporter.h" + "TestReporter.h" + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TestReporterStdout.cpp + "TestReporterStdout.h" + + "TestDetails.h" + "TestReporterStdout.h" + + "TestDetails.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TestReporterStdout.h + "TestReporter.h" + "TestReporter.h" + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TestResults.cpp + "TestResults.h" + "TestReporter.h" + "TestDetails.h" + "TestResults.h" + "TestReporter.h" + "TestDetails.h" + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TestRunner.cpp + "TestRunner.h" + "TestResults.h" + "TestReporter.h" + "TestReporterStdout.h" + "TimeHelpers.h" + "MemoryOutStream.h" + + "TestRunner.h" + "TestResults.h" + "TestReporter.h" + "TestReporterStdout.h" + "TimeHelpers.h" + "MemoryOutStream.h" + + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TestRunner.h + "Test.h" + "TestList.h" + "CurrentTest.h" + "Test.h" + "TestList.h" + "CurrentTest.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TimeHelpers.h + "Config.h" + "Posix/TimeHelpers.h" + "Win32/TimeHelpers.h" + "Config.h" + "Posix/TimeHelpers.h" + "Win32/TimeHelpers.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/Win32/TimeHelpers.h + "../Config.h" + "../HelperMacros.h" + "../Config.h" + "../HelperMacros.h" + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TimeConstraint.cpp + "TimeConstraint.h" + "TestResults.h" + "MemoryOutStream.h" + "CurrentTest.h" + "TimeConstraint.h" + "TestResults.h" + "MemoryOutStream.h" + "CurrentTest.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TimeConstraint.h + "TimeHelpers.h" + "HelperMacros.h" + "TimeHelpers.h" + "HelperMacros.h" + "TestDetails.h" + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/XmlTestReporter.cpp + "Config.h" + "XmlTestReporter.h" + + + + "Config.h" + "XmlTestReporter.h" + + + + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/XmlTestReporter.h + "Config.h" + "DeferredTestReporter.h" + + "Config.h" + "DeferredTestReporter.h" + + +1424726109 source:/mnt/hgfs/Programming/GitHub/etl/crc16.cpp + + +1424726109 source:/mnt/hgfs/Programming/GitHub/etl/crc16_ccitt.cpp + + +1424726109 source:/mnt/hgfs/Programming/GitHub/etl/crc16_kermit.cpp + + +1424726109 source:/mnt/hgfs/Programming/GitHub/etl/crc32.cpp + + +1424726109 source:/mnt/hgfs/Programming/GitHub/etl/crc64_ecma.cpp + + +1424726109 source:/mnt/hgfs/Programming/GitHub/etl/crc8_ccitt.cpp + + +1424726109 source:/mnt/hgfs/Programming/GitHub/etl/error_handler.cpp + "error_handler.h" + "nullptr.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/error_handler.h + "exception.h" + "function.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/exception.h + +1424726109 /mnt/hgfs/Programming/GitHub/etl/function.h + +1424726109 /mnt/hgfs/Programming/GitHub/etl/nullptr.h + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/main.cpp + + + "UnitTest++.h" + "UnitTest++.h" + +1494277861 +.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/UnitTest++.h + "UnitTestPP.h" + "UnitTestPP.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/UnitTestPP.h + "Config.h" + "TestMacros.h" + "CheckMacros.h" + "TestRunner.h" + "TimeConstraint.h" + "ReportAssert.h" + "Config.h" + "TestMacros.h" + "CheckMacros.h" + "RequireMacros.h" + "TestRunner.h" + "TimeConstraint.h" + "ReportAssert.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TestMacros.h + "Config.h" + "TestSuite.h" + "ExceptionMacros.h" + "ExecuteTest.h" + "AssertException.h" + "TestDetails.h" + "MemoryOutStream.h" + "Posix/SignalTranslator.h" + "Config.h" + "TestSuite.h" + "ExceptionMacros.h" + "ExecuteTest.h" + "AssertException.h" + "TestDetails.h" + "MemoryOutStream.h" + "Posix/SignalTranslator.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/TestSuite.h + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/CheckMacros.h + "HelperMacros.h" + "ExceptionMacros.h" + "Checks.h" + "AssertException.h" + "MemoryOutStream.h" + "TestDetails.h" + "CurrentTest.h" + "ReportAssertImpl.h" + "HelperMacros.h" + "ExceptionMacros.h" + "Checks.h" + "AssertException.h" + "RequiredCheckException.h" + "MemoryOutStream.h" + "TestDetails.h" + "CurrentTest.h" + "ReportAssertImpl.h" + +1502115378 source:/mnt/hgfs/Programming/GitHub/etl/test/test_algorithm.cpp + + "../algorithm.h" + "../container.h" + + + + + + "../src/algorithm.h" + "../src/container.h" + + + + + "UnitTest++.h" + "algorithm.h" + "container.h" + + + + + + "UnitTest++.h" + "algorithm.h" + "container.h" + + + + + + +1424726109 /mnt/hgfs/Programming/GitHub/etl/algorithm.h + + + + + "type_traits.h" + +1427740329 /mnt/hgfs/Programming/GitHub/etl/type_traits.h + + "nullptr.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/container.h + + + +1496989173 source:/mnt/hgfs/Programming/GitHub/etl/test/test_alignment.cpp + + "../alignment.h" + "../type_traits.h" + + + + + + "../src/alignment.h" + "../src/type_traits.h" + + + + + "UnitTest++.h" + "alignment.h" + "type_traits.h" + + + + + "UnitTest++.h" + "alignment.h" + "type_traits.h" + + + + + +1428245031 /mnt/hgfs/Programming/GitHub/etl/alignment.h + + "type_traits.h" + "static_assert.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/static_assert.h + +1502548036 source:/mnt/hgfs/Programming/GitHub/etl/test/test_array.cpp + + "../array.h" + + + + "../integral_limits.h" + + "../src/array.h" + + + + "../src/integral_limits.h" + "UnitTest++.h" + "array.h" + + + + "integral_limits.h" + "UnitTest++.h" + "array.h" + + + + "integral_limits.h" + +1479511692 tegral_limits.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/array.h + + + + + "exception.h" + "type_traits.h" + "parameter_type.h" + "static_assert.h" + "error_handler.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/parameter_type.h + "type_traits.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/integral_limits.h + + + "type_traits.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_binary.cpp + + + "../binary.h" + "../bitset.h" + "../fnv_1.h" + "../integral_limits.h" + + + + "../src/binary.h" + "../src/bitset.h" + "../src/fnv_1.h" + "../src/integral_limits.h" + "UnitTest++.h" + + + "binary.h" + "bitset.h" + "fnv_1.h" + "integral_limits.h" + "UnitTest++.h" + + + "binary.h" + "bitset.h" + "fnv_1.h" + "integral_limits.h" + +1427740329 /mnt/hgfs/Programming/GitHub/etl/binary.h + "type_traits.h" + "integral_limits.h" + "static_assert.h" + +1427740329 /mnt/hgfs/Programming/GitHub/etl/bitset.h + + + + + + "integral_limits.h" + "smallest.h" + "array.h" + "nullptr.h" + "log.h" + "ibitset.h" + "binary.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/smallest.h + + "integral_limits.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/log.h + + +1427740329 /mnt/hgfs/Programming/GitHub/etl/ibitset.h + "integral_limits.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/fnv_1.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/endian.h + + "enum_type.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/enum_type.h + +1424726109 /mnt/hgfs/Programming/GitHub/etl/ihash.h + + + "exception.h" + "endian.h" + +1501063087 source:/mnt/hgfs/Programming/GitHub/etl/test/test_bitset.cpp + + + + + "../bitset.h" + + + + + "../src/bitset.h" + "UnitTest++.h" + + + + "bitset.h" + "UnitTest++.h" + + + + "bitset.h" + +1482623861 tset.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_bloom_filter.cpp + + + + "../bloom_filter.h" + "../fnv_1.h" + "../crc16.h" + "../crc16_ccitt.h" + "../crc32.h" + + + + "../src/bloom_filter.h" + "../src/fnv_1.h" + "../src/crc16.h" + "../src/crc16_ccitt.h" + "../src/crc32.h" + "../src/char_traits.h" + "UnitTest++.h" + + + "bloom_filter.h" + "fnv_1.h" + "crc16.h" + "crc16_ccitt.h" + "crc32.h" + "char_traits.h" + "UnitTest++.h" + + + "bloom_filter.h" + "fnv_1.h" + "crc16.h" + "crc16_ccitt.h" + "crc32.h" + "char_traits.h" + +1482612858 ar_traits.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/bloom_filter.h + "parameter_type.h" + "bitset.h" + "type_traits.h" + "log.h" + "power.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/power.h + + "log.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/crc16.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/crc16_ccitt.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/crc32.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_checksum.cpp + + + + + + "../checksum.h" + "../endian.h" + + + + + + "../src/checksum.h" + "../src/endian.h" + "UnitTest++.h" + + + + + "checksum.h" + "UnitTest++.h" + + + + + "checksum.h" + +1479511692 dian.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/checksum.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_container.cpp + + "../container.h" + + + "../src/container.h" + + "UnitTest++.h" + "container.h" + + "UnitTest++.h" + "container.h" + + +1479511691 ntainer.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_crc.cpp + + + + + + "../crc8_ccitt.h" + "../crc16.h" + "../crc16_ccitt.h" + "../crc16_kermit.h" + "../crc32.h" + "../crc64_ecma.h" + "../endian.h" + + + + + + "../src/crc8_ccitt.h" + "../src/crc16.h" + "../src/crc16_ccitt.h" + "../src/crc16_kermit.h" + "../src/crc32.h" + "../src/crc64_ecma.h" + "UnitTest++.h" + + + + + "crc8_ccitt.h" + "crc16.h" + "crc16_ccitt.h" + "crc16_kermit.h" + "crc32.h" + "crc64_ecma.h" + "UnitTest++.h" + + + + + "crc8_ccitt.h" + "crc16.h" + "crc16_ccitt.h" + "crc16_kermit.h" + "crc32.h" + "crc64_ecma.h" + +1494277861 a.h" + +1479511691 c64_ecma.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/crc8_ccitt.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/crc16_kermit.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/crc64_ecma.h + + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + +1507724573 source:/mnt/hgfs/Programming/GitHub/etl/test/test_cyclic_value.cpp + + "../cyclic_value.h" + + "../src/cyclic_value.h" + "UnitTest++.h" + "cyclic_value.h" + "UnitTest++.h" + "cyclic_value.h" + +1494277861 lue.h" + +1479511691 clic_value.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/cyclic_value.h + + + "static_assert.h" + "exception.h" + +1502548036 source:/mnt/hgfs/Programming/GitHub/etl/test/test_deque.cpp + + "ExtraCheckMacros.h" + "../deque.h" + "data.h" + + + + + + + "ExtraCheckMacros.h" + "../src/deque.h" + "data.h" + + + + + + "UnitTest++.h" + "ExtraCheckMacros.h" + "deque.h" + "data.h" + + + + + + + "UnitTest++.h" + "ExtraCheckMacros.h" + "deque.h" + "data.h" + + + + + + + +1494274261 /mnt/hgfs/Programming/GitHub/etl/test/ExtraCheckMacros.h + + + + + + + + + + + + + + + + + "../unittest-cpp/UnitTest++/HelperMacros.h" + "../unittest-cpp/UnitTest++/ExceptionMacros.h" + "../unittest-cpp/UnitTest++/Checks.h" + "../unittest-cpp/UnitTest++/AssertException.h" + "../unittest-cpp/UnitTest++/MemoryOutStream.h" + "../unittest-cpp/UnitTest++/TestDetails.h" + "../unittest-cpp/UnitTest++/CurrentTest.h" + "../unittest-cpp/UnitTest++/ReportAssertImpl.h" + "../unittest-cpp/UnitTest++/HelperMacros.h" + "../unittest-cpp/UnitTest++/ExceptionMacros.h" + "../unittest-cpp/UnitTest++/Checks.h" + "../unittest-cpp/UnitTest++/AssertException.h" + "../unittest-cpp/UnitTest++/MemoryOutStream.h" + "../unittest-cpp/UnitTest++/TestDetails.h" + "../unittest-cpp/UnitTest++/CurrentTest.h" + "../unittest-cpp/UnitTest++/ReportAssertImpl.h" + +1494277861 st-cpp/UnitTest++/ReportAssertImpl.h" + +1427740329 /mnt/hgfs/Programming/GitHub/etl/deque.h + + + + + "ideque.h" + "container.h" + "alignment.h" + "array.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/ideque.h + + + "algorithm.h" + "type_traits.h" + "deque_base.h" + "parameter_type.h" + "error_handler.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/deque_base.h + + "exception.h" + +1501063381 /mnt/hgfs/Programming/GitHub/etl/test/data.h + + + + + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_endian.cpp + + + "../endian.h" + + + "../src/endian.h" + "UnitTest++.h" + + "endianness.h" + "UnitTest++.h" + + "endianness.h" + +1506012495 s.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_enum_type.cpp + + + "../enum_type.h" + + + "../src/enum_type.h" + "UnitTest++.h" + + "enum_type.h" + "UnitTest++.h" + + "enum_type.h" + +1479511691 um_type.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_error_handler.cpp + + "../error_handler.h" + "../exception.h" + + + + + "../src/error_handler.h" + "../src/exception.h" + "UnitTest++.h" + + + + "error_handler.h" + "exception.h" + "UnitTest++.h" + + + + "error_handler.h" + "exception.h" + +1482625380 ception.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_exception.cpp + + + "../exception.h" + + + "../src/exception.h" + "UnitTest++.h" + + "exception.h" + "UnitTest++.h" + + "exception.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_fixed_iterator.cpp + + + + "../fixed_iterator.h" + + + + "../src/fixed_iterator.h" + "UnitTest++.h" + + + "fixed_iterator.h" + "UnitTest++.h" + + + "fixed_iterator.h" + +1494277861 rator.h" + +1479511691 xed_iterator.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/fixed_iterator.h + + +1497302912 source:/mnt/hgfs/Programming/GitHub/etl/test/test_flat_map.cpp + + + + + + + + + "data.h" + "../flat_map.h" + + + + + + + + + "data.h" + "../src/flat_map.h" + "UnitTest++.h" + + + + + + + + + "data.h" + "flat_map.h" + "UnitTest++.h" + + + + + + + + + "data.h" + "flat_map.h" + +1479511691 at_map.h" + +1427740329 /mnt/hgfs/Programming/GitHub/etl/flat_map.h + + + + "iflat_map.h" + "vector.h" + +1427740329 /mnt/hgfs/Programming/GitHub/etl/iflat_map.h + + + + + + "flat_map_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/flat_map_base.h + + "exception.h" + "ivector.h" + "error_handler.h" + +1428224415 /mnt/hgfs/Programming/GitHub/etl/ivector.h + + + + + "algorithm.h" + "vector_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/vector_base.h + + "exception.h" + "error_handler.h" + +1427740330 /mnt/hgfs/Programming/GitHub/etl/vector.h + + + + "ivector.h" + "container.h" + "alignment.h" + "array.h" + +1501063087 source:/mnt/hgfs/Programming/GitHub/etl/test/test_flat_set.cpp + + + + + + + + + "data.h" + "../flat_set.h" + + + + + + + + + "data.h" + "../src/flat_set.h" + "UnitTest++.h" + + + + + + + + "data.h" + "flat_set.h" + "UnitTest++.h" + + + + + + + + "data.h" + "flat_set.h" + +1479511691 at_set.h" + +1427740329 /mnt/hgfs/Programming/GitHub/etl/flat_set.h + + + + "iflat_set.h" + "vector.h" + +1427740329 /mnt/hgfs/Programming/GitHub/etl/iflat_set.h + + + + + + "flat_set_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/flat_set_base.h + + "exception.h" + "ivector.h" + "error_handler.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_fnv_1.cpp + + + + + + "../fnv_1.h" + "../endian.h" + + + + + + "../src/fnv_1.h" + "UnitTest++.h" + + + + + "fnv_1.h" + "UnitTest++.h" + + + + + "fnv_1.h" + +1482623723 v_1.h" + +1502548036 source:/mnt/hgfs/Programming/GitHub/etl/test/test_forward_list.cpp + + "ExtraCheckMacros.h" + "data.h" + "../forward_list.h" + + + + + + + "ExtraCheckMacros.h" + "data.h" + "../src/forward_list.h" + + + + + + "UnitTest++.h" + "ExtraCheckMacros.h" + "data.h" + "forward_list.h" + + + + + + + +1424726109 /mnt/hgfs/Programming/GitHub/etl/forward_list.h + + "pool.h" + "iforward_list.h" + "container.h" + +1427740329 /mnt/hgfs/Programming/GitHub/etl/pool.h + "alignment.h" + "array.h" + "bitset.h" + "ipool.h" + + +1427740329 /mnt/hgfs/Programming/GitHub/etl/ipool.h + + "pool_base.h" + "nullptr.h" + "error_handler.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/pool_base.h + + "exception.h" + "error_handler.h" + +1427740329 /mnt/hgfs/Programming/GitHub/etl/iforward_list.h + + + + + "pool.h" + "nullptr.h" + "forward_list_base.h" + "type_traits.h" + "parameter_type.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/forward_list_base.h + + "exception.h" + +1507724573 source:/mnt/hgfs/Programming/GitHub/etl/test/test_function.cpp + + "../function.h" + + "../src/function.h" + "UnitTest++.h" + "function.h" + "UnitTest++.h" + "function.h" + +1479511692 nction.h" + +1497714149 source:/mnt/hgfs/Programming/GitHub/etl/test/test_functional.cpp + + "../functional.h" + + + + + "../src/functional.h" + + + + "UnitTest++.h" + "functional.h" + + + + "UnitTest++.h" + "functional.h" + + + + +1424726109 /mnt/hgfs/Programming/GitHub/etl/functional.h + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_hash.cpp + + + + + + "../hash.h" + + + + + + "../src/hash.h" + "UnitTest++.h" + + + + + "hash.h" + "UnitTest++.h" + + + + + "hash.h" + +1482624624 sh.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/hash.h + + "fnv_1.h" + "type_traits.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_instance_count.cpp + + "../instance_count.h" + + + + + "../src/instance_count.h" + + + + "UnitTest++.h" + "instance_count.h" + + + + "UnitTest++.h" + "instance_count.h" + + + + +1424726109 /mnt/hgfs/Programming/GitHub/etl/instance_count.h + +1503070959 source:/mnt/hgfs/Programming/GitHub/etl/test/test_integral_limits.cpp + + + + + "../integral_limits.h" + + + + + "../src/integral_limits.h" + "UnitTest++.h" + + + + "integral_limits.h" + "UnitTest++.h" + + + + "integral_limits.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_io_port.cpp + + "../io_port.h" + + + "../src/io_port.h" + + "UnitTest++.h" + "io_port.h" + + + + "UnitTest++.h" + "io_port.h" + + + + +1427740329 /mnt/hgfs/Programming/GitHub/etl/io_port.h + + "nullptr.h" + "parameter_type.h" + +1501063684 source:/mnt/hgfs/Programming/GitHub/etl/test/test_largest.cpp + + "../largest.h" + + + "../src/largest.h" + + "UnitTest++.h" + "largest.h" + + "UnitTest++.h" + "largest.h" + + +1424726109 /mnt/hgfs/Programming/GitHub/etl/largest.h + "type_traits.h" + +1502548036 source:/mnt/hgfs/Programming/GitHub/etl/test/test_list.cpp + + "ExtraCheckMacros.h" + "../list.h" + "data.h" + + + + + + "ExtraCheckMacros.h" + "../src/list.h" + "data.h" + + + + + "UnitTest++.h" + "ExtraCheckMacros.h" + "list.h" + "data.h" + + + + + "UnitTest++.h" + "ExtraCheckMacros.h" + "list.h" + "data.h" + + + + + +1424726109 /mnt/hgfs/Programming/GitHub/etl/list.h + + "ilist.h" + "container.h" + "pool.h" + +1427740329 /mnt/hgfs/Programming/GitHub/etl/ilist.h + + + + + "nullptr.h" + "list_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/list_base.h + + "exception.h" + +1507061335 source:/mnt/hgfs/Programming/GitHub/etl/test/test_map.cpp + + + + + + + + + + "../map.h" + + + + + + + + + "../src/map.h" + "UnitTest++.h" + + + + + + + + "map.h" + "UnitTest++.h" + + + + + + + + "map.h" + +1479511692 p.h" + +1427740329 /mnt/hgfs/Programming/GitHub/etl/map.h + + + + "imap.h" + "container.h" + "pool.h" + +1428221662 /mnt/hgfs/Programming/GitHub/etl/imap.h + + + + + "nullptr.h" + "map_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/map_base.h + + "exception.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_maths.cpp + + "../log.h" + "../power.h" + "../fibonacci.h" + "../factorial.h" + + "../src/log.h" + "../src/power.h" + "../src/fibonacci.h" + "../src/factorial.h" + "UnitTest++.h" + "log.h" + "power.h" + "fibonacci.h" + "factorial.h" + "UnitTest++.h" + "log.h" + "power.h" + "fibonacci.h" + "factorial.h" + "sqrt.h" + +1482692728 ctorial.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/fibonacci.h + + +1424726109 /mnt/hgfs/Programming/GitHub/etl/factorial.h + + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_numeric.cpp + + "../numeric.h" + + + + "../src/numeric.h" + + + "UnitTest++.h" + "numeric.h" + + + "UnitTest++.h" + "numeric.h" + + + +1424726109 /mnt/hgfs/Programming/GitHub/etl/numeric.h + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_observer.cpp + + "../observer.h" + + "../src/observer.h" + "UnitTest++.h" + "observer.h" + "UnitTest++.h" + "observer.h" + +1482624916 server.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/observer.h + + "vector.h" + "exception.h" + "error_handler.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_optional.cpp + + + + "../optional.h" + "../vector.h" + "data.h" + + + + "../src/optional.h" + "../src/vector.h" + "data.h" + "UnitTest++.h" + + + "optional.h" + "vector.h" + "data.h" + "UnitTest++.h" + + + "optional.h" + "vector.h" + "data.h" + +1428223015 /mnt/hgfs/Programming/GitHub/etl/optional.h + "alignment.h" + "type_traits.h" + "exception.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_pool.cpp + + "ExtraCheckMacros.h" + "data.h" + + + "../pool.h" + + "ExtraCheckMacros.h" + "data.h" + + + "../src/pool.h" + "UnitTest++.h" + "ExtraCheckMacros.h" + "data.h" + + + "pool.h" + "UnitTest++.h" + "ExtraCheckMacros.h" + "data.h" + + + "pool.h" + +1482750186 ol.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_queue.cpp + + + "../queue.h" + + + "../src/queue.h" + "UnitTest++.h" + + "queue.h" + "UnitTest++.h" + + "queue.h" + +1479511692 eue.h" + +1427740329 /mnt/hgfs/Programming/GitHub/etl/queue.h + + + "iqueue.h" + "container.h" + "alignment.h" + "array.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/iqueue.h + + "queue_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/queue_base.h + + "exception.h" + +1507061335 source:/mnt/hgfs/Programming/GitHub/etl/test/test_set.cpp + + + + + + + + + "../set.h" + + + + + + + + + "../src/set.h" + "UnitTest++.h" + + + + + + + + "set.h" + "UnitTest++.h" + + + + + + + + "set.h" + +1479511692 t.h" + +1427741862 /mnt/hgfs/Programming/GitHub/etl/set.h + + + + "iset.h" + "container.h" + "pool.h" + +1427746630 /mnt/hgfs/Programming/GitHub/etl/iset.h + + + + + "nullptr.h" + "set_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + +1427741862 /mnt/hgfs/Programming/GitHub/etl/set_base.h + + "exception.h" + +1500974118 source:/mnt/hgfs/Programming/GitHub/etl/test/test_smallest.cpp + + "../smallest.h" + + + "../src/smallest.h" + + "UnitTest++.h" + "smallest.h" + + "UnitTest++.h" + "smallest.h" + + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_stack.cpp + + + "data.h" + "../stack.h" + + + "data.h" + "../src/stack.h" + "UnitTest++.h" + + "data.h" + "stack.h" + "UnitTest++.h" + + "data.h" + "stack.h" + +1479511692 ack.h" + +1427740329 /mnt/hgfs/Programming/GitHub/etl/stack.h + + + + "istack.h" + "container.h" + "alignment.h" + "array.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/istack.h + + "stack_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/stack_base.h + + "exception.h" + +1507061335 source:/mnt/hgfs/Programming/GitHub/etl/test/test_type_traits.cpp + + "../type_traits.h" + + + "../src/type_traits.h" + + + "UnitTest++.h" + "type_traits.h" + + "UnitTest++.h" + "type_traits.h" + + +1502115378 source:/mnt/hgfs/Programming/GitHub/etl/test/test_variant.cpp + + "ExtraCheckMacros.h" + "../variant.h" + + + + + + "ExtraCheckMacros.h" + "../src/variant.h" + + + + "UnitTest++.h" + "ExtraCheckMacros.h" + "variant.h" + + + + "UnitTest++.h" + "ExtraCheckMacros.h" + "variant.h" + + + + +1428245031 /mnt/hgfs/Programming/GitHub/etl/variant.h + + "array.h" + "largest.h" + "exception.h" + "type_traits.h" + "integral_limits.h" + "static_assert.h" + "alignment.h" + "error_handler.h" + +1502548036 source:/mnt/hgfs/Programming/GitHub/etl/test/test_vector.cpp + + + + + "../vector.h" + + + + + "../src/vector.h" + "UnitTest++.h" + + + + + "vector.h" + "UnitTest++.h" + + + + + "vector.h" + +1479511692 ctor.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_visitor.cpp + + "../visitor.h" + + "../src/visitor.h" + "UnitTest++.h" + "visitor.h" + "UnitTest++.h" + "visitor.h" + +1479511692 sitor.h" + +1424726109 /mnt/hgfs/Programming/GitHub/etl/visitor.h + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\assertexception.cpp + "AssertException.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\assertexception.h + "Config.h" + "HelperMacros.h" + + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\config.h + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\helpermacros.h + "Config.h" + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\checks.cpp + "Checks.h" + + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\checks.h + "Config.h" + "TestResults.h" + "MemoryOutStream.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\testresults.h + "HelperMacros.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\memoryoutstream.h + "Config.h" + "HelperMacros.h" + + + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\compositetestreporter.cpp + "CompositeTestReporter.h" + + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\compositetestreporter.h + "TestReporter.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\testreporter.h + "HelperMacros.h" + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\currenttest.cpp + "CurrentTest.h" + + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\currenttest.h + "HelperMacros.h" + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\deferredtestreporter.cpp + "Config.h" + "DeferredTestReporter.h" + "TestDetails.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\deferredtestreporter.h + "Config.h" + "TestReporter.h" + "DeferredTestResult.h" + + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\deferredtestresult.h + "Config.h" + "HelperMacros.h" + + + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\testdetails.h + "HelperMacros.h" + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\deferredtestresult.cpp + "Config.h" + "DeferredTestResult.h" + + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\memoryoutstream.cpp + "MemoryOutStream.h" + + + +1417875047 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\posix\signaltranslator.cpp + "SignalTranslator.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\posix\signaltranslator.h + + + +1417875051 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\posix\timehelpers.cpp + "TimeHelpers.h" + + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\posix\timehelpers.h + + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\reportassert.cpp + "ReportAssert.h" + "ReportAssertImpl.h" + "AssertException.h" + "CurrentTest.h" + "TestResults.h" + "TestDetails.h" + "ReportAssertImpl.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\reportassert.h + "HelperMacros.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\reportassertimpl.h + "Config.h" + "HelperMacros.h" + + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\test.cpp + "Config.h" + "Test.h" + "TestList.h" + "TestResults.h" + "AssertException.h" + "MemoryOutStream.h" + "ExecuteTest.h" + "Posix/SignalTranslator.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\test.h + "TestDetails.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\testlist.h + "HelperMacros.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\executetest.h + "Config.h" + "ExceptionMacros.h" + "TestDetails.h" + "TestResults.h" + "MemoryOutStream.h" + "AssertException.h" + "RequiredCheckException.h" + "CurrentTest.h" + "ReportAssertImpl.h" + "Posix/SignalTranslator.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\exceptionmacros.h + "Config.h" + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\testdetails.cpp + "TestDetails.h" + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\testlist.cpp + "TestList.h" + "Test.h" + + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\testreporter.cpp + "TestReporter.h" + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\testreporterstdout.cpp + "TestReporterStdout.h" + + "TestDetails.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\testreporterstdout.h + "TestReporter.h" + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\testresults.cpp + "TestResults.h" + "TestReporter.h" + "TestDetails.h" + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\testrunner.cpp + "TestRunner.h" + "TestResults.h" + "TestReporter.h" + "TestReporterStdout.h" + "TimeHelpers.h" + "MemoryOutStream.h" + + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\testrunner.h + "Test.h" + "TestList.h" + "CurrentTest.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\timehelpers.h + "Config.h" + "Posix/TimeHelpers.h" + "Win32/TimeHelpers.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\win32\timehelpers.h + "../Config.h" + "../HelperMacros.h" + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\timeconstraint.cpp + "TimeConstraint.h" + "TestResults.h" + "MemoryOutStream.h" + "CurrentTest.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\timeconstraint.h + "TimeHelpers.h" + "HelperMacros.h" + "TestDetails.h" + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\xmltestreporter.cpp + "Config.h" + "XmlTestReporter.h" + + + + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\xmltestreporter.h + "Config.h" + "DeferredTestReporter.h" + + +1450265856 source:d:\users\john\documents\programming\github\etl\crc16.cpp + + +1450265856 source:d:\users\john\documents\programming\github\etl\crc16_ccitt.cpp + + +1450265856 source:d:\users\john\documents\programming\github\etl\crc16_kermit.cpp + + +1450265856 source:d:\users\john\documents\programming\github\etl\crc32.cpp + + +1450265856 source:d:\users\john\documents\programming\github\etl\crc64_ecma.cpp + + +1450265856 source:d:\users\john\documents\programming\github\etl\crc8_ccitt.cpp + + +1450265856 source:d:\users\john\documents\programming\github\etl\error_handler.cpp + "error_handler.h" + "nullptr.h" + +1452796556 d:\users\john\documents\programming\github\etl\error_handler.h + + "exception.h" + "function.h" + +1450265856 d:\users\john\documents\programming\github\etl\exception.h + +1452203243 d:\users\john\documents\programming\github\etl\function.h + +1450265856 d:\users\john\documents\programming\github\etl\nullptr.h + +1494277861 source:d:\users\john\documents\programming\github\etl\test\main.cpp + "UnitTest++.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\unittest++.h + "UnitTestPP.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\unittestpp.h + "Config.h" + "TestMacros.h" + "CheckMacros.h" + "RequireMacros.h" + "TestRunner.h" + "TimeConstraint.h" + "ReportAssert.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\testmacros.h + "Config.h" + "TestSuite.h" + "ExceptionMacros.h" + "ExecuteTest.h" + "AssertException.h" + "TestDetails.h" + "MemoryOutStream.h" + "Posix/SignalTranslator.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\testsuite.h + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\checkmacros.h + "HelperMacros.h" + "ExceptionMacros.h" + "Checks.h" + "AssertException.h" + "RequiredCheckException.h" + "MemoryOutStream.h" + "TestDetails.h" + "CurrentTest.h" + "ReportAssertImpl.h" + +1502118978 source:d:\users\john\documents\programming\github\etl\test\test_algorithm.cpp + "UnitTest++.h" + "algorithm.h" + "container.h" + + + + + + +1452796851 d:\users\john\documents\programming\github\etl\algorithm.h + + + + + + "type_traits.h" + +1452796556 d:\users\john\documents\programming\github\etl\type_traits.h + + "nullptr.h" + +1450265856 d:\users\john\documents\programming\github\etl\container.h + + + +1496992773 source:d:\users\john\documents\programming\github\etl\test\test_alignment.cpp + "UnitTest++.h" + "alignment.h" + "type_traits.h" + + + + + +1450265856 d:\users\john\documents\programming\github\etl\alignment.h + + "type_traits.h" + "static_assert.h" + +1450265856 d:\users\john\documents\programming\github\etl\static_assert.h + +1502551636 source:d:\users\john\documents\programming\github\etl\test\test_array.cpp + "UnitTest++.h" + "array.h" + + + + "integral_limits.h" + +1450265856 d:\users\john\documents\programming\github\etl\array.h + + + + + "exception.h" + "type_traits.h" + "parameter_type.h" + "static_assert.h" + "error_handler.h" + +1450265856 d:\users\john\documents\programming\github\etl\parameter_type.h + "type_traits.h" + +1450265856 d:\users\john\documents\programming\github\etl\integral_limits.h + + + "type_traits.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_binary.cpp + "UnitTest++.h" + + + "binary.h" + "bitset.h" + "fnv_1.h" + "integral_limits.h" + +1450265856 d:\users\john\documents\programming\github\etl\binary.h + "type_traits.h" + "integral_limits.h" + "static_assert.h" + "log.h" + "power.h" + "smallest.h" + +1452796556 d:\users\john\documents\programming\github\etl\bitset.h + + + + + "integral_limits.h" + "algorithm.h" + "nullptr.h" + "log.h" + "ibitset.h" + "error_handler.h" + +1450265856 d:\users\john\documents\programming\github\etl\smallest.h + + "integral_limits.h" + +1450265856 d:\users\john\documents\programming\github\etl\log.h + + +1452878867 d:\users\john\documents\programming\github\etl\ibitset.h + + + + "exception.h" + "integral_limits.h" + "binary.h" + "algorithm.h" + +1450265856 d:\users\john\documents\programming\github\etl\fnv_1.h + + "static_assert.h" + "type_traits.h" + "ihash.h" + +1450265856 d:\users\john\documents\programming\github\etl\endian.h + + "enum_type.h" + +1452796851 d:\users\john\documents\programming\github\etl\enum_type.h + +1450265856 d:\users\john\documents\programming\github\etl\ihash.h + + + "exception.h" + "error_handler.h" + +1501066687 source:d:\users\john\documents\programming\github\etl\test\test_bitset.cpp + "UnitTest++.h" + + + + "bitset.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_bloom_filter.cpp + "UnitTest++.h" + + + "bloom_filter.h" + "fnv_1.h" + "crc16.h" + "crc16_ccitt.h" + "crc32.h" + "char_traits.h" + +1450265856 d:\users\john\documents\programming\github\etl\bloom_filter.h + "parameter_type.h" + "bitset.h" + "type_traits.h" + "binary.h" + "log.h" + "power.h" + +1450265856 d:\users\john\documents\programming\github\etl\power.h + + "log.h" + +1450265856 d:\users\john\documents\programming\github\etl\crc16.h + + "static_assert.h" + "type_traits.h" + +1450265856 d:\users\john\documents\programming\github\etl\crc16_ccitt.h + + "static_assert.h" + "type_traits.h" + +1450265856 d:\users\john\documents\programming\github\etl\crc32.h + + + "static_assert.h" + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_checksum.cpp + "UnitTest++.h" + + + + + "checksum.h" + +1450265856 d:\users\john\documents\programming\github\etl\checksum.h + + "static_assert.h" + "type_traits.h" + "ihash.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_container.cpp + "UnitTest++.h" + "container.h" + + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_crc.cpp + "UnitTest++.h" + + + + + "crc8_ccitt.h" + "crc16.h" + "crc16_ccitt.h" + "crc16_kermit.h" + "crc32.h" + "crc64_ecma.h" + +1450265856 d:\users\john\documents\programming\github\etl\crc8_ccitt.h + + "static_assert.h" + "type_traits.h" + +1450265856 d:\users\john\documents\programming\github\etl\crc16_kermit.h + + "static_assert.h" + "type_traits.h" + +1450265856 d:\users\john\documents\programming\github\etl\crc64_ecma.h + + "static_assert.h" + "type_traits.h" + +1508266130 source:d:\users\john\documents\programming\github\etl\test\test_cyclic_value.cpp + "UnitTest++.h" + "cyclic_value.h" + +1452794793 d:\users\john\documents\programming\github\etl\cyclic_value.h + + + "static_assert.h" + "exception.h" + +1502551636 source:d:\users\john\documents\programming\github\etl\test\test_deque.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "deque.h" + "data.h" + + + + + + + +1494277861 d:\users\john\documents\programming\github\etl\test\extracheckmacros.h + "../unittest-cpp/UnitTest++/HelperMacros.h" + "../unittest-cpp/UnitTest++/ExceptionMacros.h" + "../unittest-cpp/UnitTest++/Checks.h" + "../unittest-cpp/UnitTest++/AssertException.h" + "../unittest-cpp/UnitTest++/MemoryOutStream.h" + "../unittest-cpp/UnitTest++/TestDetails.h" + "../unittest-cpp/UnitTest++/CurrentTest.h" + "../unittest-cpp/UnitTest++/ReportAssertImpl.h" + +1452796556 d:\users\john\documents\programming\github\etl\deque.h + + + + + "ideque.h" + "container.h" + "alignment.h" + "array.h" + +1453406068 d:\users\john\documents\programming\github\etl\ideque.h + + + "algorithm.h" + "type_traits.h" + "private/deque_base.h" + "parameter_type.h" + "error_handler.h" + +1424729709 d:\users\john\documents\programming\github\etl\deque_base.h + + "exception.h" + +1501066981 d:\users\john\documents\programming\github\etl\test\data.h + + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_endian.cpp + "UnitTest++.h" + + "endianness.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_enum_type.cpp + "UnitTest++.h" + + "enum_type.h" + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_error_handler.cpp + "UnitTest++.h" + + + + "error_handler.h" + "exception.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_exception.cpp + "UnitTest++.h" + + "exception.h" + +1497306512 source:d:\users\john\documents\programming\github\etl\test\test_flat_map.cpp + "UnitTest++.h" + + + + + + + + + "data.h" + "flat_map.h" + +1452796556 d:\users\john\documents\programming\github\etl\flat_map.h + + + + "iflat_map.h" + "vector.h" + +1452796556 d:\users\john\documents\programming\github\etl\iflat_map.h + + + + + + "private/flat_map_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1424729709 d:\users\john\documents\programming\github\etl\flat_map_base.h + + "exception.h" + "ivector.h" + "error_handler.h" + +1452796556 d:\users\john\documents\programming\github\etl\ivector.h + + + + + "algorithm.h" + "private/vector_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1424729709 d:\users\john\documents\programming\github\etl\vector_base.h + + "exception.h" + "error_handler.h" + +1452796556 d:\users\john\documents\programming\github\etl\vector.h + + + + "ivector.h" + "container.h" + "alignment.h" + "array.h" + +1501066687 source:d:\users\john\documents\programming\github\etl\test\test_flat_set.cpp + "UnitTest++.h" + + + + + + + + "data.h" + "flat_set.h" + +1452796556 d:\users\john\documents\programming\github\etl\flat_set.h + + + + "iflat_set.h" + "vector.h" + +1452796556 d:\users\john\documents\programming\github\etl\iflat_set.h + + + + + + "private/flat_set_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1424729709 d:\users\john\documents\programming\github\etl\flat_set_base.h + + "exception.h" + "ivector.h" + "error_handler.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_fnv_1.cpp + "UnitTest++.h" + + + + + "fnv_1.h" + +1508265810 source:d:\users\john\documents\programming\github\etl\test\test_forward_list.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "data.h" + "forward_list.h" + + + + + + + +1452796556 d:\users\john\documents\programming\github\etl\forward_list.h + + "pool.h" + "iforward_list.h" + "container.h" + +1452796556 d:\users\john\documents\programming\github\etl\pool.h + "alignment.h" + "array.h" + "bitset.h" + "ipool.h" + + +1452796556 d:\users\john\documents\programming\github\etl\ipool.h + + "private/pool_base.h" + "nullptr.h" + "ibitset.h" + "error_handler.h" + +1424729709 d:\users\john\documents\programming\github\etl\pool_base.h + + "exception.h" + "error_handler.h" + +1453063980 d:\users\john\documents\programming\github\etl\iforward_list.h + + + + + "pool.h" + "nullptr.h" + "private/forward_list_base.h" + "type_traits.h" + "parameter_type.h" + +1424729709 d:\users\john\documents\programming\github\etl\forward_list_base.h + + "exception.h" + +1508265756 source:d:\users\john\documents\programming\github\etl\test\test_function.cpp + "UnitTest++.h" + "function.h" + +1497717749 source:d:\users\john\documents\programming\github\etl\test\test_functional.cpp + "UnitTest++.h" + "functional.h" + + + + +1450265856 d:\users\john\documents\programming\github\etl\functional.h + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_hash.cpp + "UnitTest++.h" + + + + + "hash.h" + +1450265856 d:\users\john\documents\programming\github\etl\hash.h + + "fnv_1.h" + "type_traits.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_instance_count.cpp + "UnitTest++.h" + "instance_count.h" + + + + +1450265856 d:\users\john\documents\programming\github\etl\instance_count.h + +1503074559 source:d:\users\john\documents\programming\github\etl\test\test_integral_limits.cpp + "UnitTest++.h" + + + + "integral_limits.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_io_port.cpp + "UnitTest++.h" + "io_port.h" + + + + +1450265856 d:\users\john\documents\programming\github\etl\io_port.h + + "nullptr.h" + "parameter_type.h" + +1501067284 source:d:\users\john\documents\programming\github\etl\test\test_largest.cpp + "UnitTest++.h" + "largest.h" + + +1450265856 d:\users\john\documents\programming\github\etl\largest.h + "type_traits.h" + +1502551636 source:d:\users\john\documents\programming\github\etl\test\test_list.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "list.h" + "data.h" + + + + + +1452337456 d:\users\john\documents\programming\github\etl\list.h + + "ilist.h" + "container.h" + "pool.h" + +1452333625 d:\users\john\documents\programming\github\etl\ilist.h + + + + + "nullptr.h" + "private/list_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + +1424729709 d:\users\john\documents\programming\github\etl\list_base.h + + "exception.h" + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_maths.cpp + "UnitTest++.h" + "log.h" + "power.h" + "fibonacci.h" + "factorial.h" + "sqrt.h" + +1450265856 d:\users\john\documents\programming\github\etl\fibonacci.h + + +1450265856 d:\users\john\documents\programming\github\etl\factorial.h + + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_numeric.cpp + "UnitTest++.h" + "numeric.h" + + + +1450265856 d:\users\john\documents\programming\github\etl\numeric.h + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_observer.cpp + "UnitTest++.h" + "observer.h" + +1450959449 d:\users\john\documents\programming\github\etl\observer.h + + "vector.h" + "exception.h" + "error_handler.h" + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_queue.cpp + "UnitTest++.h" + + "queue.h" + +1450265856 d:\users\john\documents\programming\github\etl\queue.h + + + "iqueue.h" + "container.h" + "alignment.h" + "array.h" + +1452203243 d:\users\john\documents\programming\github\etl\iqueue.h + + "private/queue_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1424729709 d:\users\john\documents\programming\github\etl\queue_base.h + + "exception.h" + +1500977718 source:d:\users\john\documents\programming\github\etl\test\test_smallest.cpp + "UnitTest++.h" + "smallest.h" + + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_stack.cpp + "UnitTest++.h" + + "data.h" + "stack.h" + +1450265856 d:\users\john\documents\programming\github\etl\stack.h + + + + "istack.h" + "container.h" + "alignment.h" + "array.h" + +1452203243 d:\users\john\documents\programming\github\etl\istack.h + + "private/stack_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1424729709 d:\users\john\documents\programming\github\etl\stack_base.h + + "exception.h" + +1502551636 source:d:\users\john\documents\programming\github\etl\test\test_vector.cpp + "UnitTest++.h" + + + + + "vector.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_visitor.cpp + "UnitTest++.h" + "visitor.h" + +1450265856 d:\users\john\documents\programming\github\etl\visitor.h + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_fixed_iterator.cpp + "UnitTest++.h" + + + "fixed_iterator.h" + +1450265856 d:\users\john\documents\programming\github\etl\fixed_iterator.h + + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\win32\timehelpers.cpp + "TimeHelpers.h" + + +1450265856 d:\users\john\documents\programming\github\etl\private\deque_base.h + + "../exception.h" + "../error_handler.h" + +1482614484 handler.h" + +1450265856 d:\users\john\documents\programming\github\etl\private\flat_map_base.h + + "../exception.h" + "../ivector.h" + "../error_handler.h" + +1450959449 d:\users\john\documents\programming\github\etl\private\vector_base.h + + "../exception.h" + "../error_handler.h" + +1450265856 d:\users\john\documents\programming\github\etl\private\flat_set_base.h + + "../exception.h" + "../ivector.h" + "../error_handler.h" + +1452796556 d:\users\john\documents\programming\github\etl\private\pool_base.h + + "../exception.h" + "../error_handler.h" + "../error_handler.h" + +1450959449 d:\users\john\documents\programming\github\etl\private\forward_list_base.h + + "../exception.h" + "../error_handler.h" + +1450959449 d:\users\john\documents\programming\github\etl\private\list_base.h + + "../exception.h" + "../error_handler.h" + +1507064935 source:d:\users\john\documents\programming\github\etl\test\test_map.cpp + "UnitTest++.h" + + + + + + + + "map.h" + +1452337350 d:\users\john\documents\programming\github\etl\map.h + + + + "imap.h" + "container.h" + "pool.h" + +1452333665 d:\users\john\documents\programming\github\etl\imap.h + + + + + "nullptr.h" + "private/map_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + +1450265856 d:\users\john\documents\programming\github\etl\private\map_base.h + + "../exception.h" + "../error_handler.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_optional.cpp + "UnitTest++.h" + + + "optional.h" + "vector.h" + "data.h" + +1452796556 d:\users\john\documents\programming\github\etl\optional.h + "alignment.h" + "type_traits.h" + "exception.h" + "error_handler.h" + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_pool.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "data.h" + + + "pool.h" + +1450265856 d:\users\john\documents\programming\github\etl\private\queue_base.h + + "../exception.h" + "../error_handler.h" + +1507064935 source:d:\users\john\documents\programming\github\etl\test\test_set.cpp + "UnitTest++.h" + + + + + + + + "set.h" + +1452337350 d:\users\john\documents\programming\github\etl\set.h + + + + "iset.h" + "container.h" + "pool.h" + +1452333782 d:\users\john\documents\programming\github\etl\iset.h + + + + + "nullptr.h" + "private/set_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + +1450265856 d:\users\john\documents\programming\github\etl\private\set_base.h + + "../exception.h" + "../error_handler.h" + +1450959449 d:\users\john\documents\programming\github\etl\private\stack_base.h + + "../exception.h" + "../error_handler.h" + +1507064935 source:d:\users\john\documents\programming\github\etl\test\test_type_traits.cpp + "UnitTest++.h" + "type_traits.h" + + +1502118978 source:d:\users\john\documents\programming\github\etl\test\test_variant.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "variant.h" + + + + +1450265856 d:\users\john\documents\programming\github\etl\variant.h + + "array.h" + "largest.h" + "exception.h" + "type_traits.h" + "integral_limits.h" + "static_assert.h" + "alignment.h" + "error_handler.h" + +1452516033 source:/home/jwellbelove/Programming/etl/crc16.cpp + + +1452516033 source:/home/jwellbelove/Programming/etl/crc16_ccitt.cpp + + +1452516033 source:/home/jwellbelove/Programming/etl/crc16_kermit.cpp + + +1452516033 source:/home/jwellbelove/Programming/etl/crc32.cpp + + +1452516033 source:/home/jwellbelove/Programming/etl/crc64_ecma.cpp + + +1452516033 source:/home/jwellbelove/Programming/etl/crc8_ccitt.cpp + + +1452516033 source:/home/jwellbelove/Programming/etl/error_handler.cpp + "error_handler.h" + "nullptr.h" + +1452516033 /home/jwellbelove/Programming/etl/error_handler.h + + "exception.h" + "function.h" + +1452516033 /home/jwellbelove/Programming/etl/exception.h + +1452516033 /home/jwellbelove/Programming/etl/function.h + +1452516033 /home/jwellbelove/Programming/etl/nullptr.h + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/AssertException.cpp + "AssertException.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/AssertException.h + "Config.h" + "HelperMacros.h" + + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/Config.h + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/HelperMacros.h + "Config.h" + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/Checks.cpp + "Checks.h" + + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/Checks.h + "Config.h" + "TestResults.h" + "MemoryOutStream.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/TestResults.h + "HelperMacros.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/MemoryOutStream.h + "Config.h" + "HelperMacros.h" + + + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/CompositeTestReporter.cpp + "CompositeTestReporter.h" + + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/CompositeTestReporter.h + "TestReporter.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/TestReporter.h + "HelperMacros.h" + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/CurrentTest.cpp + "CurrentTest.h" + + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/CurrentTest.h + "HelperMacros.h" + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/DeferredTestReporter.cpp + "Config.h" + "DeferredTestReporter.h" + "TestDetails.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/DeferredTestReporter.h + "Config.h" + "TestReporter.h" + "DeferredTestResult.h" + + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/DeferredTestResult.h + "Config.h" + "HelperMacros.h" + + + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/TestDetails.h + "HelperMacros.h" + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/DeferredTestResult.cpp + "Config.h" + "DeferredTestResult.h" + + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/MemoryOutStream.cpp + "MemoryOutStream.h" + + + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/Posix/SignalTranslator.cpp + "SignalTranslator.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/Posix/SignalTranslator.h + + + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/Posix/TimeHelpers.cpp + "TimeHelpers.h" + + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/Posix/TimeHelpers.h + + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/ReportAssert.cpp + "ReportAssert.h" + "ReportAssertImpl.h" + "AssertException.h" + "CurrentTest.h" + "TestResults.h" + "TestDetails.h" + "ReportAssertImpl.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/ReportAssert.h + "HelperMacros.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/ReportAssertImpl.h + "Config.h" + "HelperMacros.h" + + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/Test.cpp + "Config.h" + "Test.h" + "TestList.h" + "TestResults.h" + "AssertException.h" + "MemoryOutStream.h" + "ExecuteTest.h" + "Posix/SignalTranslator.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/Test.h + "TestDetails.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/TestList.h + "HelperMacros.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/ExecuteTest.h + "Config.h" + "ExceptionMacros.h" + "TestDetails.h" + "TestResults.h" + "MemoryOutStream.h" + "AssertException.h" + "CurrentTest.h" + "ReportAssertImpl.h" + "Posix/SignalTranslator.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/ExceptionMacros.h + "Config.h" + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/TestDetails.cpp + "TestDetails.h" + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/TestList.cpp + "TestList.h" + "Test.h" + + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/TestReporter.cpp + "TestReporter.h" + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/TestReporterStdout.cpp + "TestReporterStdout.h" + + "TestDetails.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/TestReporterStdout.h + "TestReporter.h" + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/TestResults.cpp + "TestResults.h" + "TestReporter.h" + "TestDetails.h" + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/TestRunner.cpp + "TestRunner.h" + "TestResults.h" + "TestReporter.h" + "TestReporterStdout.h" + "TimeHelpers.h" + "MemoryOutStream.h" + + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/TestRunner.h + "Test.h" + "TestList.h" + "CurrentTest.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/TimeHelpers.h + "Config.h" + "Posix/TimeHelpers.h" + "Win32/TimeHelpers.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/Win32/TimeHelpers.h + "../Config.h" + "../HelperMacros.h" + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/TimeConstraint.cpp + "TimeConstraint.h" + "TestResults.h" + "MemoryOutStream.h" + "CurrentTest.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/TimeConstraint.h + "TimeHelpers.h" + "HelperMacros.h" + "TestDetails.h" + +1447740690 source:/home/jwellbelove/Programming/unittest-cpp/UnitTest++/XmlTestReporter.cpp + "Config.h" + "XmlTestReporter.h" + + + + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/XmlTestReporter.h + "Config.h" + "DeferredTestReporter.h" + + +1452692153 source:/home/jwellbelove/Programming/etl/test/main.cpp + + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/UnitTest++.h + "UnitTestPP.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/UnitTestPP.h + "Config.h" + "TestMacros.h" + "CheckMacros.h" + "TestRunner.h" + "TimeConstraint.h" + "ReportAssert.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/TestMacros.h + "Config.h" + "TestSuite.h" + "ExceptionMacros.h" + "ExecuteTest.h" + "AssertException.h" + "TestDetails.h" + "MemoryOutStream.h" + "Posix/SignalTranslator.h" + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/TestSuite.h + +1447740690 /home/jwellbelove/Programming/unittest-cpp/UnitTest++/CheckMacros.h + "HelperMacros.h" + "ExceptionMacros.h" + "Checks.h" + "AssertException.h" + "MemoryOutStream.h" + "TestDetails.h" + "CurrentTest.h" + "ReportAssertImpl.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_algorithm.cpp + + "../algorithm.h" + "../container.h" + + + + + +1452516120 /home/jwellbelove/Programming/etl/algorithm.h + + + + + + "type_traits.h" + +1452700367 /home/jwellbelove/Programming/etl/type_traits.h + + "nullptr.h" + +1452516033 /home/jwellbelove/Programming/etl/container.h + + + +1452700976 source:/home/jwellbelove/Programming/etl/test/test_alignment.cpp + + "../alignment.h" + "../type_traits.h" + + + + + +1452516033 /home/jwellbelove/Programming/etl/alignment.h + + "type_traits.h" + "static_assert.h" + +1452516033 /home/jwellbelove/Programming/etl/static_assert.h + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_array.cpp + + "../array.h" + + + + "../integral_limits.h" + +1452516033 /home/jwellbelove/Programming/etl/array.h + + + + + "exception.h" + "type_traits.h" + "parameter_type.h" + "static_assert.h" + "error_handler.h" + +1452516033 /home/jwellbelove/Programming/etl/parameter_type.h + "type_traits.h" + +1452516033 /home/jwellbelove/Programming/etl/integral_limits.h + + + "type_traits.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_binary.cpp + + + + "../binary.h" + "../bitset.h" + "../fnv_1.h" + "../integral_limits.h" + +1452516033 /home/jwellbelove/Programming/etl/binary.h + "type_traits.h" + "integral_limits.h" + "static_assert.h" + "log.h" + "power.h" + "smallest.h" + +1452516033 /home/jwellbelove/Programming/etl/log.h + + +1452516033 /home/jwellbelove/Programming/etl/power.h + + "log.h" + +1452516033 /home/jwellbelove/Programming/etl/smallest.h + + "integral_limits.h" + +1452516120 /home/jwellbelove/Programming/etl/bitset.h + + + + + "integral_limits.h" + "algorithm.h" + "nullptr.h" + "log.h" + "ibitset.h" + "error_handler.h" + +1452687411 /home/jwellbelove/Programming/etl/ibitset.h + + + "exception.h" + "integral_limits.h" + "binary.h" + +1452516033 /home/jwellbelove/Programming/etl/fnv_1.h + + "static_assert.h" + "type_traits.h" + "ihash.h" + +1452516033 /home/jwellbelove/Programming/etl/ihash.h + + + "exception.h" + "error_handler.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_bitset.cpp + + + + + "../bitset.h" + +1452701006 source:/home/jwellbelove/Programming/etl/test/test_bloom_filter.cpp + + + + "../bloom_filter.h" + "../fnv_1.h" + "../crc16.h" + "../crc16_ccitt.h" + "../crc32.h" + +1452516033 /home/jwellbelove/Programming/etl/bloom_filter.h + "parameter_type.h" + "bitset.h" + "type_traits.h" + "binary.h" + "log.h" + "power.h" + +1452516033 /home/jwellbelove/Programming/etl/crc16.h + + "static_assert.h" + "type_traits.h" + +1452516033 /home/jwellbelove/Programming/etl/crc16_ccitt.h + + "static_assert.h" + "type_traits.h" + +1452516033 /home/jwellbelove/Programming/etl/crc32.h + + + "static_assert.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_checksum.cpp + + + + + + "../checksum.h" + "../endian.h" + +1452516033 /home/jwellbelove/Programming/etl/checksum.h + + "static_assert.h" + "type_traits.h" + "ihash.h" + +1452516033 /home/jwellbelove/Programming/etl/endian.h + + "enum_type.h" + +1452516120 /home/jwellbelove/Programming/etl/enum_type.h + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_container.cpp + + "../container.h" + + +1452701006 source:/home/jwellbelove/Programming/etl/test/test_crc.cpp + + + + + + "../crc8_ccitt.h" + "../crc16.h" + "../crc16_ccitt.h" + "../crc16_kermit.h" + "../crc32.h" + "../crc64_ecma.h" + +1452516033 /home/jwellbelove/Programming/etl/crc8_ccitt.h + + "static_assert.h" + "type_traits.h" + +1452516033 /home/jwellbelove/Programming/etl/crc16_kermit.h + + "static_assert.h" + "type_traits.h" + +1452516033 /home/jwellbelove/Programming/etl/crc64_ecma.h + + "static_assert.h" + "type_traits.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_cyclic_value.cpp + + "../cyclic_value.h" + +1452516033 /home/jwellbelove/Programming/etl/cyclic_value.h + + + "static_assert.h" + "exception.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_deque.cpp + + "ExtraCheckMacros.h" + "../deque.h" + "data.h" + + + + + + +1452516033 /home/jwellbelove/Programming/etl/test/ExtraCheckMacros.h + + + + + + + + + +1452516120 /home/jwellbelove/Programming/etl/deque.h + + + + + "ideque.h" + "container.h" + "alignment.h" + "array.h" + +1452700904 /home/jwellbelove/Programming/etl/ideque.h + + + "algorithm.h" + "type_traits.h" + "private/deque_base.h" + "parameter_type.h" + "error_handler.h" + +1452516033 /home/jwellbelove/Programming/etl/private/deque_base.h + + "../exception.h" + "../error_handler.h" + +1452516033 /home/jwellbelove/Programming/etl/test/data.h + + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_endian.cpp + + + "../endian.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_enum_type.cpp + + + "../enum_type.h" + +1452692276 source:/home/jwellbelove/Programming/etl/test/test_error_handler.cpp + + + + + "../error_handler.h" + "../exception.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_exception.cpp + + + "../exception.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_fixed_iterator.cpp + + + + "../fixed_iterator.h" + +1452516033 /home/jwellbelove/Programming/etl/fixed_iterator.h + + +1452516120 source:/home/jwellbelove/Programming/etl/test/test_flat_map.cpp + + + + + + + + + "data.h" + "../flat_map.h" + +1452516033 /home/jwellbelove/Programming/etl/flat_map.h + + + + "iflat_map.h" + "vector.h" + +1452587158 /home/jwellbelove/Programming/etl/iflat_map.h + + + + + + "private/flat_map_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1452516033 /home/jwellbelove/Programming/etl/private/flat_map_base.h + + "../exception.h" + "../ivector.h" + "../error_handler.h" + +1452587158 /home/jwellbelove/Programming/etl/ivector.h + + + + + "algorithm.h" + "private/vector_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1452516033 /home/jwellbelove/Programming/etl/private/vector_base.h + + "../exception.h" + "../error_handler.h" + +1452524360 /home/jwellbelove/Programming/etl/vector.h + + + + "ivector.h" + "container.h" + "alignment.h" + "array.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_flat_set.cpp + + + + + + + + + "data.h" + "../flat_set.h" + +1452516033 /home/jwellbelove/Programming/etl/flat_set.h + + + + "iflat_set.h" + "vector.h" + +1452587158 /home/jwellbelove/Programming/etl/iflat_set.h + + + + + + "private/flat_set_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1452516033 /home/jwellbelove/Programming/etl/private/flat_set_base.h + + "../exception.h" + "../ivector.h" + "../error_handler.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_fnv_1.cpp + + + + + + "../fnv_1.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_forward_list.cpp + + "ExtraCheckMacros.h" + "data.h" + "../forward_list.h" + + + + + + +1452516120 /home/jwellbelove/Programming/etl/forward_list.h + + "pool.h" + "iforward_list.h" + "container.h" + +1452516033 /home/jwellbelove/Programming/etl/pool.h + "alignment.h" + "array.h" + "bitset.h" + "ipool.h" + + +1452587158 /home/jwellbelove/Programming/etl/ipool.h + + "private/pool_base.h" + "nullptr.h" + "ibitset.h" + "error_handler.h" + +1452587158 /home/jwellbelove/Programming/etl/private/pool_base.h + + "../exception.h" + "../error_handler.h" + "../error_handler.h" + +1452587158 /home/jwellbelove/Programming/etl/iforward_list.h + + + + + "pool.h" + "nullptr.h" + "private/forward_list_base.h" + "type_traits.h" + "parameter_type.h" + +1452516033 /home/jwellbelove/Programming/etl/private/forward_list_base.h + + "../exception.h" + "../error_handler.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_function.cpp + + "../function.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_functional.cpp + + "../functional.h" + + + + +1452516033 /home/jwellbelove/Programming/etl/functional.h + +1452697226 source:/home/jwellbelove/Programming/etl/test/test_hash.cpp + + + + + + "../hash.h" + +1452516033 /home/jwellbelove/Programming/etl/hash.h + + "fnv_1.h" + "type_traits.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_instance_count.cpp + + "../instance_count.h" + + + + +1452516033 /home/jwellbelove/Programming/etl/instance_count.h + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_integral_limits.cpp + + + + + "../integral_limits.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_io_port.cpp + + "../io_port.h" + + +1452516033 /home/jwellbelove/Programming/etl/io_port.h + + "nullptr.h" + "parameter_type.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_largest.cpp + + "../largest.h" + + +1452516033 /home/jwellbelove/Programming/etl/largest.h + "type_traits.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_list.cpp + + "ExtraCheckMacros.h" + "../list.h" + "data.h" + + + + + +1452516120 /home/jwellbelove/Programming/etl/list.h + + "ilist.h" + "container.h" + "pool.h" + +1452587158 /home/jwellbelove/Programming/etl/ilist.h + + + + + "nullptr.h" + "private/list_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + +1452516033 /home/jwellbelove/Programming/etl/private/list_base.h + + "../exception.h" + "../error_handler.h" + +1452516120 source:/home/jwellbelove/Programming/etl/test/test_map.cpp + + + + + + + + + "../map.h" + +1452516120 /home/jwellbelove/Programming/etl/map.h + + + + "imap.h" + "container.h" + "pool.h" + +1452587158 /home/jwellbelove/Programming/etl/imap.h + + + + + "nullptr.h" + "private/map_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + +1452516033 /home/jwellbelove/Programming/etl/private/map_base.h + + "../exception.h" + "../error_handler.h" + +1452700712 source:/home/jwellbelove/Programming/etl/test/test_maths.cpp + + "../log.h" + "../power.h" + "../fibonacci.h" + "../factorial.h" + +1452516033 /home/jwellbelove/Programming/etl/fibonacci.h + + +1452516033 /home/jwellbelove/Programming/etl/factorial.h + + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_numeric.cpp + + "../numeric.h" + + + +1452516033 /home/jwellbelove/Programming/etl/numeric.h + +1452696227 source:/home/jwellbelove/Programming/etl/test/test_observer.cpp + + "../observer.h" + +1452587158 /home/jwellbelove/Programming/etl/observer.h + + "vector.h" + "exception.h" + "error_handler.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_optional.cpp + + + + "../optional.h" + "../vector.h" + "data.h" + +1452516033 /home/jwellbelove/Programming/etl/optional.h + "alignment.h" + "type_traits.h" + "exception.h" + "error_handler.h" + +1452700712 source:/home/jwellbelove/Programming/etl/test/test_pool.cpp + + "ExtraCheckMacros.h" + "data.h" + + + "../pool.h" + +1452700712 source:/home/jwellbelove/Programming/etl/test/test_queue.cpp + + + "../queue.h" + +1452516033 /home/jwellbelove/Programming/etl/queue.h + + + "iqueue.h" + "container.h" + "alignment.h" + "array.h" + +1452587158 /home/jwellbelove/Programming/etl/iqueue.h + + "private/queue_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1452516033 /home/jwellbelove/Programming/etl/private/queue_base.h + + "../exception.h" + "../error_handler.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_set.cpp + + + + + + + + + "../set.h" + +1452516120 /home/jwellbelove/Programming/etl/set.h + + + + "iset.h" + "container.h" + "pool.h" + +1452587158 /home/jwellbelove/Programming/etl/iset.h + + + + + "nullptr.h" + "private/set_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + +1452516033 /home/jwellbelove/Programming/etl/private/set_base.h + + "../exception.h" + "../error_handler.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_smallest.cpp + + "../smallest.h" + + +1452700712 source:/home/jwellbelove/Programming/etl/test/test_stack.cpp + + + "data.h" + "../stack.h" + +1452516033 /home/jwellbelove/Programming/etl/stack.h + + + + "istack.h" + "container.h" + "alignment.h" + "array.h" + +1452587158 /home/jwellbelove/Programming/etl/istack.h + + "private/stack_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1452516033 /home/jwellbelove/Programming/etl/private/stack_base.h + + "../exception.h" + "../error_handler.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_type_traits.cpp + + "../type_traits.h" + + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_variant.cpp + + "ExtraCheckMacros.h" + "../variant.h" + + + + +1452516033 /home/jwellbelove/Programming/etl/variant.h + + "array.h" + "largest.h" + "exception.h" + "type_traits.h" + "integral_limits.h" + "static_assert.h" + "alignment.h" + "error_handler.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_vector.cpp + + + + + "../vector.h" + +1452516033 source:/home/jwellbelove/Programming/etl/test/test_visitor.cpp + + "../visitor.h" + +1452516033 /home/jwellbelove/Programming/etl/visitor.h + +1508265811 source:d:\users\john\documents\programming\github\etl\test\test_intrusive_forward_list.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "data.h" + "intrusive_forward_list.h" + + + + + + + +1453405528 d:\users\john\documents\programming\github\etl\intrusive_forward_list.h + + + + + "nullptr.h" + "type_traits.h" + "intrusive_forward_list_link.h" + +1453405528 _forward_list_link.h" + +1453324561 d:\users\john\documents\programming\github\etl\intrusive_forward_list_link.h + "error_handler.h" + "array.h" + +1508265807 source:d:\users\john\documents\programming\github\etl\src\crc16.cpp + + "platform.h" + +1508265807 source:d:\users\john\documents\programming\github\etl\src\crc16_ccitt.cpp + + "platform.h" + +1508265807 source:d:\users\john\documents\programming\github\etl\src\crc16_kermit.cpp + + "platform.h" + +1508265807 source:d:\users\john\documents\programming\github\etl\src\crc32.cpp + + "platform.h" + +1508265807 source:d:\users\john\documents\programming\github\etl\src\crc64_ecma.cpp + + "platform.h" + +1482948766 source:d:\users\john\documents\programming\github\etl\src\crc8_ccitt.cpp + + "platform.h" + "static_assert.h" + +1508265807 source:d:\users\john\documents\programming\github\etl\src\error_handler.cpp + "platform.h" + "error_handler.h" + "nullptr.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\error_handler.h + + "platform.h" + "exception.h" + "function.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\exception.h + "platform.h" + +1508265811 d:\users\john\documents\programming\github\etl\src\function.h + "platform.h" + +1506012495 d:\users\john\documents\programming\github\etl\src\nullptr.h + "platform.h" + + +1482948766 source:d:\users\john\documents\programming\github\etl\src\pearson.cpp + + "platform.h" + "static_assert.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\algorithm.h + + + + + + + "platform.h" + "iterator.h" + "type_traits.h" + +1507064935 d:\users\john\documents\programming\github\etl\src\type_traits.h + + "platform.h" + "nullptr.h" + + +1508265807 d:\users\john\documents\programming\github\etl\src\container.h + + + "platform.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\alignment.h + + "platform.h" + "type_traits.h" + "static_assert.h" + +1506012495 d:\users\john\documents\programming\github\etl\src\static_assert.h + "platform.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\array.h + + + + + "platform.h" + "exception.h" + "type_traits.h" + "parameter_type.h" + "static_assert.h" + "error_handler.h" + "algorithm.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\parameter_type.h + "platform.h" + "type_traits.h" + +1508265809 d:\users\john\documents\programming\github\etl\src\integral_limits.h + + + "platform.h" + "type_traits.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\binary.h + + + "platform.h" + "type_traits.h" + "integral_limits.h" + "static_assert.h" + "log.h" + "power.h" + "smallest.h" + "platform.h" + +1508265809 d:\users\john\documents\programming\github\etl\src\log.h + + "platform.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\power.h + + + "platform.h" + "log.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\smallest.h + + "platform.h" + "integral_limits.h" + +1497717748 d:\users\john\documents\programming\github\etl\src\bitset.h + + + + + + "platform.h" + "integral_limits.h" + "algorithm.h" + "nullptr.h" + "log.h" + "exception.h" + "integral_limits.h" + "binary.h" + "error_handler.h" + +1481309224 d:\users\john\documents\programming\github\etl\src\ibitset.h + + + + "exception.h" + "integral_limits.h" + "binary.h" + "algorithm.h" + "platform.h" + +1482948766 d:\users\john\documents\programming\github\etl\src\fnv_1.h + + "platform.h" + "static_assert.h" + "type_traits.h" + "ihash.h" + "frame_check_sequence.h" + +1485901721 ck_sequence.h" + +1508265809 d:\users\john\documents\programming\github\etl\src\ihash.h + + + "platform.h" + "exception.h" + "error_handler.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\bloom_filter.h + "platform.h" + "parameter_type.h" + "bitset.h" + "type_traits.h" + "binary.h" + "log.h" + "power.h" + +1479515289 d:\users\john\documents\programming\github\etl\src\crc16.h + + + "platform.h" + "frame_check_sequence.h" + +1482948766 d:\users\john\documents\programming\github\etl\src\frame_check_sequence.h + + "platform.h" + "static_assert.h" + "type_traits.h" + "binary.h" + +1479515289 d:\users\john\documents\programming\github\etl\src\crc16_ccitt.h + + + "platform.h" + "frame_check_sequence.h" + +1479515289 d:\users\john\documents\programming\github\etl\src\crc32.h + + + "platform.h" + "frame_check_sequence.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\checksum.h + + "platform.h" + "binary.h" + "frame_check_sequence.h" + +1485905321 d:\users\john\documents\programming\github\etl\src\endian.h + + "enum_type.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\enum_type.h + "platform.h" + +1479515289 d:\users\john\documents\programming\github\etl\src\crc8_ccitt.h + + + "platform.h" + "frame_check_sequence.h" + +1479515289 d:\users\john\documents\programming\github\etl\src\crc16_kermit.h + + + "platform.h" + "frame_check_sequence.h" + +1479515289 d:\users\john\documents\programming\github\etl\src\crc64_ecma.h + + + "platform.h" + "frame_check_sequence.h" + +1508265812 d:\users\john\documents\programming\github\etl\src\cyclic_value.h + + + "platform.h" + "static_assert.h" + "exception.h" + "static_assert.h" + "type_traits.h" + +1508265811 d:\users\john\documents\programming\github\etl\src\deque.h + + + + + "platform.h" + "container.h" + "alignment.h" + "array.h" + "memory.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "algorithm.h" + "type_traits.h" + "parameter_type.h" + +1482624126 d:\users\john\documents\programming\github\etl\src\ideque.h + + + "algorithm.h" + "type_traits.h" + "private/deque_base.h" + "parameter_type.h" + "error_handler.h" + +1479511690 d:\users\john\documents\programming\github\etl\src\private\deque_base.h + + "../exception.h" + "../error_handler.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\fixed_iterator.h + + "platform.h" + +1501066981 d:\users\john\documents\programming\github\etl\src\flat_map.h + "platform.h" + "reference_flat_map.h" + "pool.h" + +1482748252 d:\users\john\documents\programming\github\etl\src\iflat_map.h + + + + + + "private/flat_map_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1479511690 d:\users\john\documents\programming\github\etl\src\private\flat_map_base.h + + "../exception.h" + "../ivector.h" + "../error_handler.h" + +1482748239 d:\users\john\documents\programming\github\etl\src\ivector.h + + + + + "platform.h" + "algorithm.h" + "private/vector_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + "private/ivectorpointer.h" + +1502819349 vectorpointer.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\private\vector_base.h + + "../platform.h" + "../exception.h" + "../error_handler.h" + "../debug_count.h" + +1502702048 count.h" + +1506012495 d:\users\john\documents\programming\github\etl\src\vector.h + + + + + + + + "platform.h" + "algorithm.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + "memory.h" + "container.h" + "alignment.h" + "array.h" + "exception.h" + "debug_count.h" + "private/vector_base.h" + "private/ivectorpointer.h" + +1501066686 d:\users\john\documents\programming\github\etl\src\flat_set.h + "platform.h" + "reference_flat_set.h" + "pool.h" + +1482748239 d:\users\john\documents\programming\github\etl\src\iflat_set.h + + + + + + "private/flat_set_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1479511690 d:\users\john\documents\programming\github\etl\src\private\flat_set_base.h + + "../exception.h" + "../ivector.h" + "../error_handler.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\forward_list.h + + + + + "platform.h" + "pool.h" + "container.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + "parameter_type.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\pool.h + "platform.h" + "alignment.h" + "array.h" + "container.h" + "integral_limits.h" + "nullptr.h" + "alignment.h" + "error_handler.h" + "static_assert.h" + + + +1481841065 d:\users\john\documents\programming\github\etl\src\ipool.h + + "private/pool_base.h" + "nullptr.h" + "ibitset.h" + "error_handler.h" + +1479511691 d:\users\john\documents\programming\github\etl\src\private\pool_base.h + + "../exception.h" + "../error_handler.h" + "../error_handler.h" + +1482748239 d:\users\john\documents\programming\github\etl\src\iforward_list.h + "platform.h" + + + + + "pool.h" + "nullptr.h" + "private/forward_list_base.h" + "type_traits.h" + "parameter_type.h" + +1479511690 d:\users\john\documents\programming\github\etl\src\private\forward_list_base.h + + "../exception.h" + "../error_handler.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\functional.h + "platform.h" + +1508265808 d:\users\john\documents\programming\github\etl\src\hash.h + + + "platform.h" + "fnv_1.h" + "type_traits.h" + "static_assert.h" + +1508265809 d:\users\john\documents\programming\github\etl\src\instance_count.h + "platform.h" + +1501066686 d:\users\john\documents\programming\github\etl\src\intrusive_forward_list.h + "platform.h" + + + + + "platform.h" + "nullptr.h" + "type_traits.h" + "exception.h" + "error_handler.h" + "intrusive_links.h" + "algorithm.h" + +1482354421 ounter_type.h" + +1508265809 d:\users\john\documents\programming\github\etl\src\intrusive_links.h + + + "platform.h" + "nullptr.h" + "type_traits.h" + "exception.h" + "error_handler.h" + +1508265809 d:\users\john\documents\programming\github\etl\src\io_port.h + + + "platform.h" + "nullptr.h" + "parameter_type.h" + +1508265809 d:\users\john\documents\programming\github\etl\src\largest.h + "platform.h" + "type_traits.h" + "smallest.h" + "static_assert.h" + +1502551636 d:\users\john\documents\programming\github\etl\src\list.h + + + + + "platform.h" + "container.h" + "pool.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + "parameter_type.h" + "algorithm.h" + +1482748239 d:\users\john\documents\programming\github\etl\src\ilist.h + + + + + "nullptr.h" + "private/list_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + "platform.h" + +1479511691 d:\users\john\documents\programming\github\etl\src\private\list_base.h + + "../exception.h" + "../error_handler.h" + +1501066686 d:\users\john\documents\programming\github\etl\src\map.h + + + + + + "platform.h" + "container.h" + "pool.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + "parameter_type.h" + +1479511690 d:\users\john\documents\programming\github\etl\src\imap.h + + + + + "nullptr.h" + "private/map_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + "platform.h" + +1481841066 d:\users\john\documents\programming\github\etl\src\private\map_base.h + + "../exception.h" + "../error_handler.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\fibonacci.h + + "platform.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\factorial.h + + "platform.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\numeric.h + "platform.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\observer.h + + "platform.h" + "vector.h" + "exception.h" + "error_handler.h" + +1488104217 d:\users\john\documents\programming\github\etl\src\optional.h + "platform.h" + "alignment.h" + "type_traits.h" + "exception.h" + "error_handler.h" + +1508265811 d:\users\john\documents\programming\github\etl\src\queue.h + + + "platform.h" + "container.h" + "alignment.h" + "array.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "type_traits.h" + "parameter_type.h" + +1481841066 d:\users\john\documents\programming\github\etl\src\iqueue.h + + "private/queue_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1479511691 d:\users\john\documents\programming\github\etl\src\private\queue_base.h + + "../exception.h" + "../error_handler.h" + +1501066686 d:\users\john\documents\programming\github\etl\src\set.h + + + + + + "platform.h" + "container.h" + "pool.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + "parameter_type.h" + +1479511690 d:\users\john\documents\programming\github\etl\src\iset.h + + + + + "nullptr.h" + "private/set_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + "platform.h" + +1482625676 d:\users\john\documents\programming\github\etl\src\private\set_base.h + + "../exception.h" + "../error_handler.h" + +1508265811 d:\users\john\documents\programming\github\etl\src\stack.h + + + + "platform.h" + "container.h" + "alignment.h" + "array.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "type_traits.h" + "parameter_type.h" + +1481841066 d:\users\john\documents\programming\github\etl\src\istack.h + + "private/stack_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1479511691 d:\users\john\documents\programming\github\etl\src\private\stack_base.h + + "../exception.h" + "../error_handler.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_unordered_map.cpp + "UnitTest++.h" + + + + + + + + + "data.h" + "unordered_map.h" + +1494274261 _map.h" + +1482624915 ordered_map.h" + +1506012495 d:\users\john\documents\programming\github\etl\src\unordered_map.h + + + + + + + "platform.h" + "container.h" + "pool.h" + "array.h" + "intrusive_forward_list.h" + "hash.h" + "type_traits.h" + "parameter_type.h" + "nullptr.h" + "vector.h" + "error_handler.h" + "exception.h" + "debug_count.h" + +1497302912 nt.h" + +1482748240 d:\users\john\documents\programming\github\etl\src\iunordered_map.h + + + + + + "type_traits.h" + "parameter_type.h" + "hash.h" + "nullptr.h" + "ipool.h" + "ivector.h" + "error_handler.h" + "intrusive_forward_list.h" + "exception.h" + "error_handler.h" + +1502118978 d:\users\john\documents\programming\github\etl\src\variant.h + + "platform.h" + "array.h" + "largest.h" + "exception.h" + "type_traits.h" + "integral_limits.h" + "static_assert.h" + "alignment.h" + "error_handler.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\visitor.h + "platform.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\platform.h + "etl_profile.h" + +1507818236 le.h" + +1482948766 source:d:\users\john\documents\programming\github\etl\test\murmurhash3.cpp + "murmurhash3.h" + + +1494277861 d:\users\john\documents\programming\github\etl\test\murmurhash3.h + "platform.h" + + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_bsd_checksum.cpp + "UnitTest++.h" + + + + + "checksum.h" + +1479511692 ecksum.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_flat_multimap.cpp + "UnitTest++.h" + + + + + + + + "data.h" + "flat_multimap.h" + +1494274261 imap.h" + +1479511691 at_multimap.h" + +1501066686 d:\users\john\documents\programming\github\etl\src\flat_multimap.h + "platform.h" + "reference_flat_multimap.h" + "pool.h" + +1482748239 d:\users\john\documents\programming\github\etl\src\iflat_multimap.h + + + + + + "private/flat_multimap_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1479511690 d:\users\john\documents\programming\github\etl\src\private\flat_multimap_base.h + + "../exception.h" + "../ivector.h" + "../error_handler.h" + +1501066687 source:d:\users\john\documents\programming\github\etl\test\test_flat_multiset.cpp + "UnitTest++.h" + + + + + + + + "data.h" + "flat_multiset.h" + +1501063087 iset.h" + +1479511691 at_multiset.h" + +1501066686 d:\users\john\documents\programming\github\etl\src\flat_multiset.h + "platform.h" + "reference_flat_multiset.h" + "pool.h" + +1482748239 d:\users\john\documents\programming\github\etl\src\iflat_multiset.h + + + + + + "private/flat_multiset_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1479511690 d:\users\john\documents\programming\github\etl\src\private\flat_multiset_base.h + + "../exception.h" + "../ivector.h" + "../error_handler.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_intrusive_links.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "data.h" + "intrusive_links.h" + +1501063086 _links.h" + +1482358550 trusive_links.h" + +1508265811 source:d:\users\john\documents\programming\github\etl\test\test_intrusive_list.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "data.h" + "intrusive_list.h" + + + + + + +1501066686 d:\users\john\documents\programming\github\etl\src\intrusive_list.h + "platform.h" + + + + + "platform.h" + "nullptr.h" + "type_traits.h" + "exception.h" + "error_handler.h" + "intrusive_links.h" + "static_assert.h" + "algorithm.h" + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_jenkins.cpp + "UnitTest++.h" + + + + + "jenkins.h" + +1485905321 d:\users\john\documents\programming\github\etl\src\jenkins.h + + + "platform.h" + "static_assert.h" + "type_traits.h" + "error_handler.h" + "ihash.h" + "frame_check_sequence.h" + +1507064935 source:d:\users\john\documents\programming\github\etl\test\test_multimap.cpp + "UnitTest++.h" + + + + + + + "multimap.h" + +1479511692 ltimap.h" + +1501066686 d:\users\john\documents\programming\github\etl\src\multimap.h + + + + + + "platform.h" + "container.h" + "pool.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + "parameter_type.h" + +1482098369 d:\users\john\documents\programming\github\etl\src\imultimap.h + + + + + "nullptr.h" + "private/multimap_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + "platform.h" + +1481309650 d:\users\john\documents\programming\github\etl\src\private\multimap_base.h + + "../exception.h" + "../error_handler.h" + +1507064935 source:d:\users\john\documents\programming\github\etl\test\test_multiset.cpp + "UnitTest++.h" + + + + + + + "multiset.h" + +1479511692 ltiset.h" + +1501066686 d:\users\john\documents\programming\github\etl\src\multiset.h + + + + + + "platform.h" + "parameter_type.h" + "container.h" + "pool.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + +1482098369 d:\users\john\documents\programming\github\etl\src\imultiset.h + + + + + "nullptr.h" + "private/multiset_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + "platform.h" + +1481309628 d:\users\john\documents\programming\github\etl\src\private\multiset_base.h + + "../exception.h" + "../error_handler.h" + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_murmur3.cpp + "UnitTest++.h" + "murmurhash3.h" + + + + + "murmur3.h" + +1479515290 d:\users\john\documents\programming\github\etl\src\murmur3.h + + "platform.h" + "ihash.h" + "binary.h" + "error_handler.h" + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_pearson.cpp + "UnitTest++.h" + + + + + + "pearson.h" + +1506012495 d:\users\john\documents\programming\github\etl\src\pearson.h + + "platform.h" + "static_assert.h" + "type_traits.h" + "ihash.h" + "array.h" + "container.h" + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_priority_queue.cpp + "UnitTest++.h" + + "priority_queue.h" + +1500663950 queue.h" + +1482624474 iority_queue.h" + +1506012495 d:\users\john\documents\programming\github\etl\src\priority_queue.h + + + + "platform.h" + "container.h" + "vector.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + "exception.h" + +1482748239 d:\users\john\documents\programming\github\etl\src\ipriority_queue.h + + + "type_traits.h" + "parameter_type.h" + "error_handler.h" + "exception.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_unordered_multimap.cpp + "UnitTest++.h" + + + + + + + + + "data.h" + "unordered_multimap.h" + +1494274261 _multimap.h" + +1482625301 ordered_multimap.h" + +1506012495 d:\users\john\documents\programming\github\etl\src\unordered_multimap.h + + + + + + + "platform.h" + "container.h" + "pool.h" + "vector.h" + "intrusive_forward_list.h" + "hash.h" + "type_traits.h" + "parameter_type.h" + "nullptr.h" + "pool.h" + "error_handler.h" + "exception.h" + "debug_count.h" + +1482748240 d:\users\john\documents\programming\github\etl\src\iunordered_multimap.h + + + + + + "type_traits.h" + "parameter_type.h" + "hash.h" + "nullptr.h" + "ipool.h" + "ivector.h" + "error_handler.h" + "intrusive_forward_list.h" + "exception.h" + "error_handler.h" + +1500667550 source:d:\users\john\documents\programming\github\etl\test\test_unordered_multiset.cpp + "UnitTest++.h" + + + + + + + + + "data.h" + "unordered_multiset.h" + "checksum.h" + +1506012495 d:\users\john\documents\programming\github\etl\src\unordered_multiset.h + + + + + + + "platform.h" + "container.h" + "pool.h" + "vector.h" + "intrusive_forward_list.h" + "hash.h" + "type_traits.h" + "parameter_type.h" + "nullptr.h" + "error_handler.h" + "exception.h" + "debug_count.h" + +1482748239 d:\users\john\documents\programming\github\etl\src\iunordered_multiset.h + + + + + + "type_traits.h" + "parameter_type.h" + "hash.h" + "nullptr.h" + "ipool.h" + "ivector.h" + "error_handler.h" + "intrusive_forward_list.h" + "exception.h" + "error_handler.h" + +1500667550 source:d:\users\john\documents\programming\github\etl\test\test_unordered_set.cpp + "UnitTest++.h" + + + + + + + + "data.h" + "unordered_set.h" + "checksum.h" + +1506012495 d:\users\john\documents\programming\github\etl\src\unordered_set.h + + + + + + + "platform.h" + "container.h" + "pool.h" + "vector.h" + "intrusive_forward_list.h" + "hash.h" + "type_traits.h" + "parameter_type.h" + "nullptr.h" + "error_handler.h" + "exception.h" + "error_handler.h" + "debug_count.h" + +1482748240 d:\users\john\documents\programming\github\etl\src\iunordered_set.h + + + + + + "type_traits.h" + "parameter_type.h" + "hash.h" + "nullptr.h" + "ipool.h" + "ivector.h" + "error_handler.h" + "intrusive_forward_list.h" + "exception.h" + "error_handler.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_xor_checksum.cpp + "UnitTest++.h" + + + + + "checksum.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\requiredcheckexception.h + "Config.h" + "HelperMacros.h" + + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\requiremacros.h + "RequiredCheckTestReporter.h" + +1494161659 heckTestReporter.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\requiredchecktestreporter.h + "HelperMacros.h" + "ThrowingTestReporter.h" + +1494165259 estReporter.h" + +1482079651 d:\users\john\documents\programming\github\unittest-cpp\unittest++\throwingtestreporter.h + "TestReporter.h" + +1506012495 d:\users\john\documents\programming\github\etl\src\char_traits.h + + "platform.h" + "stdint.h" + "algorithm.h" + +1502705648 d:\users\john\documents\programming\github\etl\src\private\ivectorpointer.h + "pvoidvector.h" + +1502702048 or.h" + +1502705648 d:\users\john\documents\programming\github\etl\src\private\pvoidvector.h + + + + + "../platform.h" + "../algorithm.h" + "vector_base.h" + "../type_traits.h" + "../error_handler.h" + +1482353821 d:\users\john\documents\programming\github\etl\src\private\counter_type.h + +1508265810 source:d:\users\john\documents\programming\github\etl\src\private\pvoidvector.cpp + "../platform.h" + "pvoidvector.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_debounce.cpp + "UnitTest++.h" + "debounce.h" + +1479511691 bounce.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\debounce.h + + "platform.h" + "static_assert.h" + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_intrusive_queue.cpp + "UnitTest++.h" + "intrusive_queue.h" + "intrusive_links.h" + + +1508265811 d:\users\john\documents\programming\github\etl\src\intrusive_queue.h + + "platform.h" + "type_traits.h" + "error_handler.h" + "intrusive_links.h" + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_intrusive_stack.cpp + "UnitTest++.h" + "intrusive_stack.h" + "intrusive_links.h" + + +1508265811 d:\users\john\documents\programming\github\etl\src\intrusive_stack.h + + "platform.h" + "type_traits.h" + "error_handler.h" + "intrusive_links.h" + +1502551636 source:d:\users\john\documents\programming\github\etl\test\test_string_char.cpp + "UnitTest++.h" + + + + "cstring.h" + "fnv_1.h" + +1482181573 tring.h" + +1502551635 d:\users\john\documents\programming\github\etl\src\cstring.h + "platform.h" + "basic_string.h" + "hash.h" + +1502705648 d:\users\john\documents\programming\github\etl\src\basic_string.h + + + + + + + "platform.h" + "char_traits.h" + "container.h" + "alignment.h" + "array.h" + "algorithm.h" + "type_traits.h" + "error_handler.h" + "integral_limits.h" + "exception.h" + +1482748239 d:\users\john\documents\programming\github\etl\src\ibasic_string.h + + + + + + "private/string_base.h" + "platform.h" + "algorithm.h" + "type_traits.h" + "error_handler.h" + "algorithm.h" + "char_traits.h" + +1482614484 d:\users\john\documents\programming\github\etl\src\private\string_base.h + + "../platform.h" + "../integral_limits.h" + "../exception.h" + "../error_handler.h" + +1502551636 source:d:\users\john\documents\programming\github\etl\test\test_string_u16.cpp + "UnitTest++.h" + + + + "u16string.h" + +1482099557 6string.h" + +1502551636 d:\users\john\documents\programming\github\etl\src\u16string.h + "platform.h" + "basic_string.h" + "hash.h" + +1502551636 source:d:\users\john\documents\programming\github\etl\test\test_string_u32.cpp + "UnitTest++.h" + + + + "u32string.h" + +1482099666 2string.h" + +1502551636 d:\users\john\documents\programming\github\etl\src\u32string.h + "platform.h" + "basic_string.h" + "hash.h" + +1502551636 source:d:\users\john\documents\programming\github\etl\test\test_string_wchar_t.cpp + "UnitTest++.h" + + + + "wstring.h" + +1502551636 d:\users\john\documents\programming\github\etl\src\wstring.h + "platform.h" + "basic_string.h" + "hash.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_type_def.cpp + "UnitTest++.h" + + "type_def.h" + +1482624916 pe_def.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\type_def.h + "platform.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_utility.cpp + "UnitTest++.h" + "utility.h" + +1482074959 ility.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\utility.h + "platform.h" + "type_traits.h" + +1501066687 source:d:\users\john\documents\programming\github\etl\test\test_vector_pointer.cpp + "UnitTest++.h" + + + + + "vector.h" + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/RequiredCheckException.cpp + "RequiredCheckException.h" + +1494165259 heckException.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/RequiredCheckException.h + "Config.h" + "HelperMacros.h" + + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/RequiredCheckTestReporter.cpp + "RequiredCheckTestReporter.h" + "CurrentTest.h" + "TestResults.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/RequiredCheckTestReporter.h + "HelperMacros.h" + "ThrowingTestReporter.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/ThrowingTestReporter.h + "TestReporter.h" + +1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/ThrowingTestReporter.cpp + "ThrowingTestReporter.h" + "RequiredCheckException.h" + "ReportAssertImpl.h" + +1507724573 source:/mnt/hgfs/Programming/GitHub/etl/src/crc16.cpp + + + + "platform.h" + +1507724573 source:/mnt/hgfs/Programming/GitHub/etl/src/crc16_ccitt.cpp + + + + "platform.h" + +1507724573 source:/mnt/hgfs/Programming/GitHub/etl/src/crc16_kermit.cpp + + + + "platform.h" + +1507724573 source:/mnt/hgfs/Programming/GitHub/etl/src/crc32.cpp + + + + "platform.h" + +1507724573 source:/mnt/hgfs/Programming/GitHub/etl/src/crc64_ecma.cpp + + + + "platform.h" + +1482945166 source:/mnt/hgfs/Programming/GitHub/etl/src/crc8_ccitt.cpp + + "platform.h" + "static_assert.h" + + "platform.h" + "static_assert.h" + + "platform.h" + "static_assert.h" + +1507814636 /mnt/hgfs/Programming/GitHub/etl/src/platform.h + + + + + "etl_profile.h" + +1506008895 /mnt/hgfs/Programming/GitHub/etl/src/static_assert.h + "platform.h" + "platform.h" + "platform.h" + +1507724573 source:/mnt/hgfs/Programming/GitHub/etl/src/error_handler.cpp + "error_handler.h" + "nullptr.h" + "error_handler.h" + "nullptr.h" + "platform.h" + "error_handler.h" + "nullptr.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/error_handler.h + + "exception.h" + "function.h" + + "exception.h" + "function.h" + + "platform.h" + "exception.h" + "function.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/exception.h + "platform.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/function.h + "platform.h" + +1506008895 /mnt/hgfs/Programming/GitHub/etl/src/nullptr.h + "platform.h" + + "platform.h" + + "platform.h" + + +1482945166 source:/mnt/hgfs/Programming/GitHub/etl/src/pearson.cpp + + "platform.h" + "static_assert.h" + + "platform.h" + "static_assert.h" + + "platform.h" + "static_assert.h" + +1507724573 source:/mnt/hgfs/Programming/GitHub/etl/src/private/pvoidvector.cpp + "pvoidvector.h" + "pvoidvector.h" + "../platform.h" + "pvoidvector.h" + +1502702048 /mnt/hgfs/Programming/GitHub/etl/src/private/pvoidvector.h + + + + + "../platform.h" + "../algorithm.h" + "vector_base.h" + "../type_traits.h" + "../error_handler.h" + + + + + "../platform.h" + "../algorithm.h" + "vector_base.h" + "../type_traits.h" + "../error_handler.h" + + + + + "../platform.h" + "../algorithm.h" + "vector_base.h" + "../type_traits.h" + "../error_handler.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/algorithm.h + + + + + + "type_traits.h" + + + + + + + "iterator.h" + "type_traits.h" + + + + + + + "platform.h" + "iterator.h" + "type_traits.h" + +1507061335 /mnt/hgfs/Programming/GitHub/etl/src/type_traits.h + + "platform.h" + "nullptr.h" + + "platform.h" + "nullptr.h" + + + "platform.h" + "nullptr.h" + + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/private/vector_base.h + + "../exception.h" + "../error_handler.h" + + "../exception.h" + "../error_handler.h" + "../debug_count.h" + + "../platform.h" + "../exception.h" + "../error_handler.h" + "../debug_count.h" + +1482076051 /mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/RequireMacros.h + "RequiredCheckTestReporter.h" + +1482945166 source:/mnt/hgfs/Programming/GitHub/etl/test/murmurhash3.cpp + "murmurhash3.h" + + "murmurhash3.h" + + "murmurhash3.h" + + +1494274261 /mnt/hgfs/Programming/GitHub/etl/test/murmurhash3.h + "../src/platform.h" + + "platform.h" + + "platform.h" + + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/container.h + + + + + + + "platform.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/alignment.h + + "type_traits.h" + "static_assert.h" + + "type_traits.h" + "static_assert.h" + + "platform.h" + "type_traits.h" + "static_assert.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/array.h + + + + + "exception.h" + "type_traits.h" + "parameter_type.h" + "static_assert.h" + "error_handler.h" + + + + + "exception.h" + "type_traits.h" + "parameter_type.h" + "static_assert.h" + "error_handler.h" + "algorithm.h" + + + + + "platform.h" + "exception.h" + "type_traits.h" + "parameter_type.h" + "static_assert.h" + "error_handler.h" + "algorithm.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/parameter_type.h + "type_traits.h" + "type_traits.h" + "platform.h" + "type_traits.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/integral_limits.h + + + "type_traits.h" + "platform.h" + + + "type_traits.h" + "platform.h" + + + "platform.h" + "type_traits.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/binary.h + + + "type_traits.h" + "integral_limits.h" + "static_assert.h" + "log.h" + "power.h" + "smallest.h" + "platform.h" + + + "type_traits.h" + "integral_limits.h" + "static_assert.h" + "log.h" + "power.h" + "smallest.h" + "platform.h" + + + "platform.h" + "type_traits.h" + "integral_limits.h" + "static_assert.h" + "log.h" + "power.h" + "smallest.h" + "platform.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/log.h + + + + "platform.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/power.h + + "log.h" + + + "log.h" + + + "platform.h" + "log.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/smallest.h + + "integral_limits.h" + + "integral_limits.h" + + "platform.h" + "integral_limits.h" + +1497714148 /mnt/hgfs/Programming/GitHub/etl/src/bitset.h + + + + + "platform.h" + "integral_limits.h" + "algorithm.h" + "nullptr.h" + "log.h" + "ibitset.h" + "error_handler.h" + + + + + + "platform.h" + "integral_limits.h" + "algorithm.h" + "nullptr.h" + "log.h" + "exception.h" + "integral_limits.h" + "binary.h" + "error_handler.h" + + + + + + "platform.h" + "integral_limits.h" + "algorithm.h" + "nullptr.h" + "log.h" + "exception.h" + "integral_limits.h" + "binary.h" + "error_handler.h" + +1481309224 /mnt/hgfs/Programming/GitHub/etl/src/ibitset.h + + + + "exception.h" + "integral_limits.h" + "binary.h" + "algorithm.h" + "platform.h" + +1482945166 /mnt/hgfs/Programming/GitHub/etl/src/fnv_1.h + + "platform.h" + "static_assert.h" + "type_traits.h" + "ihash.h" + "frame_check_sequence.h" + + "platform.h" + "static_assert.h" + "type_traits.h" + "ihash.h" + "frame_check_sequence.h" + + "platform.h" + "static_assert.h" + "type_traits.h" + "ihash.h" + "frame_check_sequence.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/ihash.h + + + "exception.h" + "error_handler.h" + + + "exception.h" + "error_handler.h" + + + "platform.h" + "exception.h" + "error_handler.h" + +1482945166 /mnt/hgfs/Programming/GitHub/etl/src/frame_check_sequence.h + + "platform.h" + "static_assert.h" + "type_traits.h" + "binary.h" + + "platform.h" + "static_assert.h" + "type_traits.h" + "binary.h" + + "platform.h" + "static_assert.h" + "type_traits.h" + "binary.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/bloom_filter.h + "parameter_type.h" + "bitset.h" + "type_traits.h" + "binary.h" + "log.h" + "power.h" + "parameter_type.h" + "bitset.h" + "type_traits.h" + "binary.h" + "log.h" + "power.h" + "platform.h" + "parameter_type.h" + "bitset.h" + "type_traits.h" + "binary.h" + "log.h" + "power.h" + +1479511689 /mnt/hgfs/Programming/GitHub/etl/src/crc16.h + + + "platform.h" + "frame_check_sequence.h" + + + "platform.h" + "frame_check_sequence.h" + + + "platform.h" + "frame_check_sequence.h" + +1479511689 /mnt/hgfs/Programming/GitHub/etl/src/crc16_ccitt.h + + + "platform.h" + "frame_check_sequence.h" + + + "platform.h" + "frame_check_sequence.h" + + + "platform.h" + "frame_check_sequence.h" + +1479511689 /mnt/hgfs/Programming/GitHub/etl/src/crc32.h + + + "platform.h" + "frame_check_sequence.h" + + + "platform.h" + "frame_check_sequence.h" + + + "platform.h" + "frame_check_sequence.h" + +1506008895 /mnt/hgfs/Programming/GitHub/etl/src/char_traits.h + + "platform.h" + "stdint.h" + "algorithm.h" + + "platform.h" + "stdint.h" + "algorithm.h" + + "platform.h" + "stdint.h" + "algorithm.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_bsd_checksum.cpp + + + + + + "../src/checksum.h" + "UnitTest++.h" + + + + + "checksum.h" + "UnitTest++.h" + + + + + "checksum.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/checksum.h + + "binary.h" + "frame_check_sequence.h" + + "binary.h" + "frame_check_sequence.h" + + "platform.h" + "binary.h" + "frame_check_sequence.h" + +1481309464 /mnt/hgfs/Programming/GitHub/etl/src/endian.h + + "enum_type.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/enum_type.h + "platform.h" + +1479511689 /mnt/hgfs/Programming/GitHub/etl/src/crc8_ccitt.h + + + "platform.h" + "frame_check_sequence.h" + + + "platform.h" + "frame_check_sequence.h" + + + "platform.h" + "frame_check_sequence.h" + +1479511689 /mnt/hgfs/Programming/GitHub/etl/src/crc16_kermit.h + + + "platform.h" + "frame_check_sequence.h" + + + "platform.h" + "frame_check_sequence.h" + + + "platform.h" + "frame_check_sequence.h" + +1479511689 /mnt/hgfs/Programming/GitHub/etl/src/crc64_ecma.h + + + "platform.h" + "frame_check_sequence.h" + + + "platform.h" + "frame_check_sequence.h" + + + "platform.h" + "frame_check_sequence.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/cyclic_value.h + + + "static_assert.h" + "exception.h" + + + "static_assert.h" + "exception.h" + + + "platform.h" + "static_assert.h" + "exception.h" + "static_assert.h" + "type_traits.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_debounce.cpp + + "../src/debounce.h" + "UnitTest++.h" + "debounce.h" + "UnitTest++.h" + "debounce.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/debounce.h + + "static_assert.h" + + "static_assert.h" + + "platform.h" + "static_assert.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/deque.h + + + + + "ideque.h" + "container.h" + "alignment.h" + "array.h" + + + + + "container.h" + "alignment.h" + "array.h" + "memory.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "algorithm.h" + "type_traits.h" + "parameter_type.h" + + + + + "platform.h" + "container.h" + "alignment.h" + "array.h" + "memory.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "algorithm.h" + "type_traits.h" + "parameter_type.h" + +1482624126 /mnt/hgfs/Programming/GitHub/etl/src/ideque.h + + + "algorithm.h" + "type_traits.h" + "private/deque_base.h" + "parameter_type.h" + "error_handler.h" + +1479511690 /mnt/hgfs/Programming/GitHub/etl/src/private/deque_base.h + + "../exception.h" + "../error_handler.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/fixed_iterator.h + + + + "platform.h" + +1501063381 /mnt/hgfs/Programming/GitHub/etl/src/flat_map.h + + + + "iflat_map.h" + "vector.h" + "platform.h" + "reference_flat_map.h" + "pool.h" + "platform.h" + "reference_flat_map.h" + "pool.h" + +1482748252 /mnt/hgfs/Programming/GitHub/etl/src/iflat_map.h + + + + + + "private/flat_map_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1479511690 /mnt/hgfs/Programming/GitHub/etl/src/private/flat_map_base.h + + "../exception.h" + "../ivector.h" + "../error_handler.h" + +1482748239 /mnt/hgfs/Programming/GitHub/etl/src/ivector.h + + + + + "platform.h" + "algorithm.h" + "private/vector_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + "private/ivectorpointer.h" + +1502702048 /mnt/hgfs/Programming/GitHub/etl/src/private/ivectorpointer.h + "pvoidvector.h" + "pvoidvector.h" + "pvoidvector.h" + +1506008895 /mnt/hgfs/Programming/GitHub/etl/src/vector.h + + + + "ivector.h" + "container.h" + "alignment.h" + "array.h" + + + + + + + + "platform.h" + "algorithm.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + "memory.h" + "container.h" + "alignment.h" + "array.h" + "exception.h" + "debug_count.h" + "private/vector_base.h" + "private/ivectorpointer.h" + + + + + + + + "platform.h" + "algorithm.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + "memory.h" + "container.h" + "alignment.h" + "array.h" + "exception.h" + "debug_count.h" + "private/vector_base.h" + "private/ivectorpointer.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_flat_multimap.cpp + + + + + + + + + "data.h" + "../src/flat_multimap.h" + "UnitTest++.h" + + + + + + + + "data.h" + "flat_multimap.h" + "UnitTest++.h" + + + + + + + + "data.h" + "flat_multimap.h" + +1501063086 /mnt/hgfs/Programming/GitHub/etl/src/flat_multimap.h + + + + "iflat_multimap.h" + "vector.h" + "platform.h" + "reference_flat_multimap.h" + "pool.h" + "platform.h" + "reference_flat_multimap.h" + "pool.h" + +1482748239 /mnt/hgfs/Programming/GitHub/etl/src/iflat_multimap.h + + + + + + "private/flat_multimap_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1479511690 /mnt/hgfs/Programming/GitHub/etl/src/private/flat_multimap_base.h + + "../exception.h" + "../ivector.h" + "../error_handler.h" + +1501063087 source:/mnt/hgfs/Programming/GitHub/etl/test/test_flat_multiset.cpp + + + + + + + + + "data.h" + "../src/flat_multiset.h" + "UnitTest++.h" + + + + + + + + "data.h" + "flat_multiset.h" + "UnitTest++.h" + + + + + + + + "data.h" + "flat_multiset.h" + +1501063086 /mnt/hgfs/Programming/GitHub/etl/src/flat_multiset.h + + + + "iflat_multiset.h" + "vector.h" + "platform.h" + "reference_flat_multiset.h" + "pool.h" + "platform.h" + "reference_flat_multiset.h" + "pool.h" + +1482748239 /mnt/hgfs/Programming/GitHub/etl/src/iflat_multiset.h + + + + + + "private/flat_multiset_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1479511690 /mnt/hgfs/Programming/GitHub/etl/src/private/flat_multiset_base.h + + "../exception.h" + "../ivector.h" + "../error_handler.h" + +1501063086 /mnt/hgfs/Programming/GitHub/etl/src/flat_set.h + + + + "iflat_set.h" + "vector.h" + "platform.h" + "reference_flat_set.h" + "pool.h" + "platform.h" + "reference_flat_set.h" + "pool.h" + +1482748239 /mnt/hgfs/Programming/GitHub/etl/src/iflat_set.h + + + + + + "private/flat_set_base.h" + "type_traits.h" + "parameter_type.h" + "ivector.h" + "error_handler.h" + +1479511690 /mnt/hgfs/Programming/GitHub/etl/src/private/flat_set_base.h + + "../exception.h" + "../ivector.h" + "../error_handler.h" + +1502548035 /mnt/hgfs/Programming/GitHub/etl/src/forward_list.h + + "pool.h" + "iforward_list.h" + "container.h" + + + + + "pool.h" + "container.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + "parameter_type.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/pool.h + "alignment.h" + "array.h" + "bitset.h" + "ipool.h" + + "alignment.h" + "array.h" + "container.h" + "integral_limits.h" + "platform.h" + "nullptr.h" + "alignment.h" + "error_handler.h" + "static_assert.h" + + + "platform.h" + "alignment.h" + "array.h" + "container.h" + "integral_limits.h" + "nullptr.h" + "alignment.h" + "error_handler.h" + "static_assert.h" + + + +1481841065 /mnt/hgfs/Programming/GitHub/etl/src/ipool.h + + "private/pool_base.h" + "nullptr.h" + "ibitset.h" + "error_handler.h" + +1479511691 /mnt/hgfs/Programming/GitHub/etl/src/private/pool_base.h + + "../exception.h" + "../error_handler.h" + "../error_handler.h" + +1482748239 /mnt/hgfs/Programming/GitHub/etl/src/iforward_list.h + "platform.h" + + + + + "pool.h" + "nullptr.h" + "private/forward_list_base.h" + "type_traits.h" + "parameter_type.h" + +1479511690 /mnt/hgfs/Programming/GitHub/etl/src/private/forward_list_base.h + + "../exception.h" + "../error_handler.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/functional.h + "platform.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/hash.h + + + "fnv_1.h" + "type_traits.h" + "static_assert.h" + + + "fnv_1.h" + "type_traits.h" + "static_assert.h" + + + "platform.h" + "fnv_1.h" + "type_traits.h" + "static_assert.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/instance_count.h + "platform.h" + +1501063087 source:/mnt/hgfs/Programming/GitHub/etl/test/test_intrusive_forward_list.cpp + + "ExtraCheckMacros.h" + "data.h" + "../src/intrusive_forward_list.h" + + + + + + + "UnitTest++.h" + "ExtraCheckMacros.h" + "data.h" + "intrusive_forward_list.h" + + + + + + + +1501063086 /mnt/hgfs/Programming/GitHub/etl/src/intrusive_forward_list.h + "platform.h" + + + + + "nullptr.h" + "type_traits.h" + "exception.h" + "error_handler.h" + "intrusive_links.h" + "algorithm.h" + "private/counter_type.h" + "platform.h" + + + + + "platform.h" + "nullptr.h" + "type_traits.h" + "exception.h" + "error_handler.h" + "intrusive_links.h" + "algorithm.h" + "platform.h" + + + + + "platform.h" + "nullptr.h" + "type_traits.h" + "exception.h" + "error_handler.h" + "intrusive_links.h" + "algorithm.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/intrusive_links.h + + + "nullptr.h" + "type_traits.h" + "exception.h" + "error_handler.h" + + + "nullptr.h" + "type_traits.h" + "exception.h" + "error_handler.h" + + + "platform.h" + "nullptr.h" + "type_traits.h" + "exception.h" + "error_handler.h" + +1482353821 /mnt/hgfs/Programming/GitHub/etl/src/private/counter_type.h + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_intrusive_links.cpp + + "ExtraCheckMacros.h" + "data.h" + "../src/intrusive_links.h" + "UnitTest++.h" + "ExtraCheckMacros.h" + "data.h" + "intrusive_links.h" + "UnitTest++.h" + "ExtraCheckMacros.h" + "data.h" + "intrusive_links.h" + +1501063087 source:/mnt/hgfs/Programming/GitHub/etl/test/test_intrusive_list.cpp + + "ExtraCheckMacros.h" + "data.h" + "../src/intrusive_list.h" + + + + + + "UnitTest++.h" + "ExtraCheckMacros.h" + "data.h" + "intrusive_list.h" + + + + + + +1501063086 /mnt/hgfs/Programming/GitHub/etl/src/intrusive_list.h + "platform.h" + + + + + "nullptr.h" + "type_traits.h" + "exception.h" + "error_handler.h" + "intrusive_links.h" + "static_assert.h" + "algorithm.h" + "private/counter_type.h" + "platform.h" + + + + + "platform.h" + "nullptr.h" + "type_traits.h" + "exception.h" + "error_handler.h" + "intrusive_links.h" + "static_assert.h" + "algorithm.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_intrusive_queue.cpp + + "../src/intrusive_queue.h" + "../src/intrusive_links.h" + + "UnitTest++.h" + "intrusive_queue.h" + "intrusive_links.h" + + "UnitTest++.h" + "intrusive_queue.h" + "intrusive_links.h" + + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/intrusive_queue.h + + "type_traits.h" + "error_handler.h" + "intrusive_links.h" + "private/counter_type.h" + + "type_traits.h" + "error_handler.h" + "intrusive_links.h" + + "platform.h" + "type_traits.h" + "error_handler.h" + "intrusive_links.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_intrusive_stack.cpp + + "../src/intrusive_stack.h" + "../src/intrusive_links.h" + + "UnitTest++.h" + "intrusive_stack.h" + "intrusive_links.h" + + "UnitTest++.h" + "intrusive_stack.h" + "intrusive_links.h" + + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/intrusive_stack.h + + "type_traits.h" + "error_handler.h" + "intrusive_links.h" + "private/counter_type.h" + + "type_traits.h" + "error_handler.h" + "intrusive_links.h" + + "platform.h" + "type_traits.h" + "error_handler.h" + "intrusive_links.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/io_port.h + + "nullptr.h" + "parameter_type.h" + + + "nullptr.h" + "parameter_type.h" + + + "platform.h" + "nullptr.h" + "parameter_type.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_jenkins.cpp + + "murmurhash3.h" + + + + + "../src/jenkins.h" + "../src/endian.h" + "UnitTest++.h" + + + + + "jenkins.h" + "UnitTest++.h" + + + + + "jenkins.h" + +1485901721 /mnt/hgfs/Programming/GitHub/etl/src/jenkins.h + + + "platform.h" + "static_assert.h" + "type_traits.h" + "error_handler.h" + "ihash.h" + "frame_check_sequence.h" + + + "platform.h" + "static_assert.h" + "type_traits.h" + "error_handler.h" + "ihash.h" + "frame_check_sequence.h" + + + "platform.h" + "static_assert.h" + "type_traits.h" + "error_handler.h" + "ihash.h" + "frame_check_sequence.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/largest.h + "type_traits.h" + "type_traits.h" + "smallest.h" + "static_assert.h" + "platform.h" + "type_traits.h" + "smallest.h" + "static_assert.h" + +1502548036 /mnt/hgfs/Programming/GitHub/etl/src/list.h + + "ilist.h" + "container.h" + "pool.h" + + + + + "platform.h" + "container.h" + "pool.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + "parameter_type.h" + "algorithm.h" + + + + + "platform.h" + "container.h" + "pool.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + "parameter_type.h" + "algorithm.h" + +1482748239 /mnt/hgfs/Programming/GitHub/etl/src/ilist.h + + + + + "nullptr.h" + "private/list_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + "platform.h" + +1479511691 /mnt/hgfs/Programming/GitHub/etl/src/private/list_base.h + + "../exception.h" + "../error_handler.h" + +1501063086 /mnt/hgfs/Programming/GitHub/etl/src/map.h + + + + "imap.h" + "container.h" + "pool.h" + + + + + + "platform.h" + "container.h" + "pool.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + "parameter_type.h" + + + + + + "platform.h" + "container.h" + "pool.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + "parameter_type.h" + +1479511690 /mnt/hgfs/Programming/GitHub/etl/src/imap.h + + + + + "nullptr.h" + "private/map_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + "platform.h" + +1481841066 /mnt/hgfs/Programming/GitHub/etl/src/private/map_base.h + + "../exception.h" + "../error_handler.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/fibonacci.h + + + + "platform.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/factorial.h + + + + "platform.h" + +1507061335 source:/mnt/hgfs/Programming/GitHub/etl/test/test_multimap.cpp + + + + + + + + "../src/multimap.h" + "UnitTest++.h" + + + + + + + "multimap.h" + "UnitTest++.h" + + + + + + + "multimap.h" + +1501063086 /mnt/hgfs/Programming/GitHub/etl/src/multimap.h + + + + "imultimap.h" + "container.h" + "pool.h" + + + + + + "platform.h" + "container.h" + "pool.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + "parameter_type.h" + + + + + + "platform.h" + "container.h" + "pool.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + "parameter_type.h" + +1482098369 /mnt/hgfs/Programming/GitHub/etl/src/imultimap.h + + + + + "nullptr.h" + "private/multimap_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + "platform.h" + +1481309650 /mnt/hgfs/Programming/GitHub/etl/src/private/multimap_base.h + + "../exception.h" + "../error_handler.h" + +1507061335 source:/mnt/hgfs/Programming/GitHub/etl/test/test_multiset.cpp + + + + + + + + "../src/multiset.h" + "UnitTest++.h" + + + + + + + "multiset.h" + "UnitTest++.h" + + + + + + + "multiset.h" + +1501063086 /mnt/hgfs/Programming/GitHub/etl/src/multiset.h + + + + "imultiset.h" + "container.h" + "pool.h" + + + + + + "platform.h" + "parameter_type.h" + "container.h" + "pool.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + + + + + + "platform.h" + "parameter_type.h" + "container.h" + "pool.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + +1482098369 /mnt/hgfs/Programming/GitHub/etl/src/imultiset.h + + + + + "nullptr.h" + "private/multiset_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + "platform.h" + +1481309628 /mnt/hgfs/Programming/GitHub/etl/src/private/multiset_base.h + + "../exception.h" + "../error_handler.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_murmur3.cpp + + "murmurhash3.h" + + + + + "../src/murmur3.h" + "../src/endian.h" + "UnitTest++.h" + "murmurhash3.h" + + + + + "murmur3.h" + "UnitTest++.h" + "murmurhash3.h" + + + + + "murmur3.h" + +1479511690 /mnt/hgfs/Programming/GitHub/etl/src/murmur3.h + + "platform.h" + "ihash.h" + "binary.h" + "error_handler.h" + + "platform.h" + "ihash.h" + "binary.h" + "error_handler.h" + + "platform.h" + "ihash.h" + "binary.h" + "error_handler.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/numeric.h + "platform.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/observer.h + + "vector.h" + "exception.h" + "error_handler.h" + + "vector.h" + "exception.h" + "error_handler.h" + + "platform.h" + "vector.h" + "exception.h" + "error_handler.h" + +1488100617 /mnt/hgfs/Programming/GitHub/etl/src/optional.h + "alignment.h" + "type_traits.h" + "exception.h" + "error_handler.h" + "platform.h" + "alignment.h" + "type_traits.h" + "exception.h" + "error_handler.h" + "platform.h" + "alignment.h" + "type_traits.h" + "exception.h" + "error_handler.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_pearson.cpp + + + + + + + "../src/pearson.h" + "../src/endian.h" + "UnitTest++.h" + + + + + + "pearson.h" + "UnitTest++.h" + + + + + + "pearson.h" + +1506008895 /mnt/hgfs/Programming/GitHub/etl/src/pearson.h + + "platform.h" + "static_assert.h" + "type_traits.h" + "endian.h" + "ihash.h" + "array.h" + "container.h" + + "platform.h" + "static_assert.h" + "type_traits.h" + "ihash.h" + "array.h" + "container.h" + + "platform.h" + "static_assert.h" + "type_traits.h" + "ihash.h" + "array.h" + "container.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_priority_queue.cpp + + + "../src/priority_queue.h" + "UnitTest++.h" + + "priority_queue.h" + "UnitTest++.h" + + "priority_queue.h" + +1506008895 /mnt/hgfs/Programming/GitHub/etl/src/priority_queue.h + + + "ipriority_queue.h" + "container.h" + "vector.h" + + + + "platform.h" + "container.h" + "vector.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + "exception.h" + + + + "platform.h" + "container.h" + "vector.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + "exception.h" + +1482748239 /mnt/hgfs/Programming/GitHub/etl/src/ipriority_queue.h + + + "type_traits.h" + "parameter_type.h" + "error_handler.h" + "exception.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/queue.h + + + "iqueue.h" + "container.h" + "alignment.h" + "array.h" + + + "container.h" + "alignment.h" + "array.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "type_traits.h" + "parameter_type.h" + + + "platform.h" + "container.h" + "alignment.h" + "array.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "type_traits.h" + "parameter_type.h" + +1481841066 /mnt/hgfs/Programming/GitHub/etl/src/iqueue.h + + "private/queue_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1479511691 /mnt/hgfs/Programming/GitHub/etl/src/private/queue_base.h + + "../exception.h" + "../error_handler.h" + +1501063086 /mnt/hgfs/Programming/GitHub/etl/src/set.h + + + + "iset.h" + "container.h" + "pool.h" + + + + + + "platform.h" + "container.h" + "pool.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + "parameter_type.h" + + + + + + "platform.h" + "container.h" + "pool.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "nullptr.h" + "type_traits.h" + "parameter_type.h" + +1479511690 /mnt/hgfs/Programming/GitHub/etl/src/iset.h + + + + + "nullptr.h" + "private/set_base.h" + "type_traits.h" + "parameter_type.h" + "pool.h" + "platform.h" + +1482625676 /mnt/hgfs/Programming/GitHub/etl/src/private/set_base.h + + "../exception.h" + "../error_handler.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/stack.h + + + + "istack.h" + "container.h" + "alignment.h" + "array.h" + + + + "container.h" + "alignment.h" + "array.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "type_traits.h" + "parameter_type.h" + + + + "platform.h" + "container.h" + "alignment.h" + "array.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "type_traits.h" + "parameter_type.h" + +1481841066 /mnt/hgfs/Programming/GitHub/etl/src/istack.h + + "private/stack_base.h" + "type_traits.h" + "parameter_type.h" + "error_handler.h" + +1479511691 /mnt/hgfs/Programming/GitHub/etl/src/private/stack_base.h + + "../exception.h" + "../error_handler.h" + +1502548036 source:/mnt/hgfs/Programming/GitHub/etl/test/test_string_char.cpp + + + + + "../src/cstring.h" + "UnitTest++.h" + + + + "cstring.h" + "fnv_1.h" + "UnitTest++.h" + + + + "cstring.h" + "fnv_1.h" + +1502548035 /mnt/hgfs/Programming/GitHub/etl/src/cstring.h + "platform.h" + "basic_string.h" + "ibasic_string.h" + "hash.h" + "platform.h" + "basic_string.h" + "hash.h" + "platform.h" + "basic_string.h" + "hash.h" + +1502702048 /mnt/hgfs/Programming/GitHub/etl/src/basic_string.h + + + + "ibasic_string.h" + "char_traits.h" + "container.h" + "alignment.h" + "array.h" + + + + + + + "platform.h" + "char_traits.h" + "container.h" + "alignment.h" + "array.h" + "algorithm.h" + "type_traits.h" + "error_handler.h" + "integral_limits.h" + "exception.h" + + + + + + + "platform.h" + "char_traits.h" + "container.h" + "alignment.h" + "array.h" + "algorithm.h" + "type_traits.h" + "error_handler.h" + "integral_limits.h" + "exception.h" + +1482748239 /mnt/hgfs/Programming/GitHub/etl/src/ibasic_string.h + + + + + + "private/string_base.h" + "platform.h" + "algorithm.h" + "type_traits.h" + "error_handler.h" + "algorithm.h" + "char_traits.h" + +1482614484 /mnt/hgfs/Programming/GitHub/etl/src/private/string_base.h + + "../platform.h" + "../integral_limits.h" + "../exception.h" + "../error_handler.h" + +1502548036 source:/mnt/hgfs/Programming/GitHub/etl/test/test_string_u16.cpp + + + + + "../src/u16string.h" + "UnitTest++.h" + + + + "u16string.h" + "UnitTest++.h" + + + + "u16string.h" + +1502548036 /mnt/hgfs/Programming/GitHub/etl/src/u16string.h + "platform.h" + "basic_string.h" + "hash.h" + "platform.h" + "basic_string.h" + "hash.h" + "platform.h" + "basic_string.h" + "hash.h" + +1502548036 source:/mnt/hgfs/Programming/GitHub/etl/test/test_string_u32.cpp + + + + + "../src/u32string.h" + "UnitTest++.h" + + + + "u32string.h" + "UnitTest++.h" + + + + "u32string.h" + +1502548036 /mnt/hgfs/Programming/GitHub/etl/src/u32string.h + "platform.h" + "basic_string.h" + "hash.h" + "platform.h" + "basic_string.h" + "hash.h" + "platform.h" + "basic_string.h" + "hash.h" + +1502548036 source:/mnt/hgfs/Programming/GitHub/etl/test/test_string_wchar_t.cpp + + + + + "../src/wstring.h" + "UnitTest++.h" + + + + "wstring.h" + "UnitTest++.h" + + + + "wstring.h" + +1502548036 /mnt/hgfs/Programming/GitHub/etl/src/wstring.h + "platform.h" + "basic_string.h" + "hash.h" + "platform.h" + "basic_string.h" + "hash.h" + "platform.h" + "basic_string.h" + "hash.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_type_def.cpp + + + "../src/type_def.h" + "UnitTest++.h" + + "type_def.h" + "UnitTest++.h" + + "type_def.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/type_def.h + "platform.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_unordered_map.cpp + + + + + + + + + + "data.h" + "../src/unordered_map.h" + "UnitTest++.h" + + + + + + + + + "data.h" + "unordered_map.h" + "UnitTest++.h" + + + + + + + + + "data.h" + "unordered_map.h" + +1506008895 /mnt/hgfs/Programming/GitHub/etl/src/unordered_map.h + + + + "iunordered_map.h" + "container.h" + "pool.h" + "vector.h" + "intrusive_forward_list.h" + "hash.h" + + + + + + + "platform.h" + "container.h" + "pool.h" + "array.h" + "intrusive_forward_list.h" + "hash.h" + "type_traits.h" + "parameter_type.h" + "nullptr.h" + "vector.h" + "error_handler.h" + "exception.h" + "debug_count.h" + + + + + + + "platform.h" + "container.h" + "pool.h" + "array.h" + "intrusive_forward_list.h" + "hash.h" + "type_traits.h" + "parameter_type.h" + "nullptr.h" + "vector.h" + "error_handler.h" + "exception.h" + "debug_count.h" + +1482748240 /mnt/hgfs/Programming/GitHub/etl/src/iunordered_map.h + + + + + + "type_traits.h" + "parameter_type.h" + "hash.h" + "nullptr.h" + "ipool.h" + "ivector.h" + "error_handler.h" + "intrusive_forward_list.h" + "exception.h" + "error_handler.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_unordered_multimap.cpp + + + + + + + + + + "data.h" + "../src/unordered_multimap.h" + "UnitTest++.h" + + + + + + + + + "data.h" + "unordered_multimap.h" + "UnitTest++.h" + + + + + + + + + "data.h" + "unordered_multimap.h" + +1506008895 /mnt/hgfs/Programming/GitHub/etl/src/unordered_multimap.h + + + + "iunordered_multimap.h" + "container.h" + "pool.h" + "vector.h" + "intrusive_forward_list.h" + "hash.h" + + + + + + + "platform.h" + "container.h" + "pool.h" + "vector.h" + "intrusive_forward_list.h" + "hash.h" + "type_traits.h" + "parameter_type.h" + "nullptr.h" + "pool.h" + "error_handler.h" + "exception.h" + "debug_count.h" + + + + + + + "platform.h" + "container.h" + "pool.h" + "vector.h" + "intrusive_forward_list.h" + "hash.h" + "type_traits.h" + "parameter_type.h" + "nullptr.h" + "pool.h" + "error_handler.h" + "exception.h" + "debug_count.h" + +1482748240 /mnt/hgfs/Programming/GitHub/etl/src/iunordered_multimap.h + + + + + + "type_traits.h" + "parameter_type.h" + "hash.h" + "nullptr.h" + "ipool.h" + "ivector.h" + "error_handler.h" + "intrusive_forward_list.h" + "exception.h" + "error_handler.h" + +1500663950 source:/mnt/hgfs/Programming/GitHub/etl/test/test_unordered_multiset.cpp + + + + + + + + + + "data.h" + "../src/unordered_multiset.h" + "../src/checksum.h" + "UnitTest++.h" + + + + + + + + + "data.h" + "unordered_multiset.h" + "checksum.h" + "UnitTest++.h" + + + + + + + + + "data.h" + "unordered_multiset.h" + "checksum.h" + +1506008895 /mnt/hgfs/Programming/GitHub/etl/src/unordered_multiset.h + + + + "iunordered_multiset.h" + "container.h" + "pool.h" + "vector.h" + "intrusive_forward_list.h" + "hash.h" + + + + + + + "platform.h" + "container.h" + "pool.h" + "vector.h" + "intrusive_forward_list.h" + "hash.h" + "type_traits.h" + "parameter_type.h" + "nullptr.h" + "error_handler.h" + "exception.h" + "debug_count.h" + + + + + + + "platform.h" + "container.h" + "pool.h" + "vector.h" + "intrusive_forward_list.h" + "hash.h" + "type_traits.h" + "parameter_type.h" + "nullptr.h" + "error_handler.h" + "exception.h" + "debug_count.h" + +1482748239 /mnt/hgfs/Programming/GitHub/etl/src/iunordered_multiset.h + + + + + + "type_traits.h" + "parameter_type.h" + "hash.h" + "nullptr.h" + "ipool.h" + "ivector.h" + "error_handler.h" + "intrusive_forward_list.h" + "exception.h" + "error_handler.h" + +1500663950 source:/mnt/hgfs/Programming/GitHub/etl/test/test_unordered_set.cpp + + + + + + + + + "data.h" + "../src/unordered_set.h" + "../src/checksum.h" + "UnitTest++.h" + + + + + + + + "data.h" + "unordered_set.h" + "checksum.h" + "UnitTest++.h" + + + + + + + + "data.h" + "unordered_set.h" + "checksum.h" + +1506008895 /mnt/hgfs/Programming/GitHub/etl/src/unordered_set.h + + + + "iunordered_set.h" + "container.h" + "pool.h" + "vector.h" + "intrusive_forward_list.h" + "hash.h" + + + + + + + "platform.h" + "container.h" + "pool.h" + "vector.h" + "intrusive_forward_list.h" + "hash.h" + "type_traits.h" + "parameter_type.h" + "nullptr.h" + "error_handler.h" + "exception.h" + "error_handler.h" + "debug_count.h" + + + + + + + "platform.h" + "container.h" + "pool.h" + "vector.h" + "intrusive_forward_list.h" + "hash.h" + "type_traits.h" + "parameter_type.h" + "nullptr.h" + "error_handler.h" + "exception.h" + "error_handler.h" + "debug_count.h" + +1482748240 /mnt/hgfs/Programming/GitHub/etl/src/iunordered_set.h + + + + + + "type_traits.h" + "parameter_type.h" + "hash.h" + "nullptr.h" + "ipool.h" + "ivector.h" + "error_handler.h" + "intrusive_forward_list.h" + "exception.h" + "error_handler.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_utility.cpp + + "../src/utility.h" + "UnitTest++.h" + "utility.h" + "UnitTest++.h" + "utility.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/utility.h + "type_traits.h" + "type_traits.h" + "platform.h" + "type_traits.h" + +1502115378 /mnt/hgfs/Programming/GitHub/etl/src/variant.h + + "platform.h" + "array.h" + "largest.h" + "exception.h" + "type_traits.h" + "integral_limits.h" + "static_assert.h" + "alignment.h" + "error_handler.h" + "largest.h" + + "platform.h" + "array.h" + "largest.h" + "exception.h" + "type_traits.h" + "integral_limits.h" + "static_assert.h" + "alignment.h" + "error_handler.h" + + "platform.h" + "array.h" + "largest.h" + "exception.h" + "type_traits.h" + "integral_limits.h" + "static_assert.h" + "alignment.h" + "error_handler.h" + +1501063087 source:/mnt/hgfs/Programming/GitHub/etl/test/test_vector_pointer.cpp + + + + + "../src/vector.h" + "UnitTest++.h" + + + + + "vector.h" + "UnitTest++.h" + + + + + "vector.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/visitor.h + "platform.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_xor_checksum.cpp + + + + + + "../src/checksum.h" + "UnitTest++.h" + + + + + "checksum.h" + "UnitTest++.h" + + + + + "checksum.h" + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\requiredcheckexception.cpp + "RequiredCheckException.h" + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\requiredchecktestreporter.cpp + "RequiredCheckTestReporter.h" + "CurrentTest.h" + "TestResults.h" + +1482079651 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\throwingtestreporter.cpp + "ThrowingTestReporter.h" + "RequiredCheckException.h" + "ReportAssertImpl.h" + +1508265809 d:\users\john\documents\programming\github\etl\src\iterator.h + + "platform.h" + "type_traits.h" + +1508265809 d:\users\john\documents\programming\github\etl\src\memory.h + + + "platform.h" + "type_traits.h" + +1502551635 d:\users\john\documents\programming\github\etl\src\debug_count.h + + + "platform.h" + +1508265810 source:d:\users\john\documents\programming\github\etl\src\random.cpp + "platform.h" + "random.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\random.h + + "platform.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_intrusive_flat_map.cpp + "UnitTest++.h" + + + + + + + + + "data.h" + "intrusive_flat_map.h" + +1501063087 _flat_map.h" + +1494277861 d:\users\john\documents\programming\github\etl\src\intrusive_flat_map.h + + "exception.h" + "vector.h" + "error_handler.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_intrusive_flat_multimap.cpp + "UnitTest++.h" + + + + + + + + "data.h" + "intrusive_flat_multimap.h" + +1501063087 _flat_multimap.h" + +1494277861 d:\users\john\documents\programming\github\etl\src\intrusive_flat_multimap.h + + "exception.h" + "error_handler.h" + "debug_count.h" + "vector.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_intrusive_flat_multiset.cpp + "UnitTest++.h" + + + + + + + + "data.h" + "intrusive_flat_multiset.h" + +1501063087 _flat_multiset.h" + +1494277861 d:\users\john\documents\programming\github\etl\src\intrusive_flat_multiset.h + + + + + + "platform.h" + "type_traits.h" + "vector.h" + "pool.h" + "error_handler.h" + "exception.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_intrusive_flat_set.cpp + "UnitTest++.h" + + + + + + + + "data.h" + "intrusive_flat_set.h" + +1501063087 _flat_set.h" + +1494277861 d:\users\john\documents\programming\github\etl\src\intrusive_flat_set.h + + + + + + "platform.h" + "type_traits.h" + "pool.h" + "error_handler.h" + "exception.h" + "vector.h" + +1494277861 source:d:\users\john\documents\programming\github\etl\test\test_iterator.cpp + "UnitTest++.h" + "iterator.h" + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_memory.cpp + "UnitTest++.h" + "memory.h" + "debug_count.h" + + + + + + + +1502218425 source:d:\users\john\documents\programming\github\etl\test\test_random.cpp + "UnitTest++.h" + + "random.h" + + + + +1502482192 source:d:\users\john\documents\programming\github\etl\test\test_vector_non_trivial.cpp + "UnitTest++.h" + + + + "vector.h" + "data.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\unittest++.h + "UnitTestPP.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\unittestpp.h + "Config.h" + "TestMacros.h" + "CheckMacros.h" + "RequireMacros.h" + "TestRunner.h" + "TimeConstraint.h" + "ReportAssert.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\config.h + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\testmacros.h + "Config.h" + "TestSuite.h" + "ExceptionMacros.h" + "ExecuteTest.h" + "AssertException.h" + "TestDetails.h" + "MemoryOutStream.h" + "Posix/SignalTranslator.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\testsuite.h + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\exceptionmacros.h + "Config.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\executetest.h + "Config.h" + "ExceptionMacros.h" + "TestDetails.h" + "TestResults.h" + "MemoryOutStream.h" + "AssertException.h" + "RequiredCheckException.h" + "CurrentTest.h" + "ReportAssertImpl.h" + "Posix/SignalTranslator.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\testdetails.h + "HelperMacros.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\helpermacros.h + "Config.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\testresults.h + "HelperMacros.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\memoryoutstream.h + "Config.h" + "HelperMacros.h" + + + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\assertexception.h + "Config.h" + "HelperMacros.h" + + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\requiredcheckexception.h + "Config.h" + "HelperMacros.h" + + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\currenttest.h + "HelperMacros.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\reportassertimpl.h + "Config.h" + "HelperMacros.h" + + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\posix\signaltranslator.h + + + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\checkmacros.h + "HelperMacros.h" + "ExceptionMacros.h" + "Checks.h" + "AssertException.h" + "RequiredCheckException.h" + "MemoryOutStream.h" + "TestDetails.h" + "CurrentTest.h" + "ReportAssertImpl.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\checks.h + "Config.h" + "TestResults.h" + "MemoryOutStream.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\requiremacros.h + "RequiredCheckTestReporter.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\requiredchecktestreporter.h + "HelperMacros.h" + "ThrowingTestReporter.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\throwingtestreporter.h + "TestReporter.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\testreporter.h + "HelperMacros.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\testrunner.h + "Test.h" + "TestList.h" + "CurrentTest.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\test.h + "TestDetails.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\testlist.h + "HelperMacros.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\timeconstraint.h + "TimeHelpers.h" + "HelperMacros.h" + "TestDetails.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\timehelpers.h + "Config.h" + "Posix/TimeHelpers.h" + "Win32/TimeHelpers.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\posix\timehelpers.h + + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\win32\timehelpers.h + "../Config.h" + "../HelperMacros.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\\reportassert.h + "HelperMacros.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\helpermacros.h + "Config.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\config.h + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\exceptionmacros.h + "Config.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\checks.h + "Config.h" + "TestResults.h" + "MemoryOutStream.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\testresults.h + "HelperMacros.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\memoryoutstream.h + "Config.h" + "HelperMacros.h" + + + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\assertexception.h + "Config.h" + "HelperMacros.h" + + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\testdetails.h + "HelperMacros.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\currenttest.h + "HelperMacros.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\reportassertimpl.h + "Config.h" + "HelperMacros.h" + + +1501066687 source:d:\users\john\documents\programming\github\etl\test\test_reference_flat_map.cpp + "UnitTest++.h" + + + + + + + + + "data.h" + "reference_flat_map.h" + +1501066686 d:\users\john\documents\programming\github\etl\src\reference_flat_map.h + + "platform.h" + "vector.h" + "error_handler.h" + "debug_count.h" + "type_traits.h" + "parameter_type.h" + "exception.h" + "static_assert.h" + +1501066687 source:d:\users\john\documents\programming\github\etl\test\test_reference_flat_multimap.cpp + "UnitTest++.h" + + + + + + + + "data.h" + "reference_flat_multimap.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\reference_flat_multimap.h + + "platform.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "vector.h" + +1501066687 source:d:\users\john\documents\programming\github\etl\test\test_reference_flat_multiset.cpp + "UnitTest++.h" + + + + + + + + "data.h" + "reference_flat_multiset.h" + +1501066686 d:\users\john\documents\programming\github\etl\src\reference_flat_multiset.h + + + + + + "platform.h" + "type_traits.h" + "vector.h" + "pool.h" + "error_handler.h" + "exception.h" + +1501066687 source:d:\users\john\documents\programming\github\etl\test\test_reference_flat_set.cpp + "UnitTest++.h" + + + + + + + + "data.h" + "reference_flat_set.h" + +1501066686 d:\users\john\documents\programming\github\etl\src\reference_flat_set.h + + + + + + "platform.h" + "type_traits.h" + "pool.h" + "error_handler.h" + "exception.h" + "vector.h" + +1479515291 source:d:\users\john\documents\programming\github\etl\test\test_compile.cpp + "algorithm.h" + "alignment.h" + "array.h" + "bitset.h" + "container.h" + "crc8_ccitt.h" + "crc16.h" + "crc16_ccitt.h" + "crc16_kermit.h" + "crc32.h" + "crc64_ecma.h" + "cyclic_value.h" + "deque.h" + "io_port.h" + "vector.h" + "variant.h" + "list.h" + "map.h" + + +1502118978 source:d:\users\john\documents\programming\github\etl\test\test_fsm.cpp + "UnitTest++.h" + "fsm.h" + "enum_type.h" + "container.h" + + +1508265807 d:\users\john\documents\programming\github\etl\src\fsm.h + + "platform.h" + "array.h" + "nullptr.h" + "error_handler.h" + "exception.h" + "user_type.h" + "message_router.h" + "integral_limits.h" + "largest.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\user_type.h + "platform.h" + +1508265809 d:\users\john\documents\programming\github\etl\src\message_router.h + + "platform.h" + "message.h" + "message_types.h" + "alignment.h" + "error_handler.h" + "exception.h" + "largest.h" + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_message_router.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "message_router.h" + "queue.h" + "largest.h" + "packet.h" + +1502118978 d:\users\john\documents\programming\github\etl\src\packet.h + "platform.h" + "static_assert.h" + "alignment.h" + +1502118978 source:d:\users\john\documents\programming\github\etl\test\test_packet.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "packet.h" + "largest.h" + "queue.h" + "pool.h" + +1502118978 source:d:\users\john\documents\programming\github\etl\test\test_task_scheduler.cpp + "UnitTest++.h" + + + + "task.h" + "scheduler.h" + "container.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\task.h + + "platform.h" + "error_handler.h" + "exception.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\scheduler.h + + "platform.h" + "vector.h" + "nullptr.h" + "error_handler.h" + "exception.h" + "task.h" + "type_traits.h" + "function.h" + +1508265809 d:\users\john\documents\programming\github\etl\src\message.h + + "platform.h" + "error_handler.h" + "exception.h" + "message_types.h" + +1502115378 ypes.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\message_types.h + + "platform.h" + +1502118978 source:d:\users\john\documents\programming\github\etl\test\test_message_bus.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "message_router.h" + "message_bus.h" + "queue.h" + "largest.h" + "packet.h" + +1508265809 d:\users\john\documents\programming\github\etl\src\message_bus.h + + + "platform.h" + "algorithm.h" + "vector.h" + "nullptr.h" + "error_handler.h" + "exception.h" + "message_types.h" + "message.h" + "message_router.h" + +1502477122 outer.h" + +1502118978 source:d:\users\john\documents\programming\github\etl\test\test_user_type.cpp + "UnitTest++.h" + + "user_type.h" + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/AssertException.cpp + "AssertException.h" + "AssertException.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/AssertException.h + "Config.h" + "HelperMacros.h" + + "Config.h" + "HelperMacros.h" + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/Config.h + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/HelperMacros.h + "Config.h" + "Config.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/iterator.h + + "type_traits.h" + + "platform.h" + "type_traits.h" + +1502548035 /mnt/hgfs/Programming/GitHub/etl/src/debug_count.h + + + "platform.h" + + + "platform.h" + +1507724573 source:/mnt/hgfs/Programming/GitHub/etl/src/random.cpp + "random.h" + "platform.h" + "random.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/random.h + + + "platform.h" + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/Checks.cpp + "Checks.h" + + "Checks.h" + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/Checks.h + "Config.h" + "TestResults.h" + "MemoryOutStream.h" + "Config.h" + "TestResults.h" + "MemoryOutStream.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/TestResults.h + "HelperMacros.h" + "HelperMacros.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/MemoryOutStream.h + "Config.h" + "HelperMacros.h" + + + "Config.h" + "HelperMacros.h" + + + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/CompositeTestReporter.cpp + "CompositeTestReporter.h" + + "CompositeTestReporter.h" + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/CompositeTestReporter.h + "TestReporter.h" + "TestReporter.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/TestReporter.h + "HelperMacros.h" + "HelperMacros.h" + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/CurrentTest.cpp + "CurrentTest.h" + + "CurrentTest.h" + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/CurrentTest.h + "HelperMacros.h" + "HelperMacros.h" + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/DeferredTestReporter.cpp + "Config.h" + "DeferredTestReporter.h" + "TestDetails.h" + "Config.h" + "DeferredTestReporter.h" + "TestDetails.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/DeferredTestReporter.h + "Config.h" + "TestReporter.h" + "DeferredTestResult.h" + + "Config.h" + "TestReporter.h" + "DeferredTestResult.h" + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/DeferredTestResult.h + "Config.h" + "HelperMacros.h" + + + "Config.h" + "HelperMacros.h" + + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/TestDetails.h + "HelperMacros.h" + "HelperMacros.h" + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/DeferredTestResult.cpp + "Config.h" + "DeferredTestResult.h" + + "Config.h" + "DeferredTestResult.h" + + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/MemoryOutStream.cpp + "MemoryOutStream.h" + + + "MemoryOutStream.h" + + + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/Posix/SignalTranslator.cpp + "SignalTranslator.h" + "SignalTranslator.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/Posix/SignalTranslator.h + + + + + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/Posix/TimeHelpers.cpp + "TimeHelpers.h" + + "TimeHelpers.h" + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/Posix/TimeHelpers.h + + + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/ReportAssert.cpp + "ReportAssert.h" + "ReportAssertImpl.h" + "AssertException.h" + "CurrentTest.h" + "TestResults.h" + "TestDetails.h" + "ReportAssertImpl.h" + "ReportAssert.h" + "ReportAssertImpl.h" + "AssertException.h" + "CurrentTest.h" + "TestResults.h" + "TestDetails.h" + "ReportAssertImpl.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/ReportAssert.h + "HelperMacros.h" + "HelperMacros.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/ReportAssertImpl.h + "Config.h" + "HelperMacros.h" + + "Config.h" + "HelperMacros.h" + + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/RequiredCheckException.cpp + "RequiredCheckException.h" + "RequiredCheckException.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/RequiredCheckException.h + "Config.h" + "HelperMacros.h" + + "Config.h" + "HelperMacros.h" + + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/RequiredCheckTestReporter.cpp + "RequiredCheckTestReporter.h" + "CurrentTest.h" + "TestResults.h" + "RequiredCheckTestReporter.h" + "CurrentTest.h" + "TestResults.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/RequiredCheckTestReporter.h + "HelperMacros.h" + "ThrowingTestReporter.h" + "HelperMacros.h" + "ThrowingTestReporter.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/ThrowingTestReporter.h + "TestReporter.h" + "TestReporter.h" + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/Test.cpp + "Config.h" + "Test.h" + "TestList.h" + "TestResults.h" + "AssertException.h" + "MemoryOutStream.h" + "ExecuteTest.h" + "Posix/SignalTranslator.h" + "Config.h" + "Test.h" + "TestList.h" + "TestResults.h" + "AssertException.h" + "MemoryOutStream.h" + "ExecuteTest.h" + "Posix/SignalTranslator.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/Test.h + "TestDetails.h" + "TestDetails.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/TestList.h + "HelperMacros.h" + "HelperMacros.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/ExecuteTest.h + "Config.h" + "ExceptionMacros.h" + "TestDetails.h" + "TestResults.h" + "MemoryOutStream.h" + "AssertException.h" + "RequiredCheckException.h" + "CurrentTest.h" + "ReportAssertImpl.h" + "Posix/SignalTranslator.h" + "Config.h" + "ExceptionMacros.h" + "TestDetails.h" + "TestResults.h" + "MemoryOutStream.h" + "AssertException.h" + "RequiredCheckException.h" + "CurrentTest.h" + "ReportAssertImpl.h" + "Posix/SignalTranslator.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/ExceptionMacros.h + "Config.h" + "Config.h" + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/TestDetails.cpp + "TestDetails.h" + "TestDetails.h" + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/TestList.cpp + "TestList.h" + "Test.h" + + "TestList.h" + "Test.h" + + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/TestReporter.cpp + "TestReporter.h" + "TestReporter.h" + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/TestReporterStdout.cpp + "TestReporterStdout.h" + + "TestDetails.h" + "TestReporterStdout.h" + + "TestDetails.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/TestReporterStdout.h + "TestReporter.h" + "TestReporter.h" + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/TestResults.cpp + "TestResults.h" + "TestReporter.h" + "TestDetails.h" + "TestResults.h" + "TestReporter.h" + "TestDetails.h" + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/TestRunner.cpp + "TestRunner.h" + "TestResults.h" + "TestReporter.h" + "TestReporterStdout.h" + "TimeHelpers.h" + "MemoryOutStream.h" + + "TestRunner.h" + "TestResults.h" + "TestReporter.h" + "TestReporterStdout.h" + "TimeHelpers.h" + "MemoryOutStream.h" + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/TestRunner.h + "Test.h" + "TestList.h" + "CurrentTest.h" + "Test.h" + "TestList.h" + "CurrentTest.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/TimeHelpers.h + "Config.h" + "Posix/TimeHelpers.h" + "Win32/TimeHelpers.h" + "Config.h" + "Posix/TimeHelpers.h" + "Win32/TimeHelpers.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/Win32/TimeHelpers.h + "../Config.h" + "../HelperMacros.h" + "../Config.h" + "../HelperMacros.h" + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/ThrowingTestReporter.cpp + "ThrowingTestReporter.h" + "RequiredCheckException.h" + "ReportAssertImpl.h" + "ThrowingTestReporter.h" + "RequiredCheckException.h" + "ReportAssertImpl.h" + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/TimeConstraint.cpp + "TimeConstraint.h" + "TestResults.h" + "MemoryOutStream.h" + "CurrentTest.h" + "TimeConstraint.h" + "TestResults.h" + "MemoryOutStream.h" + "CurrentTest.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/TimeConstraint.h + "TimeHelpers.h" + "HelperMacros.h" + "TestDetails.h" + "TimeHelpers.h" + "HelperMacros.h" + "TestDetails.h" + +1494161659 source:/mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/XmlTestReporter.cpp + "Config.h" + "XmlTestReporter.h" + + + + "Config.h" + "XmlTestReporter.h" + + + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++/XmlTestReporter.h + "Config.h" + "DeferredTestReporter.h" + + "Config.h" + "DeferredTestReporter.h" + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//UnitTest++.h + "UnitTestPP.h" + "UnitTestPP.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//UnitTestPP.h + "Config.h" + "TestMacros.h" + "CheckMacros.h" + "RequireMacros.h" + "TestRunner.h" + "TimeConstraint.h" + "ReportAssert.h" + "Config.h" + "TestMacros.h" + "CheckMacros.h" + "RequireMacros.h" + "TestRunner.h" + "TimeConstraint.h" + "ReportAssert.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//Config.h + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//TestMacros.h + "Config.h" + "TestSuite.h" + "ExceptionMacros.h" + "ExecuteTest.h" + "AssertException.h" + "TestDetails.h" + "MemoryOutStream.h" + "Posix/SignalTranslator.h" + "Config.h" + "TestSuite.h" + "ExceptionMacros.h" + "ExecuteTest.h" + "AssertException.h" + "TestDetails.h" + "MemoryOutStream.h" + "Posix/SignalTranslator.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//TestSuite.h + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//ExceptionMacros.h + "Config.h" + "Config.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//ExecuteTest.h + "Config.h" + "ExceptionMacros.h" + "TestDetails.h" + "TestResults.h" + "MemoryOutStream.h" + "AssertException.h" + "RequiredCheckException.h" + "CurrentTest.h" + "ReportAssertImpl.h" + "Posix/SignalTranslator.h" + "Config.h" + "ExceptionMacros.h" + "TestDetails.h" + "TestResults.h" + "MemoryOutStream.h" + "AssertException.h" + "RequiredCheckException.h" + "CurrentTest.h" + "ReportAssertImpl.h" + "Posix/SignalTranslator.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//TestDetails.h + "HelperMacros.h" + "HelperMacros.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//HelperMacros.h + "Config.h" + "Config.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//TestResults.h + "HelperMacros.h" + "HelperMacros.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//MemoryOutStream.h + "Config.h" + "HelperMacros.h" + + + "Config.h" + "HelperMacros.h" + + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//AssertException.h + "Config.h" + "HelperMacros.h" + + "Config.h" + "HelperMacros.h" + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//RequiredCheckException.h + "Config.h" + "HelperMacros.h" + + "Config.h" + "HelperMacros.h" + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//CurrentTest.h + "HelperMacros.h" + "HelperMacros.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//ReportAssertImpl.h + "Config.h" + "HelperMacros.h" + + "Config.h" + "HelperMacros.h" + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//Posix/SignalTranslator.h + + + + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//CheckMacros.h + "HelperMacros.h" + "ExceptionMacros.h" + "Checks.h" + "AssertException.h" + "RequiredCheckException.h" + "MemoryOutStream.h" + "TestDetails.h" + "CurrentTest.h" + "ReportAssertImpl.h" + "HelperMacros.h" + "ExceptionMacros.h" + "Checks.h" + "AssertException.h" + "RequiredCheckException.h" + "MemoryOutStream.h" + "TestDetails.h" + "CurrentTest.h" + "ReportAssertImpl.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//Checks.h + "Config.h" + "TestResults.h" + "MemoryOutStream.h" + "Config.h" + "TestResults.h" + "MemoryOutStream.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//RequireMacros.h + "RequiredCheckTestReporter.h" + "RequiredCheckTestReporter.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//RequiredCheckTestReporter.h + "HelperMacros.h" + "ThrowingTestReporter.h" + "HelperMacros.h" + "ThrowingTestReporter.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//ThrowingTestReporter.h + "TestReporter.h" + "TestReporter.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//TestReporter.h + "HelperMacros.h" + "HelperMacros.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//TestRunner.h + "Test.h" + "TestList.h" + "CurrentTest.h" + "Test.h" + "TestList.h" + "CurrentTest.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//Test.h + "TestDetails.h" + "TestDetails.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//TestList.h + "HelperMacros.h" + "HelperMacros.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//TimeConstraint.h + "TimeHelpers.h" + "HelperMacros.h" + "TestDetails.h" + "TimeHelpers.h" + "HelperMacros.h" + "TestDetails.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//TimeHelpers.h + "Config.h" + "Posix/TimeHelpers.h" + "Win32/TimeHelpers.h" + "Config.h" + "Posix/TimeHelpers.h" + "Win32/TimeHelpers.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//Posix/TimeHelpers.h + + + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//Win32/TimeHelpers.h + "../Config.h" + "../HelperMacros.h" + "../Config.h" + "../HelperMacros.h" + +1494161659 /mnt/hgfs/Programming/GitHub/etl/unittest-cpp/UnitTest++//ReportAssert.h + "HelperMacros.h" + "HelperMacros.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/memory.h + + + "type_traits.h" + + + "platform.h" + "type_traits.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/endianness.h + + "enum_type.h" + + "platform.h" + "enum_type.h" + +1501063086 /mnt/hgfs/Programming/GitHub/etl/src/reference_flat_map.h + + "platform.h" + "vector.h" + "error_handler.h" + "debug_count.h" + "type_traits.h" + "parameter_type.h" + "exception.h" + "static_assert.h" + + "platform.h" + "vector.h" + "error_handler.h" + "debug_count.h" + "type_traits.h" + "parameter_type.h" + "exception.h" + "static_assert.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/reference_flat_multimap.h + + "exception.h" + "error_handler.h" + "debug_count.h" + "vector.h" + + "platform.h" + "exception.h" + "error_handler.h" + "debug_count.h" + "vector.h" + +1501063086 /mnt/hgfs/Programming/GitHub/etl/src/reference_flat_multiset.h + + + + + + "platform.h" + "type_traits.h" + "vector.h" + "pool.h" + "error_handler.h" + "exception.h" + + + + + + "platform.h" + "type_traits.h" + "vector.h" + "pool.h" + "error_handler.h" + "exception.h" + +1501063086 /mnt/hgfs/Programming/GitHub/etl/src/reference_flat_set.h + + + + + + "platform.h" + "type_traits.h" + "pool.h" + "error_handler.h" + "exception.h" + "vector.h" + + + + + + "platform.h" + "type_traits.h" + "pool.h" + "error_handler.h" + "exception.h" + "vector.h" + +1502115378 source:/mnt/hgfs/Programming/GitHub/etl/test/test_fsm.cpp + "UnitTest++.h" + "fsm.h" + "enum_type.h" + "container.h" + + "UnitTest++.h" + "fsm.h" + "enum_type.h" + "container.h" + + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/fsm.h + + "array.h" + "nullptr.h" + "error_handler.h" + "exception.h" + "user_type.h" + "message_router.h" + "integral_limits.h" + "largest.h" + + "platform.h" + "array.h" + "nullptr.h" + "error_handler.h" + "exception.h" + "user_type.h" + "message_router.h" + "integral_limits.h" + "largest.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/user_type.h + "platform.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/message_router.h + + "message.h" + "message_types.h" + "alignment.h" + "error_handler.h" + "exception.h" + "largest.h" + + "platform.h" + "message.h" + "message_types.h" + "alignment.h" + "error_handler.h" + "exception.h" + "largest.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/message.h + + "error_handler.h" + "exception.h" + "message_types.h" + + "platform.h" + "error_handler.h" + "exception.h" + "message_types.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/message_types.h + + + "platform.h" + +1494274261 source:/mnt/hgfs/Programming/GitHub/etl/test/test_iterator.cpp + "UnitTest++.h" + "iterator.h" + "UnitTest++.h" + "iterator.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_memory.cpp + "UnitTest++.h" + "memory.h" + "debug_count.h" + + + + + + + "UnitTest++.h" + "memory.h" + "debug_count.h" + + + + + + + +1502115378 source:/mnt/hgfs/Programming/GitHub/etl/test/test_message_bus.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "message_router.h" + "message_bus.h" + "queue.h" + "largest.h" + "packet.h" + "UnitTest++.h" + "ExtraCheckMacros.h" + "message_router.h" + "message_bus.h" + "queue.h" + "largest.h" + "packet.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/message_bus.h + + + "algorithm.h" + "vector.h" + "nullptr.h" + "error_handler.h" + "exception.h" + "message_types.h" + "message.h" + "message_router.h" + + + "platform.h" + "algorithm.h" + "vector.h" + "nullptr.h" + "error_handler.h" + "exception.h" + "message_types.h" + "message.h" + "message_router.h" + +1502115378 /mnt/hgfs/Programming/GitHub/etl/src/packet.h + "platform.h" + "static_assert.h" + "alignment.h" + "platform.h" + "static_assert.h" + "alignment.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_message_router.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "message_router.h" + "queue.h" + "largest.h" + "packet.h" + "UnitTest++.h" + "ExtraCheckMacros.h" + "message_router.h" + "queue.h" + "largest.h" + "packet.h" + +1502115378 source:/mnt/hgfs/Programming/GitHub/etl/test/test_packet.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "packet.h" + "largest.h" + "queue.h" + "pool.h" + "UnitTest++.h" + "ExtraCheckMacros.h" + "packet.h" + "largest.h" + "queue.h" + "pool.h" + +1502214825 source:/mnt/hgfs/Programming/GitHub/etl/test/test_random.cpp + "UnitTest++.h" + + "random.h" + + + + "UnitTest++.h" + + "random.h" + + + + +1501063087 source:/mnt/hgfs/Programming/GitHub/etl/test/test_reference_flat_map.cpp + "UnitTest++.h" + + + + + + + + + "data.h" + "reference_flat_map.h" + "UnitTest++.h" + + + + + + + + + "data.h" + "reference_flat_map.h" + +1501063087 source:/mnt/hgfs/Programming/GitHub/etl/test/test_reference_flat_multimap.cpp + "UnitTest++.h" + + + + + + + + "data.h" + "reference_flat_multimap.h" + "UnitTest++.h" + + + + + + + + "data.h" + "reference_flat_multimap.h" + +1501063087 source:/mnt/hgfs/Programming/GitHub/etl/test/test_reference_flat_multiset.cpp + "UnitTest++.h" + + + + + + + + "data.h" + "reference_flat_multiset.h" + "UnitTest++.h" + + + + + + + + "data.h" + "reference_flat_multiset.h" + +1501063087 source:/mnt/hgfs/Programming/GitHub/etl/test/test_reference_flat_set.cpp + "UnitTest++.h" + + + + + + + + "data.h" + "reference_flat_set.h" + "UnitTest++.h" + + + + + + + + "data.h" + "reference_flat_set.h" + +1502115378 source:/mnt/hgfs/Programming/GitHub/etl/test/test_task_scheduler.cpp + "UnitTest++.h" + + + + "task.h" + "scheduler.h" + "container.h" + "UnitTest++.h" + + + + "task.h" + "scheduler.h" + "container.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/task.h + + "error_handler.h" + "exception.h" + + "platform.h" + "error_handler.h" + "exception.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/scheduler.h + + "vector.h" + "nullptr.h" + "error_handler.h" + "exception.h" + "task.h" + "type_traits.h" + "function.h" + + "platform.h" + "vector.h" + "nullptr.h" + "error_handler.h" + "exception.h" + "task.h" + "type_traits.h" + "function.h" + +1502115378 source:/mnt/hgfs/Programming/GitHub/etl/test/test_user_type.cpp + "UnitTest++.h" + + "user_type.h" + "UnitTest++.h" + + "user_type.h" + +1502478592 source:/mnt/hgfs/Programming/GitHub/etl/test/test_vector_non_trivial.cpp + "UnitTest++.h" + + + + "vector.h" + "data.h" + "UnitTest++.h" + + + + "vector.h" + "data.h" + +1502889163 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\main.cpp + "UnitTest++/UnitTestPP.h" + +1494165259 +/UnitTestPP.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testasserthandler.cpp + "UnitTest++/Config.h" + "UnitTest++/UnitTestPP.h" + "UnitTest++/ReportAssert.h" + "UnitTest++/ReportAssertImpl.h" + "UnitTest++/AssertException.h" + "RecordingReporter.h" + + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\tests\recordingreporter.h + "UnitTest++/TestReporter.h" + + "UnitTest++/TestDetails.h" + +1494165259 +/TestDetails.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testcheckmacros.cpp + "UnitTest++/UnitTestPP.h" + "UnitTest++/CurrentTest.h" + "RecordingReporter.h" + "ScopedCurrentTest.h" + +1494165259 rentTest.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\tests\scopedcurrenttest.h + "UnitTest++/CurrentTest.h" + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testchecks.cpp + "UnitTest++/UnitTestPP.h" + "RecordingReporter.h" + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testcompositetestreporter.cpp + "UnitTest++/UnitTestPP.h" + "UnitTest++/CompositeTestReporter.h" + +1494165259 +/CompositeTestReporter.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testcurrenttest.cpp + "UnitTest++/UnitTestPP.h" + "UnitTest++/CurrentTest.h" + "ScopedCurrentTest.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testdeferredtestreporter.cpp + "UnitTest++/Config.h" + "UnitTest++/UnitTestPP.h" + "UnitTest++/DeferredTestReporter.h" + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testexceptions.cpp + "UnitTest++/Config.h" + "UnitTest++/UnitTestPP.h" + "UnitTest++/CurrentTest.h" + "RecordingReporter.h" + "ScopedCurrentTest.h" + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testlongmacros.cpp + "UnitTest++/UnitTestPP.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testmemoryoutstream.cpp + "UnitTest++/UnitTestPP.h" + "UnitTest++/MemoryOutStream.h" + + + + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testrequiremacroswithexceptionsoff.cpp + "UnitTest++/UnitTestPP.h" + "UnitTest++/CurrentTest.h" + "RecordingReporter.h" + "ScopedCurrentTest.h" + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testrequiremacroswithexceptionson.cpp + "UnitTest++/UnitTestPP.h" + "UnitTest++/CurrentTest.h" + "RecordingReporter.h" + "ScopedCurrentTest.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testtest.cpp + "UnitTest++/UnitTestPP.h" + "UnitTest++/TestReporter.h" + "UnitTest++/TimeHelpers.h" + "ScopedCurrentTest.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testtestlist.cpp + "UnitTest++/UnitTestPP.h" + "UnitTest++/TestList.h" + +1494165259 +/TestList.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testtestmacros.cpp + "UnitTest++/UnitTestPP.h" + "UnitTest++/TestMacros.h" + "UnitTest++/TestList.h" + "UnitTest++/TestResults.h" + "UnitTest++/TestReporter.h" + "UnitTest++/ReportAssert.h" + "RecordingReporter.h" + "ScopedCurrentTest.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testtestresults.cpp + "UnitTest++/UnitTestPP.h" + "UnitTest++/TestResults.h" + "RecordingReporter.h" + +1494165259 Reporter.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testtestrunner.cpp + "UnitTest++/UnitTestPP.h" + "RecordingReporter.h" + "UnitTest++/ReportAssert.h" + "UnitTest++/TestList.h" + "UnitTest++/TimeHelpers.h" + "UnitTest++/TimeConstraint.h" + "UnitTest++/ReportAssertImpl.h" + +1494165259 +/ReportAssertImpl.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testtestsuite.cpp + "UnitTest++/UnitTestPP.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testtimeconstraint.cpp + "UnitTest++/UnitTestPP.h" + "UnitTest++/TestResults.h" + "UnitTest++/TimeHelpers.h" + "RecordingReporter.h" + "ScopedCurrentTest.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testtimeconstraintmacro.cpp + "UnitTest++/UnitTestPP.h" + "UnitTest++/TimeHelpers.h" + "RecordingReporter.h" + "ScopedCurrentTest.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testunittestpp.cpp + "UnitTest++/UnitTestPP.h" + "ScopedCurrentTest.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\tests\testxmltestreporter.cpp + "UnitTest++/Config.h" + "UnitTest++/UnitTestPP.h" + "UnitTest++/XmlTestReporter.h" + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\assertexception.cpp + "AssertException.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\checks.cpp + "Checks.h" + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\compositetestreporter.cpp + "CompositeTestReporter.h" + + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\compositetestreporter.h + "TestReporter.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\testreporter.h + "HelperMacros.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\currenttest.cpp + "CurrentTest.h" + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\deferredtestreporter.cpp + "Config.h" + "DeferredTestReporter.h" + "TestDetails.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\deferredtestreporter.h + "Config.h" + "TestReporter.h" + "DeferredTestResult.h" + + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\deferredtestresult.h + "Config.h" + "HelperMacros.h" + + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\deferredtestresult.cpp + "Config.h" + "DeferredTestResult.h" + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\memoryoutstream.cpp + "MemoryOutStream.h" + + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\reportassert.cpp + "ReportAssert.h" + "ReportAssertImpl.h" + "AssertException.h" + "CurrentTest.h" + "TestResults.h" + "TestDetails.h" + "ReportAssertImpl.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\reportassert.h + "HelperMacros.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\requiredcheckexception.cpp + "RequiredCheckException.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\requiredcheckexception.h + "Config.h" + "HelperMacros.h" + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\requiredchecktestreporter.cpp + "RequiredCheckTestReporter.h" + "CurrentTest.h" + "TestResults.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\requiredchecktestreporter.h + "HelperMacros.h" + "ThrowingTestReporter.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\throwingtestreporter.h + "TestReporter.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\test.cpp + "Config.h" + "Test.h" + "TestList.h" + "TestResults.h" + "AssertException.h" + "MemoryOutStream.h" + "ExecuteTest.h" + "Posix/SignalTranslator.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\test.h + "TestDetails.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\testlist.h + "HelperMacros.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\executetest.h + "Config.h" + "ExceptionMacros.h" + "TestDetails.h" + "TestResults.h" + "MemoryOutStream.h" + "AssertException.h" + "RequiredCheckException.h" + "CurrentTest.h" + "ReportAssertImpl.h" + "Posix/SignalTranslator.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\posix\signaltranslator.h + + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\testdetails.cpp + "TestDetails.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\testlist.cpp + "TestList.h" + "Test.h" + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\testreporter.cpp + "TestReporter.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\testreporterstdout.cpp + "TestReporterStdout.h" + + "TestDetails.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\testreporterstdout.h + "TestReporter.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\testresults.cpp + "TestResults.h" + "TestReporter.h" + "TestDetails.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\testrunner.cpp + "TestRunner.h" + "TestResults.h" + "TestReporter.h" + "TestReporterStdout.h" + "TimeHelpers.h" + "MemoryOutStream.h" + + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\testrunner.h + "Test.h" + "TestList.h" + "CurrentTest.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\timehelpers.h + "Config.h" + "Posix/TimeHelpers.h" + "Win32/TimeHelpers.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\posix\timehelpers.h + + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\win32\timehelpers.h + "../Config.h" + "../HelperMacros.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\throwingtestreporter.cpp + "ThrowingTestReporter.h" + "RequiredCheckException.h" + "ReportAssertImpl.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\timeconstraint.cpp + "TimeConstraint.h" + "TestResults.h" + "MemoryOutStream.h" + "CurrentTest.h" + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\timeconstraint.h + "TimeHelpers.h" + "HelperMacros.h" + "TestDetails.h" + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\win32\timehelpers.cpp + "TimeHelpers.h" + + +1494165259 source:d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\xmltestreporter.cpp + "Config.h" + "XmlTestReporter.h" + + + + +1494165259 d:\users\john\documents\programming\github\etl\unittest-cpp\unittest++\xmltestreporter.h + "Config.h" + "DeferredTestReporter.h" + + +1508265807 d:\users\john\documents\programming\github\etl\src\endianness.h + + "platform.h" + "enum_type.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\sqrt.h + + "platform.h" + "type_traits.h" + "constant.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\constant.h + "platform.h" + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_constant.cpp + "UnitTest++.h" + "constant.h" + "integral_limits.h" + + + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_parameter_type.cpp + "UnitTest++.h" + + + "parameter_type.h" + +1507064935 source:d:\users\john\documents\programming\github\etl\test\test_factory.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "factory.h" + + + +1508265811 d:\users\john\documents\programming\github\etl\src\factory.h + + "platform.h" + "error_handler.h" + "exception.h" + "largest.h" + "type_traits.h" + "alignment.h" + "static_assert.h" + "type_lookup.h" + +1507728173 up.h" + +1508265811 d:\users\john\documents\programming\github\etl\src\type_lookup.h + + "platform.h" + "type_traits.h" + "static_assert.h" + +1506012495 source:d:\users\john\documents\programming\github\etl\test\test_type_lookup.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "type_lookup.h" + + +1507064935 source:d:\users\john\documents\programming\github\etl\test\test_compare.cpp + "UnitTest++.h" + "compare.h" + +1507064935 d:\users\john\documents\programming\github\etl\src\compare.h + + "platform.h" + "parameter_type.h" + +1506073728 d:\users\john\documents\programming\github\etl\test\\etl_user.h + + +1508265811 source:d:\users\john\documents\programming\github\etl\test\test_message_timer.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "message_router.h" + "message_bus.h" + "message_timer.h" + + + + + + +1508265809 d:\users\john\documents\programming\github\etl\src\message_timer.h + + + "platform.h" + "nullptr.h" + "message_types.h" + "message.h" + "message_router.h" + "message_bus.h" + "static_assert.h" + "timer.h" + +1508265810 d:\users\john\documents\programming\github\etl\test\\etl_profile.h + "profiles/msvc_x86.h" + "profiles/gcc_windows_x86.h" + +1507899806 gcc.h" + +1507819963 d:\users\john\documents\programming\github\etl\src\profiles\msvc.h + + +1507819964 d:\users\john\documents\programming\github\etl\src\profiles\gcc.h + + +1508265810 source:d:\users\john\documents\programming\github\etl\test\test_callback_timer.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "callback_timer.h" + "function.h" + + + + + + +1508265807 d:\users\john\documents\programming\github\etl\src\callback_timer.h + + + "platform.h" + "nullptr.h" + "function.h" + "static_assert.h" + "timer.h" + "atomic.h" + +1508265810 d:\users\john\documents\programming\github\etl\src\timer.h + + "platform.h" + "atomic.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\atomic.h + "platform.h" + + "atomic/atomic_arm.h" + "atomic/atomic_gcc.h" + "atomic/atomic_windows.h" + +1507898827 omic_arm.h" + +1508265807 d:\users\john\documents\programming\github\etl\src\atomic + +1508265807 d:\users\john\documents\programming\github\etl\src\atomic\atomic_arm.h + "../platform.h" + "../type_traits.h" + "../char_traits.h" + "../static_assert.h" + "../nullptr.h" + + +1507896206 /mnt/hgfs/Programming/GitHub/etl/test//etl_profile.h + "profiles/msvc.h" + "profiles/gcc.h" + +1507816363 /mnt/hgfs/Programming/GitHub/etl/src/profiles/msvc.h + + +1507816364 /mnt/hgfs/Programming/GitHub/etl/src/profiles/gcc.h + + +1507724586 source:/mnt/hgfs/Programming/GitHub/etl/test/test_callback_timer.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "callback_timer.h" + "function.h" + + + + + + +1507896666 /mnt/hgfs/Programming/GitHub/etl/src/callback_timer.h + + + "platform.h" + "nullptr.h" + "function.h" + "static_assert.h" + "timer.h" + "atomic.h" + +1507896722 /mnt/hgfs/Programming/GitHub/etl/src/timer.h + + "atomic.h" + +1507895227 /mnt/hgfs/Programming/GitHub/etl/src/atomic.h + "platform.h" + + "atomic/atomic_arm.h" + +1507803883 /mnt/hgfs/Programming/GitHub/etl/src/atomic + +1507803883 /mnt/hgfs/Programming/GitHub/etl/src/atomic/atomic_arm.h + "../platform.h" + + + +1507061335 source:/mnt/hgfs/Programming/GitHub/etl/test/test_compare.cpp + "UnitTest++.h" + "compare.h" + +1507061335 /mnt/hgfs/Programming/GitHub/etl/src/compare.h + + "platform.h" + "parameter_type.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_constant.cpp + "UnitTest++.h" + "constant.h" + "integral_limits.h" + + + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/constant.h + "platform.h" + +1507061335 source:/mnt/hgfs/Programming/GitHub/etl/test/test_factory.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "factory.h" + + + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/factory.h + + "platform.h" + "error_handler.h" + "exception.h" + "largest.h" + "type_traits.h" + "alignment.h" + "static_assert.h" + "type_lookup.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/type_lookup.h + + "platform.h" + "type_traits.h" + "static_assert.h" + +1507724573 /mnt/hgfs/Programming/GitHub/etl/src/sqrt.h + + "platform.h" + "type_traits.h" + "constant.h" + +1507724586 source:/mnt/hgfs/Programming/GitHub/etl/test/test_message_timer.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "message_router.h" + "message_bus.h" + "message_timer.h" + + + + + + +1507904158 /mnt/hgfs/Programming/GitHub/etl/src/message_timer.h + + + "platform.h" + "nullptr.h" + "message_types.h" + "message.h" + "message_router.h" + "message_bus.h" + "static_assert.h" + "timer.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_parameter_type.cpp + "UnitTest++.h" + + + "parameter_type.h" + +1506008895 source:/mnt/hgfs/Programming/GitHub/etl/test/test_type_lookup.cpp + "UnitTest++.h" + "ExtraCheckMacros.h" + "type_lookup.h" + + +1508265810 d:\users\john\documents\programming\github\etl\src\profiles\msvc_x86.h + + +1508265810 d:\users\john\documents\programming\github\etl\src\profiles\gcc_windows_x86.h + + +1508265807 d:\users\john\documents\programming\github\etl\src\atomic\atomic_gcc.h + "../platform.h" + "../type_traits.h" + "../char_traits.h" + "../static_assert.h" + "../nullptr.h" + + +1508265807 d:\users\john\documents\programming\github\etl\src\atomic\atomic_windows.h + "../platform.h" + + + diff --git a/test/codeblocks/ETL.layout b/test/codeblocks/ETL.layout index 535629cf..fb167cbc 100644 --- a/test/codeblocks/ETL.layout +++ b/test/codeblocks/ETL.layout @@ -2,24 +2,19 @@ - + - + - + - + - + - - - - - - + @@ -27,34 +22,14 @@ - + - + - + - - - - - - - - - - - - - - - - - - - - - + @@ -62,14 +37,14 @@ - + - + - + - + @@ -77,9 +52,29 @@ - + - + + + + + + + + + + + + + + + + + + + + + @@ -92,19 +87,14 @@ - - - - - - + - + @@ -112,19 +102,14 @@ - + - + - + - - - - - - + @@ -132,14 +117,29 @@ - + - + - + - + + + + + + + + + + + + + + + + @@ -147,24 +147,29 @@ + + + + + + + + + + - + - + - + - - - - - - + diff --git a/test/etl_profile.h b/test/etl_profile.h new file mode 100644 index 00000000..a321fa85 --- /dev/null +++ b/test/etl_profile.h @@ -0,0 +1,48 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#ifndef __ETL_PROFILE_H__ +#define __ETL_PROFILE_H__ + +#define ETL_THROW_EXCEPTIONS +#define ETL_VERBOSE_ERRORS +#define ETL_CHECK_PUSH_POP +#define ETL_ISTRING_REPAIR_ENABLE +#define ETL_IVECTOR_REPAIR_ENABLE +#define ETL_IDEQUE_REPAIR_ENABLE +#define ETL_IN_UNIT_TEST + +#ifdef _MSC_VER + #include "profiles/msvc_x86.h" +#else + #include "profiles/gcc_windows_x86.h" +#endif + +#endif diff --git a/test/test_callback_timer.cpp b/test/test_callback_timer.cpp new file mode 100644 index 00000000..09b0f850 --- /dev/null +++ b/test/test_callback_timer.cpp @@ -0,0 +1,508 @@ +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +http://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#include "UnitTest++.h" +#include "ExtraCheckMacros.h" + +#include "callback_timer.h" +#include "function.h" + +#include +#include +#include +#include + +#if defined(ETL_COMPILER_MICROSOFT) +#include +#endif + +#define REALTIME_TEST 0 + +namespace +{ + uint64_t ticks = 0; + + //*************************************************************************** + // Class callback via etl::function + //*************************************************************************** + class Test + { + public: + + Test() + { + } + + void callback() + { + tick_list.push_back(ticks); + } + + std::vector tick_list; + }; + + Test test; + etl::function_mv member_callback(test); + + //*************************************************************************** + // Free function callback via etl::function + //*************************************************************************** + std::vector free_tick_list1; + + void free_callback1() + { + free_tick_list1.push_back(ticks); + } + + etl::function_fv free_function_callback; + + //*************************************************************************** + // Free function callback via function pointer + //*************************************************************************** + std::vector free_tick_list2; + + void free_callback2() + { + free_tick_list2.push_back(ticks); + } + + SUITE(test_callback_timer) + { + //========================================================================= + TEST(callback_timer_too_many_timers) + { + etl::callback_timer<2> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(member_callback, 37, etl::timer::mode::SINGLE_SHOT); + etl::timer::id::type id2 = timer_controller.register_timer(free_function_callback, 23, etl::timer::mode::SINGLE_SHOT); + etl::timer::id::type id3 = timer_controller.register_timer(free_callback2, 11, etl::timer::mode::SINGLE_SHOT); + + CHECK(id1 != etl::timer::id::NO_TIMER); + CHECK(id2 != etl::timer::id::NO_TIMER); + CHECK(id3 == etl::timer::id::NO_TIMER); + + timer_controller.clear(); + id3 = timer_controller.register_timer(free_callback2, 11, etl::timer::mode::SINGLE_SHOT); + CHECK(id3 != etl::timer::id::NO_TIMER); + } + + //========================================================================= + TEST(callback_timer_one_shot) + { + etl::callback_timer<3> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(member_callback, 37, etl::timer::mode::SINGLE_SHOT); + etl::timer::id::type id2 = timer_controller.register_timer(free_function_callback, 23, etl::timer::mode::SINGLE_SHOT); + etl::timer::id::type id3 = timer_controller.register_timer(free_callback2, 11, etl::timer::mode::SINGLE_SHOT); + + test.tick_list.clear(); + free_tick_list1.clear(); + free_tick_list2.clear(); + + timer_controller.start(id1); + timer_controller.start(id3); + timer_controller.start(id2); + + timer_controller.enable(true); + + ticks = 0; + + const uint32_t step = 1; + + while (ticks <= 100U) + { + ticks += step; + timer_controller.tick(step); + } + + std::vector compare1 = { 37 }; + std::vector compare2 = { 23 }; + std::vector compare3 = { 11 }; + + CHECK_ARRAY_EQUAL(compare1.data(), test.tick_list.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), free_tick_list1.data(), compare2.size()); + CHECK_ARRAY_EQUAL(compare3.data(), free_tick_list2.data(), compare3.size()); + } + + //========================================================================= + TEST(callback_timer_repeating) + { + etl::callback_timer<3> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(member_callback, 37, etl::timer::mode::REPEATING); + etl::timer::id::type id2 = timer_controller.register_timer(free_function_callback, 23, etl::timer::mode::REPEATING); + etl::timer::id::type id3 = timer_controller.register_timer(free_callback2, 11, etl::timer::mode::REPEATING); + + test.tick_list.clear(); + free_tick_list1.clear(); + free_tick_list2.clear(); + + timer_controller.start(id1); + timer_controller.start(id3); + timer_controller.start(id2); + + timer_controller.enable(true); + + ticks = 0; + + const uint32_t step = 1; + + while (ticks <= 100U) + { + ticks += step; + timer_controller.tick(step); + } + + std::vector compare1 = { 37, 74 }; + std::vector compare2 = { 23, 46, 69, 92 }; + std::vector compare3 = { 11, 22, 33, 44, 55, 66, 77, 88, 99 }; + + CHECK_ARRAY_EQUAL(compare1.data(), test.tick_list.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), free_tick_list1.data(), compare2.size()); + CHECK_ARRAY_EQUAL(compare3.data(), free_tick_list2.data(), compare3.size()); + } + + //========================================================================= + TEST(callback_timer_repeating_bigger_step) + { + etl::callback_timer<3> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(member_callback, 37, etl::timer::mode::REPEATING); + etl::timer::id::type id2 = timer_controller.register_timer(free_function_callback, 23, etl::timer::mode::REPEATING); + etl::timer::id::type id3 = timer_controller.register_timer(free_callback2, 11, etl::timer::mode::REPEATING); + + test.tick_list.clear(); + free_tick_list1.clear(); + free_tick_list2.clear(); + + timer_controller.start(id1); + timer_controller.start(id3); + timer_controller.start(id2); + + CHECK(!timer_controller.is_running()); + + timer_controller.enable(true); + + CHECK(timer_controller.is_running()); + + ticks = 0; + + const uint32_t step = 5; + + while (ticks <= 100U) + { + ticks += step; + timer_controller.tick(step); + } + + std::vector compare1 = { 40, 75 }; + std::vector compare2 = { 25, 50, 70, 95 }; + std::vector compare3 = { 15, 25, 35, 45, 55, 70, 80, 90, 100 }; + + CHECK_ARRAY_EQUAL(compare1.data(), test.tick_list.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), free_tick_list1.data(), compare2.size()); + CHECK_ARRAY_EQUAL(compare3.data(), free_tick_list2.data(), compare3.size()); + } + + //========================================================================= + TEST(callback_timer_repeating_stop_start) + { + etl::callback_timer<3> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(member_callback, 37, etl::timer::mode::REPEATING); + etl::timer::id::type id2 = timer_controller.register_timer(free_function_callback, 23, etl::timer::mode::REPEATING); + etl::timer::id::type id3 = timer_controller.register_timer(free_callback2, 11, etl::timer::mode::REPEATING); + + test.tick_list.clear(); + free_tick_list1.clear(); + free_tick_list2.clear(); + + timer_controller.start(id3); + timer_controller.start(id2); + + timer_controller.enable(true); + + ticks = 0; + + const uint32_t step = 1; + + while (ticks <= 100U) + { + if (ticks == 40) + { + timer_controller.start(id1); + timer_controller.stop(id2); + } + + if (ticks == 80) + { + timer_controller.stop(id1); + timer_controller.start(id2); + } + + ticks += step; + timer_controller.tick(step); + } + + std::vector compare1 = { 77 }; + std::vector compare2 = { 23 }; + std::vector compare3 = { 11, 22, 33, 44, 55, 66, 77, 88, 99 }; + + CHECK_ARRAY_EQUAL(compare1.data(), test.tick_list.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), free_tick_list1.data(), compare2.size()); + CHECK_ARRAY_EQUAL(compare3.data(), free_tick_list2.data(), compare3.size()); + } + + //========================================================================= + TEST(callback_timer_repeating_register_unregister) + { + etl::callback_timer<3> timer_controller; + + etl::timer::id::type id1; + etl::timer::id::type id2 = timer_controller.register_timer(free_function_callback, 23, etl::timer::mode::REPEATING); + etl::timer::id::type id3 = timer_controller.register_timer(free_callback2, 11, etl::timer::mode::REPEATING); + + test.tick_list.clear(); + free_tick_list1.clear(); + free_tick_list2.clear(); + + timer_controller.start(id3); + timer_controller.start(id2); + + timer_controller.enable(true); + + ticks = 0; + + const uint32_t step = 1; + + while (ticks <= 100U) + { + if (ticks == 40) + { + timer_controller.unregister_timer(id2); + + id1 = timer_controller.register_timer(member_callback, 37, etl::timer::mode::REPEATING); + timer_controller.start(id1); + } + + ticks += step; + timer_controller.tick(step); + } + + std::vector compare1 = { 77 }; + std::vector compare2 = { 23 }; + std::vector compare3 = { 11, 22, 33, 44, 55, 66, 77, 88, 99 }; + + CHECK_ARRAY_EQUAL(compare1.data(), test.tick_list.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), free_tick_list1.data(), compare2.size()); + CHECK_ARRAY_EQUAL(compare3.data(), free_tick_list2.data(), compare3.size()); + } + + //========================================================================= + TEST(callback_timer_repeating_clear) + { + etl::callback_timer<3> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(member_callback, 37, etl::timer::mode::REPEATING); + etl::timer::id::type id2 = timer_controller.register_timer(free_function_callback, 23, etl::timer::mode::REPEATING); + etl::timer::id::type id3 = timer_controller.register_timer(free_callback2, 11, etl::timer::mode::REPEATING); + + test.tick_list.clear(); + free_tick_list1.clear(); + free_tick_list2.clear(); + + timer_controller.start(id1); + timer_controller.start(id3); + timer_controller.start(id2); + + timer_controller.enable(true); + + ticks = 0; + + const uint32_t step = 1; + + while (ticks <= 100U) + { + ticks += step; + + if (ticks == 40) + { + timer_controller.clear(); + } + + timer_controller.tick(step); + } + + std::vector compare1 = { 37 }; + std::vector compare2 = { 23 }; + std::vector compare3 = { 11, 22, 33 }; + + CHECK_ARRAY_EQUAL(compare1.data(), test.tick_list.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), free_tick_list1.data(), compare2.size()); + CHECK_ARRAY_EQUAL(compare3.data(), free_tick_list2.data(), compare3.size()); + } + + //========================================================================= + TEST(callback_timer_delayed_immediate) + { + etl::callback_timer<3> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(member_callback, 37, etl::timer::mode::REPEATING); + etl::timer::id::type id2 = timer_controller.register_timer(free_function_callback, 23, etl::timer::mode::REPEATING); + etl::timer::id::type id3 = timer_controller.register_timer(free_callback2, 11, etl::timer::mode::REPEATING); + + test.tick_list.clear(); + free_tick_list1.clear(); + free_tick_list2.clear(); + + timer_controller.enable(true); + + ticks = 5; + timer_controller.tick(uint32_t(ticks)); + + timer_controller.start(id1, etl::timer::start::IMMEDIATE); + timer_controller.start(id2, etl::timer::start::IMMEDIATE); + timer_controller.start(id3, etl::timer::start::DELAYED); + + const uint32_t step = 1; + + while (ticks <= 100U) + { + ticks += step; + timer_controller.tick(step); + } + + std::vector compare1 = { 6, 42, 79 }; + std::vector compare2 = { 6, 28, 51, 74, 97 }; + std::vector compare3 = { 16, 27, 38, 49, 60, 71, 82, 93 }; + + CHECK_ARRAY_EQUAL(compare1.data(), test.tick_list.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), free_tick_list1.data(), compare2.size()); + CHECK_ARRAY_EQUAL(compare3.data(), free_tick_list2.data(), compare3.size()); + } + + //========================================================================= + TEST(callback_timer_one_shot_big_step_short_delay_insert) + { + etl::callback_timer<3> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(free_callback1, 15, etl::timer::mode::SINGLE_SHOT); + etl::timer::id::type id2 = timer_controller.register_timer(free_callback2, 5, etl::timer::mode::REPEATING); + + free_tick_list1.clear(); + free_tick_list2.clear(); + + timer_controller.start(id1); + timer_controller.start(id2); + + timer_controller.enable(true); + + ticks = 0; + + const uint32_t step = 11; + + ticks += step; + timer_controller.tick(step); + + ticks += step; + timer_controller.tick(step); + + std::vector compare1 = { 22 }; + std::vector compare2 = { 11, 11, 22, 22 }; + + CHECK_ARRAY_EQUAL(compare1.data(), free_tick_list1.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), free_tick_list2.data(), compare2.size()); + } + + //========================================================================= +#if REALTIME_TEST + etl::callback_timer<3> controller; + + void timer_event() + { + ticks = 1; + + while (ticks <= 1000) + { + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + controller.tick(1); + ++ticks; + } + } + + TEST(callback_timer_threads) + { + etl::timer::id::type id1 = controller.register_timer(member_callback, 400, etl::timer::mode::SINGLE_SHOT); + etl::timer::id::type id2 = controller.register_timer(free_function_callback, 100, etl::timer::mode::REPEATING); + etl::timer::id::type id3 = controller.register_timer(free_callback2, 10, etl::timer::mode::REPEATING); + + test.tick_list.clear(); + free_tick_list1.clear(); + free_tick_list2.clear(); + + controller.start(id1); + controller.start(id2); + controller.start(id3); + + controller.enable(true); + + std::thread t1(timer_event); + + bool restart_1 = true; + + while (ticks < 1000U) + { + if ((ticks > 200U) && (ticks < 500U)) + { + controller.stop(id3); + } + + if ((ticks > 600U) && (ticks < 800U)) + { + controller.start(id3); + } + + if ((ticks > 500U) && restart_1) + { + controller.start(id1); + restart_1 = false; + } + + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } + + //Join the thread with the main thread + t1.join(); + + CHECK_EQUAL(2U, test.tick_list.size()); + CHECK_EQUAL(10U, free_tick_list1.size()); + CHECK(free_tick_list2.size() < 65U); + } +#endif + }; +} diff --git a/test/test_cyclic_value.cpp b/test/test_cyclic_value.cpp index 179b8bc4..14a9ab94 100644 --- a/test/test_cyclic_value.cpp +++ b/test/test_cyclic_value.cpp @@ -33,7 +33,7 @@ SOFTWARE. #include "cyclic_value.h" namespace -{ +{ SUITE(test_cyclic_value) { //************************************************************************* @@ -163,7 +163,7 @@ namespace ++value; } } - + //************************************************************************* TEST(test_increment_run_time) { diff --git a/test/test_forward_list.cpp b/test/test_forward_list.cpp index 871cc3fa..37063637 100644 --- a/test/test_forward_list.cpp +++ b/test/test_forward_list.cpp @@ -914,8 +914,6 @@ namespace while (ditr != data.end()) { - const ItemNDC& v = *ditr; - CHECK_EQUAL(citr->index, ditr->index); ++citr; diff --git a/test/test_intrusive_forward_list.cpp b/test/test_intrusive_forward_list.cpp index 587d4e9e..365ac19c 100644 --- a/test/test_intrusive_forward_list.cpp +++ b/test/test_intrusive_forward_list.cpp @@ -759,8 +759,6 @@ namespace while (ditr != data.end()) { - const ItemNDC& v = ditr->data; - CHECK_EQUAL(citr->data.index, ditr->data.index); ++citr; diff --git a/test/test_intrusive_list.cpp b/test/test_intrusive_list.cpp index b3325f15..4666298e 100644 --- a/test/test_intrusive_list.cpp +++ b/test/test_intrusive_list.cpp @@ -803,8 +803,6 @@ namespace while (ditr != data.end()) { - const ItemNDC& v = ditr->data; - CHECK_EQUAL(citr->data.index, ditr->data.index); ++citr; diff --git a/test/test_message_timer.cpp b/test/test_message_timer.cpp new file mode 100644 index 00000000..eac388b8 --- /dev/null +++ b/test/test_message_timer.cpp @@ -0,0 +1,577 @@ +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +http://www.etlcpp.com + +Copyright(c) 2017 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#include "UnitTest++.h" +#include "ExtraCheckMacros.h" + +#include "message_router.h" +#include "message_bus.h" +#include "message_timer.h" + +#include +#include +#include +#include + +#if defined(ETL_COMPILER_MICROSOFT) +#include +#endif + +#define REALTIME_TEST 0 + +//*************************************************************************** +// The set of messages. +//*************************************************************************** +namespace +{ + uint64_t ticks = 0; + + enum + { + MESSAGE1, + MESSAGE2, + MESSAGE3, + }; + + enum + { + ROUTER1 = 1, + }; + + struct Message1 : public etl::message + { + }; + + struct Message2 : public etl::message + { + }; + + struct Message3 : public etl::message + { + }; + + Message1 message1; + Message2 message2; + Message3 message3; + + //*************************************************************************** + // Router that handles messages 1, 2, 3 + //*************************************************************************** + class Router1 : public etl::message_router + { + public: + + Router1() + : message_router(ROUTER1) + { + + } + + void on_receive(etl::imessage_router& sender, const Message1& msg) + { + message1.push_back(ticks); + } + + void on_receive(etl::imessage_router& sender, const Message2& msg) + { + message2.push_back(ticks); + } + + void on_receive(etl::imessage_router& sender, const Message3& msg) + { + message3.push_back(ticks); + } + + void on_receive_unknown(etl::imessage_router& sender, const etl::imessage& msg) + { + } + + void clear() + { + message1.clear(); + message2.clear(); + message3.clear(); + } + + std::vector message1; + std::vector message2; + std::vector message3; + }; + + //*************************************************************************** + // Bus that handles messages 1, 2, 3 + //*************************************************************************** + class Bus1 : public etl::message_bus<1> + { + + }; + + //*********************************** + Router1 router1; + Bus1 bus1; + + SUITE(test_message_timer) + { + //========================================================================= + TEST(message_timer_too_many_timers) + { + etl::message_timer<2> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(message1, router1, 37, etl::timer::mode::SINGLE_SHOT); + etl::timer::id::type id2 = timer_controller.register_timer(message2, router1, 23, etl::timer::mode::SINGLE_SHOT); + etl::timer::id::type id3 = timer_controller.register_timer(message3, router1, 11, etl::timer::mode::SINGLE_SHOT); + + CHECK(id1 != etl::timer::id::NO_TIMER); + CHECK(id2 != etl::timer::id::NO_TIMER); + CHECK(id3 == etl::timer::id::NO_TIMER); + + timer_controller.clear(); + id3 = timer_controller.register_timer(message3, router1, 11, etl::timer::mode::SINGLE_SHOT); + CHECK(id3 != etl::timer::id::NO_TIMER); + } + + //========================================================================= + TEST(message_timer_one_shot) + { + etl::message_timer<3> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(message1, router1, 37, etl::timer::mode::SINGLE_SHOT); + etl::timer::id::type id2 = timer_controller.register_timer(message2, router1, 23, etl::timer::mode::SINGLE_SHOT); + etl::timer::id::type id3 = timer_controller.register_timer(message3, router1, 11, etl::timer::mode::SINGLE_SHOT); + + router1.clear(); + + timer_controller.start(id1); + timer_controller.start(id3); + timer_controller.start(id2); + + timer_controller.enable(true); + + ticks = 0; + + const uint32_t step = 1; + + while (ticks <= 100U) + { + ticks += step; + timer_controller.tick(step); + } + + std::vector compare1 = { 37 }; + std::vector compare2 = { 23 }; + std::vector compare3 = { 11 }; + + CHECK_ARRAY_EQUAL(compare1.data(), router1.message1.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), router1.message2.data(), compare2.size()); + CHECK_ARRAY_EQUAL(compare3.data(), router1.message3.data(), compare3.size()); + } + + //========================================================================= + TEST(message_timer_repeating) + { + etl::message_timer<3> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(message1, router1, 37, etl::timer::mode::REPEATING); + etl::timer::id::type id2 = timer_controller.register_timer(message2, router1, 23, etl::timer::mode::REPEATING); + etl::timer::id::type id3 = timer_controller.register_timer(message3, router1, 11, etl::timer::mode::REPEATING); + + router1.clear(); + + timer_controller.start(id1); + timer_controller.start(id3); + timer_controller.start(id2); + + timer_controller.enable(true); + + ticks = 0; + + const uint32_t step = 1; + + while (ticks <= 100U) + { + ticks += step; + timer_controller.tick(step); + } + + std::vector compare1 = { 37, 74 }; + std::vector compare2 = { 23, 46, 69, 92 }; + std::vector compare3 = { 11, 22, 33, 44, 55, 66, 77, 88, 99 }; + + CHECK_ARRAY_EQUAL(compare1.data(), router1.message1.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), router1.message2.data(), compare2.size()); + CHECK_ARRAY_EQUAL(compare3.data(), router1.message3.data(), compare3.size()); + } + + //========================================================================= + TEST(message_timer_repeating_bigger_step) + { + etl::message_timer<3> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(message1, router1, 37, etl::timer::mode::REPEATING); + etl::timer::id::type id2 = timer_controller.register_timer(message2, router1, 23, etl::timer::mode::REPEATING); + etl::timer::id::type id3 = timer_controller.register_timer(message3, router1, 11, etl::timer::mode::REPEATING); + + router1.clear(); + + timer_controller.start(id1); + timer_controller.start(id3); + timer_controller.start(id2); + + CHECK(!timer_controller.is_running()); + + timer_controller.enable(true); + + CHECK(timer_controller.is_running()); + + ticks = 0; + + const uint32_t step = 5; + + while (ticks <= 100U) + { + ticks += step; + timer_controller.tick(step); + } + + std::vector compare1 = { 40, 75 }; + std::vector compare2 = { 25, 50, 70, 95 }; + std::vector compare3 = { 15, 25, 35, 45, 55, 70, 80, 90, 100 }; + + CHECK_ARRAY_EQUAL(compare1.data(), router1.message1.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), router1.message2.data(), compare2.size()); + CHECK_ARRAY_EQUAL(compare3.data(), router1.message3.data(), compare3.size()); + } + + //========================================================================= + TEST(message_timer_repeating_stop_start) + { + etl::message_timer<3> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(message1, router1, 37, etl::timer::mode::REPEATING); + etl::timer::id::type id2 = timer_controller.register_timer(message2, router1, 23, etl::timer::mode::REPEATING); + etl::timer::id::type id3 = timer_controller.register_timer(message3, router1, 11, etl::timer::mode::REPEATING); + + router1.clear(); + + timer_controller.start(id3); + timer_controller.start(id2); + + timer_controller.enable(true); + + ticks = 0; + + const uint32_t step = 1; + + while (ticks <= 100U) + { + if (ticks == 40) + { + timer_controller.start(id1); + timer_controller.stop(id2); + } + + if (ticks == 80) + { + timer_controller.stop(id1); + timer_controller.start(id2); + } + + ticks += step; + timer_controller.tick(step); + } + + std::vector compare1 = { 77 }; + std::vector compare2 = { 23 }; + std::vector compare3 = { 11, 22, 33, 44, 55, 66, 77, 88, 99 }; + + CHECK_ARRAY_EQUAL(compare1.data(), router1.message1.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), router1.message2.data(), compare2.size()); + CHECK_ARRAY_EQUAL(compare3.data(), router1.message3.data(), compare3.size()); + } + + //========================================================================= + TEST(message_timer_repeating_register_unregister) + { + etl::message_timer<3> timer_controller; + + etl::timer::id::type id1; + etl::timer::id::type id2 = timer_controller.register_timer(message2, router1, 23, etl::timer::mode::REPEATING); + etl::timer::id::type id3 = timer_controller.register_timer(message3, router1, 11, etl::timer::mode::REPEATING); + + router1.clear(); + + timer_controller.start(id3); + timer_controller.start(id2); + + timer_controller.enable(true); + + ticks = 0; + + const uint32_t step = 1; + + while (ticks <= 100U) + { + if (ticks == 40) + { + timer_controller.unregister_timer(id2); + + id1 = timer_controller.register_timer(message1, router1, 37, etl::timer::mode::REPEATING); + timer_controller.start(id1); + } + + ticks += step; + timer_controller.tick(step); + } + + std::vector compare1 = { 77 }; + std::vector compare2 = { 23 }; + std::vector compare3 = { 11, 22, 33, 44, 55, 66, 77, 88, 99 }; + + CHECK_ARRAY_EQUAL(compare1.data(), router1.message1.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), router1.message2.data(), compare2.size()); + CHECK_ARRAY_EQUAL(compare3.data(), router1.message3.data(), compare3.size()); + } + + //========================================================================= + TEST(message_timer_repeating_clear) + { + etl::message_timer<3> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(message1, router1, 37, etl::timer::mode::REPEATING); + etl::timer::id::type id2 = timer_controller.register_timer(message2, router1, 23, etl::timer::mode::REPEATING); + etl::timer::id::type id3 = timer_controller.register_timer(message3, router1, 11, etl::timer::mode::REPEATING); + + router1.clear(); + + timer_controller.start(id1); + timer_controller.start(id3); + timer_controller.start(id2); + + timer_controller.enable(true); + + ticks = 0; + + const uint32_t step = 1; + + while (ticks <= 100U) + { + ticks += step; + + if (ticks == 40) + { + timer_controller.clear(); + } + + timer_controller.tick(step); + } + + std::vector compare1 = { 37 }; + std::vector compare2 = { 23 }; + std::vector compare3 = { 11, 22, 33 }; + + CHECK_ARRAY_EQUAL(compare1.data(), router1.message1.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), router1.message2.data(), compare2.size()); + CHECK_ARRAY_EQUAL(compare3.data(), router1.message3.data(), compare3.size()); + } + + //========================================================================= + TEST(message_timer_route_through_bus) + { + etl::message_timer<3> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(message1, bus1, 37, etl::timer::mode::SINGLE_SHOT, ROUTER1); + etl::timer::id::type id2 = timer_controller.register_timer(message2, bus1, 23, etl::timer::mode::SINGLE_SHOT, ROUTER1); + etl::timer::id::type id3 = timer_controller.register_timer(message3, bus1, 11, etl::timer::mode::SINGLE_SHOT, etl::imessage_router::ALL_MESSAGE_ROUTERS); + + bus1.subscribe(router1); + + router1.clear(); + + timer_controller.start(id1); + timer_controller.start(id3); + timer_controller.start(id2); + + timer_controller.enable(true); + + ticks = 0; + + const uint32_t step = 1; + + while (ticks <= 100U) + { + ticks += step; + timer_controller.tick(step); + } + + std::vector compare1 = { 37 }; + std::vector compare2 = { 23 }; + std::vector compare3 = { 11 }; + + CHECK_ARRAY_EQUAL(compare1.data(), router1.message1.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), router1.message2.data(), compare2.size()); + CHECK_ARRAY_EQUAL(compare3.data(), router1.message3.data(), compare3.size()); + } + + //========================================================================= + TEST(message_timer_immediate_delayed) + { + etl::message_timer<3> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(message1, router1, 37, etl::timer::mode::REPEATING); + etl::timer::id::type id2 = timer_controller.register_timer(message2, router1, 23, etl::timer::mode::REPEATING); + etl::timer::id::type id3 = timer_controller.register_timer(message3, router1, 11, etl::timer::mode::REPEATING); + + router1.clear(); + + timer_controller.start(id1); + timer_controller.start(id3); + timer_controller.start(id2); + + timer_controller.enable(true); + + ticks = 5; + timer_controller.tick(uint32_t(ticks)); + + timer_controller.start(id1, etl::timer::start::IMMEDIATE); + timer_controller.start(id2, etl::timer::start::IMMEDIATE); + timer_controller.start(id3, etl::timer::start::DELAYED); + + const uint32_t step = 1; + + while (ticks <= 100U) + { + ticks += step; + timer_controller.tick(step); + } + + std::vector compare1 = { 6, 42, 79 }; + std::vector compare2 = { 6, 28, 51, 74, 97 }; + std::vector compare3 = { 16, 27, 38, 49, 60, 71, 82, 93 }; + + CHECK_ARRAY_EQUAL(compare1.data(), router1.message1.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), router1.message2.data(), compare2.size()); + CHECK_ARRAY_EQUAL(compare3.data(), router1.message3.data(), compare3.size()); + } + + //========================================================================= + TEST(message_timer_one_shot_big_step_short_delay_insert) + { + etl::message_timer<3> timer_controller; + + etl::timer::id::type id1 = timer_controller.register_timer(message1, router1, 15, etl::timer::mode::SINGLE_SHOT); + etl::timer::id::type id2 = timer_controller.register_timer(message2, router1, 5, etl::timer::mode::REPEATING); + + router1.clear(); + + timer_controller.start(id1); + timer_controller.start(id2); + + timer_controller.enable(true); + + ticks = 0; + + const uint32_t step = 11; + + ticks += step; + timer_controller.tick(step); + + ticks += step; + timer_controller.tick(step); + + std::vector compare1 = { 22 }; + std::vector compare2 = { 11, 11, 22, 22 }; + + CHECK_ARRAY_EQUAL(compare1.data(), router1.message1.data(), compare1.size()); + CHECK_ARRAY_EQUAL(compare2.data(), router1.message2.data(), compare2.size()); + } + + //========================================================================= +#if REALTIME_TEST + etl::message_timer<3> controller; + + void timer_event() + { + ticks = 1; + + while (ticks <= 1000) + { + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + controller.tick(1); + ++ticks; + } + } + + TEST(message_timer_threads) + { + etl::timer::id::type id1 = controller.register_timer(message1, router1, 400, etl::timer::mode::SINGLE_SHOT); + etl::timer::id::type id2 = controller.register_timer(message2, router1, 100, etl::timer::mode::REPEATING); + etl::timer::id::type id3 = controller.register_timer(message3, router1, 10, etl::timer::mode::REPEATING); + + router1.clear(); + + controller.start(id1); + controller.start(id2); + controller.start(id3); + + controller.enable(true); + + std::thread t1(timer_event); + + bool restart_1 = true; + + while (ticks < 1000U) + { + if ((ticks > 200U) && (ticks < 500U)) + { + controller.stop(id3); + } + + if ((ticks > 600U) && (ticks < 800U)) + { + controller.start(id3); + } + + if ((ticks > 500U) && restart_1) + { + controller.start(id1); + restart_1 = false; + } + + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } + + //Join the thread with the main thread + t1.join(); + + CHECK_EQUAL(2U, router1.message1.size()); + CHECK_EQUAL(10U, router1.message2.size()); + CHECK(router1.message2.size() < 65U); + } +#endif + }; +} diff --git a/test/vs2015/etl.sln b/test/vs2015/etl.sln deleted file mode 100644 index 153caf7a..00000000 --- a/test/vs2015/etl.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.24720.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "etl", "etl.vcxproj", "{C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug No Unit Tests|Win32 = Debug No Unit Tests|Win32 - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug No Unit Tests|Win32.ActiveCfg = Debug No Unit Tests|Win32 - {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug No Unit Tests|Win32.Build.0 = Debug No Unit Tests|Win32 - {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug|Win32.ActiveCfg = Debug|Win32 - {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Debug|Win32.Build.0 = Debug|Win32 - {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Release|Win32.ActiveCfg = Release|Win32 - {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/test/vs2015/etl.vcxproj b/test/vs2015/etl.vcxproj deleted file mode 100644 index b2c7513c..00000000 --- a/test/vs2015/etl.vcxproj +++ /dev/null @@ -1,452 +0,0 @@ - - - - - Debug No Unit Tests - Win32 - - - Debug - Win32 - - - Release - Win32 - - - - {C21DF78C-D8E0-46AB-9D6F-D38A3C1CB0FB} - Win32Proj - unittest - etl - 10.0.10586.0 - - - - Application - true - v140 - Unicode - - - Application - true - v140 - Unicode - - - Application - false - v140 - true - Unicode - - - - - - - - - - - - - - - - true - true - - - true - true - - - false - true - - - - - - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;ETL_THROW_EXCEPTIONS;ETL_VERBOSE_ERRORS;ETL_CHECK_PUSH_POP;%(PreprocessorDefinitions) - ../../../unittest-cpp - - - - - Console - true - - - $(OutDir)\etl.exe - - - - - - - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;ETL_THROW_EXCEPTIONS;ETL_VERBOSE_ERRORS;ETL_CHECK_PUSH_POP;%(PreprocessorDefinitions) - ../../../unittest-cpp - - - - - Console - true - - - - - - - - - Level3 - - - MaxSpeed - true - true - WIN32;NDEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;ETL_THROW_EXCEPTIONS;ETL_VERBOSE_ERRORS;ETL_CHECK_PUSH_POP;%(PreprocessorDefinitions) - ../../../unittest-cpp - false - - - Console - true - true - true - - - $(OutDir)\etl.exe - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ../../../unittest-cpp - false - - - - - - - - - - - - false - false - false - - - - - - - - true - - - true - - - false - false - - - - - - - - - - false - - - false - - - false - - - false - - - false - - - - - - - - false - false - - - true - false - - - - - - - - - false - false - - - - - - - - true - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/test/vs2015/etl.vcxproj.filters b/test/vs2015/etl.vcxproj.filters deleted file mode 100644 index 8b8bdaff..00000000 --- a/test/vs2015/etl.vcxproj.filters +++ /dev/null @@ -1,869 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - {ecfaf316-dc6d-4dc1-9838-24061047ad63} - - - {53c3a373-0496-4db0-a981-86bf14a1fac9} - - - {107d7e33-580f-4dc5-be11-a4b2076c2c10} - - - {dc39d09c-75c9-453f-8feb-9631a200c0f4} - - - {ab41d19f-82fe-4974-a73b-16aebfa1d03f} - - - {d56ca96b-66e1-46cb-83fd-1cd72c51d962} - - - {1c55dd7d-c04b-428c-810b-dd3a08fc4c65} - - - {7028012c-30c4-4993-b2d9-3b1521a610ae} - - - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++\Win32 - - - Header Files - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Patterns - - - ETL\Patterns - - - ETL\Utilities - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Maths - - - ETL\Maths - - - ETL\Maths - - - ETL\Maths - - - ETL\Maths - - - ETL\Maths - - - ETL\Containers - - - ETL\Containers - - - Header Files - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Containers - - - ETL\Maths - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Containers - - - ETL\Maths - - - ETL\Maths - - - ETL\Maths - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Maths - - - ETL\Maths - - - ETL\Maths - - - ETL\Containers - - - ETL\Maths - - - ETL\Containers - - - Header Files - - - ETL\Containers - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Containers - - - ETL\Containers - - - ETL\Maths - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Utilities - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Maths - - - ETL\Maths - - - Source Files - - - ETL\Maths - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Private - - - ETL\Private - - - ETL\Private - - - ETL\Private - - - ETL\Private - - - ETL\Private - - - ETL\Private - - - ETL\Private - - - ETL\Private - - - ETL\Private - - - ETL\Private - - - ETL\Private - - - ETL\Private - - - ETL\Private - - - ETL\Private - - - ETL\Containers - - - ETL\Utilities - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Private - - - Header Files - - - Header Files - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Private - - - ETL\Utilities - - - ETL\Containers - - - ETL\Utilities - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Containers - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Utilities - - - ETL\Utilities - - - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++ - - - UnitTest++\Win32 - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - ETL\Maths - - - ETL\Maths - - - ETL\Maths - - - ETL\Maths - - - ETL\Maths - - - ETL\Maths - - - ETL\Maths - - - ETL\Utilities - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - ETL\Private - - - Source Files - - - Source Files - - - Source Files - - - ETL\Utilities - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Resource Files - - - \ No newline at end of file diff --git a/test/vs2017/etl.vcxproj b/test/vs2017/etl.vcxproj index 58df92a7..40bba69d 100644 --- a/test/vs2017/etl.vcxproj +++ b/test/vs2017/etl.vcxproj @@ -73,7 +73,7 @@ Level3 Disabled - WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;ETL_IVECTOR_REPAIR_ENABLE;ETL_ISTRING_REPAIR_ENABLE;ETL_IDEQUE_REPAIR_ENABLE;ETL_IN_UNIT_TEST;ETL_THROW_EXCEPTIONS;ETL_VERBOSE_ERRORS;ETL_CHECK_PUSH_POP;%(PreprocessorDefinitions) + WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ../../unittest-cpp/UnitTest++/;../../src;../../test @@ -92,8 +92,8 @@ Level3 Disabled - WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;ETL_IVECTOR_REPAIR_ENABLE;ETL_ISTRING_REPAIR_ENABLE;ETL_IDEQUE_REPAIR_ENABLE;ETL_IN_UNIT_TEST;ETL_THROW_EXCEPTIONS;ETL_VERBOSE_ERRORS;ETL_CHECK_PUSH_POP;%(PreprocessorDefinitions) - ../../unittest-cpp/UnitTest++/;../../src + WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ../../unittest-cpp/UnitTest++/;../../src;../../test @@ -114,7 +114,7 @@ MaxSpeed true true - WIN32;NDEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;ETL_THROW_EXCEPTIONS;ETL_VERBOSE_ERRORS;ETL_CHECK_PUSH_POP;%(PreprocessorDefinitions) + WIN32;NDEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ../../unittest-cpp/UnitTest++/;../../src false @@ -129,6 +129,11 @@ + + + + + @@ -137,14 +142,27 @@ + + + + + + + + + + + + + @@ -213,7 +231,6 @@ - @@ -234,7 +251,6 @@ - @@ -276,6 +292,7 @@ + @@ -320,6 +337,7 @@ + @@ -388,6 +406,7 @@ + diff --git a/test/vs2017/etl.vcxproj.filters b/test/vs2017/etl.vcxproj.filters index 42a54099..294cdfd0 100644 --- a/test/vs2017/etl.vcxproj.filters +++ b/test/vs2017/etl.vcxproj.filters @@ -46,6 +46,12 @@ {39015d44-a7cb-47f0-a7dd-27714f852363} + + {1c95b9c1-96c0-4c1e-8e5a-e6680d88276c} + + + {0a77d88b-f9f0-456a-be4b-c0a0ce6b437b} + @@ -255,15 +261,9 @@ ETL\Private - - ETL\Containers - ETL\Utilities - - ETL\Containers - ETL\Containers @@ -495,6 +495,63 @@ ETL\Utilities + + ETL\Frameworks + + + ETL\Frameworks + + + ETL\Frameworks + + + ETL\Utilities + + + ETL\Utilities\Atomic + + + ETL\Profiles + + + ETL\Profiles + + + ETL\Profiles + + + ETL\Profiles + + + ETL\Profiles + + + ETL\Profiles + + + Source Files + + + ETL\Profiles + + + ETL\Profiles + + + ETL\Profiles + + + ETL\Profiles + + + ETL\Profiles + + + ETL\Utilities\Atomic + + + ETL\Utilities\Atomic + @@ -761,60 +818,6 @@ Source Files - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - Source Files @@ -851,6 +854,69 @@ Source Files + + Source Files + + + Source Files + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + UnitTest++ + + + Source Files +