Example #1
0
 public static void StartWatcher(WatcherType watcherType, string fileName, IStreamReader streamReader, ISleeper sleeper)
 {
     var watcher = CreateWatcherInternal(watcherType, streamReader, sleeper);
     watcher.Configuration = GetDefaultFileWatcherConfiguration(fileName);
     AddWatcherToPool(watcher);
     watcher.Start();
 }
Example #2
0
 public static bool IsSharedStream(IStreamReader reader)
 {
     if (SUPPORT_SHARED_STREAMS)
         return c_sharedStreams.ContainsKey(reader.Path);
     else
         return false;
 }
Example #3
0
        public static void StartWatcher(WatcherType watcherType, FileWatchConfiguration fileWatchConfiguration,
            IStreamReader streamReader, ISleeper sleeper)
        {
            var watcher = CreateWatcherInternal(watcherType, streamReader, sleeper);
            watcher.Configuration = fileWatchConfiguration;

            AddWatcherToPool(watcher);
            watcher.Start();
        }
Example #4
0
 private static IWatcher CreateWatcherInternal(WatcherType watcherType, IStreamReader streamReader, ISleeper sleeper)
 {
     switch (watcherType)
     {
         case WatcherType.File:
             return new FileWatcher(streamReader, sleeper);
         default:
             throw new NotImplementedException($"Factory method for {watcherType} not implemented");
     }
 }
        public async Task<IHttpRequest> Provide(IStreamReader reader)
        {
            // parse the http request
            var request = await reader.ReadLine().ConfigureAwait(false);

            if (request == null)
                return null;

            var firstSpace = request.IndexOf(' ');
            var lastSpace = request.LastIndexOf(' ');

            var tokens = new []
            {
                request.Substring(0, firstSpace),
                request.Substring(firstSpace + 1, lastSpace - firstSpace - 1),
                request.Substring(lastSpace + 1)
            };

            if (tokens.Length != 3)
            {
                return null;
            }

            
            var httpProtocol = tokens[2];

            var url = tokens[1];
            var queryString = GetQueryStringData(ref url);
            var uri = new Uri(url, UriKind.Relative);

            var headersRaw = new List<KeyValuePair<string, string>>();

            // get the headers
            string line;

            while (!string.IsNullOrEmpty((line = await reader.ReadLine().ConfigureAwait(false))))
            {
                string currentLine = line;

                var headerKvp = SplitHeader(currentLine);
                headersRaw.Add(headerKvp);
            }

            IHttpHeaders headers = new HttpHeaders(headersRaw.ToDictionary(k => k.Key, k => k.Value, StringComparer.InvariantCultureIgnoreCase));
            IHttpPost post = await GetPostData(reader, headers).ConfigureAwait(false);

            string verb;
            if (!headers.TryGetByName("_method", out verb))
            {
                verb = tokens[0];
            }
            var httpMethod = HttpMethodProvider.Default.Provide(verb);
            return new HttpRequest(headers, httpMethod, httpProtocol, uri,
                uri.OriginalString.Split(Separators, StringSplitOptions.RemoveEmptyEntries), queryString, post);
        }
