Changeset 43788b2 in mainline for uspace/app/bithenge/transform.h
- Timestamp:
- 2012-07-26T22:26:19Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5a7c0e6
- Parents:
- 842ed146
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/bithenge/transform.h
r842ed146 r43788b2 48 48 } bithenge_transform_t; 49 49 50 /** Context and parameters used when applying transforms. */ 51 typedef struct { 52 /** @privatesection */ 53 } bithenge_transform_context_t; 54 50 55 /** Operations that may be provided by a transform. */ 51 56 typedef struct bithenge_transform_ops { 52 57 /** @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); 54 61 /** @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); 56 65 /** Destroy the transform. 57 66 * @param self The transform. */ … … 59 68 } bithenge_transform_ops_t; 60 69 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. */ 73 static 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. */ 81 static inline void bithenge_transform_context_destroy( 82 bithenge_transform_context_t *context) 83 { 84 } 85 86 /** Apply a transform. Takes ownership of nothing. 62 87 * @memberof bithenge_transform_t 63 88 * @param self The transform. 89 * @param context The context. 64 90 * @param in The input tree. 65 91 * @param[out] out Where the output tree will be stored. 66 92 * @return EOK on success or an error code from errno.h. */ 67 93 static 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) 69 96 { 70 97 assert(self); 71 98 assert(self->ops); 72 return self->ops->apply(self, in, out);99 return self->ops->apply(self, context, in, out); 73 100 } 74 101 … … 76 103 * other words, figure out how many bytes this transform will use up. This 77 104 * method is optional and can return an error, but it must succeed for struct 78 * subtransforms. 105 * subtransforms. Takes ownership of nothing. 79 106 * @memberof bithenge_transform_t 80 107 * @param self The transform. 108 * @param context The context. 81 109 * @param blob The blob. 82 110 * @param[out] out Where the prefix length will be stored. … … 84 112 * errno.h. */ 85 113 static 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) 87 116 { 88 117 assert(self); … … 90 119 if (!self->ops->prefix_length) 91 120 return ENOTSUP; 92 return self->ops->prefix_length(self, blob, out);121 return self->ops->prefix_length(self, context, blob, out); 93 122 } 94 123
Note:
See TracChangeset
for help on using the changeset viewer.