c3d-utils
uuc3dlib/basic_io.hpp
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations