Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard')
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/AbstractMethodStub.java5
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/AssignOpMethodStub.java95
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/CopyConstructorMethodStub.java94
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/IMethodStub.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/MoveAssignOpMethodStub.java95
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/MoveConstructorMethodStub.java94
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.java4
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.properties4
8 files changed, 393 insertions, 0 deletions
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/AbstractMethodStub.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/AbstractMethodStub.java
index d3e9a12f78f..46970bc3395 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/AbstractMethodStub.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/AbstractMethodStub.java
@@ -104,4 +104,9 @@ public abstract class AbstractMethodStub implements IMethodStub {
@Override
public abstract String createMethodImplementation(ITranslationUnit tu, String className,
IBaseClassInfo[] baseClasses, String lineDelimiter) throws CoreException;
+
+ @Override
+ public boolean isEnabledByDefault() {
+ return true;
+ }
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/AssignOpMethodStub.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/AssignOpMethodStub.java
new file mode 100644
index 00000000000..9609dd37ed6
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/AssignOpMethodStub.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Marco Stornelli
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Marco Stornelli - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.wizards.classwizard;
+
+import org.eclipse.cdt.core.model.ITranslationUnit;
+import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
+import org.eclipse.cdt.ui.CodeGeneration;
+import org.eclipse.core.runtime.CoreException;
+
+public final class AssignOpMethodStub extends AbstractMethodStub {
+ private static String NAME = NewClassWizardMessages.NewClassCodeGeneration_stub_assign_op_name;
+
+ public AssignOpMethodStub() {
+ this(ASTAccessVisibility.PUBLIC, false);
+ }
+
+ public AssignOpMethodStub(ASTAccessVisibility access, boolean isInline) {
+ super(NAME, access, false, isInline);
+ }
+
+ @Override
+ public String createMethodDeclaration(ITranslationUnit tu, String className, IBaseClassInfo[] baseClasses,
+ String lineDelimiter) throws CoreException {
+ StringBuilder buf = new StringBuilder();
+ buf.append(className);
+ buf.append("& operator=(const "); //$NON-NLS-1$
+ buf.append(className);
+ buf.append("& other)"); //$NON-NLS-1$
+ if (fIsInline) {
+ buf.append('{');
+ buf.append(lineDelimiter);
+ String body = CodeGeneration.getMethodBodyContent(tu, className, "operator=", null, lineDelimiter); //$NON-NLS-1$
+ if (body != null) {
+ buf.append(body);
+ buf.append(lineDelimiter);
+ }
+ buf.append('}');
+ } else {
+ buf.append(";"); //$NON-NLS-1$
+ }
+ return buf.toString();
+ }
+
+ @Override
+ public String createMethodImplementation(ITranslationUnit tu, String className, IBaseClassInfo[] baseClasses,
+ String lineDelimiter) throws CoreException {
+ if (fIsInline) {
+ return ""; //$NON-NLS-1$
+ }
+ StringBuilder buf = new StringBuilder();
+ buf.append(className);
+ buf.append("& "); //$NON-NLS-1$
+ buf.append(className);
+ buf.append("::"); //$NON-NLS-1$
+ buf.append("operator=(const "); //$NON-NLS-1$
+ buf.append(className);
+ buf.append("& other)"); //$NON-NLS-1$
+ buf.append(lineDelimiter);
+ buf.append('{');
+ buf.append(lineDelimiter);
+ String body = CodeGeneration.getMethodBodyContent(tu, className, "operator=", null, lineDelimiter); //$NON-NLS-1$
+ if (body != null) {
+ buf.append(body);
+ buf.append(lineDelimiter);
+ }
+ buf.append('}');
+ return buf.toString();
+ }
+
+ @Override
+ public boolean isConstructor() {
+ return false;
+ }
+
+ @Override
+ public boolean isEnabledByDefault() {
+ return false;
+ }
+
+ @Override
+ public boolean canModifyVirtual() {
+ return false;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/CopyConstructorMethodStub.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/CopyConstructorMethodStub.java
new file mode 100644
index 00000000000..2dbae40e58d
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/CopyConstructorMethodStub.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Marco Stornelli
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Marco Stornelli - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.wizards.classwizard;
+
+import org.eclipse.cdt.core.model.ITranslationUnit;
+import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
+import org.eclipse.cdt.ui.CodeGeneration;
+import org.eclipse.core.runtime.CoreException;
+
+public final class CopyConstructorMethodStub extends AbstractMethodStub {
+ private static String NAME = NewClassWizardMessages.NewClassCodeGeneration_stub_copy_constructor_name;
+
+ public CopyConstructorMethodStub() {
+ this(ASTAccessVisibility.PUBLIC, false);
+ }
+
+ public CopyConstructorMethodStub(ASTAccessVisibility access, boolean isInline) {
+ super(NAME, access, false, isInline);
+ }
+
+ @Override
+ public String createMethodDeclaration(ITranslationUnit tu, String className, IBaseClassInfo[] baseClasses,
+ String lineDelimiter) throws CoreException {
+ StringBuilder buf = new StringBuilder();
+ buf.append(className);
+ buf.append("(const "); //$NON-NLS-1$
+ buf.append(className);
+ buf.append("& other)"); //$NON-NLS-1$
+ if (fIsInline) {
+ buf.append('{');
+ buf.append(lineDelimiter);
+ String body = CodeGeneration.getConstructorBodyContent(tu, className, null, lineDelimiter);
+ if (body != null) {
+ buf.append(body);
+ buf.append(lineDelimiter);
+ }
+ buf.append('}');
+ } else {
+ buf.append(";"); //$NON-NLS-1$
+ }
+ return buf.toString();
+ }
+
+ @Override
+ public String createMethodImplementation(ITranslationUnit tu, String className, IBaseClassInfo[] baseClasses,
+ String lineDelimiter) throws CoreException {
+ if (fIsInline) {
+ return ""; //$NON-NLS-1$
+ }
+ StringBuilder buf = new StringBuilder();
+ buf.append(className);
+ buf.append("::"); //$NON-NLS-1$
+ buf.append(className);
+ buf.append("(const "); //$NON-NLS-1$
+ buf.append(className);
+ buf.append("& other)"); //$NON-NLS-1$
+ buf.append(lineDelimiter);
+ buf.append('{');
+ buf.append(lineDelimiter);
+ String body = CodeGeneration.getConstructorBodyContent(tu, className, null, lineDelimiter);
+ if (body != null) {
+ buf.append(body);
+ buf.append(lineDelimiter);
+ }
+ buf.append('}');
+ return buf.toString();
+ }
+
+ @Override
+ public boolean isConstructor() {
+ return true;
+ }
+
+ @Override
+ public boolean isEnabledByDefault() {
+ return false;
+ }
+
+ @Override
+ public boolean canModifyVirtual() {
+ return false;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/IMethodStub.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/IMethodStub.java
index 9026edc9ff6..7191ce89130 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/IMethodStub.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/IMethodStub.java
@@ -45,6 +45,8 @@ public interface IMethodStub {
public boolean isDestructor();
+ public boolean isEnabledByDefault();
+
public String createMethodDeclaration(ITranslationUnit tu, String className, IBaseClassInfo[] baseClasses,
String lineDelimiter) throws CoreException;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/MoveAssignOpMethodStub.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/MoveAssignOpMethodStub.java
new file mode 100644
index 00000000000..b337e182383
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/MoveAssignOpMethodStub.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Marco Stornelli
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Marco Stornelli - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.wizards.classwizard;
+
+import org.eclipse.cdt.core.model.ITranslationUnit;
+import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
+import org.eclipse.cdt.ui.CodeGeneration;
+import org.eclipse.core.runtime.CoreException;
+
+public final class MoveAssignOpMethodStub extends AbstractMethodStub {
+ private static String NAME = NewClassWizardMessages.NewClassCodeGeneration_stub_move_op_name;
+
+ public MoveAssignOpMethodStub() {
+ this(ASTAccessVisibility.PUBLIC, false);
+ }
+
+ public MoveAssignOpMethodStub(ASTAccessVisibility access, boolean isInline) {
+ super(NAME, access, false, isInline);
+ }
+
+ @Override
+ public String createMethodDeclaration(ITranslationUnit tu, String className, IBaseClassInfo[] baseClasses,
+ String lineDelimiter) throws CoreException {
+ StringBuilder buf = new StringBuilder();
+ buf.append(className);
+ buf.append("& operator=("); //$NON-NLS-1$
+ buf.append(className);
+ buf.append("&& other)"); //$NON-NLS-1$
+ if (fIsInline) {
+ buf.append('{');
+ buf.append(lineDelimiter);
+ String body = CodeGeneration.getMethodBodyContent(tu, className, "operator=", null, lineDelimiter); //$NON-NLS-1$
+ if (body != null) {
+ buf.append(body);
+ buf.append(lineDelimiter);
+ }
+ buf.append('}');
+ } else {
+ buf.append(";"); //$NON-NLS-1$
+ }
+ return buf.toString();
+ }
+
+ @Override
+ public String createMethodImplementation(ITranslationUnit tu, String className, IBaseClassInfo[] baseClasses,
+ String lineDelimiter) throws CoreException {
+ if (fIsInline) {
+ return ""; //$NON-NLS-1$
+ }
+ StringBuilder buf = new StringBuilder();
+ buf.append(className);
+ buf.append("& "); //$NON-NLS-1$
+ buf.append(className);
+ buf.append("::"); //$NON-NLS-1$
+ buf.append("operator=("); //$NON-NLS-1$
+ buf.append(className);
+ buf.append("&& other)"); //$NON-NLS-1$
+ buf.append(lineDelimiter);
+ buf.append('{');
+ buf.append(lineDelimiter);
+ String body = CodeGeneration.getMethodBodyContent(tu, className, "operator=", null, lineDelimiter); //$NON-NLS-1$
+ if (body != null) {
+ buf.append(body);
+ buf.append(lineDelimiter);
+ }
+ buf.append('}');
+ return buf.toString();
+ }
+
+ @Override
+ public boolean isConstructor() {
+ return false;
+ }
+
+ @Override
+ public boolean isEnabledByDefault() {
+ return false;
+ }
+
+ @Override
+ public boolean canModifyVirtual() {
+ return false;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/MoveConstructorMethodStub.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/MoveConstructorMethodStub.java
new file mode 100644
index 00000000000..8213eede309
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/MoveConstructorMethodStub.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Marco Stornelli
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Marco Stornelli - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.wizards.classwizard;
+
+import org.eclipse.cdt.core.model.ITranslationUnit;
+import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
+import org.eclipse.cdt.ui.CodeGeneration;
+import org.eclipse.core.runtime.CoreException;
+
+public final class MoveConstructorMethodStub extends AbstractMethodStub {
+ private static String NAME = NewClassWizardMessages.NewClassCodeGeneration_stub_move_constructor_name;
+
+ public MoveConstructorMethodStub() {
+ this(ASTAccessVisibility.PUBLIC, false);
+ }
+
+ public MoveConstructorMethodStub(ASTAccessVisibility access, boolean isInline) {
+ super(NAME, access, false, isInline);
+ }
+
+ @Override
+ public String createMethodDeclaration(ITranslationUnit tu, String className, IBaseClassInfo[] baseClasses,
+ String lineDelimiter) throws CoreException {
+ StringBuilder buf = new StringBuilder();
+ buf.append(className);
+ buf.append("("); //$NON-NLS-1$
+ buf.append(className);
+ buf.append("&& other)"); //$NON-NLS-1$
+ if (fIsInline) {
+ buf.append('{');
+ buf.append(lineDelimiter);
+ String body = CodeGeneration.getConstructorBodyContent(tu, className, null, lineDelimiter);
+ if (body != null) {
+ buf.append(body);
+ buf.append(lineDelimiter);
+ }
+ buf.append('}');
+ } else {
+ buf.append(";"); //$NON-NLS-1$
+ }
+ return buf.toString();
+ }
+
+ @Override
+ public String createMethodImplementation(ITranslationUnit tu, String className, IBaseClassInfo[] baseClasses,
+ String lineDelimiter) throws CoreException {
+ if (fIsInline) {
+ return ""; //$NON-NLS-1$
+ }
+ StringBuilder buf = new StringBuilder();
+ buf.append(className);
+ buf.append("::"); //$NON-NLS-1$
+ buf.append(className);
+ buf.append("("); //$NON-NLS-1$
+ buf.append(className);
+ buf.append("&& other)"); //$NON-NLS-1$
+ buf.append(lineDelimiter);
+ buf.append('{');
+ buf.append(lineDelimiter);
+ String body = CodeGeneration.getConstructorBodyContent(tu, className, null, lineDelimiter);
+ if (body != null) {
+ buf.append(body);
+ buf.append(lineDelimiter);
+ }
+ buf.append('}');
+ return buf.toString();
+ }
+
+ @Override
+ public boolean isConstructor() {
+ return true;
+ }
+
+ @Override
+ public boolean isEnabledByDefault() {
+ return false;
+ }
+
+ @Override
+ public boolean canModifyVirtual() {
+ return false;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.java
index c6d9839e735..056d1e88789 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.java
@@ -123,6 +123,10 @@ public final class NewClassWizardMessages extends NLS {
public static String NewClassCodeGeneration_createType_task_source;
public static String NewClassCodeGeneration_stub_constructor_name;
public static String NewClassCodeGeneration_stub_destructor_name;
+ public static String NewClassCodeGeneration_stub_copy_constructor_name;
+ public static String NewClassCodeGeneration_stub_move_constructor_name;
+ public static String NewClassCodeGeneration_stub_assign_op_name;
+ public static String NewClassCodeGeneration_stub_move_op_name;
static {
NLS.initializeMessages(NewClassWizardMessages.class.getName(), NewClassWizardMessages.class);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.properties
index 6bdf9721799..66386faa77a 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.properties
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.properties
@@ -151,3 +151,7 @@ NewClassCodeGeneration_createType_task_header_addIncludePaths=Adding new include
NewClassCodeGeneration_createType_task_source=Creating source file....
NewClassCodeGeneration_stub_constructor_name=Constructor
NewClassCodeGeneration_stub_destructor_name=Destructor
+NewClassCodeGeneration_stub_copy_constructor_name=Copy constructor
+NewClassCodeGeneration_stub_move_constructor_name=Move constructor
+NewClassCodeGeneration_stub_assign_op_name=Copy assignment operator
+NewClassCodeGeneration_stub_move_op_name=Move assignment operator

Back to the top