📄 except.cpp
字号:
/* * 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.cpp,v 1.2 2002/04/05 08:48:31 takayuki Exp $ */// $Header: /home/CVS/configurator/except.cpp,v 1.2 2002/04/05 08:48:31 takayuki Exp $#include "except.h"#undef Throwusing namespace std;unsigned long Message::current_codepage_index = 0;unsigned long Message::codepage[NUM_SUPPORTLANGUAGE] ={ 0x0000, /* Neutral language ( = English ) */ 0x0441 /* Japanese */};Message::Message(const char * msg, ...){ va_list vl; va_start(vl, msg); initMessage(vl, msg);}void Message::initMessage(va_list vl, const char * msg){ int count = current_codepage_index; while(count-- > 0) msg = va_arg(vl, const char *); message = msg;}Message::Message(Message & src){ message = src.message; }bool Message::selectCodepage(unsigned long _codepage){ unsigned long i; for(i=0;i<NUM_SUPPORTLANGUAGE;i++) if(_codepage == codepage[i]) { current_codepage_index = i; return true; } return false;}/*Message & format(Message & str, ...){ va_list vl; char buffer[1024]; va_start(vl, str); vsprintf(buffer, (const char *)str, vl); str.message.assign(buffer); return str;}*/ostream & operator << (ostream & out, const Message & msg){ out << (const char *)msg; return out;}//------Exception::Exception(int _code, const char * first, ...) : code(_code){ va_list vl; if(first != 0) { va_start(vl, first); initMessage(vl, first); }else message = "Unknown Exception";}Exception::Exception(const char * first, ...) : code(FATAL), child(false){ va_list vl; va_start(vl, first); initMessage(vl, first);}Exception::Exception(const Exception & exc){ child = false; code = exc.code; message = exc.message;}Exception::Exception(const Exception * exc){ child = true; code = exc->code; message = exc->message;}Exception::~Exception(void){ if(!child) { this->Garbage::~Garbage(); throw new Exception(this); }}bool Exception::isFatal(void) const{ return code < 0; }Exception::operator int (void) const{ return code; }//------bool VerboseMessage::verboseControl = false;std::ostream * VerboseMessage::outputStream = 0;VerboseMessage::VerboseMessage(const char * msg, ...){ va_list vl; va_start(vl, msg); initMessage(vl, msg);}VerboseMessage::~VerboseMessage(void){ if(verboseControl && (outputStream != 0)) *outputStream << message;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -