diff options
-rw-r--r-- | client.c | 12 | ||||
-rw-r--r-- | icclient.h | 16 | ||||
-rw-r--r-- | ord.c | 42 |
3 files changed, 33 insertions, 37 deletions
@@ -47,24 +47,24 @@ void icclient_init(const char *url, const char *dir, const char *certificate) #endif } -void icclient_results(const char *prod_group, void (*handler)(icclient_response *), void (*callback)(struct icclient_catalog *)) +void icclient_catalog(const char *prod_group, void (*handler)(icclient_response *), void (*callback)(struct icclient_catalog *)) { char nonspaced[strlen(prod_group) + 1]; strcpy(nonspaced, prod_group); char *space = NULL; while ((space = strchr(nonspaced, ' '))) *space = '-'; - request(handler ? handler : handle_results, (void *)callback, 0, "%s", nonspaced); + request(handler ? handler : handle_results, (void (*)(void *))callback, NULL, "%s", nonspaced); } -void icclient_flypage(const char *sku, void (*handler)(icclient_response *), struct icclient_product **productptr) +void icclient_product(const char *sku, void (*handler)(icclient_response *), void (*callback)(struct icclient_product *)) { - request(handler, (void *)productptr, 0, "%s", sku); + request(handler, (void (*)(void *))callback, NULL, "%s", sku); } -void icclient_page(const char *path, void (*handler)(icclient_response *), void **dataptr) +void icclient_page(const char *path, void (*handler)(icclient_response *)) { - request(handler, (void *)dataptr, 0, "%s", path); + request(handler, NULL, NULL, "%s", path); } void icclient_free_product(struct icclient_product *product) @@ -26,11 +26,11 @@ struct icclient_catalog { }; /*! - * \brief For fetching data about all of the products that are active. + * \brief For fetching data about all active products. * \param handler A pointer to the function when a custom handler is needed to arrange the data into the catalog. * \param callback A pointer to the function that needs to be called after the catalog is ready. */ -#define icclient_allproducts(handler, callback) icclient_results("All-Products", handler, callback) +#define icclient_allproducts(handler, callback) icclient_catalog("All-Products", handler, callback) #ifdef __cplusplus extern "C" { @@ -50,17 +50,17 @@ void icclient_init(const char *sampleurl, const char *image_dir, const char *cer * \param handler A pointer to the function when a custom handler is needed to arrange the data into the catalog. * \param callback A pointer to the function that needs to be called after the catalog is ready. */ -void icclient_results(const char *prod_group, void (*handler)(icclient_response *), void (*callback)(struct icclient_catalog *)); +void icclient_catalog(const char *prod_group, void (*handler)(icclient_response *), void (*callback)(struct icclient_catalog *)); /*! * \brief For fetching data about a specific product. * \param sku The SKU of the product. - * \param handler A pointer to a cURL write function callback. - * \param productptr A pointer to pointer to the product to store the data. - */ -void icclient_flypage(const char *sku, void (*handler)(icclient_response *), struct icclient_product **productptr); + * \param handler A pointer to the function when a custom handler is needed to arrange the data into the product. + * \param callback A pointer to the function that needs to be called after the product is ready. +*/ +void icclient_product(const char *sku, void (*handler)(icclient_response *), void (*callback)(struct icclient_product *)); -void icclient_page(const char *path, void (*handler)(icclient_response *), void **dataptr); +void icclient_page(const char *path, void (*handler)(icclient_response *)); void icclient_free_product(struct icclient_product *product); @@ -5,10 +5,6 @@ #include "icclient/member.h" #include "icclient/ord.h" -typedef struct icclient_catalog icclient_catalog; -typedef struct icclient_product icclient_product; -typedef struct icclient_ord_item icclient_ord_item; - void icclient_ord_init(struct icclient_ord_order *order) { order->subtotal = .0; @@ -19,40 +15,40 @@ void icclient_ord_init(struct icclient_ord_order *order) static int prodcmp(const void *product1, const void *product2) { - return strcmp((*(icclient_product * const *)product1)->sku - , (*(icclient_product * const *)product2)->sku); + return strcmp((*(struct icclient_product * const *)product1)->sku + , (*(struct icclient_product * const *)product2)->sku); } static int itemcmp(const void *item1, const void *item2) { - return strcmp((*(icclient_ord_item * const *)item1)->product->sku - , (*(icclient_ord_item * const *)item2)->product->sku); + return strcmp((*(struct icclient_ord_item * const *)item1)->product->sku + , (*(struct icclient_ord_item * const *)item2)->product->sku); } -void icclient_ord_order(const char *sku, const icclient_catalog *catalog, +void icclient_ord_order(const char *sku, const struct icclient_catalog *catalog, struct icclient_ord_order **orderptr) { - icclient_product **products = ((icclient_catalog *)catalog)->products; - qsort(products, catalog->length, sizeof(icclient_product *), prodcmp); - icclient_product *key_product = malloc(sizeof(icclient_product)); - memset(key_product, '\0', sizeof(icclient_product)); + struct icclient_product **products = ((struct icclient_catalog *)catalog)->products; + qsort(products, catalog->length, sizeof(struct icclient_product *), prodcmp); + struct icclient_product *key_product = malloc(sizeof(struct icclient_product)); + memset(key_product, '\0', sizeof(struct icclient_product)); key_product->sku = malloc(strlen(sku) + 1); strcpy(key_product->sku, sku); - icclient_product *product = *(icclient_product **)bsearch(&key_product - , products, catalog->length, sizeof(icclient_product *) + struct icclient_product *product = *(struct icclient_product **)bsearch(&key_product + , products, catalog->length, sizeof(struct icclient_product *) , prodcmp); icclient_free_product(key_product); struct icclient_ord_order *order = *orderptr; - icclient_ord_item *item = NULL; + struct icclient_ord_item *item = NULL; if (order) { - icclient_ord_item **items = order->items; - qsort(items, order->nitems, sizeof(icclient_ord_item *), itemcmp); - icclient_ord_item *key_item = malloc(sizeof(icclient_ord_item)); + struct icclient_ord_item **items = order->items; + qsort(items, order->nitems, sizeof(struct icclient_ord_item *), itemcmp); + struct icclient_ord_item *key_item = malloc(sizeof(struct icclient_ord_item)); key_item->product = product; - icclient_ord_item **itemptr = bsearch(&key_item, items - , order->nitems, sizeof(icclient_ord_item *) + struct icclient_ord_item **itemptr = bsearch(&key_item, items + , order->nitems, sizeof(struct icclient_ord_item *) , itemcmp); if (itemptr) item = *itemptr; @@ -68,9 +64,9 @@ void icclient_ord_order(const char *sku, const icclient_catalog *catalog, else { size_t i = order->nitems; *orderptr = realloc(order, sizeof(struct icclient_ord_order) - + (i + 1) * sizeof(icclient_ord_item)); + + (i + 1) * sizeof(struct icclient_ord_item)); order = *orderptr; - order->items[i] = malloc(sizeof(icclient_ord_item)); + order->items[i] = malloc(sizeof(struct icclient_ord_item)); order->nitems++; item = order->items[i]; item->product = product; |