Example #6
0
        public static void WriteRecordToStream(StreamWriter writer, IStreamReader reader, Record record)
        {
            Int64 position = reader.Position;

              reader.Position = record.Start;
              while (reader.Position < record.End)
              {
            writer.WriteLine(reader.ReadLine());
              }

              reader.Position = position;
        }
        public PointCloudBinarySourceEnumerator(IPointCloudBinarySourceSequentialEnumerable source, ProgressManagerProcess process)
        {
            m_source = source;
            m_stream = m_source.GetStreamReader();
            m_buffer = process.AcquireBuffer(true);
            m_process = process;

            m_endPosition = m_source.PointDataOffset + m_source.Count * m_source.PointSizeBytes;

            m_usableBytesPerBuffer = (m_buffer.Length / m_source.PointSizeBytes) * m_source.PointSizeBytes;

            Reset();
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="PointCloudBinarySourceEnumerator"/> class.
        /// This version does not use a process, so that it can be managed by a composite.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <param name="buffer">The buffer.</param>
        public PointCloudBinarySourceEnumerator(IPointCloudBinarySourceSequentialEnumerable source, BufferInstance buffer)
        {
            m_source = source;
            m_stream = m_source.GetStreamReader();
            m_buffer = buffer;
            m_process = null;

            m_endPosition = m_source.PointDataOffset + m_source.Count * m_source.PointSizeBytes;

            m_usableBytesPerBuffer = (m_buffer.Length / m_source.PointSizeBytes) * m_source.PointSizeBytes;

            Reset();
        }
Example #9
0
        public override void SetInputSource(int index, IStreamReader stream)
        {
            if (index != 0)
                throw new ArgumentOutOfRangeException(nameof(index));

            if (stream == null)
                throw new ArgumentNullException(nameof(stream));

            if (mInput != null)
                throw new InvalidOperationException();

            mInput = stream;
        }
        /// <summary>
        /// Initializes a new insance of the <see cref="RemoteFileSubscriptionStreamReader"/> class.
        /// </summary>
        /// <param name="source">The remote url to be downloaded via web client</param>
        /// <param name="downloadDirectory">The local directory and destination of the download</param>
        public RemoteFileSubscriptionStreamReader(string source, string downloadDirectory)
        {
            // create a hash for a new filename
            var filename = source.ToMD5() + source.GetExtension();
            var destination = Path.Combine(downloadDirectory, filename);

            using (var client = new WebClient())
            {
                client.Proxy = WebRequest.GetSystemWebProxy();
                client.DownloadFile(source, destination);
            }

            // now we can just use the local file reader
            _streamReader = new LocalFileSubscriptionStreamReader(destination);
        }
        public async Task<IHttpRequest> Provide(IStreamReader streamReader)
        {
            var childValue = await _child.Provide(streamReader).ConfigureAwait(false);

            if (childValue == null)
            {
                return null;
            }

            string methodName;
            if (!childValue.Headers.TryGetByName("X-HTTP-Method-Override", out methodName))
            {
                return childValue;
            }

            return new HttpRequestMethodDecorator(childValue, HttpMethodProvider.Default.Provide(methodName));
        }
Example #12
0
        public void WriteMatchedRecord(IStreamReader reader, Record record)
        {
            reader.VerifyThatObjectIsNotNull("Cannot write matched record. Parameter 'reader' is null.");
              record.VerifyThatObjectIsNotNull("Cannot write matched record. Parameter 'record' is null.");

              if (!this.DoWriteMatchedRecords)
              {
            throw new InvalidOperationException("Writer not set to write out matched record.");
              }

              if (this.matchedWriter == null)
              {
            this.matchedWriter = new StreamWriter(this.matchedFilePath);
              }

              this.statisticsCollector.RecordWrittenToOutputFile(this.matchedFilePath);

              StreamWriteOperations.WriteRecordToStream(this.matchedWriter, reader, record);
        }
Example #13
0
        public Record ReadRecord(IStreamReader reader)
        {
            Record record = null;
              var lineIDStart = (Int32)this.descriptor.LineIDStart;
              var lineIDLength = (Int32)this.descriptor.LineIDLength;
              var termStart = (Int32)this.descriptor.Term.Start;
              var termLength = (Int32)this.descriptor.Term.Length;

              while (!reader.EndOfStream)
              {
            Int64 position = reader.Position;
            var line = reader.ReadLine();
            var lineID = line.Substring(lineIDStart, lineIDLength);

            if (lineID == descriptor.HeaderID)
            {
              if (record == null)
              {
            record = new Record { Start = position };
              }
              else
              {
            record.End = position;
            reader.Position = position;
            return record;
              }
            }

            if (lineID == descriptor.Term.LineID)
            {
              record.Term = line.Substring(termStart, termLength);
            }
              }

              if (record != null)
              {
            record.End = reader.Position;
              }

              return record;
        }
Example #14
0
        private void WriteRecordsToFile(IStreamReader reader, Record record, String outputPrefix)
        {
            reader.VerifyThatObjectIsNotNull("Cannot write record. Parameter 'reader' is null.");
              record.VerifyThatObjectIsNotNull("Cannot write record. Parameter 'record' is null.");

              StreamWriter writer;
              String outputName = Path.GetDirectoryName(reader.Name) + @"\" + outputPrefix + Path.GetFileName(reader.Name);
              if (!writers.ContainsKey(outputName))
              {
            writer = new StreamWriter(outputName);
            writers.Add(outputName, writer);
              }
              else
              {
            writer = writers[outputName];
              }

              this.statisticsCollector.RecordWrittenToOutputFile(outputName);

              StreamWriteOperations.WriteRecordToStream(writer, reader, record);
        }
Example #15
0
        public Task EncodeAsync(IStreamReader input, IStreamWriter output, CancellationToken ct = default(CancellationToken))
        {
            lock (mSyncObject)
            {
                if (mDisposeTask != null)
                    throw new OperationCanceledException();

                // TODO: make this wait async as well
                while (mRunning)
                {
                    Monitor.Wait(mSyncObject);

                    if (mDisposeTask != null)
                        throw new OperationCanceledException();
                }

                mRunning = true;
            }

            var task = Task.Run(async delegate {
                var result = mEncoder.Lzma2Enc_Encode(new AsyncOutputProvider(output), new AsyncInputProvider(input), null);
                if (result != LZMA.Master.LZMA.SZ_OK)
                    throw new InvalidOperationException();

                await output.CompleteAsync().ConfigureAwait(false);
            });

            mEncoderTask = task.ContinueWith(delegate {
                lock (mSyncObject)
                {
                    System.Diagnostics.Debug.Assert(mRunning);
                    mRunning = false;
                    Monitor.PulseAll(mSyncObject);
                }
            }, CancellationToken.None, TaskContinuationOptions.DenyChildAttach, TaskScheduler.Default);

            return task;
        }
Example #16
0
        public Record ReadRecord(IStreamReader streamReader)
        {
            Record record = null;
              while (!streamReader.EndOfStream)
              {
            Int64 position = streamReader.Position;
            var line = streamReader.ReadLine();
            var lineIDTerm = line.ExtractField(this.descriptor.Delimiter, this.descriptor.Qualifier, this.descriptor.LineIDIndex);

            if (lineIDTerm == this.descriptor.HeaderID)
            {
              if (record == null)
              {
            record = new Record { Start = position };
              }
              else
              {
            record.End = position;
            streamReader.Position = position;
            return record;
              }
            }

            if (lineIDTerm != this.descriptor.Term.LineID)
            {
              continue;
            }

            record.Term = line.ExtractField(this.descriptor.Delimiter, this.descriptor.Qualifier, this.descriptor.Term.Index);
              }

              if (record != null)
              {
            record.End = streamReader.Position;
              }

              return record;
        }
        /// <summary>
        /// Fetch and set the location of the data from the user's BaseData factory:
        /// </summary>
        /// <param name="date">Date of the source file.</param>
        /// <returns>Boolean true on successfully retrieving the data</returns>
        public bool RefreshSource(DateTime date)
        {
            //Update the source from the getSource method:
            _date = date;

            // if the map file is an empty instance this will always return true
            if (!_mapFile.HasData(date))
            {
                // don't even bother checking the disk if the map files state we don't have ze dataz
                return(false);
            }

            // check for dividends and split for this security
            CheckForDividend(date);
            CheckForSplit(date);

            var newSource = "";

            //If we can find scale factor files on disk, use them. LiveTrading will aways use 1 by definition
            if (_hasScaleFactors)
            {
                // check to see if the symbol was remapped
                _mappedSymbol        = _mapFile.GetMappedSymbol(date);
                _config.MappedSymbol = _mappedSymbol;

                // update our price scaling factors in light of the normalization mode
                UpdateScaleFactors(date);
            }

            //Make sure this particular security is trading today:
            if (!_security.Exchange.DateIsOpen(date))
            {
                _endOfStream = true;
                return(false);
            }

            //Choose the new source file, hide the QC source file locations
            newSource = GetSource(date);

            //When stream over stop looping on this data.
            if (newSource == "")
            {
                _endOfStream = true;
                return(false);
            }

            //Log.Debug("SubscriptionDataReader.MoveNext(): Source Refresh: " + newSource);
            if (_source != newSource && newSource != "")
            {
                //If a new file, reset the EOS flag:
                _endOfStream = false;
                //Set the new source.
                _source = newSource;
                //Close out the last source file.
                Dispose();

                //Load the source:
                try
                {
                    //Log.Debug("SubscriptionDataReader.RefreshSource(): Created new reader for source: " + source);
                    _reader = GetReader(_source);
                }
                catch (Exception err)
                {
                    Log.Error("SubscriptionDataReader.RefreshSource(): Failed to get reader: " + err.Message);
                    //Engine.ResultHandler.DebugMessage("Failed to get a reader for the data source. There may be an error in your custom data source reader. Skipping date (" + date.ToShortDateString() + "). Err: " + err.Message);
                    return(false);
                }

                if (_reader == null)
                {
                    Log.Error("Failed to get StreamReader for data source(" + _source + "), symbol(" + _mappedSymbol + "). Skipping date(" + date.ToShortDateString() + "). Reader is null.");
                    //Engine.ResultHandler.DebugMessage("We could not find the requested data. This may be an invalid data request, failed download of custom data, or a public holiday. Skipping date (" + date.ToShortDateString() + ").");
                    if (_isDynamicallyLoadedData)
                    {
                        Engine.ResultHandler.ErrorMessage("We could not fetch the requested data. This may not be valid data, or a failed download of custom data. Skipping source (" + _source + ").");
                    }
                    return(false);
                }

                //Reset the public properties so we can explicitly set them with lastBar data.
                Current  = null;
                Previous = null;

                //99% of time, populate the first "Current". 1% of of time no source file (getReader fails), so
                // method sets the Subscription properties as if no data.
                try
                {
                    MoveNext();
                }
                catch (Exception err)
                {
                    throw new Exception("SubscriptionDataReader.RefreshSource(): Could not MoveNext to init stream: " + _source + " " + err.Message + " >> " + err.StackTrace);
                }
            }

            //Success:
            return(true);
        }
 /// <summary>
 /// The stream version of the first entry in every stream.
 /// </summary>
 public static int FirstStreamVersion <T>(this IStreamReader <T> streamReader) => 1;
Example #19
0
 public void SetOutputStream(EncoderNode encoder, int index)
 {
     mEncoderOutputToConnectionInput = encoder.GetOutputSource(index);
     if (mEncoderOutputToConnectionInput == null)
         encoder.SetOutputSink(index, this);
 }
Example #20
0
 internal AsyncInputProvider(IStreamReader stream)
 {
     mStream = stream;
 }
Example #21
0
 public void Close()
 {
     if (m_inputStream != null)
     {
         m_inputStream.Dispose();
         m_inputStream = null;
     }
 }
Example #22
0
 public static async Task<IHttpPost> Create(IStreamReader reader, int postContentLength, ILog logger)
 {
     byte[] raw = await reader.ReadBytes(postContentLength).ConfigureAwait(false);
     return new HttpPost(raw, postContentLength);
 }
Example #23
0
 private void WriteNothing(IStreamReader reader, Record record)
 {
 }
Example #24
0
 public XmlTkEndSurface(IStreamReader reader)
 {
     this.endSurface = new XmlTkEnd(reader);
 }
Example #25
0
        public SupBook(IStreamReader reader, RecordType id, ushort length)
            : base(reader, id, length)
        {
            // assert that the correct record type is instantiated
            Debug.Assert(this.Id == ID);

            this.ctab = this.Reader.ReadUInt16();

            this.cch = this.Reader.ReadUInt16();

            this.isselfreferencing             = true;
            this.isaddinreferencing            = false;
            this.isvirtpath                    = false;
            this.isexternalworkbookreferencing = false;
            this.isunusedsupportinglink        = false;

            // Check cch
            if (this.cch == 0x0401)
            {
                this.isselfreferencing = true;
            }
            else if (this.cch == 0x3A01)
            {
                this.isaddinreferencing = true;
                //0x0001 to 0x00ff (inclusive)
            }
            else if (this.cch >= 0x0001 && this.cch <= 0x00ff)
            {
                this.isvirtpath = true;
            }

            if (this.isvirtpath)
            {
                this.virtpathstring = "";
                byte firstbyte = this.Reader.ReadByte();
                int  firstbit  = firstbyte & 0x1;
                for (int i = 0; i < this.cch; i++)
                {
                    if (firstbit == 0)
                    {
                        this.virtpathstring += (char)this.Reader.ReadByte();
                        // read 1 byte per char
                    }
                    else
                    {
                        // read two byte per char
                        this.virtpathstring += System.BitConverter.ToChar(this.Reader.ReadBytes(2), 0);
                    }
                }
                this.virtpathstring = ExcelHelperClass.parseVirtualPath(this.virtpathstring);
            }

            if (this.virtpathstring != null)
            {
                if (this.virtpathstring.Equals(0x00))
                {
                    this.isselfreferencing = true;
                }
                else if (this.virtpathstring.Equals(0x20))
                {
                    this.isunusedsupportinglink = true;
                }
                else
                {
                    this.isexternalworkbookreferencing = true;
                }
            }

            if ((this.isexternalworkbookreferencing) || (this.isunusedsupportinglink))
            {
                this.rgst = new string[this.ctab];
                for (int i = 0; i < this.ctab; i++)
                {
                    ushort cch2      = this.Reader.ReadUInt16();
                    byte   firstbyte = this.Reader.ReadByte();
                    int    firstbit  = firstbyte & 0x1;
                    for (int j = 0; j < cch2; j++)
                    {
                        if (firstbit == 0)
                        {
                            this.rgst[i] += (char)this.Reader.ReadByte();
                            // read 1 byte per char
                        }
                        else
                        {
                            // read two byte per char
                            this.rgst[i] += System.BitConverter.ToChar(this.Reader.ReadBytes(2), 0);
                        }
                    }
                }
            }
            if (this.virtpathstring != null && this.virtpathstring.Length > 1)
            {
                this.isselfreferencing = false;
            }

            // assert that the correct number of bytes has been read from the stream
            Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position);
        }
