diff options
Diffstat (limited to 'cells-test.cpp')
-rw-r--r-- | cells-test.cpp | 37 |
1 files changed, 15 insertions, 22 deletions
diff --git a/cells-test.cpp b/cells-test.cpp index 1b9147b..a88fe5b 100644 --- a/cells-test.cpp +++ b/cells-test.cpp @@ -27,35 +27,28 @@ using std::cout; using std::endl; typedef formula_cell<double> fcell; -typedef shared_ptr<fcell> sfcell; typedef formula_cell<unit> ucell; -typedef shared_ptr<ucell> sucell; int main(int argc, char** argv) { - sfcell x0 = fcell::make(); - sfcell x1 = fcell::make(); - sfcell x2 = fcell::make(); - sfcell y = fcell::make(); - sfcell z = fcell::make(); - sucell a = ucell::make(); - sucell b = ucell::make(); + fcell x0, x1, x2, y, z; + ucell a, b; - with_transaction([=](){ - x0->reset(10); - x1->reset([=](){ return *x0 + 5; }); - x2->reset([=](){ return *x0 * 2; }); - y->reset([=](){ return *x1 * *x2; }); - z->reset([=](){ return *x0 * *y; }); - a->reset([=]() -> unit { cout << "z is now " << *z << "." << endl; return unit(); }); - b->reset([=]() -> unit { cout << "x2 is now " << *x2 << "." << endl; return unit(); }); + with_transaction([&](){ + x0.reset(10); + x1.reset([&](){ return *x0 + 5; }); + x2.reset([&](){ return *x0 * 2; }); + y.reset([&](){ return *x1 * *x2; }); + z.reset([&](){ return *x0 * *y; }); + a.reset([&]() -> unit { cout << "z is now " << *z << "." << endl; return unit(); }); + b.reset([&]() -> unit { cout << "x2 is now " << *x2 << "." << endl; return unit(); }); }); - x0->reset(15); - x0->reset(-20); - y->reset(-3); - x1->reset([=]() { return (double)*x0; }); - y->reset([=]() { return *x1 + *x2; }); + x0.reset(15); + x0.reset(-20); + y.reset(-3); + x1.reset([&]() { return (double)*x0; }); + y.reset([&]() { return *x1 + *x2; }); return EXIT_SUCCESS; } |