aboutsummaryrefslogtreecommitdiff
path: root/src/stage1/range_set.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-12-06 18:52:39 -0500
committerGitHub <noreply@github.com>2022-12-06 18:52:39 -0500
commite7d28344fa3ee81d6ad7ca5ce1f83d50d8502118 (patch)
tree012b2556f2bda10ae663fab8efb235efe30e02f4 /src/stage1/range_set.cpp
parent817cf6a82efa7ed274371a28621bbf88a723d9b7 (diff)
parent20d86d9c63476b6312b87dc5b0e4aa4822eb7717 (diff)
downloadzig-e7d28344fa3ee81d6ad7ca5ce1f83d50d8502118.tar.gz
zig-e7d28344fa3ee81d6ad7ca5ce1f83d50d8502118.zip
Merge pull request #13560 from ziglang/wasi-bootstrap
Nuke the C++ implementation of Zig from orbit using WASI
Diffstat (limited to 'src/stage1/range_set.cpp')
-rw-r--r--src/stage1/range_set.cpp74
1 files changed, 0 insertions, 74 deletions
diff --git a/src/stage1/range_set.cpp b/src/stage1/range_set.cpp
deleted file mode 100644
index 9e621d2f13..0000000000
--- a/src/stage1/range_set.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-#include "range_set.hpp"
-
-AstNode *rangeset_add_range(RangeSet *rs, BigInt *first, BigInt *last, AstNode *source_node) {
- for (size_t i = 0; i < rs->src_range_list.length; i += 1) {
- RangeWithSrc *range_with_src = &rs->src_range_list.at(i);
- Range *range = &range_with_src->range;
- if ((bigint_cmp(first, &range->first) == CmpLT && bigint_cmp(last, &range->first) == CmpLT) ||
- (bigint_cmp(first, &range->last) == CmpGT && bigint_cmp(last, &range->last) == CmpGT))
- {
- // first...last is completely before/after `range`
- }
- else
- {
- return range_with_src->source_node;
- }
- }
- rs->src_range_list.append({{*first, *last}, source_node});
-
- return nullptr;
-
-}
-
-static int compare_rangeset(const void *a, const void *b) {
- const Range *r1 = &static_cast<const RangeWithSrc*>(a)->range;
- const Range *r2 = &static_cast<const RangeWithSrc*>(b)->range;
- // Assume no two ranges overlap
- switch (bigint_cmp(&r1->first, &r2->first)) {
- case CmpLT: return -1;
- case CmpGT: return 1;
- case CmpEQ: return 0;
- }
- zig_unreachable();
-}
-
-void rangeset_sort(RangeSet *rs) {
- if (rs->src_range_list.length > 1) {
- qsort(rs->src_range_list.items, rs->src_range_list.length,
- sizeof(RangeWithSrc), compare_rangeset);
- }
-}
-
-bool rangeset_spans(RangeSet *rs, BigInt *first, BigInt *last) {
- if (rs->src_range_list.length == 0)
- return false;
-
- rangeset_sort(rs);
-
- const Range *first_range = &rs->src_range_list.at(0).range;
- if (bigint_cmp(&first_range->first, first) != CmpEQ)
- return false;
-
- const Range *last_range = &rs->src_range_list.last().range;
- if (bigint_cmp(&last_range->last, last) != CmpEQ)
- return false;
-
- BigInt one;
- bigint_init_unsigned(&one, 1);
-
- // Make sure there are no holes in the first...last range
- for (size_t i = 1; i < rs->src_range_list.length; i++) {
- const Range *range = &rs->src_range_list.at(i).range;
- const Range *prev_range = &rs->src_range_list.at(i - 1).range;
-
- assert(bigint_cmp(&prev_range->last, &range->first) == CmpLT);
-
- BigInt last_plus_one;
- bigint_add(&last_plus_one, &prev_range->last, &one);
-
- if (bigint_cmp(&last_plus_one, &range->first) != CmpEQ)
- return false;
- }
-
- return true;
-}