1 /* 2 * Copyright 2017 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can 5 * be found in the LICENSE file. 6 * 7 */ 8 9 // 10 // 11 // 12 13 #pragma once 14 15 // 16 // 17 // 18 19 #include "macros.h" 20 21 // 22 // 23 // 24 25 #if 1 26 27 #include <assert.h> 28 29 #define SKC_ASSERT_STATE_DECLARE(st) st state 30 #define SKC_ASSERT_STATE_MEMBER(sp) SKC_CONCAT(sp,->state) 31 #define SKC_ASSERT_STATE_INIT(sp,to) SKC_ASSERT_STATE_MEMBER(sp) = (to) 32 #define SKC_ASSERT_STATE_TRANSITION(from,to,sp) assert(SKC_ASSERT_STATE_MEMBER(sp) == (from)); SKC_ASSERT_STATE_INIT(sp,to) 33 #define SKC_ASSERT_STATE_ASSERT(at,sp) assert(SKC_ASSERT_STATE_MEMBER(sp) == (at)) 34 35 #else 36 37 #define SKC_ASSERT_STATE_DECLARE(st) 38 #define SKC_ASSERT_STATE_INIT(sp,to) 39 #define SKC_ASSERT_STATE_TRANSITION(from,to,sp) 40 #define SKC_ASSERT_STATE_ASSERT(at,sp) 41 42 #endif 43 44 // 45 // 46 // 47