view src/luan/impl/Pointer.java @ 1578:c922446f53aa

immutable threading
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 08 Feb 2021 14:16:19 -0700
parents e1a13e707bf3
children
line wrap: on
line source

package luan.impl;

import luan.LuanMutable;
import luan.LuanException;


public final class Pointer implements LuanMutable {
	private Object o;
	private boolean immutable = false;

	public Pointer() {}

	public Pointer(Object o) {
		this.o = o;
	}

	@Override public boolean isImmutable() {
		return immutable;
	}

	@Override public void makeImmutable() {
		if(immutable)
			return;
		immutable = true;
		LuanMutable.makeImmutable(o);
	}

	public Object get() {
		return o;
	}

	public void set(Object o) throws LuanException {
		if( immutable )
			throw new LuanException("variable is immutable");
		this.o = o;
	}
}