package erjang.m.erlang;

import erjang.BIF;
import erjang.EAtom;
import erjang.EInteger;
import erjang.ENumber;
import erjang.EObject;
import erjang.ESmall;
import erjang.BIF.Type;

public class BinOps {

	@BIF(name="band",type=Type.GUARD)
	static public ENumber band_guard(EObject o1, EObject o2)
	{
		EInteger n1;
		EInteger n2;
		if ((n1=o1.testInteger()) != null) {
			if ((n2=o2.testInteger()) != null) {
				return n1.band(n2);
			}
		}
		
		return null;
	}

	
	@BIF
	static public EInteger band(EObject o1, EObject o2)
	{
		return o1.band(o2);
	}
	
	
	
	@BIF
	static public EInteger bor(EObject o1, EObject o2)
	{
		return o1.bor(o2);
	}
	

	@BIF
	static public EInteger bsr(EObject o1, EObject o2)
	{
		return o1.bsr(o2);
	}
	
	@BIF
	static public EInteger bsl(EObject o1, EObject o2)
	{
		return o1.bsl(o2);
	}
	
	@BIF
	static public EInteger bsl(EInteger o1, ESmall o2)
	{	
		return o1.bsl(o2);
	}
	
	@BIF(name=">=")
	static public EAtom ge(EObject o1, EObject o2) {
		return o1.ge(o2);
	}
	
}

@@ -19,16 +19,39 @@
 rlang;%0A%0A
+import kilim.Pausable;%0A
 import e
@@ -152,16 +152,56 @@
 Object;%0A
+import erjang.EProc;%0Aimport erjang.ERT;%0A
 import e
@@ -1059,10 +1059,140 @@
 );%0A%09%7D%0A%09%0A
+%09@BIF%0A%09static public EObject send(EProc proc, EObject pid, EObject msg) throws Pausable %7B%0A%09%09return ERT.send(proc, pid, msg);%0A%09%7D%0A%09%0A
 %7D%0A

add BIF for erlang:send/2