| 939 | } |
| 940 | |
| 941 | static inline void _AR_EXP_FreeOpInternals |
| 942 | ( |
| 943 | AR_ExpNode *op_node |
| 944 | ) { |
| 945 | if(AGGREGATION_NODE(op_node)) { |
| 946 | AR_FuncDesc *agg_func = op_node->op.f; |
| 947 | |
| 948 | AggregateCtx *ctx = op_node->op.private_data; |
| 949 | ASSERT(ctx != NULL); |
| 950 | |
| 951 | Aggregate_Free(agg_func, ctx); |
| 952 | } else if(op_node->op.f->callbacks.free && op_node->op.private_data) { |
| 953 | op_node->op.f->callbacks.free(op_node->op.private_data); |
| 954 | } |
| 955 | |
| 956 | for(int child_idx = 0; child_idx < op_node->op.child_count; child_idx++) { |
| 957 | AR_EXP_Free(op_node->op.children[child_idx]); |
| 958 | } |
| 959 | |
| 960 | rm_free(op_node->op.children); |
| 961 | } |
| 962 | |
| 963 | inline void AR_EXP_Free |
| 964 | ( |
no test coverage detected