view interps/rail/src/Binding.cpp @ 12253:ad5c5d1b7d04 draft

<oerjan> t sled lib/karma//s/egrep.*>/egrep -x \'<[^>]*>/
author HackEso <hackeso@esolangs.org>
date Fri, 06 Dec 2019 07:53:22 +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;
}