private static ValueTable.ValueTable CreateAnnotationTable(AnnotationDefinition[] annotations) { var annotationsTable = EmptyAnnotationsTable(); var annotationNameColumn = annotationsTable.Columns.FindColumnByName("Имя"); var annotationParamsColumn = annotationsTable.Columns.FindColumnByName("Параметры"); foreach (var annotation in annotations) { var annotationRow = annotationsTable.Add(); if (annotation.Name != null) { annotationRow.Set(annotationNameColumn, ValueFactory.Create(annotation.Name)); } if (annotation.ParamCount != 0) { var parametersTable = new ValueTable.ValueTable(); var parameterNameColumn = parametersTable.Columns.Add("Имя"); var parameterValueColumn = parametersTable.Columns.Add("Значение"); annotationRow.Set(annotationParamsColumn, parametersTable); foreach (var annotationParameter in annotation.Parameters) { var parameterRow = parametersTable.Add(); if (annotationParameter.Name != null) { parameterRow.Set(parameterNameColumn, ValueFactory.Create(annotationParameter.Name)); } parameterRow.Set(parameterValueColumn, annotationParameter.RuntimeValue); } } } return(annotationsTable); }
private static void FillMethodsTable(ValueTable.ValueTable result, IEnumerable <MethodInfo> methods) { var nameColumn = result.Columns.Add("Имя", TypeDescription.StringType(), "Имя"); var countColumn = result.Columns.Add("КоличествоПараметров", TypeDescription.IntegerType(), "Количество параметров"); var isFunctionColumn = result.Columns.Add("ЭтоФункция", TypeDescription.BooleanType(), "Это функция"); var annotationsColumn = result.Columns.Add("Аннотации", new TypeDescription(), "Аннотации"); var paramsColumn = result.Columns.Add("Параметры", new TypeDescription(), "Параметры"); foreach (var methInfo in methods) { if (!methInfo.IsExport) { continue; } ValueTableRow new_row = result.Add(); new_row.Set(nameColumn, ValueFactory.Create(methInfo.Name)); new_row.Set(countColumn, ValueFactory.Create(methInfo.ArgCount)); new_row.Set(isFunctionColumn, ValueFactory.Create(methInfo.IsFunction)); if (methInfo.AnnotationsCount != 0) { new_row.Set(annotationsColumn, CreateAnnotationTable(methInfo.Annotations)); } var paramTable = new ValueTable.ValueTable(); var paramNameColumn = paramTable.Columns.Add("Имя", TypeDescription.StringType(), "Имя"); var paramByValue = paramTable.Columns.Add("ПоЗначению", TypeDescription.BooleanType(), "По значению"); var paramHasDefaultValue = paramTable.Columns.Add("ЕстьЗначениеПоУмолчанию", TypeDescription.BooleanType(), "Есть значение по-умолчанию"); var paramAnnotationsColumn = paramTable.Columns.Add("Аннотации", new TypeDescription(), "Аннотации"); new_row.Set(paramsColumn, paramTable); if (methInfo.ArgCount != 0) { var index = 0; foreach (var param in methInfo.Params) { var name = string.Format("param{0}", ++index); var paramRow = paramTable.Add(); paramRow.Set(paramNameColumn, ValueFactory.Create(name)); paramRow.Set(paramByValue, ValueFactory.Create(param.IsByValue)); paramRow.Set(paramHasDefaultValue, ValueFactory.Create(param.HasDefaultValue)); if (param.AnnotationsCount != 0) { paramRow.Set(paramAnnotationsColumn, CreateAnnotationTable(param.Annotations)); } } } } }
private static void FillMethodsTable(ValueTable.ValueTable result, IEnumerable <MethodInfo> methods) { var nameColumn = result.Columns.Add("Имя", TypeDescription.StringType(), "Имя"); var countColumn = result.Columns.Add("КоличествоПараметров", TypeDescription.IntegerType(), "Количество параметров"); var isFunctionColumn = result.Columns.Add("ЭтоФункция", TypeDescription.BooleanType(), "Это функция"); foreach (var methInfo in methods) { ValueTableRow new_row = result.Add(); new_row.Set(nameColumn, ValueFactory.Create(methInfo.Name)); new_row.Set(countColumn, ValueFactory.Create(methInfo.ArgCount)); new_row.Set(isFunctionColumn, ValueFactory.Create(methInfo.IsFunction)); } }
private void FillPropertiesTable(ValueTable.ValueTable result, IEnumerable <VariableInfo> properties) { var nameColumn = result.Columns.Add("Имя", TypeDescription.StringType(), "Имя"); var systemVarNames = new string[] { "этотобъект", "thisobject" }; foreach (var propInfo in properties) { if (systemVarNames.Contains(propInfo.Identifier.ToLower())) { continue; } ValueTableRow newRow = result.Add(); newRow.Set(nameColumn, ValueFactory.Create(propInfo.Identifier)); } }
public ValueTable.ValueTable GetMethodsTable(IRuntimeContextInstance target) { ValueTable.ValueTable Result = new ValueTable.ValueTable(); var NameColumn = Result.Columns.Add("Имя", ValueFactory.Create(""), "Имя"); // TODO: Доработать после увеличения предела количества параметров var CountColumn = Result.Columns.Add("КоличествоПараметров", ValueFactory.Create(""), "Количество параметров"); // TODO: Доработать после увеличения предела количества параметров var IsFunctionColumn = Result.Columns.Add("ЭтоФункция", ValueFactory.Create(""), "Это функция"); // TODO: Доработать после увеличения предела количества параметров foreach (var methInfo in target.GetMethods()) { ValueTableRow new_row = Result.Add(); new_row.Set(NameColumn, ValueFactory.Create(methInfo.Name)); new_row.Set(CountColumn, ValueFactory.Create(methInfo.ArgCount)); new_row.Set(IsFunctionColumn, ValueFactory.Create(methInfo.IsFunction)); } return(Result); }
public ValueTable.ValueTable GetMethodsTable(IRuntimeContextInstance target) { ValueTable.ValueTable Result = new ValueTable.ValueTable(); var NameColumn = Result.Columns.Add("Имя", TypeDescription.StringType(), "Имя"); var CountColumn = Result.Columns.Add("КоличествоПараметров", TypeDescription.IntegerType(), "Количество параметров"); var IsFunctionColumn = Result.Columns.Add("ЭтоФункция", TypeDescription.BooleanType(), "Это функция"); foreach (var methInfo in target.GetMethods()) { ValueTableRow new_row = Result.Add(); new_row.Set(NameColumn, ValueFactory.Create(methInfo.Name)); new_row.Set(CountColumn, ValueFactory.Create(methInfo.ArgCount)); new_row.Set(IsFunctionColumn, ValueFactory.Create(methInfo.IsFunction)); } return(Result); }
private static void FillPropertiesTable(ValueTable.ValueTable result, IEnumerable <VariableInfo> properties) { var nameColumn = result.Columns.Add("Имя", TypeDescription.StringType(), "Имя"); var annotationsColumn = result.Columns.Add("Аннотации", new TypeDescription(), "Аннотации"); var systemVarNames = new string[] { "этотобъект", "thisobject" }; foreach (var propInfo in properties) { if (systemVarNames.Contains(propInfo.Identifier.ToLower())) { continue; } ValueTableRow new_row = result.Add(); new_row.Set(nameColumn, ValueFactory.Create(propInfo.Identifier)); new_row.Set(annotationsColumn, propInfo.AnnotationsCount != 0 ? CreateAnnotationTable(propInfo.Annotations) : EmptyAnnotationsTable()); } }
public ValueTable.ValueTable GetPropertiesTable(IRuntimeContextInstance target) { ValueTable.ValueTable Result = new ValueTable.ValueTable(); var NameColumn = Result.Columns.Add("Имя", TypeDescription.StringType(), "Имя"); var SystemVarNames = new string[] { "этотобъект", "thisobject" }; foreach (var propInfo in target.GetProperties()) { if (SystemVarNames.Contains(propInfo.Identifier.ToLower())) { continue; } ValueTableRow new_row = Result.Add(); new_row.Set(NameColumn, ValueFactory.Create(propInfo.Identifier)); } return(Result); }