Tide 0.1.0
|
00001 /* Tide 00002 * 00003 * Header file for the float element object. 00004 * 00005 * Copyright 2011 Geoffrey Biggs geoffrey.biggs@aist.go.jp 00006 * RT-Synthesis Research Group 00007 * Intelligent Systems Research Institute, 00008 * National Institute of Advanced Industrial Science and Technology (AIST), 00009 * Japan 00010 * All rights reserved. 00011 * 00012 * This file is part of Tide. 00013 * 00014 * Tide is free software; you can redistribute it and/or modify it under 00015 * the terms of the GNU Lesser General Public License as published by 00016 * the Free Software Foundation; either version 2.1 of the License, or 00017 * (at your option) any later version. 00018 * 00019 * Tide is distributed in the hope that it will be useful, but WITHOUT 00020 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00021 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 00022 * License for more details. 00023 * 00024 * You should have received a copy of the GNU Lesser General Public 00025 * License along with Tide. If not, see <http://www.gnu.org/licenses/>. 00026 */ 00027 00028 #if !defined(TIDE_FLOAT_ELEMENT_H_) 00029 #define TIDE_FLOAT_ELEMENT_H_ 00030 00031 #include <tide/prim_element.h> 00032 #include <tide/win_dll.h> 00033 00036 00037 namespace tide 00038 { 00040 enum EBMLFloatPrec 00041 { 00043 EBML_FLOAT_PREC_SINGLE, 00045 EBML_FLOAT_PREC_DOUBLE 00046 }; 00047 00053 class TIDE_EXPORT FloatElement : public PrimitiveElement<double> 00054 { 00055 public: 00064 FloatElement(uint32_t id, double value, 00065 EBMLFloatPrec precision=EBML_FLOAT_PREC_DOUBLE); 00066 00076 FloatElement(uint32_t id, double value, double default_value, 00077 EBMLFloatPrec precision=EBML_FLOAT_PREC_DOUBLE); 00078 00080 virtual FloatElement& operator=(double const& rhs); 00081 00083 virtual EBMLFloatPrec precision() const { return prec_; } 00092 virtual void precision(EBMLFloatPrec precision) 00093 { prec_ = precision; } 00094 00096 virtual std::streamsize write_body(std::ostream& output); 00097 00098 protected: 00099 EBMLFloatPrec prec_; 00100 00102 virtual std::streamsize body_size() const; 00103 00109 virtual std::streamsize read_body(std::istream& input, 00110 std::streamsize size); 00111 }; // class FloatElement 00112 }; // namespace tide 00113 00115 // group implementations 00116 00117 #endif // TIDE_FLOAT_ELEMENT_H_ 00118