{- Copyright (c) Meta Platforms, Inc. and affiliates. All rights reserved. This source code is licensed under the BSD-style license found in the LICENSE file in the root directory of this source tree. -} {-# LANGUAGE TemplateHaskell #-} module Util.Log.Internal ( vlogIsOn , c_glog_verbose , c_glog_info , c_glog_warning , c_glog_error , c_glog_fatal , c_glog_flush ) where import Control.Monad.IO.Class (MonadIO, liftIO) import Foreign.C (CString, CInt(..)) import Mangle.TH $(mangle "int vlog_is_on(int)" [d| foreign import ccall unsafe c_vlog_is_on :: CInt -> IO CInt |]) $(mangle "void glog_verbose(const char*, int, const char*)" [d| foreign import ccall unsafe c_glog_verbose :: CString -> CInt -> CString -> IO () |]) $(mangle "void glog_info(const char*, int, const char*)" [d| foreign import ccall unsafe c_glog_info :: CString -> CInt -> CString -> IO () |]) $(mangle "void glog_warning(const char*, int, const char*)" [d| foreign import ccall unsafe c_glog_warning :: CString -> CInt -> CString -> IO () |]) $(mangle "void glog_error(const char*, int, const char*)" [d| foreign import ccall unsafe c_glog_error :: CString -> CInt -> CString -> IO () |]) $(mangle "void glog_fatal(const char*, int, const char*)" [d| foreign import ccall unsafe c_glog_fatal :: CString -> CInt -> CString -> IO () |]) $(mangle "void glog_flush()" [d| foreign import ccall unsafe c_glog_flush :: IO () |]) {-# INLINE vlogIsOn #-} vlogIsOn :: MonadIO m => Int -> m Bool vlogIsOn level = liftIO $ do x <- c_vlog_is_on (fromIntegral level) return (x /= 0)