Example #1
0
		private void CreateOrUpdateData([NotNull] IT4File t4File) {
			IPsiSourceFile sourceFile = t4File.GetSourceFile();
			if (sourceFile == null || !sourceFile.LanguageType.Is<T4ProjectFileType>())
				return;

			var newData = new T4FileData(t4File, _directiveInfoManager);
			T4FileData existingData;
			lock (_fileDataBySourceFile) {
				_fileDataBySourceFile.TryGetValue(sourceFile, out existingData);
				_fileDataBySourceFile[sourceFile] = newData;
			}

			T4FileDataDiff diff = newData.DiffWith(existingData);
			if (diff != null)
				_fileDataChanged.Fire(Pair.Of(sourceFile, diff));
		}
Example #2
0
        public T4FileDataDiff DiffWith([CanBeNull] T4FileData oldData)
        {
            if (oldData == null)
            {
                if (_referencedAssemblies.Count == 0 && _macros.Count == 0)
                {
                    return(null);
                }
                return(new T4FileDataDiff(_referencedAssemblies, EmptyList <string> .InstanceList, _macros));
            }

            string[] addedMacros = _macros.Except(oldData._macros).ToArray();
            oldData._referencedAssemblies.Compare(_referencedAssemblies, out JetHashSet <string> addedAssemblies, out JetHashSet <string> removedAssemblies);

            if (addedMacros.Length == 0 && addedAssemblies.Count == 0 && removedAssemblies.Count == 0)
            {
                return(null);
            }

            return(new T4FileDataDiff(addedAssemblies, removedAssemblies, addedMacros));
        }
Example #3
0
        private void CreateOrUpdateData([NotNull] IT4File t4File)
        {
            IPsiSourceFile sourceFile = t4File.GetSourceFile();

            if (sourceFile == null || !sourceFile.LanguageType.Is <T4ProjectFileType>())
            {
                return;
            }

            var        newData = new T4FileData(t4File, _directiveInfoManager);
            T4FileData existingData;

            lock (_fileDataBySourceFile) {
                _fileDataBySourceFile.TryGetValue(sourceFile, out existingData);
                _fileDataBySourceFile[sourceFile] = newData;
            }

            T4FileDataDiff diff = newData.DiffWith(existingData);

            if (diff != null)
            {
                _fileDataChanged.Fire(Pair.Of(sourceFile, diff));
            }
        }