void SortSpec_serialize(SortSpec *self, OutStream *target) { SortSpecIVARS *const ivars = SortSpec_IVARS(self); uint32_t num_rules = VA_Get_Size(ivars->rules); OutStream_Write_C32(target, num_rules); for (uint32_t i = 0; i < num_rules; i++) { SortRule *rule = (SortRule*)VA_Fetch(ivars->rules, i); SortRule_Serialize(rule, target); } }
SortSpec* SortSpec_init(SortSpec *self, VArray *rules) { SortSpecIVARS *const ivars = SortSpec_IVARS(self); ivars->rules = VA_Shallow_Copy(rules); for (int32_t i = 0, max = VA_Get_Size(rules); i < max; i++) { SortRule *rule = (SortRule*)VA_Fetch(rules, i); CERTIFY(rule, SORTRULE); } return self; }
VArray* SortSpec_get_rules(SortSpec *self) { return SortSpec_IVARS(self)->rules; }
void SortSpec_destroy(SortSpec *self) { SortSpecIVARS *const ivars = SortSpec_IVARS(self); DECREF(ivars->rules); SUPER_DESTROY(self, SORTSPEC); }
VArray* SortSpec_Get_Rules_IMP(SortSpec *self) { return SortSpec_IVARS(self)->rules; }