Changeset 205 in dev for trunk/jenga/include


Ignore:
Timestamp:
Jul 12, 2007, 2:57:04 AM (17 years ago)
Author:
dai_9181
Message:

コード全体のリファクタリングを実施

Location:
trunk/jenga/include
Files:
10 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/jenga/include/common/BoostXmlSupport.h

    r190 r205  
    1919#include <boost/serialization/is_abstract.hpp>
    2020
     21#include <windows.h>
     22
    2123namespace Jenga{
    2224namespace Common{
     
    2729    virtual const char *RootTagName() const = 0;
    2830
     31    void echo( const char *msg ) const
     32    {
     33        MessageBox( NULL, msg, "XMLシリアライズの例外", MB_OK );
     34    }
     35
    2936public:
    30     bool Read( istream& ifs )
     37    bool Read( istream& ifs, bool isShowExceptionMessage = true )
    3138    {
    3239        bool isSuccessful = false;
     
    4047            isSuccessful = true;
    4148        }
     49        catch( boost::archive::archive_exception e )
     50        {
     51            if( isShowExceptionMessage )
     52            {
     53                echo( e.what() );
     54            }
     55        }
    4256        catch(...){
    43             // 失敗
     57            if( isShowExceptionMessage )
     58            {
     59                echo( "archive_exception以外の不明な例外" );
     60            }
    4461        }
    4562
     
    5269    }
    5370
    54     bool Write( ostream& ofs ) const
     71    bool Write( ostream& ofs, bool isShowExceptionMessage = true ) const
    5572    {
    5673        bool isSuccessful = false;
     
    6481            isSuccessful = true;
    6582        }
    66         catch( ... ){
    67             // 失敗
     83        catch( boost::archive::archive_exception e )
     84        {
     85            if( isShowExceptionMessage )
     86            {
     87                echo( e.what() );
     88            }
     89        }
     90        catch(...){
     91            if( isShowExceptionMessage )
     92            {
     93                echo( "archive_exception以外の不明な例外" );
     94            }
    6895        }
    6996
     
    76103    }
    77104
    78     bool Read( const string &xmlFilePath )
     105    bool Read( const string &xmlFilePath, bool isShowExceptionMessage = true )
    79106    {
    80107        bool isSuccessful = false;
     
    83110        std::ifstream ifs( xmlFilePath.c_str() );
    84111       
    85         bool result = Read(ifs);
     112        bool result = Read(ifs,isShowExceptionMessage);
    86113
    87114        // 入力を閉じる
     
    91118    }
    92119
    93     bool Write( const string &xmlFilePath ) const
     120    bool Write( const string &xmlFilePath, bool isShowExceptionMessage = true ) const
    94121    {
    95122        // 出力アーカイブの作成
    96123        std::ofstream ofs( xmlFilePath.c_str() );
    97124
    98         bool result = Write(ofs);
     125        bool result = Write(ofs,isShowExceptionMessage);
    99126
    100127        // 出力を閉じる
     
    104131    }
    105132
    106     bool ReadFromString( const wstring &xmlBuffer )
     133    bool ReadFromString( const string &xmlBuffer )
    107134    {
    108135        bool isSuccessful = false;
  • trunk/jenga/include/common/logger.h

    r166 r205  
    1313
    1414#include <jenga/include/common/Environment.h>
     15#include <jenga/include/common/BoostXmlSupport.h>
    1516
    1617#define STDX_DSTREAM_BUFFERING
     
    2324
    2425
     26class LoggerSetting : public BoostXmlSupport<LoggerSetting>
     27{
     28public:
     29    int stopStep;
     30
     31    LoggerSetting()
     32        : stopStep( -1 )
     33    {
     34    }
     35
     36    // XMLシリアライズ用
     37private:
     38    virtual const char *RootTagName() const
     39    {
     40        return "loggerSetting";
     41    }
     42    friend class boost::serialization::access;
     43    template<class Archive> void serialize(Archive& ar, const unsigned int version)
     44    {
     45        ar & BOOST_SERIALIZATION_NVP( stopStep );
     46    }
     47};
     48
     49
    2550// VC++ で STLport だと using std::char_traits; みたいなのが必要かも
    2651template <typename Ch_T, typename Tr_T = std::char_traits<Ch_T> >
     
    2954protected:
    3055    std::string saveFilePath;
     56    int count;
     57    LoggerSetting setting;
    3158
    3259public:
    33     basic_dbg_streambuf( const std::string &saveFilePath )
     60    basic_dbg_streambuf( const std::string &saveFilePath, bool isOptionEnabled )
    3461        : saveFilePath( saveFilePath )
     62        , count( 0 )
    3563    {
    3664#ifndef STDX_DSTREAM_BUFFERING
    3765        setbuf(0,0);
    3866#endif
     67
     68        if( isOptionEnabled )
     69        {
     70            // 設定ファイルを読み込む
     71            char temporary[MAX_PATH];
     72            char temp2[MAX_PATH];
     73            char temp3[MAX_PATH];
     74            _splitpath(saveFilePath.c_str(),temporary,temp2,temp3,NULL);
     75            setting.Read( (string)temporary + temp2 + temp3 + ".setting.xml", false );
     76        }
    3977    }
    4078
     
    5997{
    6098    ofstream ofs( ( saveFilePath ).c_str(), ios_base::app );
    61     ofs << str ;
     99    ofs << "[" << (count++) << "] " << str ;
    62100    ofs.close();
     101
     102    if( (count-1) == setting.stopStep )
     103    {
     104        DebugBreak();
     105    }
    63106}
    64107
     
    67110{
    68111public:
    69     basic_dbg_ostream( const string &saveFilePath )
    70         : std::basic_ostream<Ch_T, Tr_T>(new basic_dbg_streambuf<Ch_T, Tr_T>(saveFilePath))
     112    basic_dbg_ostream( const string &saveFilePath, bool isOptionEnabled )
     113        : std::basic_ostream<Ch_T, Tr_T>(new basic_dbg_streambuf<Ch_T, Tr_T>(saveFilePath,isOptionEnabled))
    71114    {
    72115        ofstream ofs( ( saveFilePath ).c_str(), ios_base::trunc );
     
    87130
    88131}}
     132
     133BOOST_CLASS_IMPLEMENTATION(Jenga::Common::LoggerSetting, boost::serialization::object_serializable);
  • trunk/jenga/include/smoothie/BasicFixed.h

    r170 r205  
    186186#define ESC_IMPORTS         'q'     // Imports
    187187#define ESC_CLEARNAMESPACEIMPORTED 'r'  // _ClearNamespaceImported
     188#define ESC_OPERATOR        's'
    188189//EXEファイル用制御エスケープシーケンス
    189 #define ESC_USING           's'     // Print命令語のUsing
    190 #define ESC_FOR             't'     // Open命令語のFor
    191 #define ESC_LINENUM         'u'     // 行番号を示す
     190#define ESC_USING           't'     // Print命令語のUsing
     191#define ESC_FOR             'u'     // Open命令語のFor
     192#define ESC_LINENUM         'v'     // 行番号を示す
    192193
    193194//オブジェクト指向エスケープシーケンス
     
    203204#define ESC_INTERFACE       (char)0xA9
    204205#define ESC_ENDINTERFACE    (char)0xAA
    205 #define ESC_OPERATOR        (char)0xAB
  • trunk/jenga/include/smoothie/LexicalAnalysis.h

    r173 r205  
    11#pragma once
     2
     3#include <string>
     4#include <vector>
     5
     6#include <windows.h>
     7
     8typedef std::vector<int> Subscripts;
     9
     10enum ReferenceKind
     11{
     12    RefNon = 0,     // no reference member
     13    RefDot,         // obj.member
     14    RefPointer,     // obj->member
     15};
    216
    317bool IsVariableTopChar(char c);
     
    1327bool IsCommandDelimitation( char c );
    1428int GetStringInPare_RemovePare(char *buffer,const char *ReadBuffer);
    15 void GetArrange(char *variable,char *variAnswer,int *SubScripts);
     29void GetArrange(char *variable,char *variAnswer, Subscripts &subscripts );
     30bool SplitMemberName( const char *desc, char *object, char *member, ReferenceKind &refType );
     31bool SplitMemberName( const char *desc, char *object, char *member );
     32void GetCalcName(int idCalc,char *name);
     33BYTE ToCalcId( const char *name );
     34std::string Operator_NaturalStringToCalcMarkString( const std::string &name );
     35std::string Operator_CalcMarkStringToNaturalString( const std::string &name );
  • trunk/jenga/include/smoothie/LexicalScoping.h

    r181 r205  
    5656
    5757    // スコープを終了
    58     void End();
     58    virtual void End() = 0;
    5959
    6060    // スコープを検索
  • trunk/jenga/include/smoothie/Smoothie.h

    r194 r205  
    22
    33#include "Source.h"
    4 #include "ObjectModule.h"
    54#include "LexicalScoping.h"
    65
     
    2726    class Temp{
    2827    public:
    29         // コンパイル中のクラス
    30         static const CClass *pCompilingClass;
    31 
    3228        // レキシカルスコープの状態
    3329        static CLexicalScopes *pLexicalScopes;
  • trunk/jenga/include/smoothie/Source.h

    r173 r205  
    77#include <stdlib.h>
    88
    9 #include "BasicFixed.h"
     9#include <jenga/include/common/Exception.h>
     10#include <jenga/include/smoothie/BasicFixed.h>
    1011
    1112using namespace std;
     
    100101        if( index>GetLength() )
    101102        {
    102             throw "bad access";
     103            Jenga::Throw( "BasicSource bad access" );
    103104        }
    104105        return buffer[2+index];
Note: See TracChangeset for help on using the changeset viewer.