Object.Print убрано - конкурирует с Sequence.Print

Добавлены Nane и FullName к типу Text
This commit is contained in:
miks1965 2018-01-15 10:17:02 +03:00
parent 596f66a1ea
commit c6b6d01c0b
8 changed files with 74 additions and 34 deletions

View file

@ -15,7 +15,7 @@ internal static class RevisionClass
public const string Major = "3";
public const string Minor = "3";
public const string Build = "0";
public const string Revision = "1615";
public const string Revision = "1617";
public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;

View file

@ -1,4 +1,4 @@
%COREVERSION%=0
%REVISION%=1615
%REVISION%=1617
%MINOR%=3
%MAJOR%=3

View file

@ -1 +1 @@
!define VERSION '3.3.0.1615'
!define VERSION '3.3.0.1617'

View file

@ -481,6 +481,10 @@ type
procedure Write(params vals: array of object);
/// Устанавливает файловый указатель на начало файла
procedure Reset;
/// Возвращает имя файла
function Name: string;
/// Возвращает полное имя файла
function FullName: string;
end;
// Class for typed files
@ -3351,10 +3355,7 @@ function string.operator in(substr: string; str: string) := str.Contains(substr)
procedure operator+=(var left: StringBuilder; right: string); extensionmethod := left.Append(right);
function operator implicit(s: string): StringBuilder; extensionmethod;
begin
Result := new StringBuilder(s);
end;
function operator implicit(s: string): StringBuilder; extensionmethod := new StringBuilder(s);
//------------------------------------------------------------------------------
// Операции для array of T
@ -5356,6 +5357,18 @@ begin
PABCSystem.Reset(Self);
end;
function AbstractBinaryFile.Name: string;
begin
Result := fi.Name
end;
function AbstractBinaryFile.FullName: string;
begin
Result := fi.FullName
end;
// -----------------------------------------------------
// TypedFile & BinaryFile methods
// -----------------------------------------------------

View file

