1*aed3e508SAndroid Build Coastguard Worker // Copyright 2012 The ChromiumOS Authors 2*aed3e508SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*aed3e508SAndroid Build Coastguard Worker // found in the LICENSE file. 4*aed3e508SAndroid Build Coastguard Worker 5*aed3e508SAndroid Build Coastguard Worker #ifndef GESTURES_LOGGING_H__ 6*aed3e508SAndroid Build Coastguard Worker #define GESTURES_LOGGING_H__ 7*aed3e508SAndroid Build Coastguard Worker 8*aed3e508SAndroid Build Coastguard Worker #include "gestures.h" 9*aed3e508SAndroid Build Coastguard Worker 10*aed3e508SAndroid Build Coastguard Worker #define Assert(condition) \ 11*aed3e508SAndroid Build Coastguard Worker do { \ 12*aed3e508SAndroid Build Coastguard Worker if (!(condition)) \ 13*aed3e508SAndroid Build Coastguard Worker Err("Assertion '" #condition "' failed"); \ 14*aed3e508SAndroid Build Coastguard Worker } while(false) 15*aed3e508SAndroid Build Coastguard Worker 16*aed3e508SAndroid Build Coastguard Worker #define AssertWithReturn(condition) \ 17*aed3e508SAndroid Build Coastguard Worker do { \ 18*aed3e508SAndroid Build Coastguard Worker if (!(condition)) { \ 19*aed3e508SAndroid Build Coastguard Worker Err("Assertion '" #condition "' failed"); \ 20*aed3e508SAndroid Build Coastguard Worker return; \ 21*aed3e508SAndroid Build Coastguard Worker } \ 22*aed3e508SAndroid Build Coastguard Worker } while(false) 23*aed3e508SAndroid Build Coastguard Worker 24*aed3e508SAndroid Build Coastguard Worker #define AssertWithReturnValue(condition, returnValue) \ 25*aed3e508SAndroid Build Coastguard Worker do { \ 26*aed3e508SAndroid Build Coastguard Worker if (!(condition)) { \ 27*aed3e508SAndroid Build Coastguard Worker Err("Assertion '" #condition "' failed"); \ 28*aed3e508SAndroid Build Coastguard Worker return (returnValue); \ 29*aed3e508SAndroid Build Coastguard Worker } \ 30*aed3e508SAndroid Build Coastguard Worker } while(false) 31*aed3e508SAndroid Build Coastguard Worker 32*aed3e508SAndroid Build Coastguard Worker #define Log(format, ...) \ 33*aed3e508SAndroid Build Coastguard Worker gestures_log(GESTURES_LOG_INFO, "INFO:%s:%d: " format "\n", \ 34*aed3e508SAndroid Build Coastguard Worker __FILE__, __LINE__, ## __VA_ARGS__) 35*aed3e508SAndroid Build Coastguard Worker #define Err(format, ...) \ 36*aed3e508SAndroid Build Coastguard Worker gestures_log(GESTURES_LOG_ERROR, "ERROR:%s:%d: " format "\n", \ 37*aed3e508SAndroid Build Coastguard Worker __FILE__, __LINE__, ## __VA_ARGS__) 38*aed3e508SAndroid Build Coastguard Worker 39*aed3e508SAndroid Build Coastguard Worker #define ErrOnce(format, ...) \ 40*aed3e508SAndroid Build Coastguard Worker do { \ 41*aed3e508SAndroid Build Coastguard Worker static bool written = false; \ 42*aed3e508SAndroid Build Coastguard Worker if (!written) { \ 43*aed3e508SAndroid Build Coastguard Worker Err(format, ## __VA_ARGS__); \ 44*aed3e508SAndroid Build Coastguard Worker written = true; \ 45*aed3e508SAndroid Build Coastguard Worker } \ 46*aed3e508SAndroid Build Coastguard Worker } while(false) 47*aed3e508SAndroid Build Coastguard Worker 48*aed3e508SAndroid Build Coastguard Worker #define MTStatSample(key, value, timestamp) \ 49*aed3e508SAndroid Build Coastguard Worker gestures_log(GESTURES_LOG_INFO, "MTStat:%f:%s:%s\n", \ 50*aed3e508SAndroid Build Coastguard Worker (timestamp), (key), (value)) 51*aed3e508SAndroid Build Coastguard Worker 52*aed3e508SAndroid Build Coastguard Worker #define MTStatSampleInt(key, value, timestamp) \ 53*aed3e508SAndroid Build Coastguard Worker gestures_log(GESTURES_LOG_INFO, "MTStat:%f:%s:%d\n", \ 54*aed3e508SAndroid Build Coastguard Worker (timestamp), (key), (int)(value)) 55*aed3e508SAndroid Build Coastguard Worker 56*aed3e508SAndroid Build Coastguard Worker #define MTStatUpdate(key, value, timestamp) \ 57*aed3e508SAndroid Build Coastguard Worker gestures_log(GESTURES_LOG_INFO, "MTStat:%f:%s=%s\n", \ 58*aed3e508SAndroid Build Coastguard Worker (timestamp), (key), value) 59*aed3e508SAndroid Build Coastguard Worker 60*aed3e508SAndroid Build Coastguard Worker #define MTStatUpdateInt(key, value, timestamp) \ 61*aed3e508SAndroid Build Coastguard Worker gestures_log(GESTURES_LOG_INFO, "MTStat:%f:%s=%d\n", \ 62*aed3e508SAndroid Build Coastguard Worker (timestamp), (key), (int)(value)) 63*aed3e508SAndroid Build Coastguard Worker 64*aed3e508SAndroid Build Coastguard Worker #endif // GESTURES_LOGGING_H__ 65