0

Scenario: C++, a bunch of one-line setters and getters inlined in the header file, as follows:

    bool hasVoices(int staffIdx) const                  { return m_mstaves[staffIdx]->hasVoices(); }
    void setHasVoices(int staffIdx, bool v)             { return m_mstaves[staffIdx]->setHasVoices(v); }

    StaffLines* staffLines(int staffIdx)                { return m_mstaves[staffIdx]->lines(); }

    Spacer* vspacerDown(int staffIdx) const             { return m_mstaves[staffIdx]->vspacerDown(); }
    Spacer* vspacerUp(int staffIdx) const               { return m_mstaves[staffIdx]->vspacerUp(); }
    void setStaffVisible(int staffIdx, bool visible)    { m_mstaves[staffIdx]->setVisible(visible); }
    void setStaffStemless(int staffIdx, bool stemless)  { m_mstaves[staffIdx]->setStemless(stemless); }
    bool corrupted(int staffIdx) const                  { return m_mstaves[staffIdx]->corrupted(); }
    void setCorrupted(int staffIdx, bool val)           { m_mstaves[staffIdx]->setCorrupted(val); }
    MeasureNumber* noText(int staffIdx) const           { return m_mstaves[staffIdx]->noText(); }
    void setNoText(int staffIdx, MeasureNumber* t)      { m_mstaves[staffIdx]->setNoText(t); }

    MeasureNumberMode measureNumberMode() const         { return m_noMode; }
    void setMeasureNumberMode(MeasureNumberMode v)      { m_noMode = v; }

    Fraction timesig() const                            { return m_timesig; }
    void setTimesig(const Fraction& f)                  { m_timesig = f; }
    bool isIrregular() const                            { return m_timesig != _len; }

    int size() const                                    { return m_segments.size(); }
    Segment* first() const                              { return m_segments.first(); }
    Segment* first(SegmentType t) const                 { return m_segments.first(t); }
    Segment* firstEnabled() const                       { return m_segments.first(ElementFlag::ENABLED); }
    Segment* last() const                               { return m_segments.last(); }
    SegmentList& segments()                             { return m_segments; }
    const SegmentList& segments() const                 { return m_segments; }

    void setUserStretch(qreal v)                        { m_userStretch = v; }

The function bodies are aligned for the sake of readability. The repository I'm contributing to has just begun using Uncrustify and added a test to enforce the code style for new pull requests. Uncrustify as currently configured wants this changed to:

    bool hasVoices(int staffIdx) const { return m_mstaves[staffIdx]->hasVoices(); }
    void setHasVoices(int staffIdx, bool v) { return m_mstaves[staffIdx]->setHasVoices(v); }

    StaffLines* staffLines(int staffIdx) { return m_mstaves[staffIdx]->lines(); }

    Spacer* vspacerDown(int staffIdx) const { return m_mstaves[staffIdx]->vspacerDown(); }
    Spacer* vspacerUp(int staffIdx) const { return m_mstaves[staffIdx]->vspacerUp(); }
    void setStaffVisible(int staffIdx, bool visible) { m_mstaves[staffIdx]->setVisible(visible); }
    void setStaffStemless(int staffIdx, bool stemless) { m_mstaves[staffIdx]->setStemless(stemless); }
    bool corrupted(int staffIdx) const { return m_mstaves[staffIdx]->corrupted(); }
    void setCorrupted(int staffIdx, bool val) { m_mstaves[staffIdx]->setCorrupted(val); }
    MeasureNumber* noText(int staffIdx) const { return m_mstaves[staffIdx]->noText(); }
    void setNoText(int staffIdx, MeasureNumber* t) { m_mstaves[staffIdx]->setNoText(t); }

    MeasureNumberMode measureNumberMode() const { return m_noMode; }
    void setMeasureNumberMode(MeasureNumberMode v) { m_noMode = v; }

    Fraction timesig() const { return m_timesig; }
    void setTimesig(const Fraction& f) { m_timesig = f; }
    bool isIrregular() const { return m_timesig != _len; }

    int size() const { return m_segments.size(); }
    Segment* first() const { return m_segments.first(); }
    Segment* first(SegmentType t) const { return m_segments.first(t); }
    Segment* firstEnabled() const { return m_segments.first(ElementFlag::ENABLED); }
    Segment* last() const { return m_segments.last(); }
    SegmentList& segments() { return m_segments; }
    const SegmentList& segments() const { return m_segments; }

    void setUserStretch(qreal v) { m_userStretch = v; }

Can Uncrustify be configured to produce something more like the first example instead?

Isaac
  • 101
  • 1

1 Answers1

0

You can use:

# Don't split one-line function definitions, as in 'int foo() { return 0; }'.
# might modify nl_func_type_name
nl_func_leave_one_liners        = true     # true/false

But that won't help you with the spacing for cases where you have a const in your member function. Open up a bug ticket and well see what we can do about that / point you in the directions to create a PR for that.

CDanU
  • 156
  • 1
  • 9