status_t BMenuField::AllUnarchived(const BMessage* from) { BUnarchiver unarchiver(from); status_t err = B_OK; if ((err = BView::AllUnarchived(from)) != B_OK) return err; _InitMenuBar(from); if (unarchiver.IsInstantiated(kMenuBarItemField)) { MenuBarLayoutItem*& menuItem = fLayoutData->menu_bar_layout_item; err = unarchiver.FindObject(kMenuBarItemField, BUnarchiver::B_DONT_ASSUME_OWNERSHIP, menuItem); if (err == B_OK) menuItem->SetParent(this); else return err; } if (unarchiver.IsInstantiated(kLabelItemField)) { LabelLayoutItem*& labelItem = fLayoutData->label_layout_item; err = unarchiver.FindObject(kLabelItemField, BUnarchiver::B_DONT_ASSUME_OWNERSHIP, labelItem); if (err == B_OK) labelItem->SetParent(this); } return err; }
status_t BAbstractSpinner::AllUnarchived(const BMessage* from) { BUnarchiver unarchiver(from); status_t result = B_OK; if ((result = BControl::AllUnarchived(from)) != B_OK) return result; if (unarchiver.IsInstantiated(kTextViewItemField)) { TextViewLayoutItem*& textViewItem = fLayoutData->text_view_layout_item; result = unarchiver.FindObject(kTextViewItemField, BUnarchiver::B_DONT_ASSUME_OWNERSHIP, textViewItem); if (result == B_OK) textViewItem->SetParent(this); else return result; } if (unarchiver.IsInstantiated(kLabelItemField)) { LabelLayoutItem*& labelItem = fLayoutData->label_layout_item; result = unarchiver.FindObject(kLabelItemField, BUnarchiver::B_DONT_ASSUME_OWNERSHIP, labelItem); if (result == B_OK) labelItem->SetParent(this); } return result; }
status_t BTextControl::AllUnarchived(const BMessage* from) { status_t err; if ((err = BControl::AllUnarchived(from)) != B_OK) return err; _InitText(NULL, from); BUnarchiver unarchiver(from); if (unarchiver.IsInstantiated(kTextViewItemField)) { err = unarchiver.FindObject(kTextViewItemField, BUnarchiver::B_DONT_ASSUME_OWNERSHIP, fLayoutData->text_view_layout_item); if (err == B_OK) fLayoutData->text_view_layout_item->SetParent(this); else return err; } if (unarchiver.IsInstantiated(kLabelItemField)) { err = unarchiver.FindObject(kLabelItemField, BUnarchiver::B_DONT_ASSUME_OWNERSHIP, fLayoutData->label_layout_item); if (err == B_OK) fLayoutData->label_layout_item->SetParent(this); } return err; }
BViewLayoutItem::BViewLayoutItem(BMessage* from) : BLayoutItem(BUnarchiver::PrepareArchive(from)), fView(NULL), fAncestorsVisible(true) { BUnarchiver unarchiver(from); unarchiver.Finish(unarchiver.FindObject<BView>(kViewField, 0, BUnarchiver::B_DONT_ASSUME_OWNERSHIP, fView)); }
model::Model LoadArchivedModel(std::istream& stream) { try { utilities::SerializationContext context; RegisterNodeTypes(context); UnarchiverType unarchiver(stream, context); model::Model model; unarchiver.Unarchive(model); return model; } catch (const std::exception&) { throw utilities::InputException(utilities::InputExceptionErrors::invalidArgument, "Error: couldn't read file."); } }
BMenuField::BMenuField(BMessage* data) : BView(BUnarchiver::PrepareArchive(data)) { BUnarchiver unarchiver(data); const char* label = NULL; data->FindString("_label", &label); InitObject(label); data->FindFloat("_divide", &fDivider); int32 align; if (data->FindInt32("_align", &align) == B_OK) SetAlignment((alignment)align); if (!BUnarchiver::IsArchiveManaged(data)) _InitMenuBar(data); unarchiver.Finish(); }
BTextControl::BTextControl(BMessage* archive) : BControl(BUnarchiver::PrepareArchive(archive)) { BUnarchiver unarchiver(archive); _InitData(Label(), archive); if (!BUnarchiver::IsArchiveManaged(archive)) _InitText(NULL, archive); status_t err = B_OK; if (archive->HasFloat("_divide")) err = archive->FindFloat("_divide", &fDivider); if (err == B_OK && archive->HasMessage("_mod_msg")) { BMessage* message = new BMessage; err = archive->FindMessage("_mod_msg", message); SetModificationMessage(message); } unarchiver.Finish(err); }