@ -2036,7 +2036,7 @@ type
Result := pmb.ToMeshGeometry3D
end;
end;
PrismT = class(ObjectWithMaterial3D)
private
function Model := inherited model as PrismVisual3D;
@ -2265,6 +2265,17 @@ type
end;
end;
My13D = class(MeshElement3D)
public function Tessellate(): MeshGeometry3D; override;
begin
var tm := new MeshBuilder(false, false);
tm.AddRevolvedGeometry(Arr(Pnt(0,0),Pnt(0,1),Pnt(0.3,1),Pnt(0.5,0.3),Pnt(2,1),Pnt(3,0)),nil,Origin,OrtZ,80);
Result := tm.ToMesh(false);
end;
end;
type
AnyT = class(ObjectWithMaterial3D)
constructor(x, y, z: real; c: GColor);
@ -2277,10 +2288,14 @@ type
//var a := new TerrainVisual3D;
//a.Content := (new SphereVisual3D()).Model;
//a.Text := 'PascalABC';
var a := new LinesVisual3D;
a.Thickness := 1.99;
//a.Points := Arr(P3D(0, 0, 0), P3D(3, 0, 0), P3D(3, 0, 0), P3D(3, 3, 0), P3D(3, 3, 0), P3D(3, 3, 3));
a.Color := c;
//var a := new LinesVisual3D;
{a.Thickness := 1.99;
a.Points := Arr(P3D(0, 0, 0), P3D(3, 0, 0), P3D(3, 0, 0), P3D(3, 3, 0), P3D(3, 3, 0), P3D(3, 3, 3));
a.Color := c;}
var a := new My13D;
a.Material := c;
{var aa := 1;
var b := 80;
@ -2475,7 +2490,7 @@ begin
//var c1 := XamlReader.Load(new System.IO.FileStream('cube.xaml',System.IO.FileMode.Open)) as CubeVisual3D;
//hvp.Children.Add(c1);
var off := new offreader(nil);
{var off := new offreader(nil);
var s := System.IO.File.OpenRead('boxcube.off');
off.Load(s);
@ -2484,18 +2499,14 @@ begin
m1.EdgeDiameter := 0;
m1.VertexRadius := 0;
m1.Mesh := off.CreateMesh;
hvp.Children.Add(m1);
{var m1 := new MeshGeometryVisual3D();
m1.MeshGeometry := off.CreateMeshGeometry3D;
hvp.Children.Add(m1);}
var ex := new ExtrudedVisual3D();
ex.BackMaterial := Colors.Green;
ex.Diameters := new DoubleCollection(Arr(1.0,1.5,1.2));
ex.Path := new Point3DCollection(Arr(P3D(0,0,0),P3D(0,1,0),P3D(0,1,1),P3D(1,1,1)));
hvp.Children.Add(ex);
{var m1 := new ModelVisual3D();
m1.Content := off.CreateModel3D;
hvp.Children.Add(m1);}
{var imp := new HelixToolkit.Wpf.ModelImporter();
imp.Load('a.xaml',nil,False);}
end;
procedure Proba2 := Invoke(ProbaP2);

View file

@ -2105,6 +2105,15 @@ namespace PascalABCCompiler.TreeConverter
convert_function_call_expressions(funcs[0], parameters, tcl);
return funcs[0];
}
// Вот здесь нужен анализ всех оставшихся функций.
// Если они отличаются только функциональными параметрами и у этих параметров
// одинаковый тип параметров (они уже инстанцированы!), то надо еще раз
// вызвать то, что вызывается в DeduceFunction чтобы установить, каков тип возвращаемого значения лямбды, после чего
// выбрать либо функцию из оставшихся с ровно совпадающим типом лямбды либо с ближайшим
// (остались только те, к которым можно преобразовать)
// Некоторая проблема будет если лямбд останется несколько и расстояния до результата будут разными и ненулевыми везде
if (funcs.Count == 2) // SSM - это ужасный способ устранения бага #236 Range(1,10).Sum(e -> e); Для хорошего способа весь код выбора версий функций для делегатов надо переписывать
{
var f1 = funcs[0];
@ -2156,6 +2165,7 @@ namespace PascalABCCompiler.TreeConverter
return f1;
}
}
/*if (f1.return_value_type != null && f2.return_value_type != null)
{
var p1 = f1.return_value_type;

View file

@ -5041,7 +5041,7 @@ namespace PascalABCCompiler.TreeConverter
{
ThrowCompilationError = false;
function_node ffn = convertion_data_and_alghoritms.select_function(exprs, sil, subloc, syntax_nodes_parameters);
if (ffn == null)
if (ffn == null)
{
if (skip_first_parameter)
{

View file

@ -481,6 +481,10 @@ type
procedure Write(params vals: array of object);
/// Устанавливает файловый указатель на начало файла
procedure Reset;
/// Возвращает имя файла
function Name: string;
/// Возвращает полное имя файла
function FullName: string;
end;
// Class for typed files
@ -3255,16 +3259,6 @@ begin
Result := sb.ToString;
end;
//------------------------------------------------------------------------------
// Методы для object (экспериментально)
//------------------------------------------------------------------------------
/// Выводит значение объекта на экран, после чего выводит пробел
procedure Print(Self: object); extensionmethod := Print(Self);
/// Выводит значение объекта на экран и переходит на следующую строку
procedure Println(Self: object); extensionmethod := Println(Self);
//------------------------------------------------------------------------------
// Операции для string и char
//------------------------------------------------------------------------------
@ -5363,6 +5357,18 @@ begin
PABCSystem.Reset(Self);
end;
function AbstractBinaryFile.Name: string;
begin
Result := fi.Name
end;
function AbstractBinaryFile.FullName: string;
begin
Result := fi.FullName
end;
// -----------------------------------------------------
// TypedFile & BinaryFile methods
// -----------------------------------------------------