public EpsgCrs GetByKey(uint targetKey) { var hasMetrics = _areFileMetricsRead; if (hasMetrics) { if (targetKey < _lowKey || targetKey > _highKey) { return(null); } } using (var reader = DataFile.Get()) { if (!hasMetrics) { ReadFileMetrics(reader); if (targetKey < _lowKey || targetKey > _highKey) { return(null); } } return(GetByBinarySearch(targetKey, reader.BinaryReader)); } }
private EpsgDataResourceReaderNumbers() { _preloadDouble = new double[8]; using (var reader = ReaderDouble.Get(0)) { for (var i = 0; i < _preloadDouble.Length; ++i) { _preloadDouble[i] = reader.BinaryReader.ReadDouble(); } } _preloadInt = new int[16]; using (var reader = ReaderInt.Get(0)) { for (var i = 0; i < _preloadInt.Length; ++i) { _preloadInt[i] = reader.BinaryReader.ReadInt32(); } } _preloadShort = new short[32]; using (var reader = ReaderShort.Get(0)) { for (var i = 0; i < _preloadShort.Length; ++i) { _preloadShort[i] = reader.BinaryReader.ReadInt16(); } } }
static EpsgDataResourceReaderText() { _preload = new string[64]; using (var datReader = DatReader.Get()) using (var txtReader = TxtReader.Get()) { for (int i = 0; i < _preload.Length; ++i) { var word = ReadWord(i, datReader.BinaryReader, txtReader.BinaryReader); _preload[i] = String.IsInterned(word) ?? word; } } }
public EpsgParameterUsage[] GetParameterUsages() { Contract.Ensures(Contract.Result <EpsgParameterUsage[]>() != null); if (_usagesCache == null) { using (var reader = _dataFile.Get()) { _usagesCache = ReadParameterUsages(reader.BinaryReader); } } Contract.Assume(_usagesCache != null); return((EpsgParameterUsage[])_usagesCache.Clone()); // always return a new array to prevent mutation }
public IEnumerable <TValue> ReadAllValues() { using (var reader = DataFile.Get()) { if (!_areFileMetricsRead) { ReadFileMetrics(reader); } reader.CoreStream.Seek(sizeof(ushort), SeekOrigin.Begin); for (ushort i = 0; i < _count; ++i) { var key = reader.BinaryReader.ReadUInt16(); var value = ReadValue(key, reader.BinaryReader); yield return(value); } } }
public string GetString(ushort stringOffset) { Contract.Requires(stringOffset != UInt16.MaxValue); if (stringOffset == UInt16.MaxValue) { return(String.Empty); } int[] wordIndices; using (var reader = _wordPointerResource.Get(stringOffset)) { wordIndices = Read7BitArray(reader.BinaryReader); } return(BuildWordString(wordIndices)); }
protected override int[] ReadValue(ushort key, BinaryReader reader) { var c = reader.ReadUInt16(); var offset = reader.ReadInt32(); var result = new int[c]; if (c == 1) { result[0] = offset; // value stored as offset in this case } else { using (var setReader = _secondaryDataFile.Get(sizeof(ushort) + (CountValue * RecordTotalSize) + (offset * sizeof(int)))) { for (int i = 0; i < result.Length; ++i) { result[i] = setReader.BinaryReader.ReadInt32(); } } } return(result); }
protected override EpsgConcatenatedCoordinateOperationInfo ReadValue(ushort key, BinaryReader reader) { var sourceCrsCode = reader.ReadUInt16(); var targetCrsCode = reader.ReadUInt16(); var areaCode = reader.ReadUInt16(); var deprecated = reader.ReadByte() != 0; var name = TextReader.GetString(reader.ReadUInt16()); Contract.Assume(!String.IsNullOrEmpty(name)); var stepCodes = new ushort[reader.ReadByte()]; var stepFileOffset = reader.ReadUInt16(); using (var readerPath = _pathDataFile.Get(stepFileOffset)) { for (int i = 0; i < stepCodes.Length; i++) { stepCodes[i] = readerPath.BinaryReader.ReadUInt16(); } } return(new EpsgConcatenatedCoordinateOperationInfo( key, sourceCrsCode, targetCrsCode, areaCode, deprecated, name, stepCodes )); }