File: header.h

package info (click to toggle)
grantlee5 5.3.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,004 kB
  • sloc: cpp: 25,617; javascript: 6,043; python: 299; sh: 97; perl: 37; ruby: 24; makefile: 17
file content (60 lines) | stat: -rw-r--r-- 1,759 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
{% extends "base_header.h" %}

{% block includes %}
  {% if baseClass %}
#include <{{ baseClass.module }}/{{ baseClass.type }}>

  {% endif %}
{% endblock %}

{% block forward_decls %}
  {% if pimpl %}
class {{ className }}Private;

  {% endif %}
{% endblock %}

{% block class_content %}
  {% if qobject %}
  Q_OBJECT
  {% endif %}
  {% for prop in properties %}
  Q_PROPERTY({{ prop.type }} {{ prop.name }} READ {{ prop.name }}{% if not prop.readonly %} WRITE {{ prop.name|to_write }}{% endif %})
  {% endfor %}
public:
  {# The getter, eg QString myString() const; #}
    {% for property in properties %}
  {{ property.type }} {{ property.name }}() const;
    {% if not property.readonly %}
      {% comment %}
      The setter, eg setMyString(const QString &myString);
      {% endcomment %}
  void {{ property.name|to_write }}({{ property.type|to_arg }}{{ property.name }});
    {% endif %}

  {% endfor %}
  {% comment %}
    Comment tags are used to remove unwanted whitespace/newlines in the output.

    Group together properties of the same type, public, protected, private
  {% endcomment %}
  {% regroup methods by accessType as method_groups %}
  {% with "true" as default %}
    {% for method_group in method_groups %}
{{ method_group.grouper }}:
      {% for method in method_group.list %}
  {% if method.virtual %}virtual {% endif %}{{ method.type }} {{ method.name }}({% include "args.h" %}){% if method.const %} const{% endif %};
      {% endfor %}

    {% endfor %}
  {% endwith %}
private:
  {% if pimpl %}
  Q_DECLARE_PRIVATE({{ className }})
  {{ className }}Private * const d_ptr;
  {% else %}
    {% for property in properties %}
  {{ property.type }} m_{{ property.name }};
    {% endfor %}
  {% endif %}
{% endblock class_content %}