📄 except.h
字号:
/* * TOPPERS/JSP Kernel * Toyohashi Open Platform for Embedded Real-Time Systems/ * Just Standard Profile Kernel * * Copyright (C) 2000-2002 by Embedded and Real-Time Systems Laboratory * Toyohashi Univ. of Technology, JAPAN * * 惧淡螟侯涪荚は·Free Software Foundation によって给山されている * GNU General Public License の Version 2 に淡揭されている掘凤か·笆 * 布の(1)×(4)の掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェ * アを猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· * 网脱と钙ぶ∷することを痰浸で钓满するˉ * (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 * スコ〖ド面に崔まれていることˉ * (2) 塑ソフトウェアを浩网脱材墙なバイナリコ〖ド∈リロケ〖タブルオブ * ジェクトファイルやライブラリなど∷の妨で网脱する眷圭には·网脱 * に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯涪山绩· * この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (3) 塑ソフトウェアを浩网脱稍材墙なバイナリコ〖ドの妨または怠达に寥 * み哈んだ妨で网脱する眷圭には·肌のいずれかの掘凤を塔たすことˉ * (a) 网脱に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (b) 网脱の妨轮を·侍に年める数恕によって·惧淡螟侯涪荚に鼠桂する * ことˉ * (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 * 巢からも·惧淡螟侯涪荚を倘勒することˉ * * 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚は· * 塑ソフトウェアに簇して·その努脱材墙拉も崔めて·いかなる瘦沮も乖わ * ないˉまた·塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じたい * かなる禄巢に簇しても·その勒扦を砷わないˉ * * @(#) $Id: except.h,v 1.2 2002/04/05 08:48:31 takayuki Exp $ */// $Header: /home/CVS/configurator/except.h,v 1.2 2002/04/05 08:48:31 takayuki Exp $#ifndef __EXCEPT#define __EXCEPT#ifdef _MSC_VER #pragma warning(disable:4786)#endif#include <string>#include <stdarg.h>#include <stdio.h>#include <iostream>#include <list>#include "garbage.h"#define NUM_SUPPORTLANGUAGE 2#define MESSAGE_BUFFERSIZE 1024/* * エラ〖箕などにおけるメッセ〖ジは、钙び叫すまでが烫泡だとだんだん叫蜗翁が负っていくので、 * できる嘎り词帽に虽め哈めるようにしておくˉそのせいでオ〖バ〖ヘッドが笼えてしまっても、 * どうせホストで瓢くので痰浑ˉ *//* * Message : 剩眶胳メッセ〖ジを瘦积するための答塑クラス */class Message{private: static unsigned long current_codepage_index; static unsigned long codepage[NUM_SUPPORTLANGUAGE];protected: std::string message; Message(void) {}; void initMessage(va_list, const char * = 0);public: Message(const char *, ...); Message(Message &); operator const char * (void) const; operator const std::string & (void) const; static bool selectCodepage(unsigned long = 0x0000); template<class T> inline Message & format(const T first, ...) { va_list vl; char buffer[MESSAGE_BUFFERSIZE]; va_start(vl, first); vl = (va_list)((char *)vl - sizeof(first)); vsprintf(buffer, message.c_str(), vl); message.assign(buffer); return *this; } friend Message & format(Message &, ...); friend std::ostream & operator << (std::ostream &, const Message &);};inline Message::operator const char *(void) const{ return message.c_str(); }inline Message::operator const std::string & (void) const{ return message; }//------/* * VerboseMessage : 叫蜗扩告がついている办忍メッセ〖ジ */class VerboseMessage : public Message{private: static std::ostream * outputStream; static bool verboseControl;public: VerboseMessage(const char *, ...); ~VerboseMessage(void); static inline void setStream(std::ostream * out) { outputStream = out; }; static inline void setVerbose(bool mode) { verboseControl = mode; }; static inline bool getVerbose(void) { return verboseControl && (outputStream != 0); } template<class T> static inline void print(T msg) { if(getVerbose()) (*outputStream) << msg; }; template<class T> inline VerboseMessage & format(const T first, ...) { va_list vl; char buffer[MESSAGE_BUFFERSIZE]; va_start(vl, first); vl = (va_list)((char *)vl - sizeof(first)); vsprintf(buffer, message.c_str(), vl); message.assign(buffer); return *this; };};//------//------/* * Exception : 米炭弄な祸据に滦する咐い条メッセ〖ジ */class Exception : public Message, public Garbage{protected: int code; bool child; explicit Exception(const Exception *);public: enum { FATAL = 0x80000000 }; Exception(int, const char * = 0, ...); Exception(const char *, ...); Exception(const Exception &); virtual ~Exception(void); bool isFatal(void) const; operator int (void) const; template<class T> inline Exception & format(const T first, ...) { va_list vl; char buffer[MESSAGE_BUFFERSIZE]; va_start(vl, first); vl = (va_list)((char *)vl - sizeof(first)); vsprintf(buffer, message.c_str(), vl); message.assign(buffer); return *this; }};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -