<table><tr><td style="">kossebau added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D5709" rel="noreferrer">View Revision</a></tr></table><br /><div><div><p>Example result, for class name = "Foo", one member "QString bar", all default methods enabled:</p>

<p>foo.cpp:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">#include "foo.h"
#include <QSharedData>

using namespace KDevelop;

class KDevelop::FooData : public QSharedData
{
public:
    QString bar;
};

Foo::Foo()
    : d(new FooData())
{
}

Foo::Foo(const Foo& other)
    : d(other.d)
{
}

Foo::~Foo()
{
}

Foo& Foo::operator=(const Foo& other)
{
    if (this != &other) {
        d = other.d;
    }

    return *this;
}

QString Foo::bar() const
{
    return d->bar;
}

void Foo::setBar(const QString& bar)
{
    if (d->bar == bar) {
        return;
    }

    d.detach();
    d->bar = bar;
}</pre></div>

<p>Respective foo.h, as before:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">#ifndef KDEVELOP_FOO_H
#define KDEVELOP_FOO_H

#include <QSharedDataPointer>

namespace KDevelop {

class FooData;

/**
 * @todo write docs
 */
class Foo
{
public:
    /**
     * Default constructor
     */
    Foo();

    /**
     * Copy Constructor
     *
     * @param other TODO
     */
    Foo(const Foo& other);

    /**
     * Destructor
     */
    ~Foo();

    /**
     * @todo write docs
     *
     * @param other TODO
     * @return TODO
     */
    Foo& operator=(const Foo& other);

public:
    /**
     * @return the bar
     */
    QString bar() const;

    /**
     * Sets the bar.
     *
     * @param bar the new bar
     */
    void setBar(const QString& bar);

private:
    QSharedDataPointer<FooData> d;
};

}

#endif // KDEVELOP_FOO_H</pre></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R32 KDevelop</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D5709" rel="noreferrer">https://phabricator.kde.org/D5709</a></div></div><br /><div><strong>To: </strong>kossebau, KDevelop<br /><strong>Cc: </strong>kdevelop-devel<br /></div>