using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace CLab
{
public abstract class LayoutType : Type
{
private int bddVarNum = 0;
private int domainSize = 0;
///
/// Constructor
///
/// Name of the layout type
public LayoutType(String layoutTypeName, int bddVarNum, int domainSize)
: base(layoutTypeName)
{
this.bddVarNum = bddVarNum;
this.domainSize = domainSize;
}
/// The domain size of the type
public int DomainSize
{
get { return domainSize; }
set { domainSize = value; }
}
///
public int BDDvarNum
{
get { return bddVarNum; }
set { bddVarNum = value; }
}
public static int booleanVarNumber(int domainSize)
{
return (int)Math.Ceiling(Math.Log((double)domainSize) / Math.Log(2.0));
}
public override string ToString()
{
return string.Format("Layout type name: {0}, domain size: {1}, Number of BDD variables needed: {2}", base.TypeName, this.DomainSize, this.BDDvarNum);
}
}
}