⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sectionconsumers.h

📁 1、简介 此代码是IS0 13818-5 MPEG2系统层协议分析代码
💻 H
字号:
/* Copyright (C) 1995, Tektronix Inc. All Rights Reserved. * *   Usage Restrictions * * License is granted to copy, to use, and to make and to use derivative * works for research and evaluation purposes only. * *   Disclaimer of Warranty * * These software programs are available to the user without any license * fee or royalty on an "as is" basis.  Tektronix Inc. disclaims any and * all warranties, whether express, implied, or statuary, including any * implied warranties or merchantability or of fitness for a particular * purpose.  In no event shall the copyright-holder be liable for any  * incidental, punitive, or consequential damages of any kind whatsoever * arising from the use of these programs. * * This disclaimer of warranty extends to the user of these programs and * user's customers, employees, agents, transferees, successors, and * assigns. * * The Tektronix Inc. does not represent or warrant that the programs * furnished hereunder are free of infringement of any third-party * patents.*//* SectionConsumer classes */#ifndef sectionconsumer_h#define sectionconsumer_h#include "Consumer.H"#include "Section.H"#include "Decoder.H"// SectionConsumer State#define SCHEAD1 1#define SCHEAD2 2#define SCFLUSH 3class SectionConsumer : public Consumer{public:  SectionConsumer (Decoder*, Section*);  virtual int read_partial (int);  virtual void read_section () = 0;protected:  Section* sec;  void read_header_a ();           // table_id .. section_length  void read_header_b ();           // reserved .. last_section_number  void read_CRC ();  char* buf;  int buf_index;  int length_expected;};class PATConsumer : public SectionConsumer{public:  PATConsumer (Decoder*, PATSection*);  virtual void read_section ();private:  PATSection* patsec;};class MapConsumer : public SectionConsumer{public:  MapConsumer (Decoder*, MapSection*);  virtual void read_section ();private:  MapSection* mapsec;};class CAConsumer : public SectionConsumer{public:  CAConsumer (Decoder*, CASection*);  virtual void read_section ();private:  CASection* casec;};class PriConsumer : public SectionConsumer{public:  PriConsumer (Decoder*, PriSection*);  virtual void read_section ();private:  PriSection* prisec;};/* DOCUMENTATION SectionConsumer is a base class from which the PSI-related Consumers PATConsumer, MapConsumer, and CAConsumer are derived. Since the syntax for these sections is similar reproduction of code is avoided by defining read_partial in the base class SectionProducer and calling the virtual function read_section.  read_section is defined in each of the derived classes.  The definitions of read_section, then, use as utilities the functions read_header_a and read_header_b, which are defined back in the base class.  Note that the syntax objects: casec, mapsec and patsec are stored twice in each structure.  Once under the generic name "sec" and once under the more specific name.  This is a hack to work around a well-known and annoying C++ strong-typing problem; if you don't mind the extra pointer and they are "write-once", then it's a pretty effective solution.*/ #endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -