Changeset 43788b2 in mainline for uspace/app/bithenge/transform.h


Ignore:
Timestamp:
2012-07-26T22:26:19Z (13 years ago)
Author:
Sean Bartell <wingedtachikoma@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
5a7c0e6
Parents:
842ed146
Message:

Bithenge: add transform context in preparation for parameters

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/bithenge/transform.h

    r842ed146 r43788b2  
    4848} bithenge_transform_t;
    4949
     50/** Context and parameters used when applying transforms. */
     51typedef struct {
     52        /** @privatesection */
     53} bithenge_transform_context_t;
     54
    5055/** Operations that may be provided by a transform. */
    5156typedef struct bithenge_transform_ops {
    5257        /** @copydoc bithenge_transform_t::bithenge_transform_apply */
    53         int (*apply)(bithenge_transform_t *self, bithenge_node_t *in, bithenge_node_t **out);
     58        int (*apply)(bithenge_transform_t *self,
     59            bithenge_transform_context_t *context, bithenge_node_t *in,
     60            bithenge_node_t **out);
    5461        /** @copydoc bithenge_transform_t::bithenge_transform_prefix_length */
    55         int (*prefix_length)(bithenge_transform_t *self, bithenge_blob_t *blob, aoff64_t *out);
     62        int (*prefix_length)(bithenge_transform_t *self,
     63            bithenge_transform_context_t *context, bithenge_blob_t *blob,
     64            aoff64_t *out);
    5665        /** Destroy the transform.
    5766         * @param self The transform. */
     
    5968} bithenge_transform_ops_t;
    6069
    61 /** Apply a transform.
     70/** Initialize a transform context. It must be destroyed with @a
     71 * bithenge_transform_context_destroy after it is used.
     72 * @param[out] context The context to initialize. */
     73static inline void bithenge_transform_context_init(
     74    bithenge_transform_context_t *context)
     75{
     76}
     77
     78/** Destroy a transform context.
     79 * @param context The context to destroy.
     80 * @return EOK on success or an error code from errno.h. */
     81static inline void bithenge_transform_context_destroy(
     82    bithenge_transform_context_t *context)
     83{
     84}
     85
     86/** Apply a transform. Takes ownership of nothing.
    6287 * @memberof bithenge_transform_t
    6388 * @param self The transform.
     89 * @param context The context.
    6490 * @param in The input tree.
    6591 * @param[out] out Where the output tree will be stored.
    6692 * @return EOK on success or an error code from errno.h. */
    6793static inline int bithenge_transform_apply(bithenge_transform_t *self,
    68     bithenge_node_t *in, bithenge_node_t **out)
     94    bithenge_transform_context_t *context, bithenge_node_t *in,
     95    bithenge_node_t **out)
    6996{
    7097        assert(self);
    7198        assert(self->ops);
    72         return self->ops->apply(self, in, out);
     99        return self->ops->apply(self, context, in, out);
    73100}
    74101
     
    76103 * other words, figure out how many bytes this transform will use up.  This
    77104 * method is optional and can return an error, but it must succeed for struct
    78  * subtransforms.
     105 * subtransforms. Takes ownership of nothing.
    79106 * @memberof bithenge_transform_t
    80107 * @param self The transform.
     108 * @param context The context.
    81109 * @param blob The blob.
    82110 * @param[out] out Where the prefix length will be stored.
     
    84112 * errno.h. */
    85113static inline int bithenge_transform_prefix_length(bithenge_transform_t *self,
    86     bithenge_blob_t *blob, aoff64_t *out)
     114    bithenge_transform_context_t *context, bithenge_blob_t *blob,
     115    aoff64_t *out)
    87116{
    88117        assert(self);
     
    90119        if (!self->ops->prefix_length)
    91120                return ENOTSUP;
    92         return self->ops->prefix_length(self, blob, out);
     121        return self->ops->prefix_length(self, context, blob, out);
    93122}
    94123
Note: See TracChangeset for help on using the changeset viewer.