OSDN Git Service

smart_ptrの使いかたを、const 〜&ではなく値渡しで渡すように全体を変更。
[simplecms/utakata.git] / object.h
1 #ifndef _OBJECT_H_
2 #define _OBJECT_H_
3
4 #include "smart_ptr.h"
5
6 namespace utakata {
7
8     namespace utf8_string {
9     
10         class UTF8String;
11     
12     };
13
14     namespace interpreter {
15
16         class Object
17         {
18
19             // インタプリタ中でオブジェクトとして扱われる全てのオブジェクトの
20             // 基底となるオブジェクト。
21             // 各オブジェクトに固有のevalなどは無く、evalはシステム的に定義
22             // され、Objectはevalに利用されるためのデータ、関数などを保持する
23             // ための領域として利用される。
24             // 各オブジェクトの内、リテラルとなっているデータについては、
25             // データ値が存在する。
26             // 各リテラルについては、Objectの一次派生先のLiteralから派生する。
27             // Virtualである関数が二つしか存在しないのは、これ以外に共通させる
28             // ことが出来る関数が存在しないためである。
29             // evalしなければならないシステムは、各自ダウンキャストを行う必要
30             // がある。それ以外でなんかいい方法があるなら教えてください。
31
32         public:
33
34             Object(){}
35             virtual ~Object(){}
36             // 変更可能なオブジェクトであるかどうかを返す。
37             virtual bool enableChange() const = 0;
38             // 文字列に変換された値を返す。
39             virtual smart_ptr<utf8_string::UTF8String> toValue() = 0;
40         };
41
42     };
43
44 };
45
46 #endif /* _OBJECT_H_ */