| 284 | } |
| 285 | |
| 286 | class ValHolder { |
| 287 | public: |
| 288 | ValHolder(val v) : v_(v) {} |
| 289 | |
| 290 | val getVal() const { |
| 291 | return v_; |
| 292 | } |
| 293 | |
| 294 | val getValNonConst() { |
| 295 | return v_; |
| 296 | } |
| 297 | |
| 298 | const val getConstVal() const { |
| 299 | return v_; |
| 300 | } |
| 301 | |
| 302 | const val& getValConstRef() const { |
| 303 | return v_; |
| 304 | } |
| 305 | |
| 306 | void setVal(val v) { |
| 307 | this->v_ = v; |
| 308 | } |
| 309 | |
| 310 | static int some_class_method(int i) { |
| 311 | return i; |
| 312 | } |
| 313 | |
| 314 | static const ValHolder* makeConst(val v) { |
| 315 | return new ValHolder(v); |
| 316 | } |
| 317 | |
| 318 | static ValHolder makeValHolder(val v) { |
| 319 | return ValHolder(v); |
| 320 | } |
| 321 | |
| 322 | static void set_via_raw_pointer(ValHolder* vh, val v) { |
| 323 | vh->setVal(v); |
| 324 | } |
| 325 | |
| 326 | static val get_via_raw_pointer(const ValHolder* vh) { |
| 327 | return vh->getVal(); |
| 328 | } |
| 329 | |
| 330 | static void transfer_via_raw_pointer(ValHolder* target, |
| 331 | const ValHolder* source) { |
| 332 | target->setVal(source->getVal()); |
| 333 | } |
| 334 | |
| 335 | static val getValNonMember(const ValHolder& target) { |
| 336 | return target.getVal(); |
| 337 | } |
| 338 | |
| 339 | private: |
| 340 | val v_; |
| 341 | }; |
| 342 | |
| 343 | ValHolder emval_test_return_ValHolder() { |