/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- * vim: set ts=8 sts=2 et sw=2 tw=80: * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
void JS::ubi::Concrete<nsINode>::construct(void* storage, nsINode* ptr) { // nsINode is abstract, and all of its inherited instances have // an overridden function with instructions to construct ubi::Nodes. // We actually want to call that function and construct from those instances.
ptr->ConstructUbiNode(storage);
}
js::UniquePtr<EdgeRange> JS::ubi::Concrete<nsINode>::edges(
JSContext* cx, bool wantNames) const {
AutoSuppressGCAnalysis suppress; auto range = js::MakeUnique<SimpleEdgeRange>(); if (!range) { return nullptr;
} if (get().GetParent()) {
char16_t* edgeName = nullptr; if (wantNames) {
edgeName = NS_xstrdup(u"Parent Node");
} if (!range->addEdge(JS::ubi::Edge(edgeName, get().GetParent()))) { return nullptr;
}
} for (auto curr = get().GetFirstChild(); curr; curr = curr->GetNextSibling()) {
char16_t* edgeName = nullptr; if (wantNames) {
edgeName = NS_xstrdup(u"Child Node");
} if (!range->addEdge(JS::ubi::Edge(edgeName, curr))) { return nullptr;
}
} return js::UniquePtr<EdgeRange>(range.release());
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.