c3d-utils
|
00001 #ifndef BASIC_IO_EHX8AMAKEUQO3 00002 #define BASIC_IO_EHX8AMAKEUQO3 00003 00004 // vim:set tabstop=4 cindent: 00005 00006 // Author: Geert-Jan Giezeman <geert@cs.uu.nl> 00007 // Copyright: Utrecht University, 2011 00008 00009 #include <boost/shared_ptr.hpp> 00010 00011 namespace UuIcsC3d { 00013 enum EncodingType { Pt_Intel = 84, Pt_Dec = 85, Pt_Mips = 86}; 00014 00016 struct BasicIO { 00018 virtual EncodingType get_encoding() const =0; 00022 virtual short to_int16(unsigned char const *) const =0; 00026 virtual unsigned short to_uint16(unsigned char const *) const =0; 00030 virtual unsigned to_uint32(unsigned char const *) const =0; 00034 virtual int to_int32(unsigned char const *) const =0; 00038 virtual float to_float(unsigned char const *) const =0; 00042 virtual void encode(unsigned char *, short int ) const =0; 00046 virtual void encode(unsigned char *, unsigned short) const =0; 00050 virtual void encode(unsigned char *, float) const =0; 00054 virtual void encode_array(unsigned char *, short int const *, int n ) const; 00058 virtual void encode_array(unsigned char *, unsigned short const *, int n) const; 00062 virtual void encode_array(unsigned char *, float const *, int n) const; 00063 private: 00064 virtual void encode(unsigned char *, int) const; // not implemented 00065 virtual void encode(unsigned char *, unsigned) const; // not implemented 00066 virtual void encode_array(unsigned char *, int const *, int n) const; // not implemented 00067 virtual void encode_array(unsigned char *, unsigned const *, int n) const; // not implemented 00068 }; 00069 00071 EncodingType platform_encoding(); 00072 00076 struct IllegalValue {}; 00081 struct NotImplemented{}; 00085 boost::shared_ptr<BasicIO> get_basic_io(int pt); 00089 boost::shared_ptr<BasicIO> get_native_io(); 00090 00091 } 00092 00093 #endif // BASIC_IO_EHX8AMAKEUQO3