|
|
s_record.hpp説明を見る。00001 /* 00002 * TOPPERS/FDMP Kernel 00003 * Toyohashi Open Platform for Embedded Real-Time Systems/ 00004 * Function Distributed Multiprocessor Kernel 00005 * 00006 * Copyright (C) 2005 by Takagi Nobuhisa 00007 * 00008 * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation 00009 * によって公表されている GNU General Public License の Version 2 に記 00010 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア 00011 * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下, 00012 * 利用と呼ぶ)することを無償で許諾する. 00013 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 00014 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 00015 * スコード中に含まれていること. 00016 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 00017 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 00018 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 00019 * の無保証規定を掲載すること. 00020 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 00021 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 00022 * と. 00023 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 00024 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 00025 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 00026 * 報告すること. 00027 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 00028 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 00029 * 00030 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 00031 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 00032 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 00033 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 00034 * 00035 */ 00036 00049 #ifndef TOPPERS_S_RECORD_HPP_ 00050 #define TOPPERS_S_RECORD_HPP_ 00051 00052 #include "toppers/config.hpp" 00053 #include <iosfwd> 00054 #include <string> 00055 #include <vector> 00056 #include <utility> 00057 #include <stdexcept> 00058 00059 namespace toppers 00060 { 00061 00068 class s_record 00069 { 00070 public: 00071 typedef std::pair<unsigned long, std::vector<unsigned char> > value_type; 00072 typedef std::vector<value_type>::size_type size_type; 00073 00078 struct record 00079 { 00080 int type; 00081 int length; 00082 unsigned long address; 00083 unsigned char data[16]; 00084 int checksum; 00085 }; 00086 00091 class format_error : public std::runtime_error 00092 { 00093 public: 00094 format_error() : std::runtime_error( "S-record format error" ) {} 00095 }; 00100 class checksum_error : public std::runtime_error 00101 { 00102 public: 00103 checksum_error() : std::runtime_error( "S-record checksum error" ) {} 00104 }; 00105 00109 s_record() : cache_( data_.end() ) {} 00116 explicit s_record( std::istream& istr ) { load( istr ); } 00120 virtual ~s_record() {} 00121 00122 void load( std::istream& istr ); 00123 int operator[]( size_type address ) const; 00124 unsigned long lower_bound() const; 00125 unsigned long upper_bound() const; 00126 protected: 00127 static const record read_record( const std::string& rec_buf ); 00128 static int xdigit_to_int( int ch ); 00129 private: 00130 std::vector<value_type> data_; 00131 mutable std::vector<value_type>::const_iterator cache_; 00132 }; 00133 00134 } 00135 00136 #endif // ! TOPPERS_S_RECORD_HPP_ Copyright © 2006 by TAKAGI Nobuhisa. このページは Wed Apr 12 16:31:57 2006 に Doxygen によって生成されました。 |