jitcraft/Handles-inl.h
author David Anderson <dvander@alliedmods.net>
Sat Jul 07 21:01:39 2012 -0700 (2012-07-07)
changeset 57 8f1e74d35718
parent 53 13bd3a8df334
child 59 b7d61ddb3c8d
permissions -rw-r--r--
Convert AST std::vector to PoolList.
dvander@53
     1
/*
dvander@53
     2
 * Copyright (C) 2012 David Anderson
dvander@53
     3
 *
dvander@53
     4
 * This file is part of JITCraft.
dvander@53
     5
 *
dvander@53
     6
 * JITCraft is free software: you can redistribute it and/or modify it under
dvander@53
     7
 * the terms of the GNU General Public License as published by the Free
dvander@53
     8
 * Software Foundation, either version 3 of the License, or (at your option)
dvander@53
     9
 * any later version.
dvander@53
    10
 * 
dvander@53
    11
 * Foobar is distributed in the hope that it will be useful, but WITHOUT ANY
dvander@53
    12
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
dvander@53
    13
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
dvander@53
    14
 *
dvander@53
    15
 * You should have received a copy of the GNU General Public License along with
dvander@53
    16
 * JITCraft. If not, see http://www.gnu.org/licenses/.
dvander@53
    17
 */
dvander@53
    18
#ifndef _include_jitcraft_rooting_inl_h_
dvander@53
    19
#define _include_jitcraft_rooting_inl_h_
dvander@53
    20
dvander@53
    21
#include "Heap.h"
dvander@53
    22
dvander@53
    23
namespace jc {
dvander@53
    24
dvander@11
    25
template <typename T>
dvander@11
    26
Local<T>::Local(Environment *env)
dvander@11
    27
  : zone_(env->zone()), thing_(NULL)
dvander@11
    28
{
dvander@11
    29
    prev_ = zone_->registerThingLocal(toRaw());
dvander@11
    30
}
dvander@11
    31
dvander@11
    32
template <typename T>
dvander@11
    33
Local<T>::Local(Environment *env, T *thing)
dvander@11
    34
  : zone_(env->zone()), thing_(thing)
dvander@11
    35
{
dvander@11
    36
    prev_ = zone_->registerThingLocal(toRaw());
dvander@11
    37
}
dvander@11
    38
dvander@11
    39
template <typename T>
dvander@11
    40
Local<T>::Local(Zone *zone)
dvander@11
    41
  : zone_(zone), thing_(NULL)
dvander@11
    42
{
dvander@11
    43
    prev_ = zone_->registerThingLocal(toRaw());
dvander@11
    44
}
dvander@11
    45
dvander@11
    46
template <typename T>
dvander@11
    47
Local<T>::Local(Zone *zone, T *thing)
dvander@11
    48
  : zone_(zone), thing_(thing)
dvander@11
    49
{
dvander@11
    50
    prev_ = zone_->registerThingLocal(toRaw());
dvander@11
    51
}
dvander@11
    52
dvander@11
    53
dvander@11
    54
template <typename T>
dvander@11
    55
Local<T>::~Local()
dvander@11
    56
{
dvander@11
    57
    zone_->deregisterThingLocal(toRaw(), prev_);
dvander@53
    58
}
dvander@53
    59
dvander@53
    60
}
dvander@53
    61
dvander@53
    62
#endif // _include_jitcraft_rooting_inl_h_