Kexi/Junior Jobs/Add d-pointers

From KDE Community Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
GCI_2011_logo_URL_blueborder-nowww.jpeg

Goal

Improve internal APIs in Kexi. This can be done easily by introducing d-poitners to classes that lack them.

Introduction

Read section about d-pointers on Techabse (d-pointers only, not shared d-pointers).

Classes that have to be converted are in this form:

// MyClass.h
class MyClass {
public:
 MyClass();
private:
 Foo m_foo;
};

// MyClass.cpp
MyClass::MyClass() {
 m_foo/doSomething();
}

After converting to d-pointer it should be:

// MyClass.h
class MyClass {
public:
 MyClass();
private:
 class Private;
 Private * const d;
};
// MyClass.cpp
class MyClass::Private {
public:
 Private() 
 Foo foo;
};
MyClass::MyClass()
 : d(new Private)
{
 d->foo.doSomething();
}
MyClass::~MyClass()
{
 delete d;
}

Extra tasks needed

After converting to d-pointer:

  • any code referring to m_foo attribute should be changed to d->foo
  • if there is inline code in header file that uses member variable, do not move the variable to d-pointer unless you know for sure it isn't there for optimization

Required skills

Basic Qt, average C++.

  • Work within a new branch kexi-dpointers-gci, please create.

Notes to mentor

  • Please always emphasize importance of coding style to students and check that - it's so easier to maintain the style from day one instead of fixing afterwards. Show Techbase articles for that.
  • Take care of coding practices too (see Techbase articles)