Example #26
0
        public CustomViewSequence(IStreamReader reader)
            : base(reader)
        {
            // CUSTOMVIEW = UserSViewBegin *Selection [HorizontalPageBreaks] [VerticalPageBreaks] [Header]
            //    [Footer] [HCenter] [VCenter] [LeftMargin] [RightMargin] [TopMargin] [BottomMargin]
            //    [Pls] [Setup] [PrintSize] [HeaderFooter] [AUTOFILTER] UserSViewEnd


            // NOTE: UserSViewBegin and UserSViewEnd seem to be optional to!


            // UserSViewBegin
            if (BiffRecord.GetNextRecordType(reader) == RecordType.UserSViewBegin)
            {
                this.UserSViewBegin = (UserSViewBegin)BiffRecord.ReadRecord(reader);
            }

            // *Selection
            this.Selections = new List <Selection>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.Selection)
            {
                this.Selections.Add((Selection)BiffRecord.ReadRecord(reader));
            }

            // [HorizontalPageBreaks]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.HorizontalPageBreaks)
            {
                this.HorizontalPageBreaks = (HorizontalPageBreaks)BiffRecord.ReadRecord(reader);
            }

            // [VerticalPageBreaks]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.VerticalPageBreaks)
            {
                this.VerticalPageBreaks = (VerticalPageBreaks)BiffRecord.ReadRecord(reader);
            }

            // [Header]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Header)
            {
                this.Header = (Header)BiffRecord.ReadRecord(reader);
            }

            // [Footer]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Footer)
            {
                this.Footer = (Footer)BiffRecord.ReadRecord(reader);
            }

            // [HCenter]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.HCenter)
            {
                this.HCenter = (HCenter)BiffRecord.ReadRecord(reader);
            }

            // [VCenter]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.VCenter)
            {
                this.VCenter = (VCenter)BiffRecord.ReadRecord(reader);
            }

            // [LeftMargin]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.LeftMargin)
            {
                this.LeftMargin = (LeftMargin)BiffRecord.ReadRecord(reader);
            }

            // [RightMargin]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.RightMargin)
            {
                this.RightMargin = (RightMargin)BiffRecord.ReadRecord(reader);
            }

            // [TopMargin]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.TopMargin)
            {
                this.TopMargin = (TopMargin)BiffRecord.ReadRecord(reader);
            }

            // [BottomMargin]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.BottomMargin)
            {
                this.BottomMargin = (BottomMargin)BiffRecord.ReadRecord(reader);
            }

            // [Pls]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Pls)
            {
                this.Pls = (Pls)BiffRecord.ReadRecord(reader);
            }

            // [Setup]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Setup)
            {
                this.Setup = (Setup)BiffRecord.ReadRecord(reader);
            }

            // [PrintSize]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.PrintSize)
            {
                this.PrintSize = (PrintSize)BiffRecord.ReadRecord(reader);
            }

            // [HeaderFooter]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.HeaderFooter)
            {
                this.HeaderFooter = (HeaderFooter)BiffRecord.ReadRecord(reader);
            }

            // [AUTOFILTER]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.AutoFilterInfo)
            {
                this.AutoFilterSequence = new AutoFilterSequence(reader);
            }

            // UserSViewEnd
            if (BiffRecord.GetNextRecordType(reader) == RecordType.UserSViewEnd)
            {
                this.UserSViewEnd = (UserSViewEnd)BiffRecord.ReadRecord(reader);
            }
        }
