00001
00002
00003 namespace dynamic
00004 {
00005 namespace gc
00006 {
00007 class garbage_collector;
00008 }
00009
00010 class var;
00011 class pickler;
00012 class unpickler;
00013 class shared_var_impl;
00014 typedef std::basic_ostream<char> ostream;
00015 typedef std::basic_ostream<wchar_t> wostream;
00016 class apartment;
00017
00018 void write_int_to_stream(wostream &, int);
00019
00020
00022
00031 class DYNAMIC_API var_impl : public internal::variant_base
00032 {
00033 public:
00034 virtual ~var_impl();
00035
00037 virtual var call();
00038
00040 virtual var call(const var & a0);
00041
00043 virtual var call(const var & a0, const var & a1);
00044
00046 virtual var call(const var & a0, const var & a1, const var & a2);
00047
00049 virtual var call(const var & a0, const var & a1, const var & a2, const var & a3);
00050
00052 virtual var call(const var & a0, const var & a1, const var & a2, const var & a3, const var & a4);
00053
00055 virtual var call(const var & a0, const var & a1, const var & a2, const var & a3, const var & a4, const var & a5);
00056
00058 virtual var call(const var & a0, const var & a1, const var & a2, const var & a3, const var & a4, const var & a5, const var & a6);
00059
00061 virtual var call(const var & a0, const var & a1, const var & a2, const var & a3, const var & a4, const var & a5, const var & a6, const var & a7);
00062
00064 virtual var call(const var & a0, const var & a1, const var & a2, const var & a3, const var & a4, const var & a5, const var & a6, const var & a7, const var & a8);
00065
00067 virtual var call(const var & a0, const var & a1, const var & a2, const var & a3, const var & a4, const var & a5, const var & a6, const var & a7, const var & a8, const var & a9);
00068
00070
00071 virtual int max_args();
00072
00074 virtual var member_call(const char*);
00075
00077 virtual var member_call(const char*, const var & a0);
00078
00080 virtual var member_call(const char*, const var & a0, const var & a1);
00081
00083 virtual var member_call(const char*, const var & a0, const var & a1, const var & a2);
00084
00086 virtual var member_call(const char*, const var & a0, const var & a1, const var & a2, const var & a3);
00087
00089 virtual var member_call(const char*, const var & a0, const var & a1, const var & a2, const var & a3, const var & a4);
00090
00092 virtual var member_call(const char*, const var & a0, const var & a1, const var & a2, const var & a3, const var & a4, const var & a5);
00093
00095 virtual var member_call(const char*, const var & a0, const var & a1, const var & a2, const var & a3, const var & a4, const var & a5, const var & a6);
00096
00098 virtual var member_call(const char*, const var & a0, const var & a1, const var & a2, const var & a3, const var & a4, const var & a5, const var & a6, const var & a7);
00099
00101 virtual var member_call(const char*, const var & a0, const var & a1, const var & a2, const var & a3, const var & a4, const var & a5, const var & a6, const var & a7, const var & a8);
00102
00104 virtual var member_call(const char*, const var & a0, const var & a1, const var & a2, const var & a3, const var & a4, const var & a5, const var & a6, const var & a7, const var & a8, const var & a9);
00105
00107 virtual var_cmp_index comparison_index();
00108
00110
00112 virtual var_cmp_result compare(const var & other);
00113
00115 virtual var_cmp_result compare2(const var & other);
00116
00118 virtual var get_member(var const &);
00119
00121 virtual void set_member(var const &, var const &);
00122
00124
00125 virtual var get_member(const char*);
00126
00128
00129 virtual var get_member(int);
00130
00132 virtual void set_member(const char*, var const&);
00133
00135 virtual void set_member(int, var const&);
00136
00138 virtual void push_back(var const&);
00139
00141 virtual var pop_back();
00142
00144 virtual void push_front(var const&);
00145
00147 virtual var pop_front();
00148
00150 virtual void insert(const var&);
00151
00153 virtual void insert(const var&, const var&);
00154
00156 virtual var front();
00157
00159 virtual var back();
00160
00162 virtual var begin();
00163
00165 virtual var end();
00166
00168
00169 virtual int size();
00170
00172 virtual bool empty();
00173
00175 virtual var rbegin();
00176
00178 virtual var rend();
00179
00181 virtual void clear();
00182
00184 virtual bool contains(const var&);
00185
00187 virtual void erase(const var&);
00188
00190 virtual void mixin(const var&);
00191
00193 virtual int bind_args();
00194
00196 virtual void output(ostream&);
00197
00199 virtual void output(wostream&);
00200
00202
00203 virtual void short_output(ostream&);
00204
00206 virtual void short_output(wostream&);
00207
00209 virtual int as_int();
00210
00212 virtual double as_double();
00213
00215 virtual bool as_bool();
00216
00218 virtual void * as_ptr();
00219
00221 virtual var deref();
00222
00224 virtual var key();
00225
00227 virtual var value();
00228
00230 virtual var clone();
00231
00233 virtual void resize(std::size_t);
00234
00236 virtual var op_add(const var &);
00237
00239 virtual var keys();
00240
00242 virtual var values();
00243
00245 virtual var op_neg();
00246
00248 virtual var op_pos();
00249
00251 virtual var op_sub(const var &);
00252
00254 virtual var op_mul(const var &);
00255
00257 virtual var op_div(const var &);
00258
00260 virtual var op_mod(const var &);
00261
00263 virtual var op_lshift(const var&);
00264
00266 virtual var op_rshift(const var&);
00267
00269 virtual var op_and(const var &);
00270
00272 virtual var op_or(const var &);
00273
00275 virtual var op_xor(const var &);
00276
00278 virtual var op_inv();
00279
00281 virtual void op_inc();
00282
00284 virtual void op_dec();
00285
00287 virtual void assign_add(const var&);
00288
00290 virtual void assign_sub(const var&);
00291
00293 virtual void assign_mul(const var&);
00294
00296 virtual void assign_div(const var&);
00297
00299 virtual void assign_mod(const var&);
00300
00302 virtual void assign_lshift(const var&);
00303
00305 virtual void assign_rshift(const var&);
00306
00308 virtual void assign_and(const var&);
00309
00311 virtual void assign_or(const var&);
00312
00314 virtual void assign_xor(const var&);
00315
00317 virtual var member_inc(const char * member);
00318
00320 virtual var member_dec(const char * member);
00321
00323 virtual var member_inc(const char * member, int);
00324
00326 virtual var member_dec(const char * member, int);
00327
00329 virtual var member_add(const char * member, const var &);
00330
00332 virtual var member_sub(const char * member, const var &);
00333
00335 virtual std::string class_name()=0;
00336
00338
00339 virtual void pickle(pickler&);
00340
00342
00343 virtual void unpickle(unpickler&);
00344
00346
00347 virtual var as_root();
00348
00350 virtual var as_nonroot();
00351
00353
00354 virtual void mark_reachable(gc::garbage_collector&);
00355
00357 virtual shared_var_impl * shared_var();
00358
00360 virtual var proxy();
00361
00363
00367 virtual var enumerator();
00368
00370 virtual var reverse_enumerator();
00371
00373 virtual void reserve(std::size_t);
00374
00376 virtual std::size_t capacity();
00377
00379 virtual void get_range(std::size_t container_size, std::pair<std::size_t,std::size_t> & out);
00380 };
00381 }