void java_bytecode_convert_classt::add_array_types() { const std::string letters="ijsbcfdza"; for(const char l : letters) { symbol_typet symbol_type= to_symbol_type(java_array_type(l).subtype()); struct_typet struct_type; // we have the base class, java.lang.Object, length and data // of appropriate type struct_type.set_tag(symbol_type.get_identifier()); struct_type.components().reserve(3); struct_typet::componentt comp0("@java.lang.Object", symbol_typet("java::java.lang.Object")); struct_type.components().push_back(comp0); struct_typet::componentt comp1("length", java_int_type()); struct_type.components().push_back(comp1); struct_typet::componentt comp2("data", pointer_typet(java_type_from_char(l))); struct_type.components().push_back(comp2); symbolt symbol; symbol.name=symbol_type.get_identifier(); symbol.base_name=symbol_type.get(ID_C_base_name); symbol.is_type=true; symbol.type=struct_type; symbol_table.add(symbol); } }
void shell_sort () { int h, s, i, j; size_t hold; for (h = startdst (msgset.count, &s); s > 0; s--, h = prevdst (h)) { if (verbose > 1) fprintf (stderr, _("distance %d\n"), h); for (j = h; j < msgset.count; j++) { hold = msgset.list[j]; for (i = j - h; i >= 0 && comp0 (hold, msgset.list[i]) < 0; i -= h) msgset.list[i + h] = msgset.list[i]; msgset.list[i + h] = hold; } } }
int comp (const void *a, const void *b) { return comp0 (* (size_t*) a, * (size_t*) b); }