Example #27
0
 public XmlTkMinFrt(IStreamReader reader)
 {
     this.minScale = new XmlTkDouble(reader);
 }
 public XmlTkMajorUnitFrt(IStreamReader reader)
 {
     this.majorUnit = new XmlTkDouble(reader);
 }
Example #29
0
 public XmlTkPerspectiveFrt(IStreamReader reader)
 {
     this.perspectiveAngle = new XmlTkDWord(reader);   
 }
        /// <summary>
        /// Creates a file with the content from the given stream.
        /// </summary>
        /// <param name="streamReader">input stream</param>
        /// <param name="filePath">the file path where the output is written to.</param>
        public void CreateFileFromStream(IStreamReader streamReader, string filePath)
        {
            if (streamReader == null || streamReader.BaseStream == null || streamReader.BaseStream.Length <= 0)
            {
                return;
            }

            using (var fileStreamWrap = new FileStreamWrap(filePath, FileMode.Create, FileAccess.Write))
            {
                fileStreamWrap.CopyFromStream(streamReader.BaseStream);
            }
        }
Example #31
0
        public Formula(IStreamReader reader, RecordType id, ushort length)
            : base(reader, id, length)
        {
            // assert that the correct record type is instantiated
            Debug.Assert(this.Id == ID);
            this.val          = new byte[8];
            this.rw           = reader.ReadUInt16();
            this.col          = reader.ReadUInt16();
            this.ixfe         = reader.ReadUInt16();
            this.boolValueSet = false;

            long oldStreamPosition = this.Reader.BaseStream.Position;

            this.val = reader.ReadBytes(8); // read 8 bytes for the value of the formular
            ProcessFormulaValue();


            this.grbit    = reader.ReadUInt16();
            this.chn      = reader.ReadUInt32(); // this is used for performance reasons only
            this.cce      = reader.ReadUInt16();
            this.ptgStack = new Stack <AbstractPtg>();
            // reader.ReadBytes(this.cce);

            // check always calc mode
            this.fAlwaysCalc = Utils.BitmaskToBool((int)this.grbit, 0x01);

            // check if shared formula
            this.fShrFmla = Utils.BitmaskToBool((int)this.grbit, 0x08);

            // check if this should ignore error checking
            this.fClearErrors = Utils.BitmaskToBool(this.grbit, 0x20);


            oldStreamPosition = this.Reader.BaseStream.Position;
            if (!this.fShrFmla)
            {
                try
                {
                    this.ptgStack = ExcelHelperClass.getFormulaStack(this.Reader, this.cce);
                }
                catch (Exception ex)
                {
                    this.Reader.BaseStream.Seek(oldStreamPosition, System.IO.SeekOrigin.Begin);
                    this.Reader.BaseStream.Seek(this.cce, System.IO.SeekOrigin.Current);
                    TraceLogger.Error("Formula parse error in Row {0} Column {1}", this.rw, this.col);
                    TraceLogger.Debug(ex.StackTrace);
                    TraceLogger.Debug("Inner exception: {0}", ex.InnerException.StackTrace);
                }
            }
            else
            {
                //If the next expression isn't 5 bytes long, it's not a PtgExp shared formula reference...just ignore for now
                if (this.cce != 5)
                {
                    reader.ReadBytes(this.cce);
                }

                //First 8 bits are reserved, must be 1 but we'll ignore them for now
                byte ptg = reader.ReadByte();
                //Next two bytes are the row containing the shared formula
                sharedRow = reader.ReadUInt16();
                //then the col containing the shared formula
                sharedCol = reader.ReadUInt16();
            }


            // assert that the correct number of bytes has been read from the stream
            Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position);
        }
Example #32
0
        public AttachedLabelSequence(IStreamReader reader)
            : base(reader)
        {
            //ATTACHEDLABEL = Text Begin Pos [FontX] [AlRuns] AI [FRAME] [ObjectLink] [DataLabExtContents] [CrtLayout12] [TEXTPROPS] [CRTMLFRT] End

            //Text
            this.Text = (Text)BiffRecord.ReadRecord(reader);

            //Begin
            this.Begin = (Begin)BiffRecord.ReadRecord(reader);

            //Pos
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Pos)
            {
                this.Pos = (Pos)BiffRecord.ReadRecord(reader);
            }

            //[FontX]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.FontX)
            {
                this.FontX = (FontX)BiffRecord.ReadRecord(reader);
            }

            //[AlRuns]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.AlRuns)
            {
                this.AlRuns = (AlRuns)BiffRecord.ReadRecord(reader);
            }

            //AI
            if (BiffRecord.GetNextRecordType(reader) == RecordType.BRAI)
            {
                this.AiSequence = new AiSequence(reader);
            }

            //[FRAME]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Frame)
            {
                this.FrameSequence = new FrameSequence(reader);
            }

            //[ObjectLink]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.ObjectLink)
            {
                this.ObjectLink = (ObjectLink)BiffRecord.ReadRecord(reader);
            }

            //[DataLabExtContents]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.DataLabExtContents)
            {
                this.DataLabExtContents = (DataLabExtContents)BiffRecord.ReadRecord(reader);
            }

            //[CrtLayout12]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtLayout12)
            {
                this.CrtLayout12 = (CrtLayout12)BiffRecord.ReadRecord(reader);
            }

            //[TEXTPROPS]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.RichTextStream ||
                BiffRecord.GetNextRecordType(reader) == RecordType.TextPropsStream)
            {
                this.TextPropsSequence = new TextPropsSequence(reader);
            }

            //[CRTMLFRT]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtMlFrt)
            {
                this.CrtMlfrtSequence = new CrtMlfrtSequence(reader);
            }

            //End
            this.End = (End)BiffRecord.ReadRecord(reader);
        }
Example #33
0
 public override object ReadValue(IStreamReader reader, ISerializeContext context)
 {
     return(NullableRead(reader, () => reader.ReadBool()));
 }
