Бля, вот как можно таким мудаком быть-то?
class Device : public QObject
{
....
Device* parent;
QString deviceUdi;
QString parentUdiString;
....
}
Это засунуть в QList.
Нужно понимать, что Device однозначно идентифицируется своим UDI и бОльшая часть действий начинается с поиска объекта по UDI.
А потом написать вот такой WTF по связыванию детей с родителями при инициализации:
foreach (Device *device,storageDevices())
foreach (Device *parentDevice,storageDevices())
if (parentDevice->udi() == device->parentUdi()) {
device->setParent(parentDevice);
break;
}
std::cerr << "[E] Parents done\n";
Пиздец, O(n^2). Нахуя вообще Device* parent, если он избыточен и вполне достаточно знать QString parentUdiString ? А вот зачем: чтобы когда понадобиться полезть к родителю, можно было просто сходить по указателю, вместо вызова ещё одного WTF:
Device *Hal::findDevice(const QString &deviceUdi) {
foreach (Device* device,storageDevicesList)
if (device->udi() == deviceUdi)
return device;
return 0;
}
Блядь, ну для чего-то же существует QHash, ну какого хуя в 21 веке делать тупорылый поиск? И нахуя Device делать объектом, если на самом деле хватает typedef struct?
Интересно, чего я такого покурил когда два года назад писал эту поебень?