00001
00002
00004
00005
00006
00007
00009
00010 #ifndef glm_core_type_half
00011 #define glm_core_type_half
00012
00013 #include <cstdlib>
00014
00015 namespace glm
00016 {
00017 namespace test
00018 {
00019 bool main_type_half();
00020
00021 }
00022
00023 namespace detail
00024 {
00025 typedef short hdata;
00026
00027 float toFloat32(hdata value);
00028 hdata toFloat16(float const & value);
00029
00030 class thalf
00031 {
00032 public:
00033
00034 thalf();
00035 thalf(thalf const & s);
00036
00037 template <typename U>
00038 thalf(U const & s);
00039
00040
00041
00042 operator float() const;
00043
00044
00045
00046
00047 thalf& operator= (thalf const & s);
00048 thalf& operator+=(thalf const & s);
00049 thalf& operator-=(thalf const & s);
00050 thalf& operator*=(thalf const & s);
00051 thalf& operator/=(thalf const & s);
00052 thalf& operator++();
00053 thalf& operator--();
00054
00055 float toFloat() const{return toFloat32(data);}
00056
00057 hdata _data() const{return data;}
00058
00059 private:
00060 hdata data;
00061 };
00062
00063 thalf operator+ (thalf const & s1, thalf const & s2);
00064
00065 thalf operator- (thalf const & s1, thalf const & s2);
00066
00067 thalf operator* (thalf const & s1, thalf const & s2);
00068
00069 thalf operator/ (thalf const & s1, thalf const & s2);
00070
00071
00072 thalf operator- (thalf const & s);
00073
00074 thalf operator-- (thalf const & s, int);
00075
00076 thalf operator++ (thalf const & s, int);
00077
00078 }
00079
00080
00081 }
00082
00083 #include "type_half.inl"
00084
00085 #endif//glm_core_type_half