
#include "Auxiliary.h"
#include "Dice.h"
#include <iostream.h>
#include "Error.h"

String transmit(String& s)
{	Die d(s.length() + 2);
	String result(s);
	int r = d.roll() - 1;
	if(r < s.length())
		result[r] = (s[r] + d.roll()) % 128;
	return result;
};

void jumble(String & s)
{	Die random(s.length());
	for (int i = 0; i < s.length(); i++)
	{	char temp = s[i];
		int r = random.roll() - 1;
		s[i] = s[r];
		s[r] = temp;
	}
}

//int inchelp(int,int);

static int inchelp(int i,int n)
{ 	if (n <= 0) return i+1;
	inchelp(i,n-1);
	return inchelp(i,n-1);
}

int inc(int i)
{	static int n = 0;
	return inchelp(i,++n);
}

void floatbits(float x)
{	union
	{	float realVal;
		long  intVal;
	} y;
	if(sizeof(float) != sizeof(long))
		userERROR("Must rewrite floatBits in Auxiliary.cpp");
	int bitcount = sizeof(long)*8;
	y.realVal = x;
	cout << x << " = ";
	unsigned long bit = 1L << (bitcount-1);
	for(int i=0;i<bitcount;i++)
	{  cout << ((y.intVal&bit)?1:0);
		bit = bit >> 1;
	}
	cout<<endl;
}

void longbits(long x)
{	cout << x << " = ";
	int bitcount = sizeof(long)*8;   // usually 32
	unsigned long bit = 1L << (bitcount-1);
	for(int i=0;i<bitcount;i++)
	{  cout << ((x&bit)?1:0);
		bit = bit >> 1;
	}
	cout<<endl;
}