Example #34
0
        public static Stack <AbstractPtg> getFormulaStack(IStreamReader reader, ushort cce)
        {
            var ptgStack = new Stack <AbstractPtg>();

            try
            {
                for (uint i = 0; i < cce; i++)
                {
                    var ptgtype = (PtgNumber)reader.ReadByte();

                    AbstractPtg.PtgDataType dt = AbstractPtg.PtgDataType.REFERENCE;

                    if ((int)ptgtype > 0x5D)
                    {
                        ptgtype -= 0x40;
                        dt       = AbstractPtg.PtgDataType.ARRAY;
                    }

                    else if ((int)ptgtype > 0x3D)
                    {
                        ptgtype -= 0x20;
                        dt       = AbstractPtg.PtgDataType.VALUE;
                    }
                    AbstractPtg ptg = null;
                    if (ptgtype == PtgNumber.Ptg0x19Sub)
                    {
                        var ptgtype2 = (Ptg0x19Sub)reader.ReadByte();
                        switch (ptgtype2)
                        {
                        case Ptg0x19Sub.PtgAttrSum: ptg = new PtgAttrSum(reader, ptgtype2); break;

                        case Ptg0x19Sub.PtgAttrIf: ptg = new PtgAttrIf(reader, ptgtype2); break;

                        case Ptg0x19Sub.PtgAttrGoto: ptg = new PtgAttrGoto(reader, ptgtype2); break;

                        case Ptg0x19Sub.PtgAttrSemi: ptg = new PtgAttrSemi(reader, ptgtype2); break;

                        case Ptg0x19Sub.PtgAttrChoose: ptg = new PtgAttrChoose(reader, ptgtype2); break;

                        case Ptg0x19Sub.PtgAttrSpace: ptg = new PtgAttrSpace(reader, ptgtype2); break;

                        case Ptg0x19Sub.PtgAttrBaxcel1: ptg = new PtgAttrBaxcel(reader, ptgtype2, false); break;

                        case Ptg0x19Sub.PtgAttrBaxcel2: ptg = new PtgAttrBaxcel(reader, ptgtype2, true); break;

                        case Ptg0x19Sub.PtgNotDocumented: ptg = new PtgNotDocumented(reader, ptgtype2); break;

                        default: break;
                        }
                    }
                    else if (ptgtype == PtgNumber.Ptg0x18Sub)
                    {
                    }
                    else
                    {
                        switch (ptgtype)
                        {
                        case PtgNumber.PtgInt: ptg = new PtgInt(reader, ptgtype); break;

                        case PtgNumber.PtgAdd: ptg = new PtgAdd(reader, ptgtype); break;

                        case PtgNumber.PtgSub: ptg = new PtgSub(reader, ptgtype); break;

                        case PtgNumber.PtgMul: ptg = new PtgMul(reader, ptgtype); break;

                        case PtgNumber.PtgDiv: ptg = new PtgDiv(reader, ptgtype); break;

                        case PtgNumber.PtgParen: ptg = new PtgParen(reader, ptgtype); break;

                        case PtgNumber.PtgNum: ptg = new PtgNum(reader, ptgtype); break;

                        case PtgNumber.PtgArray: ptg = new PtgArray(reader, ptgtype); break;

                        case PtgNumber.PtgRef: ptg = new PtgRef(reader, ptgtype); break;

                        case PtgNumber.PtgRefN: ptg = new PtgRefN(reader, ptgtype); break;

                        case PtgNumber.PtgPower: ptg = new PtgPower(reader, ptgtype); break;

                        case PtgNumber.PtgPercent: ptg = new PtgPercent(reader, ptgtype); break;

                        case PtgNumber.PtgBool: ptg = new PtgBool(reader, ptgtype); break;

                        case PtgNumber.PtgGt: ptg = new PtgGt(reader, ptgtype); break;

                        case PtgNumber.PtgGe: ptg = new PtgGe(reader, ptgtype); break;

                        case PtgNumber.PtgLt: ptg = new PtgLt(reader, ptgtype); break;

                        case PtgNumber.PtgLe: ptg = new PtgLe(reader, ptgtype); break;

                        case PtgNumber.PtgEq: ptg = new PtgEq(reader, ptgtype); break;

                        case PtgNumber.PtgNe: ptg = new PtgNe(reader, ptgtype); break;

                        case PtgNumber.PtgUminus: ptg = new PtgUminus(reader, ptgtype); break;

                        case PtgNumber.PtgUplus: ptg = new PtgUplus(reader, ptgtype); break;

                        case PtgNumber.PtgStr: ptg = new PtgStr(reader, ptgtype); break;

                        case PtgNumber.PtgConcat: ptg = new PtgConcat(reader, ptgtype); break;

                        case PtgNumber.PtgUnion: ptg = new PtgUnion(reader, ptgtype); break;

                        case PtgNumber.PtgIsect: ptg = new PtgIsect(reader, ptgtype); break;

                        case PtgNumber.PtgMemErr: ptg = new PtgMemErr(reader, ptgtype); break;

                        case PtgNumber.PtgArea: ptg = new PtgArea(reader, ptgtype); break;

                        case PtgNumber.PtgAreaN: ptg = new PtgAreaN(reader, ptgtype); break;

                        case PtgNumber.PtgFuncVar: ptg = new PtgFuncVar(reader, ptgtype); break;

                        case PtgNumber.PtgFunc: ptg = new PtgFunc(reader, ptgtype); break;

                        case PtgNumber.PtgExp: ptg = new PtgExp(reader, ptgtype); break;

                        case PtgNumber.PtgRef3d: ptg = new PtgRef3d(reader, ptgtype); break;

                        case PtgNumber.PtgArea3d: ptg = new PtgArea3d(reader, ptgtype); break;

                        case PtgNumber.PtgNameX: ptg = new PtgNameX(reader, ptgtype); break;

                        case PtgNumber.PtgName: ptg = new PtgName(reader, ptgtype); break;

                        case PtgNumber.PtgMissArg: ptg = new PtgMissArg(reader, ptgtype); break;

                        case PtgNumber.PtgRefErr: ptg = new PtgRefErr(reader, ptgtype); break;

                        case PtgNumber.PtgRefErr3d: ptg = new PtgRefErr3d(reader, ptgtype); break;

                        case PtgNumber.PtgAreaErr: ptg = new PtgAreaErr(reader, ptgtype); break;

                        case PtgNumber.PtgAreaErr3d: ptg = new PtgAreaErr3d(reader, ptgtype); break;

                        case PtgNumber.PtgMemFunc: ptg = new PtgMemFunc(reader, ptgtype); break;

                        case PtgNumber.PtgMemArea: ptg = new PtgMemArea(reader, ptgtype); break;

                        case PtgNumber.PtgErr: ptg = new PtgErr(reader, ptgtype); break;

                        case PtgNumber.PtgRange: ptg = new PtgRange(reader, ptgtype); break;

                        default: break;
                        }
                    }
                    i += ptg.getLength() - 1;

                    ptg.dataType = dt;
                    ptgStack.Push(ptg);
                }
            }
            catch (Exception ex)
            {
                throw new ExtractorException(ExtractorException.PARSEDFORMULAEXCEPTION, ex);
            }

            return(ptgStack);
        }
