src: implement special member functions for classes in env.h · nodejs/node@a8b094c · GitHub
Skip to content

Commit

Permalink
src: implement special member functions for classes in env.h
Browse files Browse the repository at this point in the history
The classes in env.h were not adhering to the rule of five.
As per the rule of five, if a class implements any of five
special member functions, it must implement all the
five special member functions for enabling the compiler for
better optimization.

Refs: https://en.cppreference.com/w/cpp/language/rule_of_three

PR-URL: #28579
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
  • Loading branch information
GauthamBanasandra authored and targos committed Jul 20, 2019
1 parent c432ab1 commit a8b094c
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions src/env.h
Original file line number Diff line number Diff line change
Expand Up @@ -462,6 +462,8 @@ class IsolateData : public MemoryRetainer {
inline v8::Isolate* isolate() const;
IsolateData(const IsolateData&) = delete;
IsolateData& operator=(const IsolateData&) = delete;
IsolateData(IsolateData&&) = delete;
IsolateData& operator=(IsolateData&&) = delete;

private:
void DeserializeProperties(const std::vector<size_t>* indexes);
Expand Down Expand Up @@ -552,6 +554,12 @@ class AsyncRequest : public MemoryRetainer {
public:
AsyncRequest() = default;
~AsyncRequest();

AsyncRequest(const AsyncRequest&) = delete;
AsyncRequest& operator=(const AsyncRequest&) = delete;
AsyncRequest(AsyncRequest&&) = delete;
AsyncRequest& operator=(AsyncRequest&&) = delete;

void Install(Environment* env, void* data, uv_async_cb target);
void Uninstall();
void Stop();
Expand Down Expand Up @@ -636,6 +644,9 @@ class AsyncHooks : public MemoryRetainer {

AsyncHooks(const AsyncHooks&) = delete;
AsyncHooks& operator=(const AsyncHooks&) = delete;
AsyncHooks(AsyncHooks&&) = delete;
AsyncHooks& operator=(AsyncHooks&&) = delete;
~AsyncHooks() = default;

// Used to set the kDefaultTriggerAsyncId in a scope. This is instead of
// passing the trigger_async_id along with other constructor arguments.
Expand All @@ -650,6 +661,9 @@ class AsyncHooks : public MemoryRetainer {
DefaultTriggerAsyncIdScope(const DefaultTriggerAsyncIdScope&) = delete;
DefaultTriggerAsyncIdScope& operator=(const DefaultTriggerAsyncIdScope&) =
delete;
DefaultTriggerAsyncIdScope(DefaultTriggerAsyncIdScope&&) = delete;
DefaultTriggerAsyncIdScope& operator=(DefaultTriggerAsyncIdScope&&) =
delete;

private:
AsyncHooks* async_hooks_;
Expand Down Expand Up @@ -679,6 +693,8 @@ class AsyncCallbackScope {
~AsyncCallbackScope();
AsyncCallbackScope(const AsyncCallbackScope&) = delete;
AsyncCallbackScope& operator=(const AsyncCallbackScope&) = delete;
AsyncCallbackScope(AsyncCallbackScope&&) = delete;
AsyncCallbackScope& operator=(AsyncCallbackScope&&) = delete;

private:
Environment* env_;
Expand All @@ -697,6 +713,9 @@ class ImmediateInfo : public MemoryRetainer {

ImmediateInfo(const ImmediateInfo&) = delete;
ImmediateInfo& operator=(const ImmediateInfo&) = delete;
ImmediateInfo(ImmediateInfo&&) = delete;
ImmediateInfo& operator=(ImmediateInfo&&) = delete;
~ImmediateInfo() = default;

SET_MEMORY_INFO_NAME(ImmediateInfo)
SET_SELF_SIZE(ImmediateInfo)
Expand All @@ -723,6 +742,9 @@ class TickInfo : public MemoryRetainer {

TickInfo(const TickInfo&) = delete;
TickInfo& operator=(const TickInfo&) = delete;
TickInfo(TickInfo&&) = delete;
TickInfo& operator=(TickInfo&&) = delete;
~TickInfo() = default;

private:
friend class Environment; // So we can call the constructor.
Expand Down Expand Up @@ -757,6 +779,12 @@ class ShouldNotAbortOnUncaughtScope {
explicit inline ShouldNotAbortOnUncaughtScope(Environment* env);
inline void Close();
inline ~ShouldNotAbortOnUncaughtScope();
ShouldNotAbortOnUncaughtScope(const ShouldNotAbortOnUncaughtScope&) = delete;
ShouldNotAbortOnUncaughtScope& operator=(
const ShouldNotAbortOnUncaughtScope&) = delete;
ShouldNotAbortOnUncaughtScope(ShouldNotAbortOnUncaughtScope&&) = delete;
ShouldNotAbortOnUncaughtScope& operator=(ShouldNotAbortOnUncaughtScope&&) =
delete;

private:
Environment* env_;
Expand Down Expand Up @@ -796,6 +824,8 @@ class Environment : public MemoryRetainer {
public:
Environment(const Environment&) = delete;
Environment& operator=(const Environment&) = delete;
Environment(Environment&&) = delete;
Environment& operator=(Environment&&) = delete;

SET_MEMORY_INFO_NAME(Environment)

Expand Down

0 comments on commit a8b094c

Please sign in to comment.