PHP 8.2.30
Preview: swoole_heap.h Size: 1.90 KB
//proc/self/root/opt/cloudlinux/alt-php84/root/usr/include/php/ext/swoole/include/swoole_heap.h

/*
 +----------------------------------------------------------------------+
 | Swoole                                                               |
 +----------------------------------------------------------------------+
 | This source file is subject to version 2.0 of the Apache license,    |
 | that is bundled with this package in the file LICENSE, and is        |
 | available through the world-wide-web at the following url:           |
 | http://www.apache.org/licenses/LICENSE-2.0.html                      |
 | If you did not receive a copy of the Apache2.0 license and are unable|
 | to obtain it through the world-wide-web, please send a note to       |
 | license@php.net so we can mail you a copy immediately.               |
 +----------------------------------------------------------------------+
 | Author: Tianfeng Han  <rango@swoole.com>                             |
 +----------------------------------------------------------------------+
 */

#pragma once

#include <cstddef>
#include <cstdint>

namespace swoole {

struct HeapNode {
    uint64_t priority;
    uint32_t position;
    void *data;
};

class Heap {
  public:
    enum Type {
        MIN_HEAP,
        MAX_HEAP,
    };

    Heap(size_t _n, Type _type);
    ~Heap();

    size_t count() const {
        return num - 1;
    }

    HeapNode *push(uint64_t priority, void *data);
    void *pop();
    void change_priority(uint64_t new_priority, HeapNode *ptr) const;
    void remove(HeapNode *node);
    void *peek() const;
    void print() const;
    int compare(uint64_t a, uint64_t b) const;

    HeapNode *top() const {
        if (num == 1) {
            return nullptr;
        }
        return nodes[1];
    }

  private:
    uint32_t num;
    uint32_t size;
    enum Type type;
    HeapNode **nodes;

    void bubble_up(uint32_t i) const;
    uint32_t maxchild(uint32_t i) const;
    void percolate_down(uint32_t i) const;
};
}  // namespace swoole

Directory Contents

Dirs: 0 × Files: 55

Name Size Perms Modified Actions
26.96 KB lrw-r--r-- 2026-03-18 09:07:57
Edit Download
2.02 KB lrw-r--r-- 2026-03-18 09:07:57
Edit Download
2.31 KB lrw-r--r-- 2026-03-18 09:07:58
Edit Download
3.29 KB lrw-r--r-- 2026-03-18 09:07:58
Edit Download
2.30 KB lrw-r--r-- 2026-03-18 09:07:58
Edit Download
1.30 KB lrw-r--r-- 2026-03-18 09:07:59
Edit Download
2.24 KB lrw-r--r-- 2026-03-18 09:08:00
Edit Download
2.37 KB lrw-r--r-- 2026-03-18 09:08:00
Edit Download
11.75 KB lrw-r--r-- 2026-03-18 09:08:00
Edit Download
8.79 KB lrw-r--r-- 2026-03-18 09:08:01
Edit Download
8.92 KB lrw-r--r-- 2026-03-18 09:08:01
Edit Download
5.12 KB lrw-r--r-- 2026-03-18 09:08:02
Edit Download
4.17 KB lrw-r--r-- 2026-03-18 09:08:03
Edit Download
2.75 KB lrw-r--r-- 2026-03-18 09:08:04
Edit Download
17.64 KB lrw-r--r-- 2026-03-18 09:08:04
Edit Download
3.78 KB lrw-r--r-- 2026-03-18 09:08:04
Edit Download
2.42 KB lrw-r--r-- 2026-03-18 09:08:05
Edit Download
6.46 KB lrw-r--r-- 2026-03-18 09:08:06
Edit Download
4.88 KB lrw-r--r-- 2026-03-18 09:08:06
Edit Download
2.76 KB lrw-r--r-- 2026-03-18 09:08:07
Edit Download
1.24 KB lrw-r--r-- 2026-03-18 09:08:07
Edit Download
1.90 KB lrw-r--r-- 2026-03-18 09:08:07
Edit Download
7.24 KB lrw-r--r-- 2026-03-18 09:08:07
Edit Download
8.55 KB lrw-r--r-- 2026-03-18 09:08:07
Edit Download
5.52 KB lrw-r--r-- 2026-03-18 09:08:07
Edit Download
2.02 KB lrw-r--r-- 2026-03-18 09:08:07
Edit Download
3.25 KB lrw-r--r-- 2026-03-18 09:08:07
Edit Download
15.71 KB lrw-r--r-- 2026-03-18 09:08:08
Edit Download
3.18 KB lrw-r--r-- 2026-03-18 09:08:08
Edit Download
2.83 KB lrw-r--r-- 2026-03-18 09:08:08
Edit Download
5.18 KB lrw-r--r-- 2026-03-18 09:08:08
Edit Download
1.42 KB lrw-r--r-- 2026-03-18 09:08:08
Edit Download
2.16 KB lrw-r--r-- 2026-03-18 09:08:09
Edit Download
1.96 KB lrw-r--r-- 2026-03-18 09:08:10
Edit Download
2.60 KB lrw-r--r-- 2026-03-18 09:08:10
Edit Download
13.17 KB lrw-r--r-- 2026-03-18 09:08:10
Edit Download
5.03 KB lrw-r--r-- 2026-03-18 09:08:11
Edit Download
3.30 KB lrw-r--r-- 2026-03-18 09:08:12
Edit Download
12.40 KB lrw-r--r-- 2026-03-18 09:08:13
Edit Download
1.83 KB lrw-r--r-- 2026-03-18 09:08:13
Edit Download
49.72 KB lrw-r--r-- 2026-03-18 09:08:13
Edit Download
2.99 KB lrw-r--r-- 2026-03-18 09:08:13
Edit Download
18.51 KB lrw-r--r-- 2026-03-18 09:08:14
Edit Download
2.31 KB lrw-r--r-- 2026-03-18 09:08:15
Edit Download
1.43 KB lrw-r--r-- 2026-03-18 09:08:15
Edit Download
5.22 KB lrw-r--r-- 2026-03-18 09:08:15
Edit Download
5.21 KB lrw-r--r-- 2026-03-18 09:08:15
Edit Download
7.32 KB lrw-r--r-- 2026-03-18 09:08:16
Edit Download
6.50 KB lrw-r--r-- 2026-03-18 09:08:16
Edit Download
1.99 KB lrw-r--r-- 2026-03-18 09:08:17
Edit Download
4.37 KB lrw-r--r-- 2026-03-18 09:08:17
Edit Download
3.84 KB lrw-r--r-- 2026-03-18 09:08:17
Edit Download
7.49 KB lrw-r--r-- 2026-03-18 09:08:18
Edit Download
1.74 KB lrw-r--r-- 2026-03-18 09:08:18
Edit Download
5.11 KB lrw-r--r-- 2026-03-18 09:08:18
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).