src/GlobalRoots.h
author David Anderson <dvander@alliedmods.net>
Tue Jan 01 20:06:25 2013 -0800 (2013-01-01)
changeset 253 544c478362c2
parent 195 c1ba166f3fc4
child 262 c4b1341297e5
permissions -rw-r--r--
Add WIN32 define for MSVC builds.
ds@126
     1
/* vim: set ts=4 sw=4 tw=99 et:
ds@126
     2
 *
dvander@61
     3
 * Copyright (C) 2004-2012 David Anderson
dvander@61
     4
 *
dvander@61
     5
 * This file is part of SourcePawn.
dvander@61
     6
 *
dvander@61
     7
 * SourcePawn is free software: you can redistribute it and/or modify it under
dvander@61
     8
 * the terms of the GNU General Public License as published by the Free
dvander@61
     9
 * Software Foundation, either version 3 of the License, or (at your option)
dvander@61
    10
 * any later version.
dvander@61
    11
 * 
dvander@61
    12
 * SourcePawn is distributed in the hope that it will be useful, but WITHOUT ANY
dvander@61
    13
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
dvander@61
    14
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
dvander@61
    15
 *
dvander@61
    16
 * You should have received a copy of the GNU General Public License along with
dvander@61
    17
 * SourcePawn. If not, see http://www.gnu.org/licenses/.
dvander@61
    18
 */
dvander@61
    19
#ifndef _include_ke_global_roots_h_
dvander@61
    20
#define _include_ke_global_roots_h_
dvander@61
    21
danderson@92
    22
#include "Utility.h"
dvander@61
    23
#include "Handles.h"
dvander@61
    24
#include "InlineList.h"
dvander@61
    25
#include "VirtualObjectVisitor.h"
dvander@61
    26
dvander@61
    27
namespace ke {
dvander@61
    28
dvander@61
    29
class Zone;
dvander@61
    30
class Object;
dvander@61
    31
dvander@61
    32
class HeapRoot : public InlineListNode<HeapRoot>
dvander@61
    33
{
dvander@61
    34
  public:
dvander@61
    35
    Object *obj;
dvander@61
    36
};
dvander@61
    37
dvander@61
    38
class GlobalRoots
dvander@61
    39
{
dvander@61
    40
    Zone *zone_;
dvander@61
    41
dvander@61
    42
  public:
dvander@61
    43
    GlobalRoots(Zone *zone);
dvander@61
    44
    ~GlobalRoots();
dvander@61
    45
dvander@61
    46
    bool initialize();
dvander@61
    47
dvander@195
    48
    HeapRoot *create();
dvander@195
    49
    void destroy(HeapRoot *root);
dvander@61
    50
dvander@61
    51
    void accept(VirtualObjectVisitor *visitor);
dvander@61
    52
dvander@61
    53
  private:
dvander@61
    54
    InlineList<HeapRoot> roots_;
dvander@61
    55
};
dvander@61
    56
dvander@61
    57
}
dvander@61
    58
dvander@61
    59
#endif // _include_ke_global_roots_h_