LCOV - code coverage report
Current view: top level - alma/ASDM - EndianStream.h (source / functions) Hit Total Coverage
Test: casa_coverage.info Lines: 1 1 100.0 %
Date: 2023-10-25 08:47:59 Functions: 1 2 50.0 %

          Line data    Source code
       1             : #ifndef EndianStream_CLASS
       2             : #define EndianStream_CLASS
       3             : 
       4             : #include <stdint.h>
       5             : #include <iostream>
       6             : #include <fstream>
       7             : #include <sstream>
       8             : #include <string>
       9             : 
      10             : #include <alma/ASDM/Misc.h>
      11             : 
      12             : namespace asdm {
      13             :         
      14             :   class EndianOSStream : public std::ostringstream {
      15             :   protected :
      16             :     //ostringstream _oss(stringstream::out | stringstream::binary);
      17             :                         
      18             :   public :
      19             :     EndianOSStream() ;
      20             :     EndianOSStream(const asdm::ByteOrder* byteOrder);
      21             :     ~EndianOSStream();
      22             :    
      23             :     const asdm::ByteOrder* byteOrder() const;
      24             :                 
      25             :     void writeBoolean(bool b);
      26             :     void writeBool(bool b);
      27             :     void writeByte(char c);
      28             :     void writeShort(short int s);
      29             :     void writeUShort(unsigned short int s);
      30             :     void writeInt(int i);
      31             :     void writeUInt(unsigned int ui);
      32             :     void writeLongLong(int64_t li);
      33             :     void writeLong(int64_t li);
      34             :     void writeULongLong(uint64_t li);
      35             :     void writeFloat(float f);
      36             :     void writeDouble(double d); 
      37             :     void writeString(const std::string& s);
      38             : 
      39             :   private:
      40             :     const asdm::ByteOrder* byteOrder_;
      41             :                         
      42             :   };    
      43             :         
      44             :   class EndianIStream {
      45             :   public:
      46             :     virtual const asdm::ByteOrder* byteOrder() const = 0;
      47             :     virtual bool readBoolean() = 0;
      48             :     virtual char readByte() = 0;
      49             :     virtual short int readShort() = 0;
      50             :     virtual unsigned short int readUShort() = 0;
      51             :     virtual int readInt() = 0 ;
      52             :     virtual unsigned int readUInt() = 0 ;
      53             :     virtual int64_t readLongLong() = 0 ;
      54             :     virtual int64_t readLong() = 0 ;
      55             :     virtual uint64_t readULongLong() = 0 ;
      56             :     virtual float readFloat() = 0 ;
      57             :     virtual double readDouble() = 0 ;
      58             :     virtual std::string readString() = 0 ;
      59          73 :     virtual ~EndianIStream() { ; }
      60             :   };
      61             : 
      62             :   class EndianISStream : public std::istringstream, EndianIStream {                     
      63             :   public :
      64             :     EndianISStream(const std::string& s) ;
      65             :     EndianISStream(const std::string& s, const asdm::ByteOrder* byteOrder);
      66             :     ~EndianISStream();
      67             :     
      68             :     const asdm::ByteOrder* byteOrder() const ;
      69             :     bool readBoolean();
      70             :     char readByte();
      71             :     short int readShort();
      72             :     unsigned short int readUShort();
      73             :     int readInt();
      74             :     unsigned int readUInt();
      75             :     int64_t readLongLong();
      76             :     int64_t readLong();
      77             :     uint64_t readULongLong();
      78             :     float readFloat();
      79             :     double readDouble();
      80             :     std::string readString();
      81             :     
      82             :   private :
      83             :     const asdm::ByteOrder* byteOrder_;
      84             :   };
      85             : 
      86             :   class EndianIFStream : EndianIStream  {                       
      87             :   public :
      88             :     EndianIFStream();
      89             :     EndianIFStream(std::ifstream*  ifs_p) ;
      90             :     EndianIFStream(std::ifstream* ifs_p, const asdm::ByteOrder* byteOrder);
      91             :     ~EndianIFStream();
      92             :     
      93             :     const asdm::ByteOrder* byteOrder() const ;
      94             :     bool readBoolean();
      95             :     char readByte();
      96             :     short int readShort();
      97             :     unsigned short int readUShort();
      98             :     int readInt();
      99             :     unsigned int readUInt();
     100             :     int64_t readLongLong();
     101             :     int64_t readLong();
     102             :     uint64_t readULongLong();
     103             :     float readFloat();
     104             :     double readDouble();
     105             :     std::string readString();
     106             :     
     107             :   private :
     108             :     std::ifstream* ifs_p;
     109             :     const asdm::ByteOrder* byteOrder_;
     110             :   };
     111             : 
     112             :   /**
     113             :    * A pure virtual class whose derived classes are expected to be functors
     114             :    * whose behaviours will be to read the differents types of data stored into an EndianIStream.
     115             :    *
     116             :    */
     117             :   class BinaryAttributeReaderFunctor {
     118             :   public :
     119             :     virtual void operator()(EndianIStream& eis) = 0;
     120             :     virtual ~BinaryAttributeReaderFunctor() = 0;
     121             :   };
     122             : 
     123             : }; // end namespace asdm
     124             : 
     125             : #endif  // EndianStream_CLASS

Generated by: LCOV version 1.16