12f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan/*
22f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan * Copyright 2010, The Android Open Source Project
32f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan *
42f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan * Licensed under the Apache License, Version 2.0 (the "License");
52f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan * you may not use this file except in compliance with the License.
62f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan * You may obtain a copy of the License at
72f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan *
82f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan *     http://www.apache.org/licenses/LICENSE-2.0
92f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan *
102f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan * Unless required by applicable law or agreed to in writing, software
112f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan * distributed under the License is distributed on an "AS IS" BASIS,
122f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan * See the License for the specific language governing permissions and
142f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan * limitations under the License.
152f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan */
162f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
172f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#ifndef BCC_DEBUGHELPER_H
182f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#define BCC_DEBUGHELPER_H
192f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
202f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#include "Config.h"
212f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
222f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#if USE_LOGGER
232f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
242f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#define LOG_TAG "bcc"
252f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#include <cutils/log.h>
262f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
272f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#else // !USE_LOGGER
282f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
292f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#undef LOGV
302f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#undef LOGI
312f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#undef LOGD
322f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#undef LOGW
332f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#undef LOGE
342f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#undef LOGA
352f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
362f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#define LOGV(...)
372f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#define LOGI(...)
382f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#define LOGD(...)
392f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#define LOGW(...)
402f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#define LOGE(...)
412f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#define LOGA(...)
422f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
432f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#endif
442f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
452f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
462f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#if !USE_FUNC_LOGGER
472f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
482f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#define BCC_FUNC_LOGGER()
492f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
502f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#else // USE_FUNC_LOGGER
512f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
52998899fa3f8d598823fd3f8be48567d74a0a4c6cLogan Chien#if defined(__cplusplus)
532f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logannamespace bcc {
542f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan  class FuncLogger {
552f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan  private:
562f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan    char const *mFuncName;
572f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
582f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan  public:
592f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan    FuncLogger(char const *name) : mFuncName(name) {
602f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan      LOGD("---> BEGIN: libbcc [ %s ]\n", name);
612f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan    }
622f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
632f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan    ~FuncLogger() {
642f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan      LOGD("---> END: libbcc [ %s ]\n", mFuncName);
652f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan    }
662f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan  };
672f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan} // namespace bcc
682f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
692f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#define BCC_FUNC_LOGGER() bcc::FuncLogger XX__FuncLogger(__func__)
70998899fa3f8d598823fd3f8be48567d74a0a4c6cLogan Chien#endif
712f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
722f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#endif
732f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan
742f789f30fe97d0eb0dad2cc7b4b26665dca7d514Logan#endif // BCC_DEBUGHELPER_H
75