Example #35
0
 public XmlTkTpb(IStreamReader reader)
 {
     this.textPropsStream = new XmlTkBlob(reader);
 }
 public XmlTkPieComboFrom12Frt(IStreamReader reader)
 {
     this.fPieCombo = new XmlTkBool(reader);
 }
Example #37
0
 public void Open()
 {
     if (m_inputStream == null)
     {
         m_inputStream = StreamManager.OpenReadStream(FilePath, PointDataOffset);
     }
 }
 public XmlTkFormatCodeFrt(IStreamReader reader)
 {
     this.stFormat = new XmlTkString(reader);
 }
Example #39
0
 public XmlTkTickMarkSkipFrt(IStreamReader reader)
 {
     this.nInternal = new XmlTkDWord(reader);
 }
 public XmlTkTickLabelPositionFrt(IStreamReader reader)
 {
     this.xmltkHigh = new XmlTkToken(reader);
 }
Example #41
0
 public abstract void SetInputSource(int index, IStreamReader stream);
Example #42
0
        public object ReadValue(IStreamReader reader, ISerializeContext context)
        {
            byte contentType = reader.ReadUInt8();

            context.Key = this.Name;

            if (contentType == ValueItem.CollectionObjectIdent)
            {
                int count = reader.ReadInt32();

                if (isArray)
                {
                    Array array = Array.CreateInstance(itemType, count);

                    if (isByteArray)
                    {
                        return(reader.ReadBytes(count).ToArray());
                    }
                    else
                    {
                        for (int i = 0; i < count; i++)
                        {
                            context.ArrayIndex = i;
                            var item = itemStructure.ReadValue(reader, context);
                            array.SetValue(item, i);
                        }
                        context.ArrayIndex = null;
                    }
                    return(array);
                }
                else if (implementsIList)
                {
                    IList coll = (IList)TypeService.CreateInstance(targetCollectionType);

                    for (int i = 0; i < count; i++)
                    {
                        context.ArrayIndex = i;
                        var item = itemStructure.ReadValue(reader, context);
                        coll.Add(item);
                    }
                    context.ArrayIndex = null;

                    return(coll);
                }
                else
                {
                    object specialColl = TypeService.CreateInstance(targetCollectionType);

                    for (int i = 0; i < count; i++)
                    {
                        context.ArrayIndex = i;
                        var item = itemStructure.ReadValue(reader, context);
                        specialCollAddMethod.Invoke(specialColl, new object[] { item });
                    }
                    context.ArrayIndex = null;

                    return(specialColl);
                }
            }
            else if (contentType == ValueItem.NullValueIdent)
            {
                return(null);
            }
            else if (contentType == ValueItem.TypeMetaInfo)
            {
                TypeMetaStructure.SkipTypeMetaInfo(reader);
                return(this.ReadValue(reader, context));
            }
            else
            {
                throw new InvalidOperationException($"Type ident {contentType} not expected!");
            }
        }
 private static async Task<IHttpPost> GetPostData(IStreamReader streamReader, IHttpHeaders headers)
 {
     int postContentLength;
     IHttpPost post;
     if (headers.TryGetByName("content-length", out postContentLength) && postContentLength > 0)
     {
         post = await HttpPost.Create(streamReader, postContentLength, Logger).ConfigureAwait(false);
     }
     else
     {
         post = EmptyHttpPost.Empty;
     }
     return post;
 }
 public XmlTkColorMappingOverride(IStreamReader reader)
 {
     this.rgThemeOverride = new XmlTkBlob(reader);
 }
Example #45
0
        public ChartSheetContentSequence(IStreamReader reader)
            : base(reader)
        {
            // reset id counter for chart groups
            ChartFormatIdGenerator.Instance.StartNewChartsheetSubstream();
            ChartAxisIdGenerator.Instance.StartNewChartsheetSubstream();

            // CHARTSHEETCONTENT = [WriteProtect] [SheetExt] [WebPub] *HFPicture PAGESETUP PrintSize [HeaderFooter] [BACKGROUND] *Fbi *Fbi2 [ClrtClient] [PROTECTION]
            //          [Palette] [SXViewLink] [PivotChartBits] [SBaseRef] [MsoDrawingGroup] OBJECTS Units CHARTFOMATS SERIESDATA *WINDOW *CUSTOMVIEW [CodeName] [CRTMLFRT] EOF

            // [WriteProtect]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.WriteProtect)
            {
                this.WriteProtect = (WriteProtect)BiffRecord.ReadRecord(reader);
            }

            // [SheetExt]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.SheetExt)
            {
                this.SheetExt = (SheetExt)BiffRecord.ReadRecord(reader);
            }

            // [WebPub]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.WebPub)
            {
                this.WebPub = (WebPub)BiffRecord.ReadRecord(reader);
            }

            // *HFPicture
            while (BiffRecord.GetNextRecordType(reader) == RecordType.HFPicture)
            {
                this.HFPictures.Add((HFPicture)BiffRecord.ReadRecord(reader));
            }

            // PAGESETUP
            this.PageSetupSequence = new PageSetupSequence(reader);

            // PrintSize
            if (BiffRecord.GetNextRecordType(reader) == RecordType.PrintSize)
            {
                this.PrintSize = (PrintSize)BiffRecord.ReadRecord(reader);
            }

            // [HeaderFooter]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.HeaderFooter)
            {
                this.HeaderFooter = (HeaderFooter)BiffRecord.ReadRecord(reader);
            }

            // [BACKGROUND]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.BkHim)
            {
                this.BackgroundSequence = new BackgroundSequence(reader);
            }

            // *Fbi
            this.Fbis = new List <Fbi>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.Fbi)
            {
                this.Fbis.Add((Fbi)BiffRecord.ReadRecord(reader));
            }

            // *Fbi2
            this.Fbi2s = new List <Fbi2>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.Fbi2)
            {
                this.Fbi2s.Add((Fbi2)BiffRecord.ReadRecord(reader));
            }

            // [ClrtClient]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.ClrtClient)
            {
                this.ClrtClient = (ClrtClient)BiffRecord.ReadRecord(reader);
            }

            // [PROTECTION]
            this.ProtectionSequence = new ProtectionSequence(reader);

            // [Palette]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Palette)
            {
                this.Palette = (Palette)BiffRecord.ReadRecord(reader);
            }

            // [SXViewLink]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.SXViewLink)
            {
                this.SXViewLink = (SXViewLink)BiffRecord.ReadRecord(reader);
            }

            // [PivotChartBits]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.PivotChartBits)
            {
                this.PivotChartBits = (PivotChartBits)BiffRecord.ReadRecord(reader);
            }

            // [SBaseRef]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.SBaseRef)
            {
                this.SBaseRef = (SBaseRef)BiffRecord.ReadRecord(reader);
            }

            // [MsoDrawingGroup]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.MsoDrawingGroup)
            {
                this.MsoDrawingGroup = (MsoDrawingGroup)BiffRecord.ReadRecord(reader);
            }

            // OBJECTS
            this.ObjectsSequence = new ObjectsSequence(reader);

            // Units
            this.Units = (Units)BiffRecord.ReadRecord(reader);

            // CHARTFOMATS
            this.ChartFormatsSequence = new ChartFormatsSequence(reader);

            // SERIESDATA
            this.SeriesDataSequence = new SeriesDataSequence(reader);

            // *WINDOW
            this.WindowSequences = new List <WindowSequence>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.Window2)
            {
                this.WindowSequences.Add(new WindowSequence(reader));
            }

            // *CUSTOMVIEW
            this.CustomViewSequences = new List <CustomViewSequence>();

            // CUSTOMVIEW seems to be totally optional,
            // so check for the existence of the next sequences
            while (BiffRecord.GetNextRecordType(reader) != RecordType.CodeName &&
                   BiffRecord.GetNextRecordType(reader) != RecordType.CrtMlFrt &&
                   BiffRecord.GetNextRecordType(reader) != RecordType.EOF)
            {
                this.CustomViewSequences.Add(new CustomViewSequence(reader));
            }

            //this.CustomViewSequences = new List<CustomViewSequence>();
            //while (BiffRecord.GetNextRecordType(reader) == RecordType.UserSViewBegin)
            //{
            //    this.CustomViewSequences.Add(new CustomViewSequence(reader));
            //}

            // [CodeName]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CodeName)
            {
                this.CodeName = (CodeName)BiffRecord.ReadRecord(reader);
            }

            // NOTE: The occurence of a HeaderFooter record at this position in the sequence
            //    is a deviation from the spec. However it has been encountered in certain
            //    test documents
            //
            // [HeaderFooter]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.HeaderFooter)
            {
                this.HeaderFooter = (HeaderFooter)BiffRecord.ReadRecord(reader);
            }

            // [CRTMLFRT]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtMlFrt)
            {
                this.CrtMlfrtSequence = new CrtMlfrtSequence(reader);
            }

            // EOF
            this.EOF = (EOF)BiffRecord.ReadRecord(reader);
        }
