summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/samples/store-cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sca-cpp/trunk/samples/store-cpp')
-rw-r--r--sca-cpp/trunk/samples/store-cpp/fruits-catalog.cpp22
-rw-r--r--sca-cpp/trunk/samples/store-cpp/shopping-cart.cpp14
2 files changed, 14 insertions, 22 deletions
diff --git a/sca-cpp/trunk/samples/store-cpp/fruits-catalog.cpp b/sca-cpp/trunk/samples/store-cpp/fruits-catalog.cpp
index 9907650316..16f01cd85c 100644
--- a/sca-cpp/trunk/samples/store-cpp/fruits-catalog.cpp
+++ b/sca-cpp/trunk/samples/store-cpp/fruits-catalog.cpp
@@ -35,27 +35,19 @@ namespace store {
/**
* Returns the catalog.
*/
-struct convert {
- const lambda<value(const list<value>&)> converter;
- const string currency;
- convert(const lambda<value(const list<value>&)>& converter, const string& currency) : converter(converter), currency(currency) {
- }
- const value operator()(const value& price) const {
- return converter(mklist<value>("convert", string("USD"), currency, price));
- }
-};
-
const list<value> mkfruit(const string& name, const string& code, const string& symbol, const double price) {
- return list<value>() +
+ return nilListValue +
mklist<value>("name", name) + mklist<value>("currencyCode", code) + mklist<value>("currencySymbol", symbol) + mklist<value>("price", price);
}
-const failable<value> items(const lambda<value(const list<value>&)>& converter, const lambda<value(const list<value>&)>& currencyCode) {
- const string currency(currencyCode(list<value>()));
+const failable<value> items(const lvvlambda& converter, const lvvlambda& currencyCode) {
+ const string currency(currencyCode(nilListValue));
const string symbol(converter(mklist<value>("symbol", currency)));
- const lambda<value(const value&)> conv(convert(converter, currency));
+ const vvlambda conv = [converter, currency](const value& price) -> const value {
+ return converter(mklist<value>("convert", string("USD"), currency, price));
+ };
- return value(list<value>() +
+ return value(nilListValue +
mkfruit("Apple", currency, symbol, conv(2.99)) +
mkfruit("Orange", currency, symbol, conv(3.55)) +
mkfruit("Pear", currency, symbol, conv(1.55)));
diff --git a/sca-cpp/trunk/samples/store-cpp/shopping-cart.cpp b/sca-cpp/trunk/samples/store-cpp/shopping-cart.cpp
index 2771d7cd9c..e65aa0d392 100644
--- a/sca-cpp/trunk/samples/store-cpp/shopping-cart.cpp
+++ b/sca-cpp/trunk/samples/store-cpp/shopping-cart.cpp
@@ -38,7 +38,7 @@ const string cartId("1234");
* Get the shopping cart from the cache. Return an empty
* cart if not found.
*/
-const list<value> getcart(const value& id, const lambda<value(const list<value>&)>& cache) {
+const list<value> getcart(const value& id, const lvvlambda& cache) {
const value cart = cache(mklist<value>("get", mklist<value>(id)));
cerr << "cart value: " << cart << "\n";
const failable<value> fcart = cart;
@@ -46,14 +46,14 @@ const list<value> getcart(const value& id, const lambda<value(const list<value>&
cerr << "cart content: " << content(fcart) << "\n";
cerr << "cart reason: " << reason(fcart) << "\n";
if (isNil(cart))
- return value(list<value>());
+ return value(nilListValue);
return (list<value>)cart;
}
/**
* Post a new item to the cart. Create a new cart if necessary.
*/
-const failable<value> post(unused const list<value>& collection, const value& item, const lambda<value(const list<value>&)>& cache) {
+const failable<value> post(unused const list<value>& collection, const value& item, const lvvlambda& cache) {
const value id(mkuuid());
const list<value> newItem(mklist<value>("entry", cadr<value>(car<value>(item)), mklist<value>("id", id), cadddr<value>(car<value>(item))));
const list<value> cart(cons<value>(newItem, getcart(cartId, cache)));
@@ -75,7 +75,7 @@ const value find(const value& id, const list<value>& cart) {
/**
* Return items from the cart.
*/
-const failable<value> get(const list<value>& id, const lambda<value(const list<value>&)>& cache) {
+const failable<value> get(const list<value>& id, const lvvlambda& cache) {
if (isNil(id))
return value(mklist<value>(append(mklist<value>("feed", mklist<value>("title", string("Your Cart")), mklist<value>("id", cartId)), getcart(cartId, cache))));
return find(car(id), getcart(cartId, cache));
@@ -84,10 +84,10 @@ const failable<value> get(const list<value>& id, const lambda<value(const list<v
/**
* Delete items from the cart.
*/
-const failable<value> del(const list<value>& id, unused const lambda<value(const list<value>&)>& cache) {
+const failable<value> del(const list<value>& id, unused const lvvlambda& cache) {
if (isNil(id))
return cache(mklist<value>("delete", mklist<value>(cartId)));
- return value(true);
+ return trueValue;
}
/**
@@ -109,7 +109,7 @@ const double sum(const list<value>& items) {
/**
* Return the total price of the items in the cart.
*/
-const failable<value> total(const lambda<value(const list<value>&)>& cache) {
+const failable<value> total(const lvvlambda& cache) {
const list<value> cart(getcart(cartId, cache));
return value(sum(cart));
}