stk-code_catmod/lib/sheenbidi/Headers/SBBase.h

120 lines
2.9 KiB
C

/*
* Copyright (C) 2014-2018 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_PUBLIC_BASE_H
#define _SB_PUBLIC_BASE_H
#include <stddef.h>
#include <stdint.h>
/**
* A type to represent an 8-bit signed integer.
*/
typedef int8_t SBInt8;
/**
* A type to represent a 16-bit signed integer.
*/
typedef int16_t SBInt16;
/**
* A type to represent a 32-bit signed integer.
*/
typedef int32_t SBInt32;
/**
* A type to represent an 8-bit unsigned integer.
*/
typedef uint8_t SBUInt8;
/**
* A type to represent a 16-bit unsigned integer.
*/
typedef uint16_t SBUInt16;
/**
* A type to represent a 32-bit unsigned integer.
*/
typedef uint32_t SBUInt32;
/**
* A signed integer type whose width is equal to the width of the machine word.
*/
typedef intptr_t SBInteger;
/**
* An unsigned integer type whose width is equal to the width of the machine word.
*/
typedef uintptr_t SBUInteger;
/**
* Constants that specify the states of a boolean.
*/
enum {
SBFalse = 0, /**< A value representing the false state. */
SBTrue = 1 /**< A value representing the true state. */
};
/**
* A type to represent a boolean value.
*/
typedef SBUInt8 SBBoolean;
#define SBUInt8InRange(v, s, e) \
( \
(SBUInt8)((v) - (s)) \
<= (SBUInt8)((e) - (s)) \
)
#define SBUInt16InRange(v, s, e) \
( \
(SBUInt16)((v) - (s)) \
<= (SBUInt16)((e) - (s)) \
)
#define SBUInt32InRange(v, s, e) \
( \
(SBUInt32)((v) - (s)) \
<= (SBUInt32)((e) - (s)) \
)
/**
* A type to represent a bidi level.
*/
typedef SBUInt8 SBLevel;
/**
* A value representing an invalid bidi level.
*/
#define SBLevelInvalid 0xFF
/**
* A value representing maximum explicit embedding level.
*/
#define SBLevelMax 125
/**
* A value specifying to set base level to zero (left-to-right) if there is no strong character.
*/
#define SBLevelDefaultLTR 0xFE
/**
* A value specifying to set base level to one (right-to-left) if there is no strong character.
*/
#define SBLevelDefaultRTL 0xFD
#endif