• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Tehreer / SheenBidi / 15192346582

22 May 2025 04:13PM UTC coverage: 79.545% (+1.0%) from 78.546%
15192346582

push

github

mta452
[make] Set C++ standard version to 14

1400 of 1760 relevant lines covered (79.55%)

868008.5 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.23
/Source/StatusStack.c
1
/*
2
 * Copyright (C) 2014-2025 Muhammad Tayyab Akram
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 *      http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16

17
#include <SBConfig.h>
18
#include <stddef.h>
19

20
#include "Object.h"
21
#include "SBAssert.h"
22
#include "SBBase.h"
23
#include "StatusStack.h"
24

25
static SBBoolean StatusStackInsertElement(StatusStackRef stack)
1,855,585✔
26
{
27
    if (stack->_peekTop != _StatusStackList_MaxIndex) {
1,855,585✔
28
        stack->_peekTop += 1;
1,855,480✔
29
    } else {
30
        _StatusStackListRef previousList = stack->_peekList;
105✔
31
        _StatusStackListRef peekList = previousList->next;
105✔
32

33
        if (!peekList) {
105✔
34
            peekList = ObjectAddMemory(&stack->_object, sizeof(_StatusStackList));
105✔
35
            if (!peekList) {
105✔
36
                return SBFalse;
×
37
            }
38

39
            peekList->previous = previousList;
105✔
40
            peekList->next = NULL;
105✔
41

42
            previousList->next = peekList;
105✔
43
        }
44

45
        stack->_peekList = peekList;
105✔
46
        stack->_peekTop = 0;
105✔
47
    }
48
    stack->count += 1;
1,855,585✔
49

50
    return SBTrue;
1,855,585✔
51
}
52

53
SB_INTERNAL void StatusStackInitialize(StatusStackRef stack)
861,949✔
54
{
55
    ObjectInitialize(&stack->_object);
861,949✔
56

57
    stack->_firstList.previous = NULL;
861,949✔
58
    stack->_firstList.next = NULL;
861,949✔
59
    
60
    StatusStackSetEmpty(stack);
861,949✔
61
}
861,949✔
62

63
SB_INTERNAL SBBoolean StatusStackPush(StatusStackRef stack,
1,855,585✔
64
    SBLevel embeddingLevel, SBBidiType overrideStatus, SBBoolean isolateStatus)
65
{
66
    /* The stack can hold upto 127 elements. */
67
    SBAssert(stack->count <= 127);
1,855,585✔
68

69
    if (StatusStackInsertElement(stack)) {
1,855,585✔
70
        _StatusStackElementRef element = &stack->_peekList->elements[stack->_peekTop];
1,855,585✔
71
        element->embeddingLevel = embeddingLevel;
1,855,585✔
72
        element->overrideStatus = overrideStatus;
1,855,585✔
73
        element->isolateStatus = isolateStatus;
1,855,585✔
74

75
        return SBTrue;
1,855,585✔
76
    }
77

78
    return SBFalse;
×
79
}
80

81
SB_INTERNAL void StatusStackPop(StatusStackRef stack)
56,947✔
82
{
83
    /* The stack should not be empty. */
84
    SBAssert(stack->count != 0);
56,947✔
85

86
    if (stack->_peekTop != 0) {
56,947✔
87
        stack->_peekTop -= 1;
56,917✔
88
    } else {
89
        stack->_peekList = stack->_peekList->previous;
30✔
90
        stack->_peekTop = _StatusStackList_MaxIndex;
30✔
91
    }
92
    stack->count -= 1;
56,947✔
93
}
56,947✔
94

95
SB_INTERNAL void StatusStackSetEmpty(StatusStackRef stack)
895,415✔
96
{
97
    stack->_peekList = &stack->_firstList;
895,415✔
98
    stack->_peekTop = 0;
895,415✔
99
    stack->count = 0;
895,415✔
100
}
895,415✔
101

102
SB_INTERNAL SBLevel StatusStackGetEmbeddingLevel(StatusStackRef stack)
3,818,846✔
103
{
104
    return stack->_peekList->elements[stack->_peekTop].embeddingLevel;
3,818,846✔
105
}
106

107
SB_INTERNAL SBBidiType StatusStackGetOverrideStatus(StatusStackRef stack)
3,026,790✔
108
{
109
    return stack->_peekList->elements[stack->_peekTop].overrideStatus;
3,026,790✔
110
}
111

112
SB_INTERNAL SBBoolean StatusStackGetIsolateStatus(StatusStackRef stack)
165,095✔
113
{
114
    return stack->_peekList->elements[stack->_peekTop].isolateStatus;
165,095✔
115
}
116

117
SB_INTERNAL void StatusStackFinalize(StatusStackRef stack)
861,949✔
118
{
119
    ObjectFinalize(&stack->_object);
861,949✔
120
}
861,949✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc