0
Files
src/components/performance_manager/public/graph/node.h
Patrick Monette f717c7e322 Remove InitializingFrameNodeObserver
The recent addition of OnBeforeFrameNodeAdded and OnFrameNodeRemoved
observer methods render this class superfluous.

Change-Id: I0df4de14f0982a097a47c6fbd29999fa6643a4e2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6089681
Reviewed-by: Joe Mason <joenotcharles@google.com>
Commit-Queue: Patrick Monette <pmonette@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1395738}
2024-12-12 19:03:38 -08:00

60 lines
1.7 KiB
C++

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_PERFORMANCE_MANAGER_PUBLIC_GRAPH_NODE_H_
#define COMPONENTS_PERFORMANCE_MANAGER_PUBLIC_GRAPH_NODE_H_
#include <cstdint>
#include "base/check_op.h"
#include "components/performance_manager/public/graph/node_state.h"
#include "components/performance_manager/public/graph/node_type.h"
namespace performance_manager {
class Graph;
// Interface that all nodes must implement.
class Node {
public:
Node();
Node(const Node&) = delete;
Node& operator=(const Node&) = delete;
virtual ~Node();
// Returns the type of this node.
virtual NodeTypeEnum GetNodeType() const = 0;
// Returns the graph to which this node belongs.
virtual Graph* GetGraph() const = 0;
// The following functions are implementation detail and should not need to be
// used by external clients. They provide the ability to safely downcast to
// the underlying implementation.
virtual uintptr_t GetImplType() const = 0;
virtual const void* GetImpl() const = 0;
};
template <class PublicNodeClass>
class TypedNode : public Node {
public:
TypedNode() = default;
~TypedNode() override = default;
NodeTypeEnum GetNodeType() const override { return PublicNodeClass::Type(); }
// Helper function for casting from the generic Node type to its underlying
// public node type. This CHECKs that the cast is valid.
static const PublicNodeClass* FromNode(const Node* node) {
CHECK_EQ(node->GetNodeType(), PublicNodeClass::Type());
return reinterpret_cast<const PublicNodeClass*>(node);
}
};
} // namespace performance_manager
#endif // COMPONENTS_PERFORMANCE_MANAGER_PUBLIC_GRAPH_NODE_H_