Example #46
0
 public void WriteUnmatchedRecord(IStreamReader reader, Record record)
 {
     WriteRecordsToFile(reader, record, "Unmatched_From_");
 }
Example #47
0
 public override void SetInputSource(int index, IStreamReader stream)
 {
     throw new InternalFailureException();
 }
Example #48
0
		public int ReadTile(IStreamReader inputStream, byte[] inputBuffer)
		{
			return ReadTile(inputStream, inputBuffer, 0);
		}
Example #49
0
        public CrtSequence(IStreamReader reader)
            : base(reader)
        {
            // ChartFormat
            //   Begin
            //     (Bar / Line / (BopPop [BopPopCustom]) / Pie / Area / Scatter / Radar / RadarArea / Surf)
            //     CrtLink [SeriesList] [Chart3d] [LD] [2DROPBAR] *4(CrtLine LineFormat) *2DFTTEXT [DataLabExtContents] [SS] *4SHAPEPROPS
            //   End

            // ChartFormat
            this.ChartFormat = (ChartFormat)BiffRecord.ReadRecord(reader);

            // Begin
            this.Begin = (Begin)BiffRecord.ReadRecord(reader);

            // (Bar / Line / (BopPop [BopPopCustom]) / Pie / Area / Scatter / Radar / RadarArea / Surf)
            this.ChartType = BiffRecord.ReadRecord(reader);
            if (BiffRecord.GetNextRecordType(reader) == RecordType.BopPopCustom)
            {
                this.BopPopCustom = (BopPopCustom)BiffRecord.ReadRecord(reader);
            }

            // CrtLink
            this.CrtLink = (CrtLink)BiffRecord.ReadRecord(reader);

            // [SeriesList]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.SeriesList)
            {
                this.SeriesList = (SeriesList)BiffRecord.ReadRecord(reader);
            }

            // [Chart3d]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Chart3d)
            {
                this.Chart3d = (Chart3d)BiffRecord.ReadRecord(reader);
            }

            // [LD]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Legend)
            {
                this.LdSequence = new LdSequence(reader);
            }

            // [2DROPBAR]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.DropBar)
            {
                this.DropBarSequence = new DropBarSequence[2];
                for (int i = 0; i < 2; i++)
                {
                    this.DropBarSequence[i] = new DropBarSequence(reader);
                }
            }

            //*4(CrtLine LineFormat)
            this.CrtLineGroups = new List <CrtLineGroup>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.CrtLine)
            {
                this.CrtLineGroups.Add(new CrtLineGroup(reader));
            }

            //*2DFTTEXT
            this.DftTextSequences = new List <DftTextSequence>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.DataLabExt ||
                   BiffRecord.GetNextRecordType(reader) == RecordType.DefaultText)
            {
                this.DftTextSequences.Add(new DftTextSequence(reader));
            }

            //[DataLabExtContents]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.DataLabExtContents)
            {
                this.DataLabExtContents = (DataLabExtContents)BiffRecord.ReadRecord(reader);
            }

            //[SS]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.DataFormat)
            {
                this.SsSequence = new SsSequence(reader);
            }

            //*4SHAPEPROPS
            this.ShapePropsSequences = new List <ShapePropsSequence>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.ShapePropsStream)
            {
                this.ShapePropsSequences.Add(new ShapePropsSequence(reader));
            }

            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtMlFrt)
            {
                var crtmlfrtseq = new CrtMlfrtSequence(reader);
            }


            this.End = (End)BiffRecord.ReadRecord(reader);
        }
