Changes in uspace/lib/bithenge/src/sequence.c [6cd10ac:b7fd2a0] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/bithenge/src/sequence.c
r6cd10ac rb7fd2a0 58 58 59 59 typedef struct seq_node_ops { 60 int (*get_transform)(seq_node_t *self, bithenge_transform_t **out,60 errno_t (*get_transform)(seq_node_t *self, bithenge_transform_t **out, 61 61 bithenge_int_t index); 62 62 } seq_node_ops_t; … … 72 72 } 73 73 74 static int seq_node_field_offset(seq_node_t *self, aoff64_t *out, size_t index)74 static errno_t seq_node_field_offset(seq_node_t *self, aoff64_t *out, size_t index) 75 75 { 76 76 if (index == 0) { … … 83 83 for (; self->num_ends <= index; self->num_ends++) { 84 84 bithenge_transform_t *subxform; 85 int rc = self->ops->get_transform(self, &subxform,85 errno_t rc = self->ops->get_transform(self, &subxform, 86 86 self->num_ends); 87 87 if (rc != EOK) … … 136 136 } 137 137 138 static int seq_node_subtransform(seq_node_t *self, bithenge_node_t **out,138 static errno_t seq_node_subtransform(seq_node_t *self, bithenge_node_t **out, 139 139 size_t index) 140 140 { 141 141 aoff64_t start_pos; 142 int rc = seq_node_field_offset(self, &start_pos, index);142 errno_t rc = seq_node_field_offset(self, &start_pos, index); 143 143 if (rc != EOK) 144 144 return rc; … … 194 194 } else { 195 195 aoff64_t end_pos; 196 int rc = seq_node_field_offset(self, &end_pos, index + 1);196 errno_t rc = seq_node_field_offset(self, &end_pos, index + 1); 197 197 if (rc != EOK) { 198 198 bithenge_transform_dec_ref(subxform); … … 220 220 } 221 221 222 static int seq_node_complete(seq_node_t *self, bool *out)222 static errno_t seq_node_complete(seq_node_t *self, bool *out) 223 223 { 224 224 aoff64_t blob_size, end_pos; 225 int rc = bithenge_blob_size(self->blob, &blob_size);225 errno_t rc = bithenge_blob_size(self->blob, &blob_size); 226 226 if (rc != EOK) 227 227 return rc; … … 251 251 } 252 252 253 static int seq_node_init(seq_node_t *self, const seq_node_ops_t *ops,253 static errno_t seq_node_init(seq_node_t *self, const seq_node_ops_t *ops, 254 254 bithenge_scope_t *scope, bithenge_blob_t *blob, bithenge_int_t num_xforms, 255 255 bool end_on_empty) … … 319 319 } 320 320 321 static int struct_node_for_each(bithenge_node_t *base,321 static errno_t struct_node_for_each(bithenge_node_t *base, 322 322 bithenge_for_each_func_t func, void *data) 323 323 { 324 int rc = EOK;324 errno_t rc = EOK; 325 325 struct_node_t *self = node_as_struct(base); 326 326 bithenge_named_transform_t *subxforms = … … 368 368 } 369 369 370 static int struct_node_get(bithenge_node_t *base, bithenge_node_t *key,370 static errno_t struct_node_get(bithenge_node_t *base, bithenge_node_t *key, 371 371 bithenge_node_t **out) 372 372 { 373 373 struct_node_t *self = node_as_struct(base); 374 374 375 int rc = ENOENT;375 errno_t rc = ENOENT; 376 376 if (bithenge_node_type(key) != BITHENGE_NODE_STRING) 377 377 goto end; … … 455 455 }; 456 456 457 static int struct_node_get_transform(seq_node_t *base,457 static errno_t struct_node_get_transform(seq_node_t *base, 458 458 bithenge_transform_t **out, bithenge_int_t index) 459 459 { … … 468 468 }; 469 469 470 static int struct_transform_make_node(struct_transform_t *self,470 static errno_t struct_transform_make_node(struct_transform_t *self, 471 471 bithenge_node_t **out, bithenge_scope_t *scope, bithenge_blob_t *blob, 472 472 bool prefix) … … 476 476 return ENOMEM; 477 477 478 int rc = bithenge_init_internal_node(struct_as_node(node),478 errno_t rc = bithenge_init_internal_node(struct_as_node(node), 479 479 &struct_node_ops); 480 480 if (rc != EOK) { … … 513 513 } 514 514 515 static int struct_transform_apply(bithenge_transform_t *base,515 static errno_t struct_transform_apply(bithenge_transform_t *base, 516 516 bithenge_scope_t *scope, bithenge_node_t *in, bithenge_node_t **out) 517 517 { … … 523 523 } 524 524 525 static int struct_transform_prefix_length(bithenge_transform_t *base,525 static errno_t struct_transform_prefix_length(bithenge_transform_t *base, 526 526 bithenge_scope_t *scope, bithenge_blob_t *blob, aoff64_t *out) 527 527 { 528 528 struct_transform_t *self = transform_as_struct(base); 529 529 bithenge_node_t *struct_node; 530 int rc = struct_transform_make_node(self, &struct_node, scope, blob,530 errno_t rc = struct_transform_make_node(self, &struct_node, scope, blob, 531 531 true); 532 532 if (rc != EOK) … … 539 539 } 540 540 541 static int struct_transform_prefix_apply(bithenge_transform_t *base,541 static errno_t struct_transform_prefix_apply(bithenge_transform_t *base, 542 542 bithenge_scope_t *scope, bithenge_blob_t *blob, bithenge_node_t **out_node, 543 543 aoff64_t *out_size) 544 544 { 545 545 struct_transform_t *self = transform_as_struct(base); 546 int rc = struct_transform_make_node(self, out_node, scope, blob,546 errno_t rc = struct_transform_make_node(self, out_node, scope, blob, 547 547 true); 548 548 if (rc != EOK) … … 592 592 * @param subtransforms The subtransforms and field names. 593 593 * @return EOK on success or an error code from errno.h. */ 594 int bithenge_new_struct(bithenge_transform_t **out,594 errno_t bithenge_new_struct(bithenge_transform_t **out, 595 595 bithenge_named_transform_t *subtransforms) 596 596 { 597 int rc;597 errno_t rc; 598 598 struct_transform_t *self = malloc(sizeof(*self)); 599 599 if (!self) { … … 669 669 } 670 670 671 static int repeat_node_for_each(bithenge_node_t *base,671 static errno_t repeat_node_for_each(bithenge_node_t *base, 672 672 bithenge_for_each_func_t func, void *data) 673 673 { 674 int rc = EOK;674 errno_t rc = EOK; 675 675 repeat_node_t *self = node_as_repeat(base); 676 676 … … 712 712 } 713 713 714 static int repeat_node_get(bithenge_node_t *base, bithenge_node_t *key,714 static errno_t repeat_node_get(bithenge_node_t *base, bithenge_node_t *key, 715 715 bithenge_node_t **out) 716 716 { … … 743 743 }; 744 744 745 static int repeat_node_get_transform(seq_node_t *base,745 static errno_t repeat_node_get_transform(seq_node_t *base, 746 746 bithenge_transform_t **out, bithenge_int_t index) 747 747 { … … 756 756 }; 757 757 758 static int repeat_transform_make_node(repeat_transform_t *self,758 static errno_t repeat_transform_make_node(repeat_transform_t *self, 759 759 bithenge_node_t **out, bithenge_scope_t *scope, bithenge_blob_t *blob, 760 760 bool prefix) … … 763 763 if (self->expr != NULL) { 764 764 bithenge_node_t *count_node; 765 int rc = bithenge_expression_evaluate(self->expr, scope,765 errno_t rc = bithenge_expression_evaluate(self->expr, scope, 766 766 &count_node); 767 767 if (rc != EOK) … … 781 781 return ENOMEM; 782 782 783 int rc = bithenge_init_internal_node(repeat_as_node(node),783 errno_t rc = bithenge_init_internal_node(repeat_as_node(node), 784 784 &repeat_node_ops); 785 785 if (rc != EOK) { … … 803 803 } 804 804 805 static int repeat_transform_apply(bithenge_transform_t *base,805 static errno_t repeat_transform_apply(bithenge_transform_t *base, 806 806 bithenge_scope_t *scope, bithenge_node_t *in, bithenge_node_t **out) 807 807 { … … 813 813 } 814 814 815 static int repeat_transform_prefix_apply(bithenge_transform_t *base,815 static errno_t repeat_transform_prefix_apply(bithenge_transform_t *base, 816 816 bithenge_scope_t *scope, bithenge_blob_t *blob, bithenge_node_t **out_node, 817 817 aoff64_t *out_size) 818 818 { 819 819 repeat_transform_t *self = transform_as_repeat(base); 820 int rc = repeat_transform_make_node(self, out_node, scope, blob, true);820 errno_t rc = repeat_transform_make_node(self, out_node, scope, blob, true); 821 821 if (rc != EOK) 822 822 return rc; … … 871 871 * May be NULL, in which case @a xform will be applied indefinitely. 872 872 * @return EOK on success or an error code from errno.h. */ 873 int bithenge_repeat_transform(bithenge_transform_t **out,873 errno_t bithenge_repeat_transform(bithenge_transform_t **out, 874 874 bithenge_transform_t *xform, bithenge_expression_t *expr) 875 875 { 876 int rc;876 errno_t rc; 877 877 repeat_transform_t *self = malloc(sizeof(*self)); 878 878 if (!self) { … … 947 947 } 948 948 949 static int do_while_node_for_each(bithenge_node_t *base,949 static errno_t do_while_node_for_each(bithenge_node_t *base, 950 950 bithenge_for_each_func_t func, void *data) 951 951 { 952 int rc = EOK;952 errno_t rc = EOK; 953 953 do_while_node_t *self = node_as_do_while(base); 954 954 … … 1018 1018 }; 1019 1019 1020 static int do_while_node_get_transform(seq_node_t *base,1020 static errno_t do_while_node_get_transform(seq_node_t *base, 1021 1021 bithenge_transform_t **out, bithenge_int_t index) 1022 1022 { … … 1031 1031 }; 1032 1032 1033 static int do_while_transform_make_node(do_while_transform_t *self,1033 static errno_t do_while_transform_make_node(do_while_transform_t *self, 1034 1034 bithenge_node_t **out, bithenge_scope_t *scope, bithenge_blob_t *blob) 1035 1035 { … … 1038 1038 return ENOMEM; 1039 1039 1040 int rc = bithenge_init_internal_node(do_while_as_node(node),1040 errno_t rc = bithenge_init_internal_node(do_while_as_node(node), 1041 1041 &do_while_node_ops); 1042 1042 if (rc != EOK) { … … 1061 1061 } 1062 1062 1063 static int for_each_noop(bithenge_node_t *key, bithenge_node_t *value,1063 static errno_t for_each_noop(bithenge_node_t *key, bithenge_node_t *value, 1064 1064 void *data) 1065 1065 { … … 1069 1069 } 1070 1070 1071 static int do_while_transform_prefix_apply(bithenge_transform_t *base,1071 static errno_t do_while_transform_prefix_apply(bithenge_transform_t *base, 1072 1072 bithenge_scope_t *scope, bithenge_blob_t *blob, bithenge_node_t **out_node, 1073 1073 aoff64_t *out_size) 1074 1074 { 1075 1075 do_while_transform_t *self = transform_as_do_while(base); 1076 int rc = do_while_transform_make_node(self, out_node, scope, blob);1076 errno_t rc = do_while_transform_make_node(self, out_node, scope, blob); 1077 1077 if (rc != EOK) 1078 1078 return rc; … … 1116 1116 * determine whether there will be more. 1117 1117 * @return EOK on success or an error code from errno.h. */ 1118 int bithenge_do_while_transform(bithenge_transform_t **out,1118 errno_t bithenge_do_while_transform(bithenge_transform_t **out, 1119 1119 bithenge_transform_t *xform, bithenge_expression_t *expr) 1120 1120 { 1121 int rc;1121 errno_t rc; 1122 1122 do_while_transform_t *self = malloc(sizeof(*self)); 1123 1123 if (!self) {
Note:
See TracChangeset
for help on using the changeset viewer.