view interps/rail/src/Binding.cpp @ 12500:e48c08805365 draft default tip

<b_jonas> ` learn \'The password of the month is Cthulhuquagdonic Mothraquagdonic Narwhalicorn.\' # https://logs.esolangs.org/libera-esolangs/2024-04.html#lKE Infinite craft
author HackEso <hackeso@esolangs.org>
date Wed, 01 May 2024 06:39:10 +0000
parents 859f9b4339e6
children
line wrap: on
line source

// Binding.cpp

#include "lib.h"
#include "Var.h"
#include "Binding.h"

using namespace std;

Binding::Binding()
  : data(NULL)
{
}

Binding::Binding(Var * newData)
{
  data = newData;
  if (!null())
  {
    data->acquire();
  }
}

Binding::~Binding()
{
  if (!null())
  {
    data->release();
  }
}

Binding::Binding(Binding const & right)
{
  data = right.data;
  if (!null())
  {
    data->acquire();
  }
}

Binding & Binding::operator=(Binding const & right)
{
  Binding temp(right);
  swap(data, temp.data);
  return *this;
}

Var * Binding::operator->(void)
{
  return data;
}

Var const * Binding::operator->(void) const
{
	return data;
}

Var & Binding::operator*(void)
{
  return *data;
}

Var const & Binding::operator*(void) const
{
	return*data;
}

bool Binding::null(void)
{
  return data == NULL;
}