log.h revision f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2
1aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// log.h 2aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// 3aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// Licensed under the Apache License, Version 2.0 (the "License"); 4aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// you may not use this file except in compliance with the License. 5aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// You may obtain a copy of the License at 6aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// 7aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// http://www.apache.org/licenses/LICENSE-2.0 8aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// 9aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// Unless required by applicable law or agreed to in writing, software 10aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// distributed under the License is distributed on an "AS IS" BASIS, 11aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// See the License for the specific language governing permissions and 13aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// limitations under the License. 14aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// 15aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// Author: riley@google.com (Michael Riley) 16aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// 17aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// \file 18aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger// Google-style logging declarations and inline definitions. 19aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 20aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#ifndef FST_LIB_LOG_H__ 21aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#define FST_LIB_LOG_H__ 22aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 23aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#include <cassert> 245dfe556188df2a3b2bfe73c8bc3b3b9216171a93osdl.org!shemminger#include <iostream> 25aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#include <string> 2690f93024a0818dc691138d8401721e797004b042shemminger 2790f93024a0818dc691138d8401721e797004b042shemminger#include <fst/types.h> 2830d10db5667d3ca86917ca86c1a65cfcc45965f9Hagen Paul Pfeifer#include <fst/flags.h> 2990f93024a0818dc691138d8401721e797004b042shemminger 30aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerusing std::string; 31aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 32aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerDECLARE_int32(v); 334094db72b61dadd16e180eab5f62ccbc82e3976dosdl.org!shemminger 34aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerclass LogMessage { 35aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger public: 36aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LogMessage(const string &type) : fatal_(type == "FATAL") { 37aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger std::cerr << type << ": "; 38aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger } 39aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ~LogMessage() { 40aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger std::cerr << std::endl; 41aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if(fatal_) 42aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger exit(1); 43aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger } 44aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger std::ostream &stream() { return std::cerr; } 45aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 46aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger private: 476b1ac654e9364ad279d3c82d8a3ef93efa9f3dfaStephen Hemminger bool fatal_; 484b270b172a6e570f4e9fa1ebb4bc67b0e715ee48Stephen Hemminger}; 494b270b172a6e570f4e9fa1ebb4bc67b0e715ee48Stephen Hemminger 506b1ac654e9364ad279d3c82d8a3ef93efa9f3dfaStephen Hemminger#define LOG(type) LogMessage(#type).stream() 516b1ac654e9364ad279d3c82d8a3ef93efa9f3dfaStephen Hemminger#define VLOG(level) if ((level) <= FLAGS_v) LOG(INFO) 524b270b172a6e570f4e9fa1ebb4bc67b0e715ee48Stephen Hemminger 536b1ac654e9364ad279d3c82d8a3ef93efa9f3dfaStephen Hemminger// Checks 546b1ac654e9364ad279d3c82d8a3ef93efa9f3dfaStephen Hemmingerinline void CHECK(bool x) { assert(x); } 556b1ac654e9364ad279d3c82d8a3ef93efa9f3dfaStephen Hemminger 564b270b172a6e570f4e9fa1ebb4bc67b0e715ee48Stephen Hemminger#define CHECK_EQ(x, y) CHECK((x) == (y)) 576b1ac654e9364ad279d3c82d8a3ef93efa9f3dfaStephen Hemminger#define CHECK_LT(x, y) CHECK((x) < (y)) 586b1ac654e9364ad279d3c82d8a3ef93efa9f3dfaStephen Hemminger#define CHECK_GT(x, y) CHECK((x) > (y)) 594b270b172a6e570f4e9fa1ebb4bc67b0e715ee48Stephen Hemminger#define CHECK_LE(x, y) CHECK((x) <= (y)) 604b270b172a6e570f4e9fa1ebb4bc67b0e715ee48Stephen Hemminger#define CHECK_GE(x, y) CHECK((x) >= (y)) 614b270b172a6e570f4e9fa1ebb4bc67b0e715ee48Stephen Hemminger#define CHECK_NE(x, y) CHECK((x) != (y)) 625a0d1cbf69269bfcb510a8b861b8a83aed0f6b85Andreas Henriksson 635a0d1cbf69269bfcb510a8b861b8a83aed0f6b85Andreas Henriksson// Ports 645a0d1cbf69269bfcb510a8b861b8a83aed0f6b85Andreas Henriksson#define ATTRIBUTE_DEPRECATED __attribute__((deprecated)) 655a0d1cbf69269bfcb510a8b861b8a83aed0f6b85Andreas Henriksson 665a0d1cbf69269bfcb510a8b861b8a83aed0f6b85Andreas Henriksson#endif // FST_LIB_LOG_H__ 675a0d1cbf69269bfcb510a8b861b8a83aed0f6b85Andreas Henriksson