Changeset 43788b2 in mainline for uspace/app/bithenge/transform.c
- Timestamp:
- 2012-07-26T22:26:19Z (12 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.c
r842ed146 r43788b2 62 62 63 63 static int ascii_apply(bithenge_transform_t *self, 64 bithenge_node_t *in, bithenge_node_t **out) 64 bithenge_transform_context_t *context, bithenge_node_t *in, 65 bithenge_node_t **out) 65 66 { 66 67 int rc; … … 102 103 }; 103 104 104 static int prefix_length_1(bithenge_transform_t *self, bithenge_blob_t *blob, 105 static int prefix_length_1(bithenge_transform_t *self, 106 bithenge_transform_context_t *context, bithenge_blob_t *blob, 105 107 aoff64_t *out) 106 108 { … … 109 111 } 110 112 111 static int prefix_length_2(bithenge_transform_t *self, bithenge_blob_t *blob, 113 static int prefix_length_2(bithenge_transform_t *self, 114 bithenge_transform_context_t *context, bithenge_blob_t *blob, 112 115 aoff64_t *out) 113 116 { … … 116 119 } 117 120 118 static int prefix_length_4(bithenge_transform_t *self, bithenge_blob_t *blob, 121 static int prefix_length_4(bithenge_transform_t *self, 122 bithenge_transform_context_t *context, bithenge_blob_t *blob, 119 123 aoff64_t *out) 120 124 { … … 123 127 } 124 128 125 static int prefix_length_8(bithenge_transform_t *self, bithenge_blob_t *blob, 129 static int prefix_length_8(bithenge_transform_t *self, 130 bithenge_transform_context_t *context, bithenge_blob_t *blob, 126 131 aoff64_t *out) 127 132 { … … 132 137 #define MAKE_UINT_TRANSFORM(NAME, TYPE, ENDIAN, PREFIX_LENGTH_FUNC) \ 133 138 static int NAME##_apply(bithenge_transform_t *self, \ 134 bithenge_node_t *in, bithenge_node_t **out) \ 139 bithenge_transform_context_t *context, bithenge_node_t *in, \ 140 bithenge_node_t **out) \ 135 141 { \ 136 142 int rc; \ … … 170 176 171 177 static int zero_terminated_apply(bithenge_transform_t *self, 172 bithenge_node_t *in, bithenge_node_t **out) 178 bithenge_transform_context_t *context, bithenge_node_t *in, 179 bithenge_node_t **out) 173 180 { 174 181 int rc; … … 194 201 195 202 static int zero_terminated_prefix_length(bithenge_transform_t *self, 196 bithenge_blob_t *blob, aoff64_t *out) 203 bithenge_transform_context_t *context, bithenge_blob_t *blob, 204 aoff64_t *out) 197 205 { 198 206 int rc; … … 243 251 bithenge_node_t base; 244 252 struct struct_transform *transform; 253 bithenge_transform_context_t *context; 245 254 bithenge_blob_t *blob; 246 255 } struct_node_t; … … 272 281 273 282 static int struct_node_for_one(const char *name, 274 bithenge_transform_t *subxform, bithenge_ blob_t **blob,275 bithenge_ for_each_func_t func, void *data)283 bithenge_transform_t *subxform, bithenge_transform_context_t *context, 284 bithenge_blob_t **blob, bithenge_for_each_func_t func, void *data) 276 285 { 277 286 int rc; … … 279 288 280 289 aoff64_t sub_size; 281 rc = bithenge_transform_prefix_length(subxform, *blob, &sub_size); 290 rc = bithenge_transform_prefix_length(subxform, context, *blob, 291 &sub_size); 282 292 if (rc != EOK) 283 293 goto error; … … 289 299 goto error; 290 300 291 rc = bithenge_transform_apply(subxform, subblob_node,301 rc = bithenge_transform_apply(subxform, context, subblob_node, 292 302 &subxform_result); 293 303 bithenge_node_dec_ref(subblob_node); … … 347 357 for (size_t i = 0; subxforms[i].transform; i++) { 348 358 rc = struct_node_for_one(subxforms[i].name, 349 subxforms[i].transform, &blob, func, data); 359 subxforms[i].transform, struct_node->context, &blob, func, 360 data); 350 361 if (rc != EOK) 351 362 goto error; … … 380 391 381 392 static int struct_transform_apply(bithenge_transform_t *base, 382 bithenge_node_t *in, bithenge_node_t **out) 393 bithenge_transform_context_t *context, bithenge_node_t *in, 394 bithenge_node_t **out) 383 395 { 384 396 struct_transform_t *self = transform_as_struct(base); … … 397 409 node->transform = self; 398 410 bithenge_node_inc_ref(in); 411 node->context = context; 399 412 node->blob = bithenge_node_as_blob(in); 400 413 *out = struct_as_node(node); … … 403 416 404 417 static int struct_transform_prefix_length(bithenge_transform_t *base, 405 bithenge_blob_t *blob, aoff64_t *out) 418 bithenge_transform_context_t *context, bithenge_blob_t *blob, 419 aoff64_t *out) 406 420 { 407 421 struct_transform_t *self = transform_as_struct(base); … … 419 433 self->subtransforms[i].transform; 420 434 aoff64_t sub_size; 421 rc = bithenge_transform_prefix_length(subxform, blob, &sub_size); 435 rc = bithenge_transform_prefix_length(subxform, context, blob, 436 &sub_size); 422 437 if (rc != EOK) 423 438 goto error; … … 502 517 } 503 518 504 static int compose_apply(bithenge_transform_t *base, bithenge_node_t *in, 519 static int compose_apply(bithenge_transform_t *base, 520 bithenge_transform_context_t *context, bithenge_node_t *in, 505 521 bithenge_node_t **out) 506 522 { … … 512 528 for (size_t i = self->num; i--; ) { 513 529 bithenge_node_t *tmp; 514 rc = bithenge_transform_apply(self->xforms[i], in, &tmp); 530 rc = bithenge_transform_apply(self->xforms[i], context, in, 531 &tmp); 515 532 bithenge_node_dec_ref(in); 516 533 if (rc != EOK) … … 524 541 525 542 static int compose_prefix_length(bithenge_transform_t *base, 526 bithenge_blob_t *blob, aoff64_t *out) 543 bithenge_transform_context_t *context, bithenge_blob_t *blob, 544 aoff64_t *out) 527 545 { 528 546 compose_transform_t *self = transform_as_compose(base); 529 547 return bithenge_transform_prefix_length(self->xforms[self->num - 1], 530 blob, out);548 context, blob, out); 531 549 } 532 550
Note:
See TracChangeset
for help on using the changeset viewer.