internal static DataType CreateParameter([NotNull] CallSiteParameter p, CodeModel.SymbolTable table) { if (p.IsOmitted) { return(DataType.Omitted); } DataType type = null; var parameter = p.StorageAreaOrValue; if (parameter != null) { if (parameter.IsLiteral) { if (parameter.NumericValue != null) { type = DataType.Numeric; } else if (parameter.AlphanumericValue != null) { type = DataType.Alphanumeric; } else { type = DataType.Unknown; } } else { if (table != null) { var found = table.GetVariables(parameter); foreach (var item in found) { var data = item as Nodes.DataDescription; if (data == null) { type = DataType.Unknown; } else if (type == null) { type = data.DataType; } else if (type != data.DataType) { type = DataType.Unknown; } } } if (type == null) { type = DataType.Unknown; } } return(type); } return(DataType.Unknown); }
public virtual ParameterList AsProfile(CodeModel.SymbolTable table) { //Need to be updated in a near future var profile = new FunctionCallParameterList { InputParameters = FunctionCallParameterList.CreateParameters(Arguments.ToList(), table), }; return(profile); }
internal static IList <DataType> CreateParameters([NotNull] List <CallSiteParameter> parameters, CodeModel.SymbolTable table) { var results = new List <DataType>(); foreach (var parameter in parameters) { results.Add(CreateParameter(parameter, table)); } return(results); }