Example #50
0
        public XF(IStreamReader reader, RecordType id, UInt16 length)
            : base(reader, id, length)
        {
            // assert that the correct record type is instantiated
            Debug.Assert(this.Id == ID);

            this.ifnt      = reader.ReadUInt16();
            this.ifmt      = reader.ReadUInt16();
            this.ixfParent = reader.ReadUInt16();


            this.fLocked    = ((int)this.ixfParent & 0x01);
            this.fHidden    = ((int)this.ixfParent & 0x02) >> 1;
            this.fStyle     = ((int)this.ixfParent & 0x04) >> 2;
            this.f123Prefix = ((int)this.ixfParent & 0x08) >> 3;

            this.ixfParent = this.ixfParent & 0xFFF0;

            /// create a buffer value
            UInt32 buffer = reader.ReadUInt16();

            /// alc - fWrap - alcV - fJustLast - trot
            /// Offset 10
            this.alc       = (int)buffer & 0x00000007;
            this.fWrap     = (int)buffer & 0x00000008;
            this.alcV      = (int)(buffer & 0x00000070) >> 0x04;
            this.fJustLast = (int)(buffer & 0x00000080) >> 0x07;
            this.trot      = (int)(buffer & 0x0000FF00) >> 0x08;

            ///
            /// Offset 12
            buffer            = reader.ReadUInt16();
            this.cIndent      = (int)buffer & 0x0000000F;
            this.fShrinkToFit = (int)(buffer & 0x00000010) >> 0x04;
            this.fMergeCell   = (int)(buffer & 0x00000020) >> 0x05;
            this.iReadOrder   = (int)(buffer & 0x000000C0) >> 0x06;
            this.fAtrNum      = (int)(buffer & 0x00000400) >> 0x0A;
            this.fAtrFnt      = (int)(buffer & 0x00000800) >> 0x0B;
            this.fAtrAlc      = (int)(buffer & 0x00001000) >> 0x0C;
            this.fAtrBdr      = (int)(buffer & 0x00002000) >> 0x0D;
            this.fAtrPat      = (int)(buffer & 0x00004000) >> 0x0E;
            this.fAtrProt     = (int)(buffer & 0x0008000) >> 0x0F;


            ///
            /// Offset 14
            buffer = reader.ReadUInt16();

            this.dgLeft   = (int)buffer & 0x0000000F;
            this.dgRight  = (int)(buffer & 0x000000F0) >> 0x04;
            this.dgTop    = (int)(buffer & 0x00000F00) >> 0x08;
            this.dgBottom = (int)(buffer & 0x0000F000) >> 0x0C;


            ///
            /// Offset 16
            buffer         = reader.ReadUInt16();
            this.icvLeft   = (int)buffer & 0x0000007F;
            this.icvRight  = (int)(buffer & 0x00003F80) >> 0x04;
            this.grbitDiag = (int)(buffer & 0x0000C000) >> 0x0E;


            ///
            /// Offset 18
            buffer         = reader.ReadUInt32();
            this.icvTop    = (int)buffer & 0x0000007F;
            this.icvBottom = (int)(buffer & 0x00003F80) >> 0x04;
            this.icvDiag   = (int)(buffer & 0x001FC000) >> 0x0C;
            this.dgDiag    = (int)(buffer & 0x01E00000) >> 0x15;
            this.fHasXFExt = (int)(buffer & 0x02000000) >> 0x18;
            this.fls       = (int)(buffer & 0xFC000000) >> 0x1A;

            ///
            /// Offset 22
            buffer         = reader.ReadUInt16();
            this.icvFore   = (int)buffer & 0x0000007F;
            this.icvBack   = (int)(buffer & 0x00003F80) >> 0x07;
            this.fSxButton = (int)(buffer & 0x00004000) >> 0x0C;


            // assert that the correct number of bytes has been read from the stream
            Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position);
        }
Example #51
0
 public CrtLineGroup(IStreamReader reader)
 {
     // CrtLine LineFormat
     this.CrtLine    = (CrtLine)BiffRecord.ReadRecord(reader);
     this.LineFormat = (LineFormat)BiffRecord.ReadRecord(reader);
 }
 public void AnsweredCorrectly_1(IStreamReader stream)
 {
     answeredName = stream.ReadString();
     score       += 1;
 }
Example #53
0
        public Formula(IStreamReader reader, RecordType id, UInt16 length)
            : base(reader, id, length)
        {
            // assert that the correct record type is instantiated
            Debug.Assert(this.Id == ID);
            this.val          = new byte[8];
            this.rw           = reader.ReadUInt16();
            this.col          = reader.ReadUInt16();
            this.ixfe         = reader.ReadUInt16();
            this.boolValueSet = false;

            long oldStreamPosition = this.Reader.BaseStream.Position;

            this.val = reader.ReadBytes(8); // read 8 bytes for the value of the formular
            if (this.val[6] == 0xFF && this.val[7] == 0xFF)
            {
                // this value is a string, an error or a boolean value
                byte firstOffset = this.val[0];
                if (firstOffset == 1)
                {
                    // this is a boolean value
                    this.boolValue    = val[2];
                    this.boolValueSet = true;
                }
                if (firstOffset == 2)
                {
                    // this is a error value
                    this.errorValue = (int)val[2];
                }
            }
            else
            {
                this.Reader.BaseStream.Seek(oldStreamPosition, System.IO.SeekOrigin.Begin);
                this.calculatedValue = reader.ReadDouble();
            }


            this.grbit    = reader.ReadUInt16();
            this.chn      = reader.ReadUInt32(); // this is used for performance reasons only
            this.cce      = reader.ReadUInt16();
            this.ptgStack = new Stack <AbstractPtg>();
            // reader.ReadBytes(this.cce);

            // check always calc mode
            this.fAlwaysCalc = Utils.BitmaskToBool((int)grbit, 0x01);

            // check if shared formula
            this.fShrFmla = Utils.BitmaskToBool((int)grbit, 0x08);



            oldStreamPosition = this.Reader.BaseStream.Position;
            if (!fShrFmla)
            {
                try
                {
                    this.ptgStack = ExcelHelperClass.getFormulaStack(this.Reader, this.cce);
                }
                catch (Exception ex)
                {
                    this.Reader.BaseStream.Seek(oldStreamPosition, System.IO.SeekOrigin.Begin);
                    this.Reader.BaseStream.Seek(this.cce, System.IO.SeekOrigin.Current);
                    TraceLogger.Error("Formula parse error in Row {0} Column {1}", this.rw, this.col);
                    TraceLogger.Debug(ex.StackTrace);
                    TraceLogger.Debug("Inner exception: {0}", ex.InnerException.StackTrace);
                }
            }
            else
            {
                reader.ReadBytes(this.cce);
            }


            // assert that the correct number of bytes has been read from the stream
            Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position);
        }
Example #54
0
		public int ReadTile(IStreamReader inputStream, byte[] inputBuffer, int index)
		{
			if (PointCount == 0)
				return 0;

			if (index + StorageSize > inputBuffer.Length)
				throw new ArgumentException("Tile data is larger than available buffer", "inputBuffer");

			// seek if necessary (hopefully this is minimized)
			var position = TileSet.TileSource.PointDataOffset + (PointOffset * TileSet.TileSource.PointSizeBytes);
			if (inputStream.Position != position)
				inputStream.Seek(position);
			
			// read available points from main tile area and get low-res points from source
			var localStorageSize = (PointCount - LowResCount) * TileSet.TileSource.PointSizeBytes;
			var bytesRead = inputStream.Read(inputBuffer, index, localStorageSize);

			//bytesRead += TileSet.TileSource.ReadLowResTile(this, inputBuffer, index + bytesRead);
			var lowResPosition = TileSet.TileSource.PointDataOffset + ((TileSet.PointCount - TileSet.LowResCount + LowResOffset) * TileSet.TileSource.PointSizeBytes);
			inputStream.Seek(lowResPosition);
			var lowResStorageSize = LowResCount * TileSet.TileSource.PointSizeBytes;
			bytesRead += inputStream.Read(inputBuffer, index + bytesRead, lowResStorageSize);

			return bytesRead;
		}