stk-code_catmod/lib/sheenbidi/Source/SBLog.h

154 lines
4.7 KiB
C

/*
* Copyright (C) 2014-2019 Muhammad Tayyab Akram
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef _SB_INTERNAL_LOG_H
#define _SB_INTERNAL_LOG_H
#include <SBConfig.h>
#ifdef SB_CONFIG_LOG
#include <stdio.h>
#include "SBBase.h"
#include "SBBidiType.h"
#include "SBCodepointSequence.h"
#include "SBIsolatingRun.h"
SB_INTERNAL void PrintBaseLevel(SBLevel baseLevel);
SB_INTERNAL void PrintBidiType(SBBidiType type);
SB_INTERNAL void PrintCodepointSequence(const SBCodepointSequence *codepointSequence);
SB_INTERNAL void PrintBidiTypesArray(SBBidiType *types, SBUInteger length);
SB_INTERNAL void PrintLevelsArray(SBLevel *levels, SBUInteger length);
SB_INTERNAL void PrintRunTypes(IsolatingRunRef isolatingRun);
SB_INTERNAL void PrintRunLevels(IsolatingRunRef isolatingRun);
SB_INTERNAL void PrintRunRange(IsolatingRunRef isolatingRun);
extern int _SBLogPosition;
#define SB_LOG_BEGIN() (++_SBLogPosition)
#define SB_LOG_END() (--_SBLogPosition)
#define SB_LOG(s) printf s
#define SB_LOG_NUMBER(n) \
SB_LOG(("%ld", (long)n))
#define SB_LOG_RANGE(o, l) \
SB_LOG(("[%ld, %ld]", (long)o, (long)(o + l - 1)))
#define SB_LOG_CHAR(c) \
SBLOG(("%c", c))
#define SB_LOG_STRING(s) \
SB_LOG(("%s", s))
#define SB_LOG_LEVEL(l) \
SB_LOG_NUMBER(l)
#define SB_LOG_BREAKER() \
SB_LOG(("\n"))
#define SB_LOG_DIVIDER(n) \
SB_LOG(("%.*s", n, "\t\t\t\t\t\t\t\t\t\t"))
#define SB_LOG_INITIATOR() \
SB_LOG_DIVIDER(_SBLogPosition)
#define SB_LOG_CAPTION(c) \
SB_LOG((c":"))
#define SB_LOG_STATEMENT_TEXT(t) \
(t)
#define SB_LOG_LINE(s) \
do { \
SB_LOG(s); \
SB_LOG_BREAKER(); \
} while (0)
#define SB_LOG_STATEMENT(c, d, t) \
do { \
SB_LOG_INITIATOR(); \
SB_LOG_CAPTION(c); \
SB_LOG_DIVIDER(d); \
SB_LOG_STATEMENT_TEXT(t); \
SB_LOG_BREAKER(); \
} while (0)
#define SB_LOG_BLOCK_OPENER(c) \
do { \
SB_LOG_INITIATOR(); \
SB_LOG_CAPTION(c); \
SB_LOG_BREAKER(); \
SB_LOG_BEGIN(); \
} while (0)
#define SB_LOG_BLOCK_CLOSER() SB_LOG_END()
#define SB_LOG_BASE_LEVEL(l) PrintBaseLevel(l)
#define SB_LOG_BIDI_TYPE(t) PrintBidiType(t)
#define SB_LOG_CODEPOINT_SEQUENCE(s) PrintCodepointSequence(s)
#define SB_LOG_BIDI_TYPES_ARRAY(a, l) PrintBidiTypesArray(a, l)
#define SB_LOG_LEVELS_ARRAY(a, l) PrintLevelsArray(a, l)
#define SB_LOG_RUN_TYPES(r) PrintRunTypes(r)
#define SB_LOG_RUN_LEVELS(r) PrintRunLevels(r)
#define SB_LOG_RUN_RANGE(r) PrintRunRange(r)
#else
#define SB_LOG_NONE()
#define SB_LOG(s) SB_LOG_NONE()
#define SB_LOG_NUMBER(n) SB_LOG_NONE()
#define SB_LOG_RANGE(o, l) SB_LOG_NONE()
#define SB_LOG_CHAR(c) SB_LOG_NONE()
#define SB_LOG_STRING(s) SB_LOG_NONE()
#define SB_LOG_LEVEL(l) SB_LOG_NONE()
#define SB_LOG_BREAKER() SB_LOG_NONE()
#define SB_LOG_DIVIDER(n) SB_LOG_NONE()
#define SB_LOG_INITIATOR() SB_LOG_NONE()
#define SB_LOG_CAPTION(c) SB_LOG_NONE()
#define SB_LOG_STATEMENT_TEXT(t) SB_LOG_NONE()
#define SB_LOG_LINE(s) SB_LOG_NONE()
#define SB_LOG_STATEMENT(c, d, t) SB_LOG_NONE()
#define SB_LOG_BLOCK_OPENER(c) SB_LOG_NONE()
#define SB_LOG_BLOCK_CLOSER() SB_LOG_NONE()
#define SB_LOG_BASE_LEVEL(l) SB_LOG_NONE()
#define SB_LOG_BIDI_TYPE(t) SB_LOG_NONE()
#define SB_LOG_CODEPOINT_SEQUENCE(s) SB_LOG_NONE()
#define SB_LOG_BIDI_TYPES_ARRAY(a, l) SB_LOG_NONE()
#define SB_LOG_LEVELS_ARRAY(a, l) SB_LOG_NONE()
#define SB_LOG_RUN_TYPES(r) SB_LOG_NONE()
#define SB_LOG_RUN_LEVELS(r) SB_LOG_NONE()
#define SB_LOG_RUN_RANGE(r) SB_LOG_NONE()
#endif
#endif