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 00000000..2572d76e Binary files /dev/null and b/examples/QueuedMessageRouter/vs2017/.vs/QueuedMessageRouter.sqlite differ 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 +