1f25ce65dSSergey Makeev // The MIT License (MIT) 2f25ce65dSSergey Makeev // 3f25ce65dSSergey Makeev // Copyright (c) 2015 Sergey Makeev, Vadim Slyusarev 4f25ce65dSSergey Makeev // 5f25ce65dSSergey Makeev // Permission is hereby granted, free of charge, to any person obtaining a copy 6f25ce65dSSergey Makeev // of this software and associated documentation files (the "Software"), to deal 7f25ce65dSSergey Makeev // in the Software without restriction, including without limitation the rights 8f25ce65dSSergey Makeev // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9f25ce65dSSergey Makeev // copies of the Software, and to permit persons to whom the Software is 10f25ce65dSSergey Makeev // furnished to do so, subject to the following conditions: 11f25ce65dSSergey Makeev // 12f25ce65dSSergey Makeev // The above copyright notice and this permission notice shall be included in 13f25ce65dSSergey Makeev // all copies or substantial portions of the Software. 14f25ce65dSSergey Makeev // 15f25ce65dSSergey Makeev // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16f25ce65dSSergey Makeev // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17f25ce65dSSergey Makeev // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18f25ce65dSSergey Makeev // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19f25ce65dSSergey Makeev // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20f25ce65dSSergey Makeev // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21f25ce65dSSergey Makeev // THE SOFTWARE. 22f25ce65dSSergey Makeev 2347d53e4dSSergey Makeev #pragma once 24*02d170cfSs.makeev_local #include <MTConfig.h> 25*02d170cfSs.makeev_local #include <MTAppInterop.h> 2647d53e4dSSergey Makeev 2747d53e4dSSergey Makeev 28*02d170cfSs.makeev_local #if defined(MT_DEBUG) || defined(MT_INSTRUMENTED_BUILD) 2947d53e4dSSergey Makeev 30*02d170cfSs.makeev_local #define MT_REPORT_ASSERT_IMPL( condition, description, file, line ) MT::Diagnostic::ReportAssert(#condition, description, file, line); 3147d53e4dSSergey Makeev 3227dbb6f7Ss.makeev #ifndef MT_REPORT_ASSERT 336bbc0262SSergey Makeev #define MT_REPORT_ASSERT( description ) { MT_REPORT_ASSERT_IMPL( "always", description, __FILE__, __LINE__ ) } 3427dbb6f7Ss.makeev #endif 3527dbb6f7Ss.makeev 3627dbb6f7Ss.makeev #ifndef MT_ASSERT 376bbc0262SSergey Makeev #define MT_ASSERT( condition, description ) { if ( !(condition) ) { MT_REPORT_ASSERT_IMPL( #condition, description, __FILE__, __LINE__ ) } } 3827dbb6f7Ss.makeev #endif 3927dbb6f7Ss.makeev 4027dbb6f7Ss.makeev #ifndef MT_VERIFY 416bbc0262SSergey Makeev #define MT_VERIFY( condition, description, operation ) { if ( !(condition) ) { { MT_REPORT_ASSERT_IMPL( #condition, description, __FILE__, __LINE__ ) }; operation; } } 4227dbb6f7Ss.makeev #endif 43f25ce65dSSergey Makeev 44f25ce65dSSergey Makeev #else 45f25ce65dSSergey Makeev 4627dbb6f7Ss.makeev #ifndef MT_REPORT_ASSERT 476bbc0262SSergey Makeev #define MT_REPORT_ASSERT( description ) 4827dbb6f7Ss.makeev #endif 4927dbb6f7Ss.makeev 5027dbb6f7Ss.makeev #ifndef MT_ASSERT 512e846c40SSergey Makeev #define MT_ASSERT( condition, description ) 5227dbb6f7Ss.makeev #endif 5327dbb6f7Ss.makeev 5427dbb6f7Ss.makeev #ifndef MT_VERIFY 55a6b7af00SSergey Makeev #define MT_VERIFY( condition, description, operation ) { if ( !(condition) ) { operation; } } 5627dbb6f7Ss.makeev #endif 57f25ce65dSSergey Makeev 58f25ce65dSSergey Makeev #endif 59