CodingStyle.cc 2.85 KB
Newer Older
Lorenz Meier's avatar
Lorenz Meier committed
1 2 3 4 5 6 7 8 9
/****************************************************************************
 *
 *   (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
 *
 * QGroundControl is licensed according to the terms in the file
 * COPYING.md in the root of the source code directory.
 *
 ****************************************************************************/

Don Gagne's avatar
Don Gagne committed
10 11 12
// This is an example class c++ file which is used to describe the QGroundControl
// coding style. In general almost everything in here has some coding style meaning.
// Not all style choices are explained.
Don Gagne's avatar
Don Gagne committed
13 14 15 16 17 18 19

#include "CodingStyle.h"
#include "QGCApplication.h"

#include <QFile>
#include <QDebug>

20 21
#include <math.h>

Ricardo de Almeida Gonzaga's avatar
Ricardo de Almeida Gonzaga committed
22
// Note how the Qt headers and the QGroundControl headers above are kept separate
Don Gagne's avatar
Don Gagne committed
23 24 25

Q_LOGGING_CATEGORY(CodingStyleLog, "CodingStyleLog")

26 27
const int CodingStyle::_privateStaticVariable = 0;

Don Gagne's avatar
Don Gagne committed
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
CodingStyle::CodingStyle(QObject* parent) :
    QObject(parent),
    _protectedVariable(1),
    _privateVariable1(2),
    _privateVariable2(3)
{

}

/// Document non-obvious private methods in the code file.
void CodingStyle::_privateMethod(void)
{
    // Always include braces even for single line if/for/...
    if (uas != _uasId) {
        return;
    }
    
    // Note the brace placement
    if (_lastSeenComponent == -1) {
        _lastSeenComponent = component;
    } else {
        Q_ASSERT(component == _lastSeenComponent);  // Asserts are your friend
    }
}

void CodingStyle::_privateMethod2(void)
{
    Fact* fact = qobject_cast<Fact*>(sender());
    Q_ASSERT(fact);
    
    QVariant typedValue;
    switch (fact->type()) {
        case FactMetaData::valueTypeInt8:
        case FactMetaData::valueTypeInt16:
        case FactMetaData::valueTypeInt32:
            typedValue.setValue(QVariant(value.toInt()));
            break;
            
        case FactMetaData::valueTypeUint8:
        case FactMetaData::valueTypeUint16:
        case FactMetaData::valueTypeUint32:
            typedValue.setValue(value.toUInt());
            break;
            
72 73
        case FactMetaData::valueTypeFloat: {
            int localScopedVar = 1;
Don Gagne's avatar
Don Gagne committed
74
            typedValue.setValue(value.toFloat());
75
        }
Don Gagne's avatar
Don Gagne committed
76 77 78 79 80 81 82
            break;
            
        case FactMetaData::valueTypeDouble:
            typedValue.setValue(value.toDouble());
            break;
    }
}
83 84 85 86 87

void CodingStyle::_methodWithManyArguments(QWidget*         parent,
                                           const QString&   caption,
                                           const QString&   dir,
                                           Options          options1,
88
                                           Options          /* options2 */,
89 90
                                           Options          options3)
{
91 92 93
    // options2 is an unused method argument.
    // Do not use Q_UNUSUED and do not just remove the argument name and leave the type.

94 95
    // Implementataion here...
}