2 #ifndef UGDK_SCRIPT_VIRTUALOBJ_H_
3 #define UGDK_SCRIPT_VIRTUALOBJ_H_
36 typedef std::list<VirtualObj>
List;
37 typedef std::vector<VirtualObj>
Vector;
38 typedef std::map<VirtualObj,VirtualObj>
Map;
51 data_(wrapper->NewData()) {}
56 T
value(
bool disown =
false)
const {
68 static_cast<void*>(obj),
76 bool valid()
const {
return static_cast<bool>(data_); }
78 operator bool()
const {
return valid(); }
81 return data_.get() < rhs.data_.get();
87 return VirtualObj(data_->GetAttribute(key.data_));
97 return (*
this)[key.c_str()];
102 data_->SetAttribute(key.data_, value.data_)
109 rhs.push_front(*
this);
116 List::const_iterator it = entry.begin();
125 static_cast<void*>(obj),
138 return data_->unsafe_data();
147 template <
class T,
class U>
150 typename U::const_iterator it;
151 for (it = data_seq.begin(); it != data_seq.end(); ++it)
160 template <
class T,
class U>
163 typename U::const_iterator it;
164 for (it = data_map.begin(); it != data_map.end(); ++it) {
165 obj_map.insert(std::pair<VirtualObj, VirtualObj>(
174 return ConvertSequence<List>(data_->UnwrapList());
179 return ConvertSequence<Vector>(data_->UnwrapVector());
184 return ConvertTable<Map>(data_->UnwrapMap());
191 method_name_(obj.wrapper()) {
192 method_name_.
set_value(method_name.c_str());
195 std::list<VirtualObj> args;
196 return obj_[method_name_]((obj_, args));
199 return obj_[method_name_]((obj_, args));
220 l_.push_back(second);
230 Bind result(*
this, method_name);