# HG changeset patch # User cin # Date 2018-01-23 16:39:21 # Node ID fa6cbf4d8841204bd901308afe0e594dc61387e5 # Parent eedf4d834e67d7edec360d2b5ab9ec773eb9bd17 refactoring, moving to dotnercore, simplifying promises diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,39 @@ +{ + "version": "0.2.0", + "configurations": [ + + { + "name": "Launch webserver", + "type": "mono", + "request": "launch", + "program": "/usr/lib/mono/4.5/xsp4.exe", + "args":[ + "--root=.", + "--port=8081", + "-v", + "--printlog" + ], + "preLaunchTask": "build", + "cwd": "${workspaceRoot}/Pallada.PoiskAvia.Web", + "runtimeExecutable": null, + "env": {}, + "console": "integratedTerminal" + },{ + "name": "Launch model tests", + "type": "mono", + "request": "launch", + "program": "${env:HOME}/.nuget/packages/nunit.consolerunner/3.7.0/tools/nunit3-console.exe", + "args": [ + "${workspaceRoot}/Pallada.PoiskAvia.Model.Test/bin/Debug/net45/Pallada.PoiskAvia.Model.Test.mono.dll", + "--where=\"cat==Debug\"", + "--labels='On'", + "--inprocess", + "--workers=1" + ], + "preLaunchTask": "build", + "console": "internalConsole", + "internalConsoleOptions": "openOnSessionStart", + "cwd": "${workspaceRoot}/Pallada.PoiskAvia.Model.Test/" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,13 @@ +// Поместите параметры в этот файл, чтобы перезаписать параметры по умолчанию и пользовательские параметры. +{ + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true, + "**/bin": true, + "**/obj": true + }, + "omnisharp.useMono": true +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,55 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "0.1.0", + "command": "msbuild", + "args": [ + // Ask msbuild to generate full paths for file names. + "/property:GenerateFullPaths=true" + ], + "taskSelector": "/t:", + "showOutput": "silent", + "tasks": [ + { + "taskName": "build", + "suppressTaskName": true, + // Show the output window only if unrecognized errors occur. + "showOutput": "always", + // Use the standard MS compiler pattern to detect errors, warnings and infos + "problemMatcher": "$msCompile", + + "args" : [ + "/t:restore;build", + "/p:Configuration=DebugMono", + "Pallada.PoiskAvia.mono.sln" + ] + }, + { + "taskName": "clean", + // Show the output window only if unrecognized errors occur. + "showOutput": "always", + // Use the standard MS compiler pattern to detect errors, warnings and infos + "problemMatcher": "$msCompile", + + "args" : [ + "/p:Configuration=DebugMono", + "Pallada.PoiskAvia.mono.sln" + ] + }, + { + "taskName": "runtests", + "isTestCommand": true, + "suppressTaskName": true, + // Show the output window only if unrecognized errors occur. + "showOutput": "always", + // Use the standard MS compiler pattern to detect errors, warnings and infos + "problemMatcher": "$msCompile", + + "args" : [ + "/t:runtests", + "/p:Configuration=DebugMono", + "Pallada.PoiskAvia.mono.sln" + ] + } + ] +} \ No newline at end of file diff --git a/Implab.Playground2.psess b/Implab.Playground2.psess deleted file mode 100644 --- a/Implab.Playground2.psess +++ /dev/null @@ -1,70 +0,0 @@ - - - - Implab.sln - Sampling - None - true - true - Timestamp - Cycles - 50000 - 10 - 10 - - false - - - - false - 500 - - \Память\Обмен страниц/с - \Процессор(_Total)\% загруженности процессора - \Физический диск(_Total)\Средняя длина очереди диска - - - - true - false - false - - false - - - false - - - - Implab.Playground\obj\Debug\Implab.Playground.exe - 01/01/0001 00:00:00 - true - true - false - false - false - false - false - true - false - Executable - Implab.Playground\bin\Debug\Implab.Playground.exe - Implab.Playground\bin\Debug\ - - - IIS - InternetExplorer - true - false - - false - - - false - - {100DFEB0-75BE-436F-ADDF-1F46EF433F46}|Implab.Playground\Implab.Playground.csproj - Implab.Playground\Implab.Playground.csproj - Implab.Playground - - - \ No newline at end of file diff --git a/Implab.sln b/Implab.sln deleted file mode 100644 --- a/Implab.sln +++ /dev/null @@ -1,71 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab", "Implab\Implab.csproj", "{F550F1F8-8746-4AD0-9614-855F4C4B7F05}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{CE8D8D18-437A-445C-B662-4C2CE79A76F6}" - ProjectSection(SolutionItems) = preProject - Implab.vsmdi = Implab.vsmdi - Local.testsettings = Local.testsettings - TraceAndTestImpact.testsettings = TraceAndTestImpact.testsettings - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.Test", "Implab.Test\Implab.Test.csproj", "{63F92C0C-61BF-48C0-A377-8D67C3C661D0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.Format.Test", "Implab.Format.Test\Implab.Format.Test.csproj", "{4D364996-7ECD-4193-8F90-F223FFEA49DA}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.Playground", "Implab.Playground\Implab.Playground.csproj", "{100DFEB0-75BE-436F-ADDF-1F46EF433F46}" -EndProject -Global - GlobalSection(Performance) = preSolution - HasPerformanceSessions = true - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug 4.5|Any CPU = Debug 4.5|Any CPU - Debug|Any CPU = Debug|Any CPU - Release 4.5|Any CPU = Release 4.5|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Debug 4.5|Any CPU.ActiveCfg = Debug|Any CPU - {F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Debug 4.5|Any CPU.Build.0 = Debug|Any CPU - {F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Release 4.5|Any CPU.ActiveCfg = Release|Any CPU - {F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Release 4.5|Any CPU.Build.0 = Release|Any CPU - {F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Release|Any CPU.Build.0 = Release|Any CPU - {63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Debug 4.5|Any CPU.ActiveCfg = Debug 4.5|Any CPU - {63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Debug 4.5|Any CPU.Build.0 = Debug 4.5|Any CPU - {63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Release 4.5|Any CPU.ActiveCfg = Release 4.5|Any CPU - {63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Release 4.5|Any CPU.Build.0 = Release 4.5|Any CPU - {63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Release|Any CPU.Build.0 = Release|Any CPU - {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Debug 4.5|Any CPU.ActiveCfg = Debug|Any CPU - {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Debug 4.5|Any CPU.Build.0 = Debug|Any CPU - {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Release 4.5|Any CPU.ActiveCfg = Release|Any CPU - {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Release 4.5|Any CPU.Build.0 = Release|Any CPU - {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Release|Any CPU.Build.0 = Release|Any CPU - {100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Debug 4.5|Any CPU.ActiveCfg = Debug|Any CPU - {100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Debug 4.5|Any CPU.Build.0 = Debug|Any CPU - {100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Release 4.5|Any CPU.ActiveCfg = Release|Any CPU - {100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Release 4.5|Any CPU.Build.0 = Release|Any CPU - {100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(TestCaseManagementSettings) = postSolution - CategoryFile = Implab.vsmdi - EndGlobalSection -EndGlobal diff --git a/Implab.suo b/Implab.suo deleted file mode 100644 index 2551c242a8fc7c93912d4e7a7aa20b99c6d0d1d9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 GIT binary patch literal 0 Hc$@ - - - - - \ No newline at end of file diff --git a/Implab/AbstractEvent.cs b/Implab/AbstractEvent.cs --- a/Implab/AbstractEvent.cs +++ b/Implab/AbstractEvent.cs @@ -4,7 +4,7 @@ using System.Threading; using System.Reflection; namespace Implab { - public abstract class AbstractEvent : ICancellationToken, ICancellable { + public abstract class AbstractEvent : ICancellable { const int UNRESOLVED_SATE = 0; const int TRANSITIONAL_STATE = 1; @@ -30,8 +30,6 @@ namespace Implab { int m_cancelRequest; Exception m_cancelationReason; - SimpleAsyncQueue> m_cancelationHandlers; - #region state managment bool BeginTransit() { diff --git a/Implab/Automaton/DFATable.cs b/Implab/Automaton/DFATable.cs --- a/Implab/Automaton/DFATable.cs +++ b/Implab/Automaton/DFATable.cs @@ -311,7 +311,7 @@ namespace Implab.Automaton { optimalDFA.Add(t); } - protected string PrintDFA(IAlphabet inputAlphabet, IAlphabet stateAlphabet) { + /*protected string PrintDFA(IAlphabet inputAlphabet, IAlphabet stateAlphabet) { Safe.ArgumentNotNull(inputAlphabet, "inputAlphabet"); Safe.ArgumentNotNull(stateAlphabet, "stateAlphabet"); @@ -343,6 +343,6 @@ namespace Implab.Automaton { return writer.ToString(); } } - } + }*/ } } diff --git a/Implab/Automaton/EnumAlphabet.cs b/Implab/Automaton/EnumAlphabet.cs deleted file mode 100644 --- a/Implab/Automaton/EnumAlphabet.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Globalization; -using System.Linq; -using System.Diagnostics.CodeAnalysis; - -namespace Implab.Automaton { - /// - /// Алфавит символами которого являются элементы перечислений. - /// - /// Тип перечислений - public class EnumAlphabet : IndexedAlphabetBase where T : struct, IConvertible { - [SuppressMessage("Microsoft.Design", "CA1000:DoNotDeclareStaticMembersOnGenericTypes")] - static readonly Lazy _symbols = new Lazy(GetSymbols); - - [SuppressMessage("Microsoft.Design", "CA1000:DoNotDeclareStaticMembersOnGenericTypes")] - static readonly Lazy> _fullAlphabet = new Lazy>(CreateEnumAlphabet); - - static EnumAlphabet CreateEnumAlphabet() { - var symbols = _symbols.Value; - - if ( - symbols[symbols.Length - 1].ToInt32(CultureInfo.InvariantCulture) >= symbols.Length - || symbols[0].ToInt32(CultureInfo.InvariantCulture) != 0 - ) - throw new InvalidOperationException("The specified enumeration must be zero-based and continuously numbered"); - - return new EnumAlphabet(symbols.Select(x => x.ToInt32(CultureInfo.InvariantCulture)).ToArray()); - } - - static T[] GetSymbols() { - if (!typeof(T).IsEnum) - throw new InvalidOperationException("Invalid generic parameter, enumeration is required"); - - if (Enum.GetUnderlyingType(typeof(T)) != typeof(Int32)) - throw new InvalidOperationException("Only enums based on Int32 are supported"); - - return ((T[])Enum.GetValues(typeof(T))) - .OrderBy(x => x.ToInt32(CultureInfo.InvariantCulture)) - .ToArray(); - } - - public static EnumAlphabet FullAlphabet { - get { - return _fullAlphabet.Value; - } - } - - - public EnumAlphabet() - : base(_symbols.Value.Length) { - } - - public EnumAlphabet(int[] map) - : base(map) { - Debug.Assert(map.Length == _symbols.Value.Length); - } - - - public override int GetSymbolIndex(T symbol) { - return symbol.ToInt32(CultureInfo.InvariantCulture); - } - - } -} diff --git a/Implab/Automaton/RegularExpressions/RegularDFA.cs b/Implab/Automaton/RegularExpressions/RegularDFA.cs --- a/Implab/Automaton/RegularExpressions/RegularDFA.cs +++ b/Implab/Automaton/RegularExpressions/RegularDFA.cs @@ -77,14 +77,14 @@ namespace Implab.Automaton.RegularExpres return states.GroupBy(x => m_tags[x] ?? new TTag[0], arrayComparer).Select(g => new HashSet(g)); } - public override string ToString() { + /*public override string ToString() { var states = new MapAlphabet(false, null); for (int i = 0; i < StateCount; i++) states.DefineSymbol(string.Format("s{0}", i), i); return string.Format("//[RegularDFA {1} x {2}]\n{0}", PrintDFA(InputAlphabet, states),StateCount, AlphabetSize); - } + }*/ } } diff --git a/Implab/CancellationToken.cs b/Implab/CancellationToken.cs new file mode 100644 --- /dev/null +++ b/Implab/CancellationToken.cs @@ -0,0 +1,65 @@ +using System; +using System.Threading; +using Implab.Parallels; + +namespace Implab { + public class CancellationToken : ICancellationToken { + const int CANCEL_NOT_REQUESTED = 0; + const int CANCEL_REQUESTING = 1; + const int CANCEL_REQUESTED = 2; + + volatile int m_state = CANCEL_NOT_REQUESTED; + + Action m_handler; + + Parallels.SimpleAsyncQueue> m_handlers; + + public bool IsCancellationRequested { + get { return m_state == CANCEL_REQUESTED; } + } + + public Exception CancellationReason { + get; set; + } + + public void CancellationRequested(Action handler) { + Safe.ArgumentNotNull(handler, nameof(handler)); + if (IsCancellationRequested) { + handler(CancellationReason); + } else { + EnqueueHandler(handler); + if (IsCancellationRequested && TryDequeueHandler(out handler)) + handler(CancellationReason); + } + } + + bool TryDequeueHandler(out Action handler) { + handler = Interlocked.Exchange(ref m_handler, null); + if (handler != null) + return true; + else if (m_handlers != null) + return m_handlers.TryDequeue(out handler); + else + return false; + } + + void EnqueueHandler(Action handler) { + if (Interlocked.CompareExchange(ref m_handler, handler, null) != null) { + if (m_handlers == null) + // compare-exchange will fprotect from loosing already created queue + Interlocked.CompareExchange(ref m_handlers, new SimpleAsyncQueue>(), null); + m_handlers.Enqueue(handler); + } + } + + void RequestCancellation(Exception reason) { + if (Interlocked.CompareExchange(ref m_state, CANCEL_REQUESTING, CANCEL_NOT_REQUESTED) == CANCEL_NOT_REQUESTED) { + if (reason == null) + reason = new OperationCanceledException(); + CancellationReason = reason; + m_state = CANCEL_REQUESTED; + } + } + + } +} \ No newline at end of file diff --git a/Implab/IDeferred.cs b/Implab/IDeferred.cs --- a/Implab/IDeferred.cs +++ b/Implab/IDeferred.cs @@ -4,7 +4,7 @@ namespace Implab { /// /// Deferred result, usually used by asynchronous services as the service part of the promise. /// - public interface IDeferred : ICancellationToken { + public interface IDeferred { void Resolve(); @@ -19,6 +19,13 @@ namespace Implab { /// is used as the reason to reject promise. /// void Reject(Exception error); + + /// + /// Marks current instance as cencelled with the specified reason. + /// + /// The reason for the operation cancellation, + /// if not specified the new will be created + void SetCancelled(Exception reason); } } diff --git a/Implab/IDeferredT.cs b/Implab/IDeferredT.cs --- a/Implab/IDeferredT.cs +++ b/Implab/IDeferredT.cs @@ -1,10 +1,12 @@ using System; namespace Implab { - public interface IDeferred : ICancellationToken { + public interface IDeferred { void Resolve(T value); void Reject(Exception error); + + void SetCancelled(Exception error); } } diff --git a/Implab/Implab.csproj b/Implab/Implab.csproj --- a/Implab/Implab.csproj +++ b/Implab/Implab.csproj @@ -1,189 +1,8 @@ - - + + - Debug - AnyCPU - {F550F1F8-8746-4AD0-9614-855F4C4B7F05} - Library - Implab - Implab - v4.5 - - - - true - full - true - bin\Debug - TRACE;DEBUG;NET_4_5 - prompt - 4 - false - true - - - full - true - bin\Release - NET_4_5 - prompt - 4 - false - - - false - - - implab.snk + netstandard2.0;net45 + /usr/lib/mono/4.5/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - - - - - \ No newline at end of file + + diff --git a/Implab/Implab.old.csproj b/Implab/Implab.old.csproj new file mode 100644 --- /dev/null +++ b/Implab/Implab.old.csproj @@ -0,0 +1,189 @@ + + + + Debug + AnyCPU + {F550F1F8-8746-4AD0-9614-855F4C4B7F05} + Library + Implab + Implab + v4.5 + + + + true + full + true + bin\Debug + TRACE;DEBUG;NET_4_5 + prompt + 4 + false + true + + + full + true + bin\Release + NET_4_5 + prompt + 4 + false + + + false + + + implab.snk + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Designer + + + + + + + \ No newline at end of file diff --git a/Implab/Properties/AssemblyInfo.cs b/Implab/Properties/AssemblyInfo.cs deleted file mode 100644 --- a/Implab/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("Implab")] -[assembly: AssemblyDescription("Tools")] -[assembly: AssemblyCompany("Implab.org")] -[assembly: AssemblyCopyright("Implab")] -[assembly: AssemblyTrademark("Implab")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("2.1.*")] -[assembly: ComVisible(false)] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/Local.testsettings b/Local.testsettings deleted file mode 100644 --- a/Local.testsettings +++ /dev/null @@ -1,10 +0,0 @@ - - - These are default test settings for a local test run. - - - - - - - \ No newline at end of file diff --git a/TraceAndTestImpact.testsettings b/TraceAndTestImpact.testsettings deleted file mode 100644 --- a/TraceAndTestImpact.testsettings +++ /dev/null @@ -1,21 +0,0 @@ - - - These are test settings for Trace and Test Impact. - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/omnisharp.json b/omnisharp.json new file mode 100644 --- /dev/null +++ b/omnisharp.json @@ -0,0 +1,54 @@ +{ + "FormattingOptions": { + "NewLine": "\n", + "UseTabs": false, + "TabSize": 4, + "IndentationSize": 4, + "SpacingAfterMethodDeclarationName": false, + "SpaceWithinMethodDeclarationParenthesis": false, + "SpaceBetweenEmptyMethodDeclarationParentheses": false, + "SpaceAfterMethodCallName": false, + "SpaceWithinMethodCallParentheses": false, + "SpaceBetweenEmptyMethodCallParentheses": false, + "SpaceAfterControlFlowStatementKeyword": true, + "SpaceWithinExpressionParentheses": false, + "SpaceWithinCastParentheses": false, + "SpaceWithinOtherParentheses": false, + "SpaceAfterCast": false, + "SpacesIgnoreAroundVariableDeclaration": false, + "SpaceBeforeOpenSquareBracket": false, + "SpaceBetweenEmptySquareBrackets": false, + "SpaceWithinSquareBrackets": false, + "SpaceAfterColonInBaseTypeDeclaration": true, + "SpaceAfterComma": true, + "SpaceAfterDot": false, + "SpaceAfterSemicolonsInForStatement": true, + "SpaceBeforeColonInBaseTypeDeclaration": true, + "SpaceBeforeComma": false, + "SpaceBeforeDot": false, + "SpaceBeforeSemicolonsInForStatement": false, + "SpacingAroundBinaryOperator": "single", + "IndentBraces": false, + "IndentBlock": true, + "IndentSwitchSection": true, + "IndentSwitchCaseSection": true, + "LabelPositioning": "oneLess", + "WrappingPreserveSingleLine": true, + "WrappingKeepStatementsOnSingleLine": true, + "NewLinesForBracesInTypes": false, + "NewLinesForBracesInMethods": false, + "NewLinesForBracesInProperties": false, + "NewLinesForBracesInAccessors": false, + "NewLinesForBracesInAnonymousMethods": false, + "NewLinesForBracesInControlBlocks": false, + "NewLinesForBracesInAnonymousTypes": false, + "NewLinesForBracesInObjectCollectionArrayInitializers": false, + "NewLinesForBracesInLambdaExpressionBody": false, + "NewLineForElse": false, + "NewLineForCatch": false, + "NewLineForFinally": false, + "NewLineForMembersInObjectInit": false, + "NewLineForMembersInAnonymousTypes": false, + "NewLineForClausesInQuery": false + } +} \ No newline at end of file