Подготовка к созданию плагина учительского контроля

This commit is contained in:
Mikhalkovich Stanislav 2022-05-17 16:02:14 +03:00
parent 3b8e54fe1e
commit 75425d6d2e
12 changed files with 53 additions and 13 deletions

View file

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

View file

@ -1,4 +1,4 @@
%MINOR%=8
%REVISION%=3121
%REVISION%=3123
%COREVERSION%=3
%MAJOR%=3

View file

@ -0,0 +1,12 @@
// Последовательность Голомба G(n) - это такая единственная неубывающая последовательность
// натуральных чисел, в которой n появляется ровно G(n) раз
// 1 2 2 3 3 4 4 4 5 5 5 6 6 6 6
// Без кеширования время выполнения огромное за счет повторяющихся рекурсивных вызовов
[Cache]
function G(n: int64): int64 := n = 1 ? 1 : 1 + G(n - G(G(n - 1)));
begin
var n := 100000;
(1..n).Sum(i -> G(i)).Print;
Milliseconds.Print;
end.

View file

@ -2,7 +2,7 @@
// This CSharp output file generated by Gardens Point LEX
// Version: 1.1.3.301
// Machine: DESKTOP-G8V08V4
// DateTime: 08.05.2022 19:51:09
// DateTime: 10.05.2022 19:00:28
// UserName: ?????????
// GPLEX input file <ABCPascal.lex>
// GPLEX frame file <embedded resource>

View file

@ -2,7 +2,7 @@
// GPPG version 1.3.6
// Machine: DESKTOP-G8V08V4
// DateTime: 08.05.2022 19:51:10
// DateTime: 10.05.2022 19:00:28
// UserName: ?????????
// Input file <ABCPascal.y>

View file

@ -358,5 +358,6 @@ script=

View file

@ -64,7 +64,9 @@ namespace VisualPascalABCPlugins
ProcessExited
}
public delegate void ChangeVisualEnvironmentStateDelegate(VisualEnvironmentState State, object obj);
// SSM 16/05/22 - ïåðåíåñ ñþäà èç RunManager
public delegate void RunnerManagerActionDelegate(string fileName);
public enum SourceLocationAction
{
SelectAndGotoBeg,
@ -293,6 +295,8 @@ namespace VisualPascalABCPlugins
public interface IWorkbenchRunService
{
event RunnerManagerActionDelegate Starting; // ìîæíî âûçûâàòü èç ïëàãèíà
event RunnerManagerActionDelegate Exited; // ìîæíî âûçûâàòü èç ïëàãèíà
bool IsRun();
bool IsRun(string FileName);
bool Run(bool RedirectConsoleIO);

View file

@ -1 +1 @@
3.8.3.3121
3.8.3.3123

View file

@ -1 +1 @@
!define VERSION '3.8.3.3121'
!define VERSION '3.8.3.3123'

View file

@ -7,6 +7,7 @@ using System.Text;
using PascalABCCompiler.Errors;
using System.IO;
using System.Diagnostics;
using VisualPascalABCPlugins;
namespace VisualPascalABC
{
@ -204,8 +205,6 @@ namespace VisualPascalABC
*/
}
public delegate void RunnerManagerActionDelegate(string fileName);
public event RunnerManagerActionDelegate Exited;
public event RunnerManagerActionDelegate Starting;

View file

@ -90,8 +90,8 @@ namespace VisualPascalABC
this.DebugHelper = DebugHelper;
DebugHelper.Starting += new DebugHelper.DebugHelperActionDelegate(DebugHelper_Starting);
DebugHelper.Exited += new DebugHelper.DebugHelperActionDelegate(DebugHelper_Exited);
RunnerManager.Starting += new RunManager.RunnerManagerActionDelegate(RunnerManager_Starting);
RunnerManager.Exited += new RunManager.RunnerManagerActionDelegate(RunnerManager_Exited);
RunnerManager.Starting += new RunnerManagerActionDelegate(RunnerManager_Starting);
RunnerManager.Exited += new RunnerManagerActionDelegate(RunnerManager_Exited);
this.CodeCompletionParserController = WorkbenchServiceFactory.CodeCompletionParserController;
this.CodeCompletionParserController.visualEnvironmentCompiler = this;
this.UserOptions = UserOptions;

View file

@ -30,12 +30,36 @@ namespace VisualPascalABC
private Dictionary<string, string> RunArgumentsTable = new Dictionary<string, string>();
bool RunActiveTabPage = false;
// SSM 16/05/22 - добавил чтобы иметь возможность добавлять обработчики во внешнем плагине
public event RunnerManagerActionDelegate Starting
{
add
{
RunnerManager.Starting += value;
}
remove
{
RunnerManager.Starting -= value;
}
}
public event RunnerManagerActionDelegate Exited
{
add
{
RunnerManager.Exited += value;
}
remove
{
RunnerManager.Exited -= value;
}
}
public WorkbenchRunService()
{
Workbench = WorkbenchServiceFactory.Workbench;
RunnerManager = new RunManager(ReadStringRequest);
RunnerManager.Exited += new RunManager.RunnerManagerActionDelegate(RunnerManager_Exited);
RunnerManager.Starting += new RunManager.RunnerManagerActionDelegate(RunnerManager_Started);
RunnerManager.Exited += new RunnerManagerActionDelegate(RunnerManager_Exited);
RunnerManager.Starting += new RunnerManagerActionDelegate(RunnerManager_Started);
RunnerManager.OutputStringReceived += new RunManager.TextRecivedDelegate(RunnerManager_OutputStringReceived);
RunnerManager.RunnerManagerUnhanledRuntimeException += new RunManager.RunnerManagerUnhanledRuntimeExceptionDelegate(RunnerManager_RunnerManagerUnhanledRuntimeException);
DesignerService = WorkbenchServiceFactory.DesignerService;