public DataType createDataType(string compositeName)
{
string baseTypeName;
int length = 0;
int precision = 0;
if (compositeName.Contains("("))
{
baseTypeName = compositeName.Substring(0,compositeName.IndexOf("("));
string scaleString = compositeName.Substring(compositeName.IndexOf("(") +1);
if (scaleString.Contains(","))
{
int.TryParse(scaleString.Substring(0,scaleString.IndexOf(",")),out length );
string precisionString = scaleString.Substring(scaleString.IndexOf(",") +1 ,scaleString.Length-scaleString.IndexOf(",") -2);
int.TryParse(precisionString,out precision);
}
else
{
int.TryParse(scaleString.Substring(0, scaleString.Length -1),out length);
}
}
else
{
baseTypeName = compositeName;
}
BaseDataType basetype = this.baseDataTypes.FirstOrDefault(x => x.name == baseTypeName) as BaseDataType;
if (basetype != null)
{
return new DataType(basetype,length,precision);
}
else
{
return null;
}
}