예제 #1
0
 private void FinalizeOutputBuilder()
 {
     if (_outputBuilderUsers == 1)
     {
         _outputBuilder = null;
     }
     _outputBuilderUsers--;
 }
예제 #2
0
        private void InitializeOutputBuilder(string name)
        {
            if (_outputBuilder != null)
            {
                Debug.Assert(_outputBuilderUsers >= 1);
                _outputBuilderUsers++;
                return;
            }

            Debug.Assert(_outputBuilderUsers == 0);

            var outputFile    = _config.OutputLocation;
            var isMethodClass = name.Equals(_config.MethodClassName);

            if (_config.GenerateMultipleFiles)
            {
                outputFile = Path.Combine(outputFile, $"{name}.cs");
            }
            else if (isMethodClass)
            {
                outputFile = Path.ChangeExtension(outputFile, $"{_config.MethodClassName}{Path.GetExtension(outputFile)}");
            }

            if (!_outputBuilders.TryGetValue(outputFile, out _outputBuilder))
            {
                _outputBuilder = new OutputBuilder(outputFile, _config, isMethodClass);
                _outputBuilders.Add(outputFile, _outputBuilder);
            }
            else
            {
                _outputBuilder.WriteLine();
            }
            _outputBuilderUsers++;

            Debug.Assert(outputFile.Equals(_outputBuilder.OutputFile));
        }