summaryrefslogtreecommitdiffstats
path: root/src/livarot/sweep-tree-list.cpp
blob: 97640fd86cc65b56795e8d8ae4ff718a822acc47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// SPDX-License-Identifier: GPL-2.0-or-later
/** @file
 * TODO: insert short description here
 *//*
 * Authors: see git history
 *
 * Copyright (C) 2018 Authors
 * Released under GNU GPL v2+, read the file 'COPYING' for more information.
 */
#include <glib.h>
#include "livarot/sweep-tree.h"
#include "livarot/sweep-tree-list.h"


SweepTreeList::SweepTreeList(int s) :
    nbTree(0),
    maxTree(s),
    trees((SweepTree *) g_malloc(s * sizeof(SweepTree))),
    racine(nullptr)
{
    /* FIXME: Use new[] for trees initializer above, but watch out for bad things happening when
     * SweepTree::~SweepTree is called.
     */
}


SweepTreeList::~SweepTreeList()
{
    g_free(trees);
    trees = nullptr;
}


SweepTree *SweepTreeList::add(Shape *iSrc, int iBord, int iWeight, int iStartPoint, Shape */*iDst*/)
{
    if (nbTree >= maxTree) {
        return nullptr;
    }

    int const n = nbTree++;
    trees[n].MakeNew(iSrc, iBord, iWeight, iStartPoint);

    return trees + n;
}


/*
  Local Variables:
  mode:c++
  c-file-style:"stroustrup"
  c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
  indent-tabs-mode:nil
  fill-column:99
  End:
*/
// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :