From 91b20cae3f60bf8c3b2b66c28911feca2d1d575d Mon Sep 17 00:00:00 2001
From: Kitsune Ral <Kitsune-Ral@users.sf.net>
Date: Wed, 12 Dec 2018 17:05:26 +0900
Subject: gtad.yaml: use more compact definitions where possible

---
 lib/csapi/gtad.yaml | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

(limited to 'lib')

diff --git a/lib/csapi/gtad.yaml b/lib/csapi/gtad.yaml
index cb5e553c..ca4a0fb9 100644
--- a/lib/csapi/gtad.yaml
+++ b/lib/csapi/gtad.yaml
@@ -86,12 +86,9 @@ analyzer:
         - /m\.room\.member$/:
             type: "EventsArray<RoomMemberEvent>"
             imports: '"events/roommemberevent.h"'
-        - /state_event.yaml$/:
-            type: StateEvents
-        - /room_event.yaml$/:
-            type: RoomEvents
-        - /event.yaml$/:
-            type: Events
+        - /state_event.yaml$/: StateEvents
+        - /room_event.yaml$/: RoomEvents
+        - /event.yaml$/: Events
       - //: { type: "QVector<{{1}}>", imports: <QtCore/QVector> }
     - map: # `additionalProperties` in OpenAPI
       - RoomState:
-- 
cgit v1.2.3


From 5b06b165ba2adec50099452bcf4c5f20009423ad Mon Sep 17 00:00:00 2001
From: Kitsune Ral <Kitsune-Ral@users.sf.net>
Date: Thu, 13 Dec 2018 07:23:50 +0900
Subject: gtad.yaml: wrap bool in Omittable<>

Case in point: https://github.com/matrix-org/matrix-doc/issues/1750
---
 lib/csapi/gtad.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'lib')

diff --git a/lib/csapi/gtad.yaml b/lib/csapi/gtad.yaml
index ca4a0fb9..c6ea8a13 100644
--- a/lib/csapi/gtad.yaml
+++ b/lib/csapi/gtad.yaml
@@ -38,7 +38,7 @@ analyzer:
     - number:
       - float: float
       - //: double
-  - boolean: { type: bool, omittedValue: 'false' }
+    - boolean: bool
   - string:
     - byte: &ByteStream
         type: QIODevice*
-- 
cgit v1.2.3


From 8dcda23ed210151904c9137067626eddae683822 Mon Sep 17 00:00:00 2001
From: Kitsune Ral <Kitsune-Ral@users.sf.net>
Date: Thu, 13 Dec 2018 07:47:58 +0900
Subject: Regenerate csapi/

---
 lib/csapi/administrative_contact.cpp        | 2 +-
 lib/csapi/administrative_contact.h          | 2 +-
 lib/csapi/create_room.cpp                   | 2 +-
 lib/csapi/create_room.h                     | 2 +-
 lib/csapi/definitions/push_rule.h           | 4 ++--
 lib/csapi/definitions/room_event_filter.cpp | 6 ------
 lib/csapi/definitions/room_event_filter.h   | 8 ++------
 lib/csapi/definitions/sync_filter.h         | 2 +-
 lib/csapi/joining.h                         | 4 ++--
 lib/csapi/list_public_rooms.cpp             | 2 +-
 lib/csapi/list_public_rooms.h               | 2 +-
 lib/csapi/presence.cpp                      | 4 ++--
 lib/csapi/presence.h                        | 2 +-
 lib/csapi/pusher.cpp                        | 2 +-
 lib/csapi/pusher.h                          | 2 +-
 lib/csapi/registration.cpp                  | 6 +++---
 lib/csapi/registration.h                    | 4 ++--
 lib/csapi/search.h                          | 4 ++--
 18 files changed, 25 insertions(+), 35 deletions(-)

(limited to 'lib')

diff --git a/lib/csapi/administrative_contact.cpp b/lib/csapi/administrative_contact.cpp
index f62002a6..20a1de42 100644
--- a/lib/csapi/administrative_contact.cpp
+++ b/lib/csapi/administrative_contact.cpp
@@ -86,7 +86,7 @@ namespace QMatrixClient
 
 static const auto Post3PIDsJobName = QStringLiteral("Post3PIDsJob");
 
-Post3PIDsJob::Post3PIDsJob(const ThreePidCredentials& threePidCreds, bool bind)
+Post3PIDsJob::Post3PIDsJob(const ThreePidCredentials& threePidCreds, Omittable<bool> bind)
     : BaseJob(HttpVerb::Post, Post3PIDsJobName,
         basePath % "/account/3pid")
 {
diff --git a/lib/csapi/administrative_contact.h b/lib/csapi/administrative_contact.h
index 3fb3d44c..02aeee4d 100644
--- a/lib/csapi/administrative_contact.h
+++ b/lib/csapi/administrative_contact.h
@@ -113,7 +113,7 @@ namespace QMatrixClient
              *   identifier to the account's Matrix ID with the passed identity
              *   server. Default: ``false``.
              */
-            explicit Post3PIDsJob(const ThreePidCredentials& threePidCreds, bool bind = false);
+            explicit Post3PIDsJob(const ThreePidCredentials& threePidCreds, Omittable<bool> bind = none);
     };
 
     /// Deletes a third party identifier from the user's account
diff --git a/lib/csapi/create_room.cpp b/lib/csapi/create_room.cpp
index 36f83727..236daf18 100644
--- a/lib/csapi/create_room.cpp
+++ b/lib/csapi/create_room.cpp
@@ -43,7 +43,7 @@ class CreateRoomJob::Private
 
 static const auto CreateRoomJobName = QStringLiteral("CreateRoomJob");
 
-CreateRoomJob::CreateRoomJob(const QString& visibility, const QString& roomAliasName, const QString& name, const QString& topic, const QStringList& invite, const QVector<Invite3pid>& invite3pid, const QString& roomVersion, const QJsonObject& creationContent, const QVector<StateEvent>& initialState, const QString& preset, bool isDirect, const QJsonObject& powerLevelContentOverride)
+CreateRoomJob::CreateRoomJob(const QString& visibility, const QString& roomAliasName, const QString& name, const QString& topic, const QStringList& invite, const QVector<Invite3pid>& invite3pid, const QString& roomVersion, const QJsonObject& creationContent, const QVector<StateEvent>& initialState, const QString& preset, Omittable<bool> isDirect, const QJsonObject& powerLevelContentOverride)
     : BaseJob(HttpVerb::Post, CreateRoomJobName,
         basePath % "/createRoom")
     , d(new Private)
diff --git a/lib/csapi/create_room.h b/lib/csapi/create_room.h
index a0a64df0..d7c01d00 100644
--- a/lib/csapi/create_room.h
+++ b/lib/csapi/create_room.h
@@ -216,7 +216,7 @@ namespace QMatrixClient
              *   event content prior to it being sent to the room. Defaults to
              *   overriding nothing.
              */
-            explicit CreateRoomJob(const QString& visibility = {}, const QString& roomAliasName = {}, const QString& name = {}, const QString& topic = {}, const QStringList& invite = {}, const QVector<Invite3pid>& invite3pid = {}, const QString& roomVersion = {}, const QJsonObject& creationContent = {}, const QVector<StateEvent>& initialState = {}, const QString& preset = {}, bool isDirect = false, const QJsonObject& powerLevelContentOverride = {});
+            explicit CreateRoomJob(const QString& visibility = {}, const QString& roomAliasName = {}, const QString& name = {}, const QString& topic = {}, const QStringList& invite = {}, const QVector<Invite3pid>& invite3pid = {}, const QString& roomVersion = {}, const QJsonObject& creationContent = {}, const QVector<StateEvent>& initialState = {}, const QString& preset = {}, Omittable<bool> isDirect = none, const QJsonObject& powerLevelContentOverride = {});
             ~CreateRoomJob() override;
 
             // Result properties
diff --git a/lib/csapi/definitions/push_rule.h b/lib/csapi/definitions/push_rule.h
index 5f52876d..2ab68cb1 100644
--- a/lib/csapi/definitions/push_rule.h
+++ b/lib/csapi/definitions/push_rule.h
@@ -7,10 +7,10 @@
 #include "converters.h"
 
 #include "csapi/definitions/push_condition.h"
-#include "converters.h"
+#include <QtCore/QJsonObject>
 #include <QtCore/QVector>
 #include <QtCore/QVariant>
-#include <QtCore/QJsonObject>
+#include "converters.h"
 
 namespace QMatrixClient
 {
diff --git a/lib/csapi/definitions/room_event_filter.cpp b/lib/csapi/definitions/room_event_filter.cpp
index 8cd2ded7..f6f1e5cb 100644
--- a/lib/csapi/definitions/room_event_filter.cpp
+++ b/lib/csapi/definitions/room_event_filter.cpp
@@ -12,8 +12,6 @@ QJsonObject QMatrixClient::toJson(const RoomEventFilter& pod)
     addParam<IfNotEmpty>(jo, QStringLiteral("not_rooms"), pod.notRooms);
     addParam<IfNotEmpty>(jo, QStringLiteral("rooms"), pod.rooms);
     addParam<IfNotEmpty>(jo, QStringLiteral("contains_url"), pod.containsUrl);
-    addParam<IfNotEmpty>(jo, QStringLiteral("lazy_load_members"), pod.lazyLoadMembers);
-    addParam<IfNotEmpty>(jo, QStringLiteral("include_redundant_members"), pod.includeRedundantMembers);
     return jo;
 }
 
@@ -26,10 +24,6 @@ RoomEventFilter FromJsonObject<RoomEventFilter>::operator()(const QJsonObject& j
         fromJson<QStringList>(jo.value("rooms"_ls));
     result.containsUrl =
         fromJson<bool>(jo.value("contains_url"_ls));
-    result.lazyLoadMembers =
-        fromJson<bool>(jo.value("lazy_load_members"_ls));
-    result.includeRedundantMembers =
-        fromJson<bool>(jo.value("include_redundant_members"_ls));
 
     return result;
 }
diff --git a/lib/csapi/definitions/room_event_filter.h b/lib/csapi/definitions/room_event_filter.h
index 87f01189..00f1e1fb 100644
--- a/lib/csapi/definitions/room_event_filter.h
+++ b/lib/csapi/definitions/room_event_filter.h
@@ -19,12 +19,8 @@ namespace QMatrixClient
         QStringList notRooms;
         /// A list of room IDs to include. If this list is absent then all rooms are included.
         QStringList rooms;
-        /// If ``true``, includes only events with a ``url`` key in their content. If ``false``, excludes those events. Defaults to ``false``.
-        bool containsUrl;
-        /// If ``true``, the only ``m.room.member`` events returned in the ``state`` section of the ``/sync`` response are those which are definitely necessary for a client to display the ``sender`` of the timeline events in that response.  If ``false``, ``m.room.member`` events are not filtered.  By default, servers should suppress duplicate redundant lazy-loaded ``m.room.member`` events from being sent to a given client across multiple calls to ``/sync``, given that most clients cache membership events (see include_redundant_members to change this behaviour).
-        bool lazyLoadMembers;
-        /// If ``true``, the ``state`` section of the ``/sync`` response will always contain the ``m.room.member`` events required to display the ``sender`` of the timeline events in that response, assuming ``lazy_load_members`` is enabled. This means that redundant duplicate member events may be returned across multiple calls to ``/sync``. This is useful for naive clients who never track membership data. If ``false``, duplicate ``m.room.member`` events may be suppressed by the server across multiple calls to ``/sync``.  If ``lazy_load_members`` is ``false`` this field is ignored.
-        bool includeRedundantMembers;
+        /// If ``true``, includes only events with a ``url`` key in their content. If ``false``, excludes those events. If omitted, ``url`` key is not considered for filtering.
+        Omittable<bool> containsUrl;
     };
 
     QJsonObject toJson(const RoomEventFilter& pod);
diff --git a/lib/csapi/definitions/sync_filter.h b/lib/csapi/definitions/sync_filter.h
index ca275a9a..592038dc 100644
--- a/lib/csapi/definitions/sync_filter.h
+++ b/lib/csapi/definitions/sync_filter.h
@@ -24,7 +24,7 @@ namespace QMatrixClient
         /// The events that aren't recorded in the room history, e.g. typing and receipts, to include for rooms.
         Omittable<RoomEventFilter> ephemeral;
         /// Include rooms that the user has left in the sync, default false
-        bool includeLeave;
+        Omittable<bool> includeLeave;
         /// The state events to include for rooms.
         Omittable<RoomEventFilter> state;
         /// The message and state update events to include for rooms.
diff --git a/lib/csapi/joining.h b/lib/csapi/joining.h
index 137afbfc..52c8ea42 100644
--- a/lib/csapi/joining.h
+++ b/lib/csapi/joining.h
@@ -59,7 +59,7 @@ namespace QMatrixClient
 
             // Result properties
 
-            /// The joined room id
+            /// The joined room ID.
             const QString& roomId() const;
 
         protected:
@@ -138,7 +138,7 @@ namespace QMatrixClient
 
             // Result properties
 
-            /// The joined room id
+            /// The joined room ID.
             const QString& roomId() const;
 
         protected:
diff --git a/lib/csapi/list_public_rooms.cpp b/lib/csapi/list_public_rooms.cpp
index 2fdb2005..4e3661e1 100644
--- a/lib/csapi/list_public_rooms.cpp
+++ b/lib/csapi/list_public_rooms.cpp
@@ -131,7 +131,7 @@ BaseJob::Query queryToQueryPublicRooms(const QString& server)
 
 static const auto QueryPublicRoomsJobName = QStringLiteral("QueryPublicRoomsJob");
 
-QueryPublicRoomsJob::QueryPublicRoomsJob(const QString& server, Omittable<int> limit, const QString& since, const Omittable<Filter>& filter, bool includeAllNetworks, const QString& thirdPartyInstanceId)
+QueryPublicRoomsJob::QueryPublicRoomsJob(const QString& server, Omittable<int> limit, const QString& since, const Omittable<Filter>& filter, Omittable<bool> includeAllNetworks, const QString& thirdPartyInstanceId)
     : BaseJob(HttpVerb::Post, QueryPublicRoomsJobName,
         basePath % "/publicRooms",
         queryToQueryPublicRooms(server))
diff --git a/lib/csapi/list_public_rooms.h b/lib/csapi/list_public_rooms.h
index 8401c134..a6498745 100644
--- a/lib/csapi/list_public_rooms.h
+++ b/lib/csapi/list_public_rooms.h
@@ -156,7 +156,7 @@ namespace QMatrixClient
              *   The specific third party network/protocol to request from the
              *   homeserver. Can only be used if ``include_all_networks`` is false.
              */
-            explicit QueryPublicRoomsJob(const QString& server = {}, Omittable<int> limit = none, const QString& since = {}, const Omittable<Filter>& filter = none, bool includeAllNetworks = false, const QString& thirdPartyInstanceId = {});
+            explicit QueryPublicRoomsJob(const QString& server = {}, Omittable<int> limit = none, const QString& since = {}, const Omittable<Filter>& filter = none, Omittable<bool> includeAllNetworks = none, const QString& thirdPartyInstanceId = {});
             ~QueryPublicRoomsJob() override;
 
             // Result properties
diff --git a/lib/csapi/presence.cpp b/lib/csapi/presence.cpp
index 7aba8b61..460e2a76 100644
--- a/lib/csapi/presence.cpp
+++ b/lib/csapi/presence.cpp
@@ -30,7 +30,7 @@ class GetPresenceJob::Private
         QString presence;
         Omittable<int> lastActiveAgo;
         QString statusMsg;
-        bool currentlyActive;
+        Omittable<bool> currentlyActive;
 };
 
 QUrl GetPresenceJob::makeRequestUrl(QUrl baseUrl, const QString& userId)
@@ -65,7 +65,7 @@ const QString& GetPresenceJob::statusMsg() const
     return d->statusMsg;
 }
 
-bool GetPresenceJob::currentlyActive() const
+Omittable<bool> GetPresenceJob::currentlyActive() const
 {
     return d->currentlyActive;
 }
diff --git a/lib/csapi/presence.h b/lib/csapi/presence.h
index 86b9d395..c8f80357 100644
--- a/lib/csapi/presence.h
+++ b/lib/csapi/presence.h
@@ -65,7 +65,7 @@ namespace QMatrixClient
             /// The state message for this user if one was set.
             const QString& statusMsg() const;
             /// Whether the user is currently active
-            bool currentlyActive() const;
+            Omittable<bool> currentlyActive() const;
 
         protected:
             Status parseJson(const QJsonDocument& data) override;
diff --git a/lib/csapi/pusher.cpp b/lib/csapi/pusher.cpp
index d20db88a..0ca13368 100644
--- a/lib/csapi/pusher.cpp
+++ b/lib/csapi/pusher.cpp
@@ -107,7 +107,7 @@ namespace QMatrixClient
 
 static const auto PostPusherJobName = QStringLiteral("PostPusherJob");
 
-PostPusherJob::PostPusherJob(const QString& pushkey, const QString& kind, const QString& appId, const QString& appDisplayName, const QString& deviceDisplayName, const QString& lang, const PusherData& data, const QString& profileTag, bool append)
+PostPusherJob::PostPusherJob(const QString& pushkey, const QString& kind, const QString& appId, const QString& appDisplayName, const QString& deviceDisplayName, const QString& lang, const PusherData& data, const QString& profileTag, Omittable<bool> append)
     : BaseJob(HttpVerb::Post, PostPusherJobName,
         basePath % "/pushers/set")
 {
diff --git a/lib/csapi/pusher.h b/lib/csapi/pusher.h
index 2b506183..da3303fe 100644
--- a/lib/csapi/pusher.h
+++ b/lib/csapi/pusher.h
@@ -164,6 +164,6 @@ namespace QMatrixClient
              *   other pushers with the same App ID and pushkey for different
              *   users. The default is ``false``.
              */
-            explicit PostPusherJob(const QString& pushkey, const QString& kind, const QString& appId, const QString& appDisplayName, const QString& deviceDisplayName, const QString& lang, const PusherData& data, const QString& profileTag = {}, bool append = false);
+            explicit PostPusherJob(const QString& pushkey, const QString& kind, const QString& appId, const QString& appDisplayName, const QString& deviceDisplayName, const QString& lang, const PusherData& data, const QString& profileTag = {}, Omittable<bool> append = none);
     };
 } // namespace QMatrixClient
diff --git a/lib/csapi/registration.cpp b/lib/csapi/registration.cpp
index 320ec796..34c34861 100644
--- a/lib/csapi/registration.cpp
+++ b/lib/csapi/registration.cpp
@@ -30,7 +30,7 @@ BaseJob::Query queryToRegister(const QString& kind)
 
 static const auto RegisterJobName = QStringLiteral("RegisterJob");
 
-RegisterJob::RegisterJob(const QString& kind, const Omittable<AuthenticationData>& auth, bool bindEmail, const QString& username, const QString& password, const QString& deviceId, const QString& initialDeviceDisplayName, bool inhibitLogin)
+RegisterJob::RegisterJob(const QString& kind, const Omittable<AuthenticationData>& auth, Omittable<bool> bindEmail, const QString& username, const QString& password, const QString& deviceId, const QString& initialDeviceDisplayName, Omittable<bool> inhibitLogin)
     : BaseJob(HttpVerb::Post, RegisterJobName,
         basePath % "/register",
         queryToRegister(kind),
@@ -251,7 +251,7 @@ DeactivateAccountJob::DeactivateAccountJob(const Omittable<AuthenticationData>&
 class CheckUsernameAvailabilityJob::Private
 {
     public:
-        bool available;
+        Omittable<bool> available;
 };
 
 BaseJob::Query queryToCheckUsernameAvailability(const QString& username)
@@ -281,7 +281,7 @@ CheckUsernameAvailabilityJob::CheckUsernameAvailabilityJob(const QString& userna
 
 CheckUsernameAvailabilityJob::~CheckUsernameAvailabilityJob() = default;
 
-bool CheckUsernameAvailabilityJob::available() const
+Omittable<bool> CheckUsernameAvailabilityJob::available() const
 {
     return d->available;
 }
diff --git a/lib/csapi/registration.h b/lib/csapi/registration.h
index 9002b5c8..ca1a1c21 100644
--- a/lib/csapi/registration.h
+++ b/lib/csapi/registration.h
@@ -80,7 +80,7 @@ namespace QMatrixClient
              *   returned from this call, therefore preventing an automatic
              *   login. Defaults to false.
              */
-            explicit RegisterJob(const QString& kind = QStringLiteral("user"), const Omittable<AuthenticationData>& auth = none, bool bindEmail = false, const QString& username = {}, const QString& password = {}, const QString& deviceId = {}, const QString& initialDeviceDisplayName = {}, bool inhibitLogin = false);
+            explicit RegisterJob(const QString& kind = QStringLiteral("user"), const Omittable<AuthenticationData>& auth = none, Omittable<bool> bindEmail = none, const QString& username = {}, const QString& password = {}, const QString& deviceId = {}, const QString& initialDeviceDisplayName = {}, Omittable<bool> inhibitLogin = none);
             ~RegisterJob() override;
 
             // Result properties
@@ -418,7 +418,7 @@ namespace QMatrixClient
 
             /// A flag to indicate that the username is available. This should always
             /// be ``true`` when the server replies with 200 OK.
-            bool available() const;
+            Omittable<bool> available() const;
 
         protected:
             Status parseJson(const QJsonDocument& data) override;
diff --git a/lib/csapi/search.h b/lib/csapi/search.h
index 85b0886b..86a0ee92 100644
--- a/lib/csapi/search.h
+++ b/lib/csapi/search.h
@@ -39,7 +39,7 @@ namespace QMatrixClient
                 /// historic profile information for the users
                 /// that sent the events that were returned.
                 /// By default, this is ``false``.
-                bool includeProfile;
+                Omittable<bool> includeProfile;
             };
 
             /// Configuration for group.
@@ -74,7 +74,7 @@ namespace QMatrixClient
                 Omittable<IncludeEventContext> eventContext;
                 /// Requests the server return the current state for
                 /// each room returned.
-                bool includeState;
+                Omittable<bool> includeState;
                 /// Requests that the server partitions the result set
                 /// based on the provided list of keys.
                 Omittable<Groupings> groupings;
-- 
cgit v1.2.3