QtFit  0.1
Internal library development documentation
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
types.cpp
Go to the documentation of this file.
1 /*
2  Copyright 2021 Paul Colby
3 
4  This file is part of QtFit.
5 
6  QtFit is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Lesser General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  QtFit is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public License
17  along with QtFit. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 /*!
21  * \file
22  * \note This file is automatcially generated. Any changes here are likely to be overwritten.
23  */
24 
25 /*!
26  * \file
27  *
28  * QDebug stream operators for types defined by the ANT+ FIT SDK.
29  *
30  * Specifically, `operator<<` for all enumerator types found in the types.h header.
31  *
32  * \sa [QDebug - Writing Custom Types to a Stream (Qt5)](https://doc.qt.io/qt-5/qdebug.html#writing-custom-types-to-a-stream)
33  * \sa [QDebug - Writing Custom Types to a Stream (Qt6)](https://doc.qt.io/qt-6/qdebug.html#writing-custom-types-to-a-stream)
34  */
35 
36 #include "types.h"
37 
39 
40 /*!
41  * Writes the File \a value to the \a debug stream and returns a reference to the stream.
42  *
43  * \param debug Debug stream to write \a value to.
44  * \param value Value to write to \a debug.
45  *
46  * \return a reference to the \a debug stream.
47  */
48 QDebug operator<<(QDebug debug, const File value)
49 {
50  switch (value) {
51  case File::Device : debug << "Device"; break;
52  case File::Settings : debug << "Settings"; break;
53  case File::Sport : debug << "Sport"; break;
54  case File::Activity : debug << "Activity"; break;
55  case File::Workout : debug << "Workout"; break;
56  case File::Course : debug << "Course"; break;
57  case File::Schedules : debug << "Schedules"; break;
58  case File::Weight : debug << "Weight"; break;
59  case File::Totals : debug << "Totals"; break;
60  case File::Goals : debug << "Goals"; break;
61  case File::BloodPressure : debug << "BloodPressure"; break;
62  case File::MonitoringA : debug << "MonitoringA"; break;
63  case File::ActivitySummary : debug << "ActivitySummary"; break;
64  case File::MonitoringDaily : debug << "MonitoringDaily"; break;
65  case File::MonitoringB : debug << "MonitoringB"; break;
66  case File::Segment : debug << "Segment"; break;
67  case File::SegmentList : debug << "SegmentList"; break;
68  case File::ExdConfiguration: debug << "ExdConfiguration"; break;
69  case File::MfgRangeMin : debug << "MfgRangeMin"; break;
70  case File::MfgRangeMax : debug << "MfgRangeMax"; break;
71  default: debug << "unknown";
72  }
73  return debug;
74 }
75 
76 /*!
77  * Writes the MesgNum \a value to the \a debug stream and returns a reference to the stream.
78  *
79  * \param debug Debug stream to write \a value to.
80  * \param value Value to write to \a debug.
81  *
82  * \return a reference to the \a debug stream.
83  */
84 QDebug operator<<(QDebug debug, const MesgNum value)
85 {
86  switch (value) {
87  case MesgNum::FileId : debug << "FileId"; break;
88  case MesgNum::Capabilities : debug << "Capabilities"; break;
89  case MesgNum::DeviceSettings : debug << "DeviceSettings"; break;
90  case MesgNum::UserProfile : debug << "UserProfile"; break;
91  case MesgNum::HrmProfile : debug << "HrmProfile"; break;
92  case MesgNum::SdmProfile : debug << "SdmProfile"; break;
93  case MesgNum::BikeProfile : debug << "BikeProfile"; break;
94  case MesgNum::ZonesTarget : debug << "ZonesTarget"; break;
95  case MesgNum::HrZone : debug << "HrZone"; break;
96  case MesgNum::PowerZone : debug << "PowerZone"; break;
97  case MesgNum::MetZone : debug << "MetZone"; break;
98  case MesgNum::Sport : debug << "Sport"; break;
99  case MesgNum::Goal : debug << "Goal"; break;
100  case MesgNum::Session : debug << "Session"; break;
101  case MesgNum::Lap : debug << "Lap"; break;
102  case MesgNum::Record : debug << "Record"; break;
103  case MesgNum::Event : debug << "Event"; break;
104  case MesgNum::DeviceInfo : debug << "DeviceInfo"; break;
105  case MesgNum::Workout : debug << "Workout"; break;
106  case MesgNum::WorkoutStep : debug << "WorkoutStep"; break;
107  case MesgNum::Schedule : debug << "Schedule"; break;
108  case MesgNum::WeightScale : debug << "WeightScale"; break;
109  case MesgNum::Course : debug << "Course"; break;
110  case MesgNum::CoursePoint : debug << "CoursePoint"; break;
111  case MesgNum::Totals : debug << "Totals"; break;
112  case MesgNum::Activity : debug << "Activity"; break;
113  case MesgNum::Software : debug << "Software"; break;
114  case MesgNum::FileCapabilities : debug << "FileCapabilities"; break;
115  case MesgNum::MesgCapabilities : debug << "MesgCapabilities"; break;
116  case MesgNum::FieldCapabilities : debug << "FieldCapabilities"; break;
117  case MesgNum::FileCreator : debug << "FileCreator"; break;
118  case MesgNum::BloodPressure : debug << "BloodPressure"; break;
119  case MesgNum::SpeedZone : debug << "SpeedZone"; break;
120  case MesgNum::Monitoring : debug << "Monitoring"; break;
121  case MesgNum::TrainingFile : debug << "TrainingFile"; break;
122  case MesgNum::Hrv : debug << "Hrv"; break;
123  case MesgNum::AntRx : debug << "AntRx"; break;
124  case MesgNum::AntTx : debug << "AntTx"; break;
125  case MesgNum::AntChannelId : debug << "AntChannelId"; break;
126  case MesgNum::Length : debug << "Length"; break;
127  case MesgNum::MonitoringInfo : debug << "MonitoringInfo"; break;
128  case MesgNum::Pad : debug << "Pad"; break;
129  case MesgNum::SlaveDevice : debug << "SlaveDevice"; break;
130  case MesgNum::Connectivity : debug << "Connectivity"; break;
131  case MesgNum::WeatherConditions : debug << "WeatherConditions"; break;
132  case MesgNum::WeatherAlert : debug << "WeatherAlert"; break;
133  case MesgNum::CadenceZone : debug << "CadenceZone"; break;
134  case MesgNum::Hr : debug << "Hr"; break;
135  case MesgNum::SegmentLap : debug << "SegmentLap"; break;
136  case MesgNum::MemoGlob : debug << "MemoGlob"; break;
137  case MesgNum::SegmentId : debug << "SegmentId"; break;
138  case MesgNum::SegmentLeaderboardEntry : debug << "SegmentLeaderboardEntry"; break;
139  case MesgNum::SegmentPoint : debug << "SegmentPoint"; break;
140  case MesgNum::SegmentFile : debug << "SegmentFile"; break;
141  case MesgNum::WorkoutSession : debug << "WorkoutSession"; break;
142  case MesgNum::WatchfaceSettings : debug << "WatchfaceSettings"; break;
143  case MesgNum::GpsMetadata : debug << "GpsMetadata"; break;
144  case MesgNum::CameraEvent : debug << "CameraEvent"; break;
145  case MesgNum::TimestampCorrelation : debug << "TimestampCorrelation"; break;
146  case MesgNum::GyroscopeData : debug << "GyroscopeData"; break;
147  case MesgNum::AccelerometerData : debug << "AccelerometerData"; break;
148  case MesgNum::ThreeDSensorCalibration : debug << "ThreeDSensorCalibration"; break;
149  case MesgNum::VideoFrame : debug << "VideoFrame"; break;
150  case MesgNum::ObdiiData : debug << "ObdiiData"; break;
151  case MesgNum::NmeaSentence : debug << "NmeaSentence"; break;
152  case MesgNum::AviationAttitude : debug << "AviationAttitude"; break;
153  case MesgNum::Video : debug << "Video"; break;
154  case MesgNum::VideoTitle : debug << "VideoTitle"; break;
155  case MesgNum::VideoDescription : debug << "VideoDescription"; break;
156  case MesgNum::VideoClip : debug << "VideoClip"; break;
157  case MesgNum::OhrSettings : debug << "OhrSettings"; break;
158  case MesgNum::ExdScreenConfiguration : debug << "ExdScreenConfiguration"; break;
159  case MesgNum::ExdDataFieldConfiguration : debug << "ExdDataFieldConfiguration"; break;
160  case MesgNum::ExdDataConceptConfiguration: debug << "ExdDataConceptConfiguration"; break;
161  case MesgNum::FieldDescription : debug << "FieldDescription"; break;
162  case MesgNum::DeveloperDataId : debug << "DeveloperDataId"; break;
163  case MesgNum::MagnetometerData : debug << "MagnetometerData"; break;
164  case MesgNum::BarometerData : debug << "BarometerData"; break;
165  case MesgNum::OneDSensorCalibration : debug << "OneDSensorCalibration"; break;
166  case MesgNum::Set : debug << "Set"; break;
167  case MesgNum::StressLevel : debug << "StressLevel"; break;
168  case MesgNum::DiveSettings : debug << "DiveSettings"; break;
169  case MesgNum::DiveGas : debug << "DiveGas"; break;
170  case MesgNum::DiveAlarm : debug << "DiveAlarm"; break;
171  case MesgNum::ExerciseTitle : debug << "ExerciseTitle"; break;
172  case MesgNum::DiveSummary : debug << "DiveSummary"; break;
173  case MesgNum::Jump : debug << "Jump"; break;
174  case MesgNum::ClimbPro : debug << "ClimbPro"; break;
175  case MesgNum::MfgRangeMin : debug << "MfgRangeMin"; break;
176  case MesgNum::MfgRangeMax : debug << "MfgRangeMax"; break;
177  default: debug << "unknown";
178  }
179  return debug;
180 }
181 
182 /*!
183  * Writes the Checksum \a value to the \a debug stream and returns a reference to the stream.
184  *
185  * \param debug Debug stream to write \a value to.
186  * \param value Value to write to \a debug.
187  *
188  * \return a reference to the \a debug stream.
189  */
190 QDebug operator<<(QDebug debug, const Checksum value)
191 {
192  switch (value) {
193  case Checksum::Clear: debug << "Clear"; break;
194  case Checksum::Ok : debug << "Ok"; break;
195  default: debug << "unknown";
196  }
197  return debug;
198 }
199 
200 /*!
201  * Writes the FileFlags \a value to the \a debug stream and returns a reference to the stream.
202  *
203  * \param debug Debug stream to write \a value to.
204  * \param value Value to write to \a debug.
205  *
206  * \return a reference to the \a debug stream.
207  */
208 QDebug operator<<(QDebug debug, const FileFlags value)
209 {
210  switch (value) {
211  case FileFlags::Read : debug << "Read"; break;
212  case FileFlags::Write: debug << "Write"; break;
213  case FileFlags::Erase: debug << "Erase"; break;
214  default: debug << "unknown";
215  }
216  return debug;
217 }
218 
219 /*!
220  * Writes the MesgCount \a value to the \a debug stream and returns a reference to the stream.
221  *
222  * \param debug Debug stream to write \a value to.
223  * \param value Value to write to \a debug.
224  *
225  * \return a reference to the \a debug stream.
226  */
227 QDebug operator<<(QDebug debug, const MesgCount value)
228 {
229  switch (value) {
230  case MesgCount::NumPerFile : debug << "NumPerFile"; break;
231  case MesgCount::MaxPerFile : debug << "MaxPerFile"; break;
232  case MesgCount::MaxPerFileType: debug << "MaxPerFileType"; break;
233  default: debug << "unknown";
234  }
235  return debug;
236 }
237 
238 /*!
239  * Writes the DateTime \a value to the \a debug stream and returns a reference to the stream.
240  *
241  * \param debug Debug stream to write \a value to.
242  * \param value Value to write to \a debug.
243  *
244  * \return a reference to the \a debug stream.
245  */
246 QDebug operator<<(QDebug debug, const DateTime value)
247 {
248  switch (value) {
249  case DateTime::Min: debug << "Min"; break;
250  default: debug << "unknown";
251  }
252  return debug;
253 }
254 
255 /*!
256  * Writes the LocalDateTime \a value to the \a debug stream and returns a reference to the stream.
257  *
258  * \param debug Debug stream to write \a value to.
259  * \param value Value to write to \a debug.
260  *
261  * \return a reference to the \a debug stream.
262  */
263 QDebug operator<<(QDebug debug, const LocalDateTime value)
264 {
265  switch (value) {
266  case LocalDateTime::Min: debug << "Min"; break;
267  default: debug << "unknown";
268  }
269  return debug;
270 }
271 
272 /*!
273  * Writes the MessageIndex \a value to the \a debug stream and returns a reference to the stream.
274  *
275  * \param debug Debug stream to write \a value to.
276  * \param value Value to write to \a debug.
277  *
278  * \return a reference to the \a debug stream.
279  */
280 QDebug operator<<(QDebug debug, const MessageIndex value)
281 {
282  switch (value) {
283  case MessageIndex::Selected: debug << "Selected"; break;
284  case MessageIndex::Reserved: debug << "Reserved"; break;
285  case MessageIndex::Mask : debug << "Mask"; break;
286  default: debug << "unknown";
287  }
288  return debug;
289 }
290 
291 /*!
292  * Writes the DeviceIndex \a value to the \a debug stream and returns a reference to the stream.
293  *
294  * \param debug Debug stream to write \a value to.
295  * \param value Value to write to \a debug.
296  *
297  * \return a reference to the \a debug stream.
298  */
299 QDebug operator<<(QDebug debug, const DeviceIndex value)
300 {
301  switch (value) {
302  case DeviceIndex::Creator: debug << "Creator"; break;
303  default: debug << "unknown";
304  }
305  return debug;
306 }
307 
308 /*!
309  * Writes the Gender \a value to the \a debug stream and returns a reference to the stream.
310  *
311  * \param debug Debug stream to write \a value to.
312  * \param value Value to write to \a debug.
313  *
314  * \return a reference to the \a debug stream.
315  */
316 QDebug operator<<(QDebug debug, const Gender value)
317 {
318  switch (value) {
319  case Gender::Female: debug << "Female"; break;
320  case Gender::Male : debug << "Male"; break;
321  default: debug << "unknown";
322  }
323  return debug;
324 }
325 
326 /*!
327  * Writes the Language \a value to the \a debug stream and returns a reference to the stream.
328  *
329  * \param debug Debug stream to write \a value to.
330  * \param value Value to write to \a debug.
331  *
332  * \return a reference to the \a debug stream.
333  */
334 QDebug operator<<(QDebug debug, const Language value)
335 {
336  switch (value) {
337  case Language::English : debug << "English"; break;
338  case Language::French : debug << "French"; break;
339  case Language::Italian : debug << "Italian"; break;
340  case Language::German : debug << "German"; break;
341  case Language::Spanish : debug << "Spanish"; break;
342  case Language::Croatian : debug << "Croatian"; break;
343  case Language::Czech : debug << "Czech"; break;
344  case Language::Danish : debug << "Danish"; break;
345  case Language::Dutch : debug << "Dutch"; break;
346  case Language::Finnish : debug << "Finnish"; break;
347  case Language::Greek : debug << "Greek"; break;
348  case Language::Hungarian : debug << "Hungarian"; break;
349  case Language::Norwegian : debug << "Norwegian"; break;
350  case Language::Polish : debug << "Polish"; break;
351  case Language::Portuguese : debug << "Portuguese"; break;
352  case Language::Slovakian : debug << "Slovakian"; break;
353  case Language::Slovenian : debug << "Slovenian"; break;
354  case Language::Swedish : debug << "Swedish"; break;
355  case Language::Russian : debug << "Russian"; break;
356  case Language::Turkish : debug << "Turkish"; break;
357  case Language::Latvian : debug << "Latvian"; break;
358  case Language::Ukrainian : debug << "Ukrainian"; break;
359  case Language::Arabic : debug << "Arabic"; break;
360  case Language::Farsi : debug << "Farsi"; break;
361  case Language::Bulgarian : debug << "Bulgarian"; break;
362  case Language::Romanian : debug << "Romanian"; break;
363  case Language::Chinese : debug << "Chinese"; break;
364  case Language::Japanese : debug << "Japanese"; break;
365  case Language::Korean : debug << "Korean"; break;
366  case Language::Taiwanese : debug << "Taiwanese"; break;
367  case Language::Thai : debug << "Thai"; break;
368  case Language::Hebrew : debug << "Hebrew"; break;
369  case Language::BrazilianPortuguese: debug << "BrazilianPortuguese"; break;
370  case Language::Indonesian : debug << "Indonesian"; break;
371  case Language::Malaysian : debug << "Malaysian"; break;
372  case Language::Vietnamese : debug << "Vietnamese"; break;
373  case Language::Burmese : debug << "Burmese"; break;
374  case Language::Mongolian : debug << "Mongolian"; break;
375  case Language::Custom : debug << "Custom"; break;
376  default: debug << "unknown";
377  }
378  return debug;
379 }
380 
381 /*!
382  * Writes the LanguageBits0 \a value to the \a debug stream and returns a reference to the stream.
383  *
384  * \param debug Debug stream to write \a value to.
385  * \param value Value to write to \a debug.
386  *
387  * \return a reference to the \a debug stream.
388  */
389 QDebug operator<<(QDebug debug, const LanguageBits0 value)
390 {
391  switch (value) {
392  case LanguageBits0::English : debug << "English"; break;
393  case LanguageBits0::French : debug << "French"; break;
394  case LanguageBits0::Italian : debug << "Italian"; break;
395  case LanguageBits0::German : debug << "German"; break;
396  case LanguageBits0::Spanish : debug << "Spanish"; break;
397  case LanguageBits0::Croatian: debug << "Croatian"; break;
398  case LanguageBits0::Czech : debug << "Czech"; break;
399  case LanguageBits0::Danish : debug << "Danish"; break;
400  default: debug << "unknown";
401  }
402  return debug;
403 }
404 
405 /*!
406  * Writes the LanguageBits1 \a value to the \a debug stream and returns a reference to the stream.
407  *
408  * \param debug Debug stream to write \a value to.
409  * \param value Value to write to \a debug.
410  *
411  * \return a reference to the \a debug stream.
412  */
413 QDebug operator<<(QDebug debug, const LanguageBits1 value)
414 {
415  switch (value) {
416  case LanguageBits1::Dutch : debug << "Dutch"; break;
417  case LanguageBits1::Finnish : debug << "Finnish"; break;
418  case LanguageBits1::Greek : debug << "Greek"; break;
419  case LanguageBits1::Hungarian : debug << "Hungarian"; break;
420  case LanguageBits1::Norwegian : debug << "Norwegian"; break;
421  case LanguageBits1::Polish : debug << "Polish"; break;
422  case LanguageBits1::Portuguese: debug << "Portuguese"; break;
423  case LanguageBits1::Slovakian : debug << "Slovakian"; break;
424  default: debug << "unknown";
425  }
426  return debug;
427 }
428 
429 /*!
430  * Writes the LanguageBits2 \a value to the \a debug stream and returns a reference to the stream.
431  *
432  * \param debug Debug stream to write \a value to.
433  * \param value Value to write to \a debug.
434  *
435  * \return a reference to the \a debug stream.
436  */
437 QDebug operator<<(QDebug debug, const LanguageBits2 value)
438 {
439  switch (value) {
440  case LanguageBits2::Slovenian: debug << "Slovenian"; break;
441  case LanguageBits2::Swedish : debug << "Swedish"; break;
442  case LanguageBits2::Russian : debug << "Russian"; break;
443  case LanguageBits2::Turkish : debug << "Turkish"; break;
444  case LanguageBits2::Latvian : debug << "Latvian"; break;
445  case LanguageBits2::Ukrainian: debug << "Ukrainian"; break;
446  case LanguageBits2::Arabic : debug << "Arabic"; break;
447  case LanguageBits2::Farsi : debug << "Farsi"; break;
448  default: debug << "unknown";
449  }
450  return debug;
451 }
452 
453 /*!
454  * Writes the LanguageBits3 \a value to the \a debug stream and returns a reference to the stream.
455  *
456  * \param debug Debug stream to write \a value to.
457  * \param value Value to write to \a debug.
458  *
459  * \return a reference to the \a debug stream.
460  */
461 QDebug operator<<(QDebug debug, const LanguageBits3 value)
462 {
463  switch (value) {
464  case LanguageBits3::Bulgarian: debug << "Bulgarian"; break;
465  case LanguageBits3::Romanian : debug << "Romanian"; break;
466  case LanguageBits3::Chinese : debug << "Chinese"; break;
467  case LanguageBits3::Japanese : debug << "Japanese"; break;
468  case LanguageBits3::Korean : debug << "Korean"; break;
469  case LanguageBits3::Taiwanese: debug << "Taiwanese"; break;
470  case LanguageBits3::Thai : debug << "Thai"; break;
471  case LanguageBits3::Hebrew : debug << "Hebrew"; break;
472  default: debug << "unknown";
473  }
474  return debug;
475 }
476 
477 /*!
478  * Writes the LanguageBits4 \a value to the \a debug stream and returns a reference to the stream.
479  *
480  * \param debug Debug stream to write \a value to.
481  * \param value Value to write to \a debug.
482  *
483  * \return a reference to the \a debug stream.
484  */
485 QDebug operator<<(QDebug debug, const LanguageBits4 value)
486 {
487  switch (value) {
488  case LanguageBits4::BrazilianPortuguese: debug << "BrazilianPortuguese"; break;
489  case LanguageBits4::Indonesian : debug << "Indonesian"; break;
490  case LanguageBits4::Malaysian : debug << "Malaysian"; break;
491  case LanguageBits4::Vietnamese : debug << "Vietnamese"; break;
492  case LanguageBits4::Burmese : debug << "Burmese"; break;
493  case LanguageBits4::Mongolian : debug << "Mongolian"; break;
494  default: debug << "unknown";
495  }
496  return debug;
497 }
498 
499 /*!
500  * Writes the TimeZone \a value to the \a debug stream and returns a reference to the stream.
501  *
502  * \param debug Debug stream to write \a value to.
503  * \param value Value to write to \a debug.
504  *
505  * \return a reference to the \a debug stream.
506  */
507 QDebug operator<<(QDebug debug, const TimeZone value)
508 {
509  switch (value) {
510  case TimeZone::Almaty : debug << "Almaty"; break;
511  case TimeZone::Bangkok : debug << "Bangkok"; break;
512  case TimeZone::Bombay : debug << "Bombay"; break;
513  case TimeZone::Brasilia : debug << "Brasilia"; break;
514  case TimeZone::Cairo : debug << "Cairo"; break;
515  case TimeZone::CapeVerdeIs : debug << "CapeVerdeIs"; break;
516  case TimeZone::Darwin : debug << "Darwin"; break;
517  case TimeZone::Eniwetok : debug << "Eniwetok"; break;
518  case TimeZone::Fiji : debug << "Fiji"; break;
519  case TimeZone::HongKong : debug << "HongKong"; break;
520  case TimeZone::Islamabad : debug << "Islamabad"; break;
521  case TimeZone::Kabul : debug << "Kabul"; break;
522  case TimeZone::Magadan : debug << "Magadan"; break;
523  case TimeZone::MidAtlantic : debug << "MidAtlantic"; break;
524  case TimeZone::Moscow : debug << "Moscow"; break;
525  case TimeZone::Muscat : debug << "Muscat"; break;
526  case TimeZone::Newfoundland : debug << "Newfoundland"; break;
527  case TimeZone::Samoa : debug << "Samoa"; break;
528  case TimeZone::Sydney : debug << "Sydney"; break;
529  case TimeZone::Tehran : debug << "Tehran"; break;
530  case TimeZone::Tokyo : debug << "Tokyo"; break;
531  case TimeZone::UsAlaska : debug << "UsAlaska"; break;
532  case TimeZone::UsAtlantic : debug << "UsAtlantic"; break;
533  case TimeZone::UsCentral : debug << "UsCentral"; break;
534  case TimeZone::UsEastern : debug << "UsEastern"; break;
535  case TimeZone::UsHawaii : debug << "UsHawaii"; break;
536  case TimeZone::UsMountain : debug << "UsMountain"; break;
537  case TimeZone::UsPacific : debug << "UsPacific"; break;
538  case TimeZone::Other : debug << "Other"; break;
539  case TimeZone::Auckland : debug << "Auckland"; break;
540  case TimeZone::Kathmandu : debug << "Kathmandu"; break;
541  case TimeZone::EuropeWesternWet : debug << "EuropeWesternWet"; break;
542  case TimeZone::EuropeCentralCet : debug << "EuropeCentralCet"; break;
543  case TimeZone::EuropeEasternEet : debug << "EuropeEasternEet"; break;
544  case TimeZone::Jakarta : debug << "Jakarta"; break;
545  case TimeZone::Perth : debug << "Perth"; break;
546  case TimeZone::Adelaide : debug << "Adelaide"; break;
547  case TimeZone::Brisbane : debug << "Brisbane"; break;
548  case TimeZone::Tasmania : debug << "Tasmania"; break;
549  case TimeZone::Iceland : debug << "Iceland"; break;
550  case TimeZone::Amsterdam : debug << "Amsterdam"; break;
551  case TimeZone::Athens : debug << "Athens"; break;
552  case TimeZone::Barcelona : debug << "Barcelona"; break;
553  case TimeZone::Berlin : debug << "Berlin"; break;
554  case TimeZone::Brussels : debug << "Brussels"; break;
555  case TimeZone::Budapest : debug << "Budapest"; break;
556  case TimeZone::Copenhagen : debug << "Copenhagen"; break;
557  case TimeZone::Dublin : debug << "Dublin"; break;
558  case TimeZone::Helsinki : debug << "Helsinki"; break;
559  case TimeZone::Lisbon : debug << "Lisbon"; break;
560  case TimeZone::London : debug << "London"; break;
561  case TimeZone::Madrid : debug << "Madrid"; break;
562  case TimeZone::Munich : debug << "Munich"; break;
563  case TimeZone::Oslo : debug << "Oslo"; break;
564  case TimeZone::Paris : debug << "Paris"; break;
565  case TimeZone::Prague : debug << "Prague"; break;
566  case TimeZone::Reykjavik : debug << "Reykjavik"; break;
567  case TimeZone::Rome : debug << "Rome"; break;
568  case TimeZone::Stockholm : debug << "Stockholm"; break;
569  case TimeZone::Vienna : debug << "Vienna"; break;
570  case TimeZone::Warsaw : debug << "Warsaw"; break;
571  case TimeZone::Zurich : debug << "Zurich"; break;
572  case TimeZone::Quebec : debug << "Quebec"; break;
573  case TimeZone::Ontario : debug << "Ontario"; break;
574  case TimeZone::Manitoba : debug << "Manitoba"; break;
575  case TimeZone::Saskatchewan : debug << "Saskatchewan"; break;
576  case TimeZone::Alberta : debug << "Alberta"; break;
577  case TimeZone::BritishColumbia : debug << "BritishColumbia"; break;
578  case TimeZone::Boise : debug << "Boise"; break;
579  case TimeZone::Boston : debug << "Boston"; break;
580  case TimeZone::Chicago : debug << "Chicago"; break;
581  case TimeZone::Dallas : debug << "Dallas"; break;
582  case TimeZone::Denver : debug << "Denver"; break;
583  case TimeZone::KansasCity : debug << "KansasCity"; break;
584  case TimeZone::LasVegas : debug << "LasVegas"; break;
585  case TimeZone::LosAngeles : debug << "LosAngeles"; break;
586  case TimeZone::Miami : debug << "Miami"; break;
587  case TimeZone::Minneapolis : debug << "Minneapolis"; break;
588  case TimeZone::NewYork : debug << "NewYork"; break;
589  case TimeZone::NewOrleans : debug << "NewOrleans"; break;
590  case TimeZone::Phoenix : debug << "Phoenix"; break;
591  case TimeZone::SantaFe : debug << "SantaFe"; break;
592  case TimeZone::Seattle : debug << "Seattle"; break;
593  case TimeZone::WashingtonDc : debug << "WashingtonDc"; break;
594  case TimeZone::UsArizona : debug << "UsArizona"; break;
595  case TimeZone::Chita : debug << "Chita"; break;
596  case TimeZone::Ekaterinburg : debug << "Ekaterinburg"; break;
597  case TimeZone::Irkutsk : debug << "Irkutsk"; break;
598  case TimeZone::Kaliningrad : debug << "Kaliningrad"; break;
599  case TimeZone::Krasnoyarsk : debug << "Krasnoyarsk"; break;
600  case TimeZone::Novosibirsk : debug << "Novosibirsk"; break;
601  case TimeZone::PetropavlovskKamchatskiy: debug << "PetropavlovskKamchatskiy"; break;
602  case TimeZone::Samara : debug << "Samara"; break;
603  case TimeZone::Vladivostok : debug << "Vladivostok"; break;
604  case TimeZone::MexicoCentral : debug << "MexicoCentral"; break;
605  case TimeZone::MexicoMountain : debug << "MexicoMountain"; break;
606  case TimeZone::MexicoPacific : debug << "MexicoPacific"; break;
607  case TimeZone::CapeTown : debug << "CapeTown"; break;
608  case TimeZone::Winkhoek : debug << "Winkhoek"; break;
609  case TimeZone::Lagos : debug << "Lagos"; break;
610  case TimeZone::Riyahd : debug << "Riyahd"; break;
611  case TimeZone::Venezuela : debug << "Venezuela"; break;
612  case TimeZone::AustraliaLh : debug << "AustraliaLh"; break;
613  case TimeZone::Santiago : debug << "Santiago"; break;
614  case TimeZone::Manual : debug << "Manual"; break;
615  case TimeZone::Automatic : debug << "Automatic"; break;
616  default: debug << "unknown";
617  }
618  return debug;
619 }
620 
621 /*!
622  * Writes the DisplayMeasure \a value to the \a debug stream and returns a reference to the stream.
623  *
624  * \param debug Debug stream to write \a value to.
625  * \param value Value to write to \a debug.
626  *
627  * \return a reference to the \a debug stream.
628  */
629 QDebug operator<<(QDebug debug, const DisplayMeasure value)
630 {
631  switch (value) {
632  case DisplayMeasure::Metric : debug << "Metric"; break;
633  case DisplayMeasure::Statute : debug << "Statute"; break;
634  case DisplayMeasure::Nautical: debug << "Nautical"; break;
635  default: debug << "unknown";
636  }
637  return debug;
638 }
639 
640 /*!
641  * Writes the DisplayHeart \a value to the \a debug stream and returns a reference to the stream.
642  *
643  * \param debug Debug stream to write \a value to.
644  * \param value Value to write to \a debug.
645  *
646  * \return a reference to the \a debug stream.
647  */
648 QDebug operator<<(QDebug debug, const DisplayHeart value)
649 {
650  switch (value) {
651  case DisplayHeart::Bpm : debug << "Bpm"; break;
652  case DisplayHeart::Max : debug << "Max"; break;
653  case DisplayHeart::Reserve: debug << "Reserve"; break;
654  default: debug << "unknown";
655  }
656  return debug;
657 }
658 
659 /*!
660  * Writes the DisplayPower \a value to the \a debug stream and returns a reference to the stream.
661  *
662  * \param debug Debug stream to write \a value to.
663  * \param value Value to write to \a debug.
664  *
665  * \return a reference to the \a debug stream.
666  */
667 QDebug operator<<(QDebug debug, const DisplayPower value)
668 {
669  switch (value) {
670  case DisplayPower::Watts : debug << "Watts"; break;
671  case DisplayPower::PercentFtp: debug << "PercentFtp"; break;
672  default: debug << "unknown";
673  }
674  return debug;
675 }
676 
677 /*!
678  * Writes the DisplayPosition \a value to the \a debug stream and returns a reference to the stream.
679  *
680  * \param debug Debug stream to write \a value to.
681  * \param value Value to write to \a debug.
682  *
683  * \return a reference to the \a debug stream.
684  */
685 QDebug operator<<(QDebug debug, const DisplayPosition value)
686 {
687  switch (value) {
688  case DisplayPosition::Degree : debug << "Degree"; break;
689  case DisplayPosition::DegreeMinute : debug << "DegreeMinute"; break;
690  case DisplayPosition::DegreeMinuteSecond : debug << "DegreeMinuteSecond"; break;
691  case DisplayPosition::AustrianGrid : debug << "AustrianGrid"; break;
692  case DisplayPosition::BritishGrid : debug << "BritishGrid"; break;
693  case DisplayPosition::DutchGrid : debug << "DutchGrid"; break;
694  case DisplayPosition::HungarianGrid : debug << "HungarianGrid"; break;
695  case DisplayPosition::FinnishGrid : debug << "FinnishGrid"; break;
696  case DisplayPosition::GermanGrid : debug << "GermanGrid"; break;
697  case DisplayPosition::IcelandicGrid : debug << "IcelandicGrid"; break;
698  case DisplayPosition::IndonesianEquatorial: debug << "IndonesianEquatorial"; break;
699  case DisplayPosition::IndonesianIrian : debug << "IndonesianIrian"; break;
700  case DisplayPosition::IndonesianSouthern : debug << "IndonesianSouthern"; break;
701  case DisplayPosition::IndiaZone0 : debug << "IndiaZone0"; break;
702  case DisplayPosition::IndiaZoneIa : debug << "IndiaZoneIa"; break;
703  case DisplayPosition::IndiaZoneIb : debug << "IndiaZoneIb"; break;
704  case DisplayPosition::IndiaZoneIia : debug << "IndiaZoneIia"; break;
705  case DisplayPosition::IndiaZoneIib : debug << "IndiaZoneIib"; break;
706  case DisplayPosition::IndiaZoneIiia : debug << "IndiaZoneIiia"; break;
707  case DisplayPosition::IndiaZoneIiib : debug << "IndiaZoneIiib"; break;
708  case DisplayPosition::IndiaZoneIva : debug << "IndiaZoneIva"; break;
709  case DisplayPosition::IndiaZoneIvb : debug << "IndiaZoneIvb"; break;
710  case DisplayPosition::IrishTransverse : debug << "IrishTransverse"; break;
711  case DisplayPosition::IrishGrid : debug << "IrishGrid"; break;
712  case DisplayPosition::Loran : debug << "Loran"; break;
713  case DisplayPosition::MaidenheadGrid : debug << "MaidenheadGrid"; break;
714  case DisplayPosition::MgrsGrid : debug << "MgrsGrid"; break;
715  case DisplayPosition::NewZealandGrid : debug << "NewZealandGrid"; break;
716  case DisplayPosition::NewZealandTransverse: debug << "NewZealandTransverse"; break;
717  case DisplayPosition::QatarGrid : debug << "QatarGrid"; break;
718  case DisplayPosition::ModifiedSwedishGrid : debug << "ModifiedSwedishGrid"; break;
719  case DisplayPosition::SwedishGrid : debug << "SwedishGrid"; break;
720  case DisplayPosition::SouthAfricanGrid : debug << "SouthAfricanGrid"; break;
721  case DisplayPosition::SwissGrid : debug << "SwissGrid"; break;
722  case DisplayPosition::TaiwanGrid : debug << "TaiwanGrid"; break;
723  case DisplayPosition::UnitedStatesGrid : debug << "UnitedStatesGrid"; break;
724  case DisplayPosition::UtmUpsGrid : debug << "UtmUpsGrid"; break;
725  case DisplayPosition::WestMalayan : debug << "WestMalayan"; break;
726  case DisplayPosition::BorneoRso : debug << "BorneoRso"; break;
727  case DisplayPosition::EstonianGrid : debug << "EstonianGrid"; break;
728  case DisplayPosition::LatvianGrid : debug << "LatvianGrid"; break;
729  case DisplayPosition::SwedishRef99Grid : debug << "SwedishRef99Grid"; break;
730  default: debug << "unknown";
731  }
732  return debug;
733 }
734 
735 /*!
736  * Writes the Switch \a value to the \a debug stream and returns a reference to the stream.
737  *
738  * \param debug Debug stream to write \a value to.
739  * \param value Value to write to \a debug.
740  *
741  * \return a reference to the \a debug stream.
742  */
743 QDebug operator<<(QDebug debug, const Switch value)
744 {
745  switch (value) {
746  case Switch::Off : debug << "Off"; break;
747  case Switch::On : debug << "On"; break;
748  case Switch::Auto: debug << "Auto"; break;
749  default: debug << "unknown";
750  }
751  return debug;
752 }
753 
754 /*!
755  * Writes the Sport \a value to the \a debug stream and returns a reference to the stream.
756  *
757  * \param debug Debug stream to write \a value to.
758  * \param value Value to write to \a debug.
759  *
760  * \return a reference to the \a debug stream.
761  */
762 QDebug operator<<(QDebug debug, const Sport value)
763 {
764  switch (value) {
765  case Sport::Generic : debug << "Generic"; break;
766  case Sport::Running : debug << "Running"; break;
767  case Sport::Cycling : debug << "Cycling"; break;
768  case Sport::Transition : debug << "Transition"; break;
769  case Sport::FitnessEquipment : debug << "FitnessEquipment"; break;
770  case Sport::Swimming : debug << "Swimming"; break;
771  case Sport::Basketball : debug << "Basketball"; break;
772  case Sport::Soccer : debug << "Soccer"; break;
773  case Sport::Tennis : debug << "Tennis"; break;
774  case Sport::AmericanFootball : debug << "AmericanFootball"; break;
775  case Sport::Training : debug << "Training"; break;
776  case Sport::Walking : debug << "Walking"; break;
777  case Sport::CrossCountrySkiing : debug << "CrossCountrySkiing"; break;
778  case Sport::AlpineSkiing : debug << "AlpineSkiing"; break;
779  case Sport::Snowboarding : debug << "Snowboarding"; break;
780  case Sport::Rowing : debug << "Rowing"; break;
781  case Sport::Mountaineering : debug << "Mountaineering"; break;
782  case Sport::Hiking : debug << "Hiking"; break;
783  case Sport::Multisport : debug << "Multisport"; break;
784  case Sport::Paddling : debug << "Paddling"; break;
785  case Sport::Flying : debug << "Flying"; break;
786  case Sport::EBiking : debug << "EBiking"; break;
787  case Sport::Motorcycling : debug << "Motorcycling"; break;
788  case Sport::Boating : debug << "Boating"; break;
789  case Sport::Driving : debug << "Driving"; break;
790  case Sport::Golf : debug << "Golf"; break;
791  case Sport::HangGliding : debug << "HangGliding"; break;
792  case Sport::HorsebackRiding : debug << "HorsebackRiding"; break;
793  case Sport::Hunting : debug << "Hunting"; break;
794  case Sport::Fishing : debug << "Fishing"; break;
795  case Sport::InlineSkating : debug << "InlineSkating"; break;
796  case Sport::RockClimbing : debug << "RockClimbing"; break;
797  case Sport::Sailing : debug << "Sailing"; break;
798  case Sport::IceSkating : debug << "IceSkating"; break;
799  case Sport::SkyDiving : debug << "SkyDiving"; break;
800  case Sport::Snowshoeing : debug << "Snowshoeing"; break;
801  case Sport::Snowmobiling : debug << "Snowmobiling"; break;
802  case Sport::StandUpPaddleboarding: debug << "StandUpPaddleboarding"; break;
803  case Sport::Surfing : debug << "Surfing"; break;
804  case Sport::Wakeboarding : debug << "Wakeboarding"; break;
805  case Sport::WaterSkiing : debug << "WaterSkiing"; break;
806  case Sport::Kayaking : debug << "Kayaking"; break;
807  case Sport::Rafting : debug << "Rafting"; break;
808  case Sport::Windsurfing : debug << "Windsurfing"; break;
809  case Sport::Kitesurfing : debug << "Kitesurfing"; break;
810  case Sport::Tactical : debug << "Tactical"; break;
811  case Sport::Jumpmaster : debug << "Jumpmaster"; break;
812  case Sport::Boxing : debug << "Boxing"; break;
813  case Sport::FloorClimbing : debug << "FloorClimbing"; break;
814  case Sport::Diving : debug << "Diving"; break;
815  case Sport::All : debug << "All"; break;
816  default: debug << "unknown";
817  }
818  return debug;
819 }
820 
821 /*!
822  * Writes the SportBits0 \a value to the \a debug stream and returns a reference to the stream.
823  *
824  * \param debug Debug stream to write \a value to.
825  * \param value Value to write to \a debug.
826  *
827  * \return a reference to the \a debug stream.
828  */
829 QDebug operator<<(QDebug debug, const SportBits0 value)
830 {
831  switch (value) {
832  case SportBits0::Generic : debug << "Generic"; break;
833  case SportBits0::Running : debug << "Running"; break;
834  case SportBits0::Cycling : debug << "Cycling"; break;
835  case SportBits0::Transition : debug << "Transition"; break;
836  case SportBits0::FitnessEquipment: debug << "FitnessEquipment"; break;
837  case SportBits0::Swimming : debug << "Swimming"; break;
838  case SportBits0::Basketball : debug << "Basketball"; break;
839  case SportBits0::Soccer : debug << "Soccer"; break;
840  default: debug << "unknown";
841  }
842  return debug;
843 }
844 
845 /*!
846  * Writes the SportBits1 \a value to the \a debug stream and returns a reference to the stream.
847  *
848  * \param debug Debug stream to write \a value to.
849  * \param value Value to write to \a debug.
850  *
851  * \return a reference to the \a debug stream.
852  */
853 QDebug operator<<(QDebug debug, const SportBits1 value)
854 {
855  switch (value) {
856  case SportBits1::Tennis : debug << "Tennis"; break;
857  case SportBits1::AmericanFootball : debug << "AmericanFootball"; break;
858  case SportBits1::Training : debug << "Training"; break;
859  case SportBits1::Walking : debug << "Walking"; break;
860  case SportBits1::CrossCountrySkiing: debug << "CrossCountrySkiing"; break;
861  case SportBits1::AlpineSkiing : debug << "AlpineSkiing"; break;
862  case SportBits1::Snowboarding : debug << "Snowboarding"; break;
863  case SportBits1::Rowing : debug << "Rowing"; break;
864  default: debug << "unknown";
865  }
866  return debug;
867 }
868 
869 /*!
870  * Writes the SportBits2 \a value to the \a debug stream and returns a reference to the stream.
871  *
872  * \param debug Debug stream to write \a value to.
873  * \param value Value to write to \a debug.
874  *
875  * \return a reference to the \a debug stream.
876  */
877 QDebug operator<<(QDebug debug, const SportBits2 value)
878 {
879  switch (value) {
880  case SportBits2::Mountaineering: debug << "Mountaineering"; break;
881  case SportBits2::Hiking : debug << "Hiking"; break;
882  case SportBits2::Multisport : debug << "Multisport"; break;
883  case SportBits2::Paddling : debug << "Paddling"; break;
884  case SportBits2::Flying : debug << "Flying"; break;
885  case SportBits2::EBiking : debug << "EBiking"; break;
886  case SportBits2::Motorcycling : debug << "Motorcycling"; break;
887  case SportBits2::Boating : debug << "Boating"; break;
888  default: debug << "unknown";
889  }
890  return debug;
891 }
892 
893 /*!
894  * Writes the SportBits3 \a value to the \a debug stream and returns a reference to the stream.
895  *
896  * \param debug Debug stream to write \a value to.
897  * \param value Value to write to \a debug.
898  *
899  * \return a reference to the \a debug stream.
900  */
901 QDebug operator<<(QDebug debug, const SportBits3 value)
902 {
903  switch (value) {
904  case SportBits3::Driving : debug << "Driving"; break;
905  case SportBits3::Golf : debug << "Golf"; break;
906  case SportBits3::HangGliding : debug << "HangGliding"; break;
907  case SportBits3::HorsebackRiding: debug << "HorsebackRiding"; break;
908  case SportBits3::Hunting : debug << "Hunting"; break;
909  case SportBits3::Fishing : debug << "Fishing"; break;
910  case SportBits3::InlineSkating : debug << "InlineSkating"; break;
911  case SportBits3::RockClimbing : debug << "RockClimbing"; break;
912  default: debug << "unknown";
913  }
914  return debug;
915 }
916 
917 /*!
918  * Writes the SportBits4 \a value to the \a debug stream and returns a reference to the stream.
919  *
920  * \param debug Debug stream to write \a value to.
921  * \param value Value to write to \a debug.
922  *
923  * \return a reference to the \a debug stream.
924  */
925 QDebug operator<<(QDebug debug, const SportBits4 value)
926 {
927  switch (value) {
928  case SportBits4::Sailing : debug << "Sailing"; break;
929  case SportBits4::IceSkating : debug << "IceSkating"; break;
930  case SportBits4::SkyDiving : debug << "SkyDiving"; break;
931  case SportBits4::Snowshoeing : debug << "Snowshoeing"; break;
932  case SportBits4::Snowmobiling : debug << "Snowmobiling"; break;
933  case SportBits4::StandUpPaddleboarding: debug << "StandUpPaddleboarding"; break;
934  case SportBits4::Surfing : debug << "Surfing"; break;
935  case SportBits4::Wakeboarding : debug << "Wakeboarding"; break;
936  default: debug << "unknown";
937  }
938  return debug;
939 }
940 
941 /*!
942  * Writes the SportBits5 \a value to the \a debug stream and returns a reference to the stream.
943  *
944  * \param debug Debug stream to write \a value to.
945  * \param value Value to write to \a debug.
946  *
947  * \return a reference to the \a debug stream.
948  */
949 QDebug operator<<(QDebug debug, const SportBits5 value)
950 {
951  switch (value) {
952  case SportBits5::WaterSkiing: debug << "WaterSkiing"; break;
953  case SportBits5::Kayaking : debug << "Kayaking"; break;
954  case SportBits5::Rafting : debug << "Rafting"; break;
955  case SportBits5::Windsurfing: debug << "Windsurfing"; break;
956  case SportBits5::Kitesurfing: debug << "Kitesurfing"; break;
957  case SportBits5::Tactical : debug << "Tactical"; break;
958  case SportBits5::Jumpmaster : debug << "Jumpmaster"; break;
959  case SportBits5::Boxing : debug << "Boxing"; break;
960  default: debug << "unknown";
961  }
962  return debug;
963 }
964 
965 /*!
966  * Writes the SportBits6 \a value to the \a debug stream and returns a reference to the stream.
967  *
968  * \param debug Debug stream to write \a value to.
969  * \param value Value to write to \a debug.
970  *
971  * \return a reference to the \a debug stream.
972  */
973 QDebug operator<<(QDebug debug, const SportBits6 value)
974 {
975  switch (value) {
976  case SportBits6::FloorClimbing: debug << "FloorClimbing"; break;
977  default: debug << "unknown";
978  }
979  return debug;
980 }
981 
982 /*!
983  * Writes the SubSport \a value to the \a debug stream and returns a reference to the stream.
984  *
985  * \param debug Debug stream to write \a value to.
986  * \param value Value to write to \a debug.
987  *
988  * \return a reference to the \a debug stream.
989  */
990 QDebug operator<<(QDebug debug, const SubSport value)
991 {
992  switch (value) {
993  case SubSport::Generic : debug << "Generic"; break;
994  case SubSport::Treadmill : debug << "Treadmill"; break;
995  case SubSport::Street : debug << "Street"; break;
996  case SubSport::Trail : debug << "Trail"; break;
997  case SubSport::Track : debug << "Track"; break;
998  case SubSport::Spin : debug << "Spin"; break;
999  case SubSport::IndoorCycling : debug << "IndoorCycling"; break;
1000  case SubSport::Road : debug << "Road"; break;
1001  case SubSport::Mountain : debug << "Mountain"; break;
1002  case SubSport::Downhill : debug << "Downhill"; break;
1003  case SubSport::Recumbent : debug << "Recumbent"; break;
1004  case SubSport::Cyclocross : debug << "Cyclocross"; break;
1005  case SubSport::HandCycling : debug << "HandCycling"; break;
1006  case SubSport::TrackCycling : debug << "TrackCycling"; break;
1007  case SubSport::IndoorRowing : debug << "IndoorRowing"; break;
1008  case SubSport::Elliptical : debug << "Elliptical"; break;
1009  case SubSport::StairClimbing : debug << "StairClimbing"; break;
1010  case SubSport::LapSwimming : debug << "LapSwimming"; break;
1011  case SubSport::OpenWater : debug << "OpenWater"; break;
1012  case SubSport::FlexibilityTraining : debug << "FlexibilityTraining"; break;
1013  case SubSport::StrengthTraining : debug << "StrengthTraining"; break;
1014  case SubSport::WarmUp : debug << "WarmUp"; break;
1015  case SubSport::Match : debug << "Match"; break;
1016  case SubSport::Exercise : debug << "Exercise"; break;
1017  case SubSport::Challenge : debug << "Challenge"; break;
1018  case SubSport::IndoorSkiing : debug << "IndoorSkiing"; break;
1019  case SubSport::CardioTraining : debug << "CardioTraining"; break;
1020  case SubSport::IndoorWalking : debug << "IndoorWalking"; break;
1021  case SubSport::EBikeFitness : debug << "EBikeFitness"; break;
1022  case SubSport::Bmx : debug << "Bmx"; break;
1023  case SubSport::CasualWalking : debug << "CasualWalking"; break;
1024  case SubSport::SpeedWalking : debug << "SpeedWalking"; break;
1025  case SubSport::BikeToRunTransition : debug << "BikeToRunTransition"; break;
1026  case SubSport::RunToBikeTransition : debug << "RunToBikeTransition"; break;
1027  case SubSport::SwimToBikeTransition: debug << "SwimToBikeTransition"; break;
1028  case SubSport::Atv : debug << "Atv"; break;
1029  case SubSport::Motocross : debug << "Motocross"; break;
1030  case SubSport::Backcountry : debug << "Backcountry"; break;
1031  case SubSport::Resort : debug << "Resort"; break;
1032  case SubSport::RcDrone : debug << "RcDrone"; break;
1033  case SubSport::Wingsuit : debug << "Wingsuit"; break;
1034  case SubSport::Whitewater : debug << "Whitewater"; break;
1035  case SubSport::SkateSkiing : debug << "SkateSkiing"; break;
1036  case SubSport::Yoga : debug << "Yoga"; break;
1037  case SubSport::Pilates : debug << "Pilates"; break;
1038  case SubSport::IndoorRunning : debug << "IndoorRunning"; break;
1039  case SubSport::GravelCycling : debug << "GravelCycling"; break;
1040  case SubSport::EBikeMountain : debug << "EBikeMountain"; break;
1041  case SubSport::Commuting : debug << "Commuting"; break;
1042  case SubSport::MixedSurface : debug << "MixedSurface"; break;
1043  case SubSport::Navigate : debug << "Navigate"; break;
1044  case SubSport::TrackMe : debug << "TrackMe"; break;
1045  case SubSport::Map : debug << "Map"; break;
1046  case SubSport::SingleGasDiving : debug << "SingleGasDiving"; break;
1047  case SubSport::MultiGasDiving : debug << "MultiGasDiving"; break;
1048  case SubSport::GaugeDiving : debug << "GaugeDiving"; break;
1049  case SubSport::ApneaDiving : debug << "ApneaDiving"; break;
1050  case SubSport::ApneaHunting : debug << "ApneaHunting"; break;
1051  case SubSport::VirtualActivity : debug << "VirtualActivity"; break;
1052  case SubSport::Obstacle : debug << "Obstacle"; break;
1053  case SubSport::Breathing : debug << "Breathing"; break;
1054  case SubSport::SailRace : debug << "SailRace"; break;
1055  case SubSport::Ultra : debug << "Ultra"; break;
1056  case SubSport::IndoorClimbing : debug << "IndoorClimbing"; break;
1057  case SubSport::Bouldering : debug << "Bouldering"; break;
1058  case SubSport::All : debug << "All"; break;
1059  default: debug << "unknown";
1060  }
1061  return debug;
1062 }
1063 
1064 /*!
1065  * Writes the SportEvent \a value to the \a debug stream and returns a reference to the stream.
1066  *
1067  * \param debug Debug stream to write \a value to.
1068  * \param value Value to write to \a debug.
1069  *
1070  * \return a reference to the \a debug stream.
1071  */
1072 QDebug operator<<(QDebug debug, const SportEvent value)
1073 {
1074  switch (value) {
1075  case SportEvent::Uncategorized : debug << "Uncategorized"; break;
1076  case SportEvent::Geocaching : debug << "Geocaching"; break;
1077  case SportEvent::Fitness : debug << "Fitness"; break;
1078  case SportEvent::Recreation : debug << "Recreation"; break;
1079  case SportEvent::Race : debug << "Race"; break;
1080  case SportEvent::SpecialEvent : debug << "SpecialEvent"; break;
1081  case SportEvent::Training : debug << "Training"; break;
1082  case SportEvent::Transportation: debug << "Transportation"; break;
1083  case SportEvent::Touring : debug << "Touring"; break;
1084  default: debug << "unknown";
1085  }
1086  return debug;
1087 }
1088 
1089 /*!
1090  * Writes the Activity \a value to the \a debug stream and returns a reference to the stream.
1091  *
1092  * \param debug Debug stream to write \a value to.
1093  * \param value Value to write to \a debug.
1094  *
1095  * \return a reference to the \a debug stream.
1096  */
1097 QDebug operator<<(QDebug debug, const Activity value)
1098 {
1099  switch (value) {
1100  case Activity::Manual : debug << "Manual"; break;
1101  case Activity::AutoMultiSport: debug << "AutoMultiSport"; break;
1102  default: debug << "unknown";
1103  }
1104  return debug;
1105 }
1106 
1107 /*!
1108  * Writes the Intensity \a value to the \a debug stream and returns a reference to the stream.
1109  *
1110  * \param debug Debug stream to write \a value to.
1111  * \param value Value to write to \a debug.
1112  *
1113  * \return a reference to the \a debug stream.
1114  */
1115 QDebug operator<<(QDebug debug, const Intensity value)
1116 {
1117  switch (value) {
1118  case Intensity::Active : debug << "Active"; break;
1119  case Intensity::Rest : debug << "Rest"; break;
1120  case Intensity::Warmup : debug << "Warmup"; break;
1121  case Intensity::Cooldown: debug << "Cooldown"; break;
1122  case Intensity::Recovery: debug << "Recovery"; break;
1123  case Intensity::Interval: debug << "Interval"; break;
1124  case Intensity::Other : debug << "Other"; break;
1125  default: debug << "unknown";
1126  }
1127  return debug;
1128 }
1129 
1130 /*!
1131  * Writes the SessionTrigger \a value to the \a debug stream and returns a reference to the stream.
1132  *
1133  * \param debug Debug stream to write \a value to.
1134  * \param value Value to write to \a debug.
1135  *
1136  * \return a reference to the \a debug stream.
1137  */
1138 QDebug operator<<(QDebug debug, const SessionTrigger value)
1139 {
1140  switch (value) {
1141  case SessionTrigger::ActivityEnd : debug << "ActivityEnd"; break;
1142  case SessionTrigger::Manual : debug << "Manual"; break;
1143  case SessionTrigger::AutoMultiSport : debug << "AutoMultiSport"; break;
1144  case SessionTrigger::FitnessEquipment: debug << "FitnessEquipment"; break;
1145  default: debug << "unknown";
1146  }
1147  return debug;
1148 }
1149 
1150 /*!
1151  * Writes the AutolapTrigger \a value to the \a debug stream and returns a reference to the stream.
1152  *
1153  * \param debug Debug stream to write \a value to.
1154  * \param value Value to write to \a debug.
1155  *
1156  * \return a reference to the \a debug stream.
1157  */
1158 QDebug operator<<(QDebug debug, const AutolapTrigger value)
1159 {
1160  switch (value) {
1161  case AutolapTrigger::Time : debug << "Time"; break;
1162  case AutolapTrigger::Distance : debug << "Distance"; break;
1163  case AutolapTrigger::PositionStart : debug << "PositionStart"; break;
1164  case AutolapTrigger::PositionLap : debug << "PositionLap"; break;
1165  case AutolapTrigger::PositionWaypoint: debug << "PositionWaypoint"; break;
1166  case AutolapTrigger::PositionMarked : debug << "PositionMarked"; break;
1167  case AutolapTrigger::Off : debug << "Off"; break;
1168  default: debug << "unknown";
1169  }
1170  return debug;
1171 }
1172 
1173 /*!
1174  * Writes the LapTrigger \a value to the \a debug stream and returns a reference to the stream.
1175  *
1176  * \param debug Debug stream to write \a value to.
1177  * \param value Value to write to \a debug.
1178  *
1179  * \return a reference to the \a debug stream.
1180  */
1181 QDebug operator<<(QDebug debug, const LapTrigger value)
1182 {
1183  switch (value) {
1184  case LapTrigger::Manual : debug << "Manual"; break;
1185  case LapTrigger::Time : debug << "Time"; break;
1186  case LapTrigger::Distance : debug << "Distance"; break;
1187  case LapTrigger::PositionStart : debug << "PositionStart"; break;
1188  case LapTrigger::PositionLap : debug << "PositionLap"; break;
1189  case LapTrigger::PositionWaypoint: debug << "PositionWaypoint"; break;
1190  case LapTrigger::PositionMarked : debug << "PositionMarked"; break;
1191  case LapTrigger::SessionEnd : debug << "SessionEnd"; break;
1192  case LapTrigger::FitnessEquipment: debug << "FitnessEquipment"; break;
1193  default: debug << "unknown";
1194  }
1195  return debug;
1196 }
1197 
1198 /*!
1199  * Writes the TimeMode \a value to the \a debug stream and returns a reference to the stream.
1200  *
1201  * \param debug Debug stream to write \a value to.
1202  * \param value Value to write to \a debug.
1203  *
1204  * \return a reference to the \a debug stream.
1205  */
1206 QDebug operator<<(QDebug debug, const TimeMode value)
1207 {
1208  switch (value) {
1209  case TimeMode::Hour12 : debug << "Hour12"; break;
1210  case TimeMode::Hour24 : debug << "Hour24"; break;
1211  case TimeMode::Military : debug << "Military"; break;
1212  case TimeMode::Hour12WithSeconds: debug << "Hour12WithSeconds"; break;
1213  case TimeMode::Hour24WithSeconds: debug << "Hour24WithSeconds"; break;
1214  case TimeMode::Utc : debug << "Utc"; break;
1215  default: debug << "unknown";
1216  }
1217  return debug;
1218 }
1219 
1220 /*!
1221  * Writes the BacklightMode \a value to the \a debug stream and returns a reference to the stream.
1222  *
1223  * \param debug Debug stream to write \a value to.
1224  * \param value Value to write to \a debug.
1225  *
1226  * \return a reference to the \a debug stream.
1227  */
1228 QDebug operator<<(QDebug debug, const BacklightMode value)
1229 {
1230  switch (value) {
1231  case BacklightMode::Off : debug << "Off"; break;
1232  case BacklightMode::Manual : debug << "Manual"; break;
1233  case BacklightMode::KeyAndMessages : debug << "KeyAndMessages"; break;
1234  case BacklightMode::AutoBrightness : debug << "AutoBrightness"; break;
1235  case BacklightMode::SmartNotifications : debug << "SmartNotifications"; break;
1236  case BacklightMode::KeyAndMessagesNight : debug << "KeyAndMessagesNight"; break;
1237  case BacklightMode::KeyAndMessagesAndSmartNotifications: debug << "KeyAndMessagesAndSmartNotifications"; break;
1238  default: debug << "unknown";
1239  }
1240  return debug;
1241 }
1242 
1243 /*!
1244  * Writes the DateMode \a value to the \a debug stream and returns a reference to the stream.
1245  *
1246  * \param debug Debug stream to write \a value to.
1247  * \param value Value to write to \a debug.
1248  *
1249  * \return a reference to the \a debug stream.
1250  */
1251 QDebug operator<<(QDebug debug, const DateMode value)
1252 {
1253  switch (value) {
1254  case DateMode::DayMonth: debug << "DayMonth"; break;
1255  case DateMode::MonthDay: debug << "MonthDay"; break;
1256  default: debug << "unknown";
1257  }
1258  return debug;
1259 }
1260 
1261 /*!
1262  * Writes the BacklightTimeout \a value to the \a debug stream and returns a reference to the stream.
1263  *
1264  * \param debug Debug stream to write \a value to.
1265  * \param value Value to write to \a debug.
1266  *
1267  * \return a reference to the \a debug stream.
1268  */
1269 QDebug operator<<(QDebug debug, const BacklightTimeout value)
1270 {
1271  switch (value) {
1272  case BacklightTimeout::Infinite: debug << "Infinite"; break;
1273  default: debug << "unknown";
1274  }
1275  return debug;
1276 }
1277 
1278 /*!
1279  * Writes the Event \a value to the \a debug stream and returns a reference to the stream.
1280  *
1281  * \param debug Debug stream to write \a value to.
1282  * \param value Value to write to \a debug.
1283  *
1284  * \return a reference to the \a debug stream.
1285  */
1286 QDebug operator<<(QDebug debug, const Event value)
1287 {
1288  switch (value) {
1289  case Event::Timer : debug << "Timer"; break;
1290  case Event::Workout : debug << "Workout"; break;
1291  case Event::WorkoutStep : debug << "WorkoutStep"; break;
1292  case Event::PowerDown : debug << "PowerDown"; break;
1293  case Event::PowerUp : debug << "PowerUp"; break;
1294  case Event::OffCourse : debug << "OffCourse"; break;
1295  case Event::Session : debug << "Session"; break;
1296  case Event::Lap : debug << "Lap"; break;
1297  case Event::CoursePoint : debug << "CoursePoint"; break;
1298  case Event::Battery : debug << "Battery"; break;
1299  case Event::VirtualPartnerPace : debug << "VirtualPartnerPace"; break;
1300  case Event::HrHighAlert : debug << "HrHighAlert"; break;
1301  case Event::HrLowAlert : debug << "HrLowAlert"; break;
1302  case Event::SpeedHighAlert : debug << "SpeedHighAlert"; break;
1303  case Event::SpeedLowAlert : debug << "SpeedLowAlert"; break;
1304  case Event::CadHighAlert : debug << "CadHighAlert"; break;
1305  case Event::CadLowAlert : debug << "CadLowAlert"; break;
1306  case Event::PowerHighAlert : debug << "PowerHighAlert"; break;
1307  case Event::PowerLowAlert : debug << "PowerLowAlert"; break;
1308  case Event::RecoveryHr : debug << "RecoveryHr"; break;
1309  case Event::BatteryLow : debug << "BatteryLow"; break;
1310  case Event::TimeDurationAlert : debug << "TimeDurationAlert"; break;
1311  case Event::DistanceDurationAlert: debug << "DistanceDurationAlert"; break;
1312  case Event::CalorieDurationAlert : debug << "CalorieDurationAlert"; break;
1313  case Event::Activity : debug << "Activity"; break;
1314  case Event::FitnessEquipment : debug << "FitnessEquipment"; break;
1315  case Event::Length : debug << "Length"; break;
1316  case Event::UserMarker : debug << "UserMarker"; break;
1317  case Event::SportPoint : debug << "SportPoint"; break;
1318  case Event::Calibration : debug << "Calibration"; break;
1319  case Event::FrontGearChange : debug << "FrontGearChange"; break;
1320  case Event::RearGearChange : debug << "RearGearChange"; break;
1321  case Event::RiderPositionChange : debug << "RiderPositionChange"; break;
1322  case Event::ElevHighAlert : debug << "ElevHighAlert"; break;
1323  case Event::ElevLowAlert : debug << "ElevLowAlert"; break;
1324  case Event::CommTimeout : debug << "CommTimeout"; break;
1325  case Event::RadarThreatAlert : debug << "RadarThreatAlert"; break;
1326  default: debug << "unknown";
1327  }
1328  return debug;
1329 }
1330 
1331 /*!
1332  * Writes the EventType \a value to the \a debug stream and returns a reference to the stream.
1333  *
1334  * \param debug Debug stream to write \a value to.
1335  * \param value Value to write to \a debug.
1336  *
1337  * \return a reference to the \a debug stream.
1338  */
1339 QDebug operator<<(QDebug debug, const EventType value)
1340 {
1341  switch (value) {
1342  case EventType::Start : debug << "Start"; break;
1343  case EventType::Stop : debug << "Stop"; break;
1344  case EventType::ConsecutiveDepreciated: debug << "ConsecutiveDepreciated"; break;
1345  case EventType::Marker : debug << "Marker"; break;
1346  case EventType::StopAll : debug << "StopAll"; break;
1347  case EventType::BeginDepreciated : debug << "BeginDepreciated"; break;
1348  case EventType::EndDepreciated : debug << "EndDepreciated"; break;
1349  case EventType::EndAllDepreciated : debug << "EndAllDepreciated"; break;
1350  case EventType::StopDisable : debug << "StopDisable"; break;
1351  case EventType::StopDisableAll : debug << "StopDisableAll"; break;
1352  default: debug << "unknown";
1353  }
1354  return debug;
1355 }
1356 
1357 /*!
1358  * Writes the TimerTrigger \a value to the \a debug stream and returns a reference to the stream.
1359  *
1360  * \param debug Debug stream to write \a value to.
1361  * \param value Value to write to \a debug.
1362  *
1363  * \return a reference to the \a debug stream.
1364  */
1365 QDebug operator<<(QDebug debug, const TimerTrigger value)
1366 {
1367  switch (value) {
1368  case TimerTrigger::Manual : debug << "Manual"; break;
1369  case TimerTrigger::Auto : debug << "Auto"; break;
1370  case TimerTrigger::FitnessEquipment: debug << "FitnessEquipment"; break;
1371  default: debug << "unknown";
1372  }
1373  return debug;
1374 }
1375 
1376 /*!
1377  * Writes the FitnessEquipmentState \a value to the \a debug stream and returns a reference to the stream.
1378  *
1379  * \param debug Debug stream to write \a value to.
1380  * \param value Value to write to \a debug.
1381  *
1382  * \return a reference to the \a debug stream.
1383  */
1384 QDebug operator<<(QDebug debug, const FitnessEquipmentState value)
1385 {
1386  switch (value) {
1387  case FitnessEquipmentState::Ready : debug << "Ready"; break;
1388  case FitnessEquipmentState::InUse : debug << "InUse"; break;
1389  case FitnessEquipmentState::Paused : debug << "Paused"; break;
1390  case FitnessEquipmentState::Unknown: debug << "Unknown"; break;
1391  default: debug << "unknown";
1392  }
1393  return debug;
1394 }
1395 
1396 /*!
1397  * Writes the Tone \a value to the \a debug stream and returns a reference to the stream.
1398  *
1399  * \param debug Debug stream to write \a value to.
1400  * \param value Value to write to \a debug.
1401  *
1402  * \return a reference to the \a debug stream.
1403  */
1404 QDebug operator<<(QDebug debug, const Tone value)
1405 {
1406  switch (value) {
1407  case Tone::Off : debug << "Off"; break;
1408  case Tone::Tone : debug << "Tone"; break;
1409  case Tone::Vibrate : debug << "Vibrate"; break;
1410  case Tone::ToneAndVibrate: debug << "ToneAndVibrate"; break;
1411  default: debug << "unknown";
1412  }
1413  return debug;
1414 }
1415 
1416 /*!
1417  * Writes the Autoscroll \a value to the \a debug stream and returns a reference to the stream.
1418  *
1419  * \param debug Debug stream to write \a value to.
1420  * \param value Value to write to \a debug.
1421  *
1422  * \return a reference to the \a debug stream.
1423  */
1424 QDebug operator<<(QDebug debug, const Autoscroll value)
1425 {
1426  switch (value) {
1427  case Autoscroll::None : debug << "None"; break;
1428  case Autoscroll::Slow : debug << "Slow"; break;
1429  case Autoscroll::Medium: debug << "Medium"; break;
1430  case Autoscroll::Fast : debug << "Fast"; break;
1431  default: debug << "unknown";
1432  }
1433  return debug;
1434 }
1435 
1436 /*!
1437  * Writes the ActivityClass \a value to the \a debug stream and returns a reference to the stream.
1438  *
1439  * \param debug Debug stream to write \a value to.
1440  * \param value Value to write to \a debug.
1441  *
1442  * \return a reference to the \a debug stream.
1443  */
1444 QDebug operator<<(QDebug debug, const ActivityClass value)
1445 {
1446  switch (value) {
1447  case ActivityClass::Level : debug << "Level"; break;
1448  case ActivityClass::LevelMax: debug << "LevelMax"; break;
1449  case ActivityClass::Athlete : debug << "Athlete"; break;
1450  default: debug << "unknown";
1451  }
1452  return debug;
1453 }
1454 
1455 /*!
1456  * Writes the HrZoneCalc \a value to the \a debug stream and returns a reference to the stream.
1457  *
1458  * \param debug Debug stream to write \a value to.
1459  * \param value Value to write to \a debug.
1460  *
1461  * \return a reference to the \a debug stream.
1462  */
1463 QDebug operator<<(QDebug debug, const HrZoneCalc value)
1464 {
1465  switch (value) {
1466  case HrZoneCalc::Custom : debug << "Custom"; break;
1467  case HrZoneCalc::PercentMaxHr: debug << "PercentMaxHr"; break;
1468  case HrZoneCalc::PercentHrr : debug << "PercentHrr"; break;
1469  default: debug << "unknown";
1470  }
1471  return debug;
1472 }
1473 
1474 /*!
1475  * Writes the PwrZoneCalc \a value to the \a debug stream and returns a reference to the stream.
1476  *
1477  * \param debug Debug stream to write \a value to.
1478  * \param value Value to write to \a debug.
1479  *
1480  * \return a reference to the \a debug stream.
1481  */
1482 QDebug operator<<(QDebug debug, const PwrZoneCalc value)
1483 {
1484  switch (value) {
1485  case PwrZoneCalc::Custom : debug << "Custom"; break;
1486  case PwrZoneCalc::PercentFtp: debug << "PercentFtp"; break;
1487  default: debug << "unknown";
1488  }
1489  return debug;
1490 }
1491 
1492 /*!
1493  * Writes the WktStepDuration \a value to the \a debug stream and returns a reference to the stream.
1494  *
1495  * \param debug Debug stream to write \a value to.
1496  * \param value Value to write to \a debug.
1497  *
1498  * \return a reference to the \a debug stream.
1499  */
1500 QDebug operator<<(QDebug debug, const WktStepDuration value)
1501 {
1502  switch (value) {
1503  case WktStepDuration::Time : debug << "Time"; break;
1504  case WktStepDuration::Distance : debug << "Distance"; break;
1505  case WktStepDuration::HrLessThan : debug << "HrLessThan"; break;
1506  case WktStepDuration::HrGreaterThan : debug << "HrGreaterThan"; break;
1507  case WktStepDuration::Calories : debug << "Calories"; break;
1508  case WktStepDuration::Open : debug << "Open"; break;
1509  case WktStepDuration::RepeatUntilStepsCmplt : debug << "RepeatUntilStepsCmplt"; break;
1510  case WktStepDuration::RepeatUntilTime : debug << "RepeatUntilTime"; break;
1511  case WktStepDuration::RepeatUntilDistance : debug << "RepeatUntilDistance"; break;
1512  case WktStepDuration::RepeatUntilCalories : debug << "RepeatUntilCalories"; break;
1513  case WktStepDuration::RepeatUntilHrLessThan : debug << "RepeatUntilHrLessThan"; break;
1514  case WktStepDuration::RepeatUntilHrGreaterThan : debug << "RepeatUntilHrGreaterThan"; break;
1515  case WktStepDuration::RepeatUntilPowerLessThan : debug << "RepeatUntilPowerLessThan"; break;
1516  case WktStepDuration::RepeatUntilPowerGreaterThan : debug << "RepeatUntilPowerGreaterThan"; break;
1517  case WktStepDuration::PowerLessThan : debug << "PowerLessThan"; break;
1518  case WktStepDuration::PowerGreaterThan : debug << "PowerGreaterThan"; break;
1519  case WktStepDuration::TrainingPeaksTss : debug << "TrainingPeaksTss"; break;
1520  case WktStepDuration::RepeatUntilPowerLastLapLessThan : debug << "RepeatUntilPowerLastLapLessThan"; break;
1521  case WktStepDuration::RepeatUntilMaxPowerLastLapLessThan: debug << "RepeatUntilMaxPowerLastLapLessThan"; break;
1522  case WktStepDuration::Power3sLessThan : debug << "Power3sLessThan"; break;
1523  case WktStepDuration::Power10sLessThan : debug << "Power10sLessThan"; break;
1524  case WktStepDuration::Power30sLessThan : debug << "Power30sLessThan"; break;
1525  case WktStepDuration::Power3sGreaterThan : debug << "Power3sGreaterThan"; break;
1526  case WktStepDuration::Power10sGreaterThan : debug << "Power10sGreaterThan"; break;
1527  case WktStepDuration::Power30sGreaterThan : debug << "Power30sGreaterThan"; break;
1528  case WktStepDuration::PowerLapLessThan : debug << "PowerLapLessThan"; break;
1529  case WktStepDuration::PowerLapGreaterThan : debug << "PowerLapGreaterThan"; break;
1530  case WktStepDuration::RepeatUntilTrainingPeaksTss : debug << "RepeatUntilTrainingPeaksTss"; break;
1531  case WktStepDuration::RepetitionTime : debug << "RepetitionTime"; break;
1532  case WktStepDuration::Reps : debug << "Reps"; break;
1533  case WktStepDuration::TimeOnly : debug << "TimeOnly"; break;
1534  default: debug << "unknown";
1535  }
1536  return debug;
1537 }
1538 
1539 /*!
1540  * Writes the WktStepTarget \a value to the \a debug stream and returns a reference to the stream.
1541  *
1542  * \param debug Debug stream to write \a value to.
1543  * \param value Value to write to \a debug.
1544  *
1545  * \return a reference to the \a debug stream.
1546  */
1547 QDebug operator<<(QDebug debug, const WktStepTarget value)
1548 {
1549  switch (value) {
1550  case WktStepTarget::Speed : debug << "Speed"; break;
1551  case WktStepTarget::HeartRate : debug << "HeartRate"; break;
1552  case WktStepTarget::Open : debug << "Open"; break;
1553  case WktStepTarget::Cadence : debug << "Cadence"; break;
1554  case WktStepTarget::Power : debug << "Power"; break;
1555  case WktStepTarget::Grade : debug << "Grade"; break;
1556  case WktStepTarget::Resistance : debug << "Resistance"; break;
1557  case WktStepTarget::Power3s : debug << "Power3s"; break;
1558  case WktStepTarget::Power10s : debug << "Power10s"; break;
1559  case WktStepTarget::Power30s : debug << "Power30s"; break;
1560  case WktStepTarget::PowerLap : debug << "PowerLap"; break;
1561  case WktStepTarget::SwimStroke : debug << "SwimStroke"; break;
1562  case WktStepTarget::SpeedLap : debug << "SpeedLap"; break;
1563  case WktStepTarget::HeartRateLap: debug << "HeartRateLap"; break;
1564  default: debug << "unknown";
1565  }
1566  return debug;
1567 }
1568 
1569 /*!
1570  * Writes the Goal \a value to the \a debug stream and returns a reference to the stream.
1571  *
1572  * \param debug Debug stream to write \a value to.
1573  * \param value Value to write to \a debug.
1574  *
1575  * \return a reference to the \a debug stream.
1576  */
1577 QDebug operator<<(QDebug debug, const Goal value)
1578 {
1579  switch (value) {
1580  case Goal::Time : debug << "Time"; break;
1581  case Goal::Distance : debug << "Distance"; break;
1582  case Goal::Calories : debug << "Calories"; break;
1583  case Goal::Frequency : debug << "Frequency"; break;
1584  case Goal::Steps : debug << "Steps"; break;
1585  case Goal::Ascent : debug << "Ascent"; break;
1586  case Goal::ActiveMinutes: debug << "ActiveMinutes"; break;
1587  default: debug << "unknown";
1588  }
1589  return debug;
1590 }
1591 
1592 /*!
1593  * Writes the GoalRecurrence \a value to the \a debug stream and returns a reference to the stream.
1594  *
1595  * \param debug Debug stream to write \a value to.
1596  * \param value Value to write to \a debug.
1597  *
1598  * \return a reference to the \a debug stream.
1599  */
1600 QDebug operator<<(QDebug debug, const GoalRecurrence value)
1601 {
1602  switch (value) {
1603  case GoalRecurrence::Off : debug << "Off"; break;
1604  case GoalRecurrence::Daily : debug << "Daily"; break;
1605  case GoalRecurrence::Weekly : debug << "Weekly"; break;
1606  case GoalRecurrence::Monthly: debug << "Monthly"; break;
1607  case GoalRecurrence::Yearly : debug << "Yearly"; break;
1608  case GoalRecurrence::Custom : debug << "Custom"; break;
1609  default: debug << "unknown";
1610  }
1611  return debug;
1612 }
1613 
1614 /*!
1615  * Writes the GoalSource \a value to the \a debug stream and returns a reference to the stream.
1616  *
1617  * \param debug Debug stream to write \a value to.
1618  * \param value Value to write to \a debug.
1619  *
1620  * \return a reference to the \a debug stream.
1621  */
1622 QDebug operator<<(QDebug debug, const GoalSource value)
1623 {
1624  switch (value) {
1625  case GoalSource::Auto : debug << "Auto"; break;
1626  case GoalSource::Community: debug << "Community"; break;
1627  case GoalSource::User : debug << "User"; break;
1628  default: debug << "unknown";
1629  }
1630  return debug;
1631 }
1632 
1633 /*!
1634  * Writes the Schedule \a value to the \a debug stream and returns a reference to the stream.
1635  *
1636  * \param debug Debug stream to write \a value to.
1637  * \param value Value to write to \a debug.
1638  *
1639  * \return a reference to the \a debug stream.
1640  */
1641 QDebug operator<<(QDebug debug, const Schedule value)
1642 {
1643  switch (value) {
1644  case Schedule::Workout: debug << "Workout"; break;
1645  case Schedule::Course : debug << "Course"; break;
1646  default: debug << "unknown";
1647  }
1648  return debug;
1649 }
1650 
1651 /*!
1652  * Writes the CoursePoint \a value to the \a debug stream and returns a reference to the stream.
1653  *
1654  * \param debug Debug stream to write \a value to.
1655  * \param value Value to write to \a debug.
1656  *
1657  * \return a reference to the \a debug stream.
1658  */
1659 QDebug operator<<(QDebug debug, const CoursePoint value)
1660 {
1661  switch (value) {
1662  case CoursePoint::Generic : debug << "Generic"; break;
1663  case CoursePoint::Summit : debug << "Summit"; break;
1664  case CoursePoint::Valley : debug << "Valley"; break;
1665  case CoursePoint::Water : debug << "Water"; break;
1666  case CoursePoint::Food : debug << "Food"; break;
1667  case CoursePoint::Danger : debug << "Danger"; break;
1668  case CoursePoint::Left : debug << "Left"; break;
1669  case CoursePoint::Right : debug << "Right"; break;
1670  case CoursePoint::Straight : debug << "Straight"; break;
1671  case CoursePoint::FirstAid : debug << "FirstAid"; break;
1672  case CoursePoint::FourthCategory: debug << "FourthCategory"; break;
1673  case CoursePoint::ThirdCategory : debug << "ThirdCategory"; break;
1674  case CoursePoint::SecondCategory: debug << "SecondCategory"; break;
1675  case CoursePoint::FirstCategory : debug << "FirstCategory"; break;
1676  case CoursePoint::HorsCategory : debug << "HorsCategory"; break;
1677  case CoursePoint::Sprint : debug << "Sprint"; break;
1678  case CoursePoint::LeftFork : debug << "LeftFork"; break;
1679  case CoursePoint::RightFork : debug << "RightFork"; break;
1680  case CoursePoint::MiddleFork : debug << "MiddleFork"; break;
1681  case CoursePoint::SlightLeft : debug << "SlightLeft"; break;
1682  case CoursePoint::SharpLeft : debug << "SharpLeft"; break;
1683  case CoursePoint::SlightRight : debug << "SlightRight"; break;
1684  case CoursePoint::SharpRight : debug << "SharpRight"; break;
1685  case CoursePoint::UTurn : debug << "UTurn"; break;
1686  case CoursePoint::SegmentStart : debug << "SegmentStart"; break;
1687  case CoursePoint::SegmentEnd : debug << "SegmentEnd"; break;
1688  default: debug << "unknown";
1689  }
1690  return debug;
1691 }
1692 
1693 /*!
1694  * Writes the Manufacturer \a value to the \a debug stream and returns a reference to the stream.
1695  *
1696  * \param debug Debug stream to write \a value to.
1697  * \param value Value to write to \a debug.
1698  *
1699  * \return a reference to the \a debug stream.
1700  */
1701 QDebug operator<<(QDebug debug, const Manufacturer value)
1702 {
1703  switch (value) {
1704  case Manufacturer::Garmin : debug << "Garmin"; break;
1705  case Manufacturer::GarminFr405Antfs : debug << "GarminFr405Antfs"; break;
1706  case Manufacturer::Zephyr : debug << "Zephyr"; break;
1707  case Manufacturer::Dayton : debug << "Dayton"; break;
1708  case Manufacturer::Idt : debug << "Idt"; break;
1709  case Manufacturer::Srm : debug << "Srm"; break;
1710  case Manufacturer::Quarq : debug << "Quarq"; break;
1711  case Manufacturer::Ibike : debug << "Ibike"; break;
1712  case Manufacturer::Saris : debug << "Saris"; break;
1713  case Manufacturer::SparkHk : debug << "SparkHk"; break;
1714  case Manufacturer::Tanita : debug << "Tanita"; break;
1715  case Manufacturer::Echowell : debug << "Echowell"; break;
1716  case Manufacturer::DynastreamOem : debug << "DynastreamOem"; break;
1717  case Manufacturer::Nautilus : debug << "Nautilus"; break;
1718  case Manufacturer::Dynastream : debug << "Dynastream"; break;
1719  case Manufacturer::Timex : debug << "Timex"; break;
1720  case Manufacturer::Metrigear : debug << "Metrigear"; break;
1721  case Manufacturer::Xelic : debug << "Xelic"; break;
1722  case Manufacturer::Beurer : debug << "Beurer"; break;
1723  case Manufacturer::Cardiosport : debug << "Cardiosport"; break;
1724  case Manufacturer::AAndD : debug << "AAndD"; break;
1725  case Manufacturer::Hmm : debug << "Hmm"; break;
1726  case Manufacturer::Suunto : debug << "Suunto"; break;
1727  case Manufacturer::ThitaElektronik : debug << "ThitaElektronik"; break;
1728  case Manufacturer::Gpulse : debug << "Gpulse"; break;
1729  case Manufacturer::CleanMobile : debug << "CleanMobile"; break;
1730  case Manufacturer::PedalBrain : debug << "PedalBrain"; break;
1731  case Manufacturer::Peaksware : debug << "Peaksware"; break;
1732  case Manufacturer::Saxonar : debug << "Saxonar"; break;
1733  case Manufacturer::LemondFitness : debug << "LemondFitness"; break;
1734  case Manufacturer::Dexcom : debug << "Dexcom"; break;
1735  case Manufacturer::WahooFitness : debug << "WahooFitness"; break;
1736  case Manufacturer::OctaneFitness : debug << "OctaneFitness"; break;
1737  case Manufacturer::Archinoetics : debug << "Archinoetics"; break;
1738  case Manufacturer::TheHurtBox : debug << "TheHurtBox"; break;
1739  case Manufacturer::CitizenSystems : debug << "CitizenSystems"; break;
1740  case Manufacturer::Magellan : debug << "Magellan"; break;
1741  case Manufacturer::Osynce : debug << "Osynce"; break;
1742  case Manufacturer::Holux : debug << "Holux"; break;
1743  case Manufacturer::Concept2 : debug << "Concept2"; break;
1744  case Manufacturer::Shimano : debug << "Shimano"; break;
1745  case Manufacturer::OneGiantLeap : debug << "OneGiantLeap"; break;
1746  case Manufacturer::AceSensor : debug << "AceSensor"; break;
1747  case Manufacturer::BrimBrothers : debug << "BrimBrothers"; break;
1748  case Manufacturer::Xplova : debug << "Xplova"; break;
1749  case Manufacturer::PerceptionDigital : debug << "PerceptionDigital"; break;
1750  case Manufacturer::Bf1systems : debug << "Bf1systems"; break;
1751  case Manufacturer::Pioneer : debug << "Pioneer"; break;
1752  case Manufacturer::Spantec : debug << "Spantec"; break;
1753  case Manufacturer::Metalogics : debug << "Metalogics"; break;
1754  case Manufacturer::Fouriiiis : debug << "Fouriiiis"; break;
1755  case Manufacturer::SeikoEpson : debug << "SeikoEpson"; break;
1756  case Manufacturer::SeikoEpsonOem : debug << "SeikoEpsonOem"; break;
1757  case Manufacturer::IforPowell : debug << "IforPowell"; break;
1758  case Manufacturer::MaxwellGuider : debug << "MaxwellGuider"; break;
1759  case Manufacturer::StarTrac : debug << "StarTrac"; break;
1760  case Manufacturer::Breakaway : debug << "Breakaway"; break;
1761  case Manufacturer::AlatechTechnologyLtd : debug << "AlatechTechnologyLtd"; break;
1762  case Manufacturer::MioTechnologyEurope : debug << "MioTechnologyEurope"; break;
1763  case Manufacturer::Rotor : debug << "Rotor"; break;
1764  case Manufacturer::Geonaute : debug << "Geonaute"; break;
1765  case Manufacturer::IdBike : debug << "IdBike"; break;
1766  case Manufacturer::Specialized : debug << "Specialized"; break;
1767  case Manufacturer::Wtek : debug << "Wtek"; break;
1768  case Manufacturer::PhysicalEnterprises : debug << "PhysicalEnterprises"; break;
1769  case Manufacturer::NorthPoleEngineering : debug << "NorthPoleEngineering"; break;
1770  case Manufacturer::Bkool : debug << "Bkool"; break;
1771  case Manufacturer::Cateye : debug << "Cateye"; break;
1772  case Manufacturer::StagesCycling : debug << "StagesCycling"; break;
1773  case Manufacturer::Sigmasport : debug << "Sigmasport"; break;
1774  case Manufacturer::Tomtom : debug << "Tomtom"; break;
1775  case Manufacturer::Peripedal : debug << "Peripedal"; break;
1776  case Manufacturer::Wattbike : debug << "Wattbike"; break;
1777  case Manufacturer::Moxy : debug << "Moxy"; break;
1778  case Manufacturer::Ciclosport : debug << "Ciclosport"; break;
1779  case Manufacturer::Powerbahn : debug << "Powerbahn"; break;
1780  case Manufacturer::AcornProjectsAps : debug << "AcornProjectsAps"; break;
1781  case Manufacturer::Lifebeam : debug << "Lifebeam"; break;
1782  case Manufacturer::Bontrager : debug << "Bontrager"; break;
1783  case Manufacturer::Wellgo : debug << "Wellgo"; break;
1784  case Manufacturer::Scosche : debug << "Scosche"; break;
1785  case Manufacturer::Magura : debug << "Magura"; break;
1786  case Manufacturer::Woodway : debug << "Woodway"; break;
1787  case Manufacturer::Elite : debug << "Elite"; break;
1788  case Manufacturer::NielsenKellerman : debug << "NielsenKellerman"; break;
1789  case Manufacturer::DkCity : debug << "DkCity"; break;
1790  case Manufacturer::Tacx : debug << "Tacx"; break;
1791  case Manufacturer::DirectionTechnology : debug << "DirectionTechnology"; break;
1792  case Manufacturer::Magtonic : debug << "Magtonic"; break;
1793  case Manufacturer::Onepartcarbon : debug << "Onepartcarbon"; break;
1794  case Manufacturer::InsideRideTechnologies: debug << "InsideRideTechnologies"; break;
1795  case Manufacturer::SoundOfMotion : debug << "SoundOfMotion"; break;
1796  case Manufacturer::Stryd : debug << "Stryd"; break;
1797  case Manufacturer::Icg : debug << "Icg"; break;
1798  case Manufacturer::Mipulse : debug << "Mipulse"; break;
1799  case Manufacturer::BsxAthletics : debug << "BsxAthletics"; break;
1800  case Manufacturer::Look : debug << "Look"; break;
1801  case Manufacturer::CampagnoloSrl : debug << "CampagnoloSrl"; break;
1802  case Manufacturer::BodyBikeSmart : debug << "BodyBikeSmart"; break;
1803  case Manufacturer::Praxisworks : debug << "Praxisworks"; break;
1804  case Manufacturer::LimitsTechnology : debug << "LimitsTechnology"; break;
1805  case Manufacturer::TopactionTechnology : debug << "TopactionTechnology"; break;
1806  case Manufacturer::Cosinuss : debug << "Cosinuss"; break;
1807  case Manufacturer::Fitcare : debug << "Fitcare"; break;
1808  case Manufacturer::Magene : debug << "Magene"; break;
1809  case Manufacturer::GiantManufacturingCo : debug << "GiantManufacturingCo"; break;
1810  case Manufacturer::Tigrasport : debug << "Tigrasport"; break;
1811  case Manufacturer::Salutron : debug << "Salutron"; break;
1812  case Manufacturer::Technogym : debug << "Technogym"; break;
1813  case Manufacturer::BrytonSensors : debug << "BrytonSensors"; break;
1814  case Manufacturer::LatitudeLimited : debug << "LatitudeLimited"; break;
1815  case Manufacturer::SoaringTechnology : debug << "SoaringTechnology"; break;
1816  case Manufacturer::Igpsport : debug << "Igpsport"; break;
1817  case Manufacturer::Thinkrider : debug << "Thinkrider"; break;
1818  case Manufacturer::GopherSport : debug << "GopherSport"; break;
1819  case Manufacturer::Waterrower : debug << "Waterrower"; break;
1820  case Manufacturer::Orangetheory : debug << "Orangetheory"; break;
1821  case Manufacturer::Inpeak : debug << "Inpeak"; break;
1822  case Manufacturer::Kinetic : debug << "Kinetic"; break;
1823  case Manufacturer::JohnsonHealthTech : debug << "JohnsonHealthTech"; break;
1824  case Manufacturer::PolarElectro : debug << "PolarElectro"; break;
1825  case Manufacturer::Seesense : debug << "Seesense"; break;
1826  case Manufacturer::NciTechnology : debug << "NciTechnology"; break;
1827  case Manufacturer::Iqsquare : debug << "Iqsquare"; break;
1828  case Manufacturer::Leomo : debug << "Leomo"; break;
1829  case Manufacturer::IfitCom : debug << "IfitCom"; break;
1830  case Manufacturer::CorosByte : debug << "CorosByte"; break;
1831  case Manufacturer::VersaDesign : debug << "VersaDesign"; break;
1832  case Manufacturer::Chileaf : debug << "Chileaf"; break;
1833  case Manufacturer::Cycplus : debug << "Cycplus"; break;
1834  case Manufacturer::GravaaByte : debug << "GravaaByte"; break;
1835  case Manufacturer::Sigeyi : debug << "Sigeyi"; break;
1836  case Manufacturer::Coospo : debug << "Coospo"; break;
1837  case Manufacturer::Geoid : debug << "Geoid"; break;
1838  case Manufacturer::Development : debug << "Development"; break;
1839  case Manufacturer::Healthandlife : debug << "Healthandlife"; break;
1840  case Manufacturer::Lezyne : debug << "Lezyne"; break;
1841  case Manufacturer::ScribeLabs : debug << "ScribeLabs"; break;
1842  case Manufacturer::Zwift : debug << "Zwift"; break;
1843  case Manufacturer::Watteam : debug << "Watteam"; break;
1844  case Manufacturer::Recon : debug << "Recon"; break;
1845  case Manufacturer::FaveroElectronics : debug << "FaveroElectronics"; break;
1846  case Manufacturer::Dynovelo : debug << "Dynovelo"; break;
1847  case Manufacturer::Strava : debug << "Strava"; break;
1848  case Manufacturer::Precor : debug << "Precor"; break;
1849  case Manufacturer::Bryton : debug << "Bryton"; break;
1850  case Manufacturer::Sram : debug << "Sram"; break;
1851  case Manufacturer::Navman : debug << "Navman"; break;
1852  case Manufacturer::Cobi : debug << "Cobi"; break;
1853  case Manufacturer::Spivi : debug << "Spivi"; break;
1854  case Manufacturer::MioMagellan : debug << "MioMagellan"; break;
1855  case Manufacturer::Evesports : debug << "Evesports"; break;
1856  case Manufacturer::SensitivusGauge : debug << "SensitivusGauge"; break;
1857  case Manufacturer::Podoon : debug << "Podoon"; break;
1858  case Manufacturer::LifeTimeFitness : debug << "LifeTimeFitness"; break;
1859  case Manufacturer::FalcoEMotors : debug << "FalcoEMotors"; break;
1860  case Manufacturer::Minoura : debug << "Minoura"; break;
1861  case Manufacturer::Cycliq : debug << "Cycliq"; break;
1862  case Manufacturer::Luxottica : debug << "Luxottica"; break;
1863  case Manufacturer::TrainerRoad : debug << "TrainerRoad"; break;
1864  case Manufacturer::TheSufferfest : debug << "TheSufferfest"; break;
1865  case Manufacturer::Fullspeedahead : debug << "Fullspeedahead"; break;
1866  case Manufacturer::Virtualtraining : debug << "Virtualtraining"; break;
1867  case Manufacturer::Feedbacksports : debug << "Feedbacksports"; break;
1868  case Manufacturer::Omata : debug << "Omata"; break;
1869  case Manufacturer::Vdo : debug << "Vdo"; break;
1870  case Manufacturer::Magneticdays : debug << "Magneticdays"; break;
1871  case Manufacturer::Hammerhead : debug << "Hammerhead"; break;
1872  case Manufacturer::KineticByKurt : debug << "KineticByKurt"; break;
1873  case Manufacturer::Shapelog : debug << "Shapelog"; break;
1874  case Manufacturer::Dabuziduo : debug << "Dabuziduo"; break;
1875  case Manufacturer::Jetblack : debug << "Jetblack"; break;
1876  case Manufacturer::Coros : debug << "Coros"; break;
1877  case Manufacturer::Virtugo : debug << "Virtugo"; break;
1878  case Manufacturer::Velosense : debug << "Velosense"; break;
1879  case Manufacturer::Cycligentinc : debug << "Cycligentinc"; break;
1880  case Manufacturer::Trailforks : debug << "Trailforks"; break;
1881  case Manufacturer::MahleEbikemotion : debug << "MahleEbikemotion"; break;
1882  case Manufacturer::Nurvv : debug << "Nurvv"; break;
1883  case Manufacturer::Microprogram : debug << "Microprogram"; break;
1884  case Manufacturer::Zone5cloud : debug << "Zone5cloud"; break;
1885  case Manufacturer::Greenteg : debug << "Greenteg"; break;
1886  case Manufacturer::YamahaMotors : debug << "YamahaMotors"; break;
1887  case Manufacturer::Whoop : debug << "Whoop"; break;
1888  case Manufacturer::Gravaa : debug << "Gravaa"; break;
1889  case Manufacturer::Onelap : debug << "Onelap"; break;
1890  case Manufacturer::MonarkExercise : debug << "MonarkExercise"; break;
1891  case Manufacturer::Form : debug << "Form"; break;
1892  case Manufacturer::Decathlon : debug << "Decathlon"; break;
1893  case Manufacturer::Syncros : debug << "Syncros"; break;
1894  case Manufacturer::Actigraphcorp : debug << "Actigraphcorp"; break;
1895  default: debug << "unknown";
1896  }
1897  return debug;
1898 }
1899 
1900 /*!
1901  * Writes the GarminProduct \a value to the \a debug stream and returns a reference to the stream.
1902  *
1903  * \param debug Debug stream to write \a value to.
1904  * \param value Value to write to \a debug.
1905  *
1906  * \return a reference to the \a debug stream.
1907  */
1908 QDebug operator<<(QDebug debug, const GarminProduct value)
1909 {
1910  switch (value) {
1911  case GarminProduct::Hrm1 : debug << "Hrm1"; break;
1912  case GarminProduct::Axh01 : debug << "Axh01"; break;
1913  case GarminProduct::Axb01 : debug << "Axb01"; break;
1914  case GarminProduct::Axb02 : debug << "Axb02"; break;
1915  case GarminProduct::Hrm2ss : debug << "Hrm2ss"; break;
1916  case GarminProduct::DsiAlf02 : debug << "DsiAlf02"; break;
1917  case GarminProduct::Hrm3ss : debug << "Hrm3ss"; break;
1918  case GarminProduct::HrmRunSingleByteProductId : debug << "HrmRunSingleByteProductId"; break;
1919  case GarminProduct::Bsm : debug << "Bsm"; break;
1920  case GarminProduct::Bcm : debug << "Bcm"; break;
1921  case GarminProduct::Axs01 : debug << "Axs01"; break;
1922  case GarminProduct::HrmTriSingleByteProductId : debug << "HrmTriSingleByteProductId"; break;
1923  case GarminProduct::Hrm4RunSingleByteProductId: debug << "Hrm4RunSingleByteProductId"; break;
1924  case GarminProduct::Fr225SingleByteProductId : debug << "Fr225SingleByteProductId"; break;
1925  case GarminProduct::Gen3BsmSingleByteProductId: debug << "Gen3BsmSingleByteProductId"; break;
1926  case GarminProduct::Gen3BcmSingleByteProductId: debug << "Gen3BcmSingleByteProductId"; break;
1927  case GarminProduct::Fr301China : debug << "Fr301China"; break;
1928  case GarminProduct::Fr301Japan : debug << "Fr301Japan"; break;
1929  case GarminProduct::Fr301Korea : debug << "Fr301Korea"; break;
1930  case GarminProduct::Fr301Taiwan : debug << "Fr301Taiwan"; break;
1931  case GarminProduct::Fr405 : debug << "Fr405"; break;
1932  case GarminProduct::Fr50 : debug << "Fr50"; break;
1933  case GarminProduct::Fr405Japan : debug << "Fr405Japan"; break;
1934  case GarminProduct::Fr60 : debug << "Fr60"; break;
1935  case GarminProduct::DsiAlf01 : debug << "DsiAlf01"; break;
1936  case GarminProduct::Fr310xt : debug << "Fr310xt"; break;
1937  case GarminProduct::Edge500 : debug << "Edge500"; break;
1938  case GarminProduct::Fr110 : debug << "Fr110"; break;
1939  case GarminProduct::Edge800 : debug << "Edge800"; break;
1940  case GarminProduct::Edge500Taiwan : debug << "Edge500Taiwan"; break;
1941  case GarminProduct::Edge500Japan : debug << "Edge500Japan"; break;
1942  case GarminProduct::Chirp : debug << "Chirp"; break;
1943  case GarminProduct::Fr110Japan : debug << "Fr110Japan"; break;
1944  case GarminProduct::Edge200 : debug << "Edge200"; break;
1945  case GarminProduct::Fr910xt : debug << "Fr910xt"; break;
1946  case GarminProduct::Edge800Taiwan : debug << "Edge800Taiwan"; break;
1947  case GarminProduct::Edge800Japan : debug << "Edge800Japan"; break;
1948  case GarminProduct::Alf04 : debug << "Alf04"; break;
1949  case GarminProduct::Fr610 : debug << "Fr610"; break;
1950  case GarminProduct::Fr210Japan : debug << "Fr210Japan"; break;
1951  case GarminProduct::VectorSs : debug << "VectorSs"; break;
1952  case GarminProduct::VectorCp : debug << "VectorCp"; break;
1953  case GarminProduct::Edge800China : debug << "Edge800China"; break;
1954  case GarminProduct::Edge500China : debug << "Edge500China"; break;
1955  case GarminProduct::ApproachG10 : debug << "ApproachG10"; break;
1956  case GarminProduct::Fr610Japan : debug << "Fr610Japan"; break;
1957  case GarminProduct::Edge500Korea : debug << "Edge500Korea"; break;
1958  case GarminProduct::Fr70 : debug << "Fr70"; break;
1959  case GarminProduct::Fr310xt4t : debug << "Fr310xt4t"; break;
1960  case GarminProduct::Amx : debug << "Amx"; break;
1961  case GarminProduct::Fr10 : debug << "Fr10"; break;
1962  case GarminProduct::Edge800Korea : debug << "Edge800Korea"; break;
1963  case GarminProduct::Swim : debug << "Swim"; break;
1964  case GarminProduct::Fr910xtChina : debug << "Fr910xtChina"; break;
1965  case GarminProduct::Fenix : debug << "Fenix"; break;
1966  case GarminProduct::Edge200Taiwan : debug << "Edge200Taiwan"; break;
1967  case GarminProduct::Edge510 : debug << "Edge510"; break;
1968  case GarminProduct::Edge810 : debug << "Edge810"; break;
1969  case GarminProduct::Tempe : debug << "Tempe"; break;
1970  case GarminProduct::Fr910xtJapan : debug << "Fr910xtJapan"; break;
1971  case GarminProduct::Fr620 : debug << "Fr620"; break;
1972  case GarminProduct::Fr220 : debug << "Fr220"; break;
1973  case GarminProduct::Fr910xtKorea : debug << "Fr910xtKorea"; break;
1974  case GarminProduct::Fr10Japan : debug << "Fr10Japan"; break;
1975  case GarminProduct::Edge810Japan : debug << "Edge810Japan"; break;
1976  case GarminProduct::VirbElite : debug << "VirbElite"; break;
1977  case GarminProduct::EdgeTouring : debug << "EdgeTouring"; break;
1978  case GarminProduct::Edge510Japan : debug << "Edge510Japan"; break;
1979  case GarminProduct::HrmTri : debug << "HrmTri"; break;
1980  case GarminProduct::HrmRun : debug << "HrmRun"; break;
1981  case GarminProduct::Fr920xt : debug << "Fr920xt"; break;
1982  case GarminProduct::Edge510Asia : debug << "Edge510Asia"; break;
1983  case GarminProduct::Edge810China : debug << "Edge810China"; break;
1984  case GarminProduct::Edge810Taiwan : debug << "Edge810Taiwan"; break;
1985  case GarminProduct::Edge1000 : debug << "Edge1000"; break;
1986  case GarminProduct::VivoFit : debug << "VivoFit"; break;
1987  case GarminProduct::VirbRemote : debug << "VirbRemote"; break;
1988  case GarminProduct::VivoKi : debug << "VivoKi"; break;
1989  case GarminProduct::Fr15 : debug << "Fr15"; break;
1990  case GarminProduct::VivoActive : debug << "VivoActive"; break;
1991  case GarminProduct::Edge510Korea : debug << "Edge510Korea"; break;
1992  case GarminProduct::Fr620Japan : debug << "Fr620Japan"; break;
1993  case GarminProduct::Fr620China : debug << "Fr620China"; break;
1994  case GarminProduct::Fr220Japan : debug << "Fr220Japan"; break;
1995  case GarminProduct::Fr220China : debug << "Fr220China"; break;
1996  case GarminProduct::ApproachS6 : debug << "ApproachS6"; break;
1997  case GarminProduct::VivoSmart : debug << "VivoSmart"; break;
1998  case GarminProduct::Fenix2 : debug << "Fenix2"; break;
1999  case GarminProduct::Epix : debug << "Epix"; break;
2000  case GarminProduct::Fenix3 : debug << "Fenix3"; break;
2001  case GarminProduct::Edge1000Taiwan : debug << "Edge1000Taiwan"; break;
2002  case GarminProduct::Edge1000Japan : debug << "Edge1000Japan"; break;
2003  case GarminProduct::Fr15Japan : debug << "Fr15Japan"; break;
2004  case GarminProduct::Edge520 : debug << "Edge520"; break;
2005  case GarminProduct::Edge1000China : debug << "Edge1000China"; break;
2006  case GarminProduct::Fr620Russia : debug << "Fr620Russia"; break;
2007  case GarminProduct::Fr220Russia : debug << "Fr220Russia"; break;
2008  case GarminProduct::VectorS : debug << "VectorS"; break;
2009  case GarminProduct::Edge1000Korea : debug << "Edge1000Korea"; break;
2010  case GarminProduct::Fr920xtTaiwan : debug << "Fr920xtTaiwan"; break;
2011  case GarminProduct::Fr920xtChina : debug << "Fr920xtChina"; break;
2012  case GarminProduct::Fr920xtJapan : debug << "Fr920xtJapan"; break;
2013  case GarminProduct::Virbx : debug << "Virbx"; break;
2014  case GarminProduct::VivoSmartApac : debug << "VivoSmartApac"; break;
2015  case GarminProduct::EtrexTouch : debug << "EtrexTouch"; break;
2016  case GarminProduct::Edge25 : debug << "Edge25"; break;
2017  case GarminProduct::Fr25 : debug << "Fr25"; break;
2018  case GarminProduct::VivoFit2 : debug << "VivoFit2"; break;
2019  case GarminProduct::Fr225 : debug << "Fr225"; break;
2020  case GarminProduct::Fr630 : debug << "Fr630"; break;
2021  case GarminProduct::Fr230 : debug << "Fr230"; break;
2022  case GarminProduct::Fr735xt : debug << "Fr735xt"; break;
2023  case GarminProduct::VivoActiveApac : debug << "VivoActiveApac"; break;
2024  case GarminProduct::Vector2 : debug << "Vector2"; break;
2025  case GarminProduct::Vector2s : debug << "Vector2s"; break;
2026  case GarminProduct::Virbxe : debug << "Virbxe"; break;
2027  case GarminProduct::Fr620Taiwan : debug << "Fr620Taiwan"; break;
2028  case GarminProduct::Fr220Taiwan : debug << "Fr220Taiwan"; break;
2029  case GarminProduct::Truswing : debug << "Truswing"; break;
2030  case GarminProduct::D2airvenu : debug << "D2airvenu"; break;
2031  case GarminProduct::Fenix3China : debug << "Fenix3China"; break;
2032  case GarminProduct::Fenix3Twn : debug << "Fenix3Twn"; break;
2033  case GarminProduct::VariaHeadlight : debug << "VariaHeadlight"; break;
2034  case GarminProduct::VariaTaillightOld : debug << "VariaTaillightOld"; break;
2035  case GarminProduct::EdgeExplore1000 : debug << "EdgeExplore1000"; break;
2036  case GarminProduct::Fr225Asia : debug << "Fr225Asia"; break;
2037  case GarminProduct::VariaRadarTaillight : debug << "VariaRadarTaillight"; break;
2038  case GarminProduct::VariaRadarDisplay : debug << "VariaRadarDisplay"; break;
2039  case GarminProduct::Edge20 : debug << "Edge20"; break;
2040  case GarminProduct::Edge520Asia : debug << "Edge520Asia"; break;
2041  case GarminProduct::Edge520Japan : debug << "Edge520Japan"; break;
2042  case GarminProduct::D2Bravo : debug << "D2Bravo"; break;
2043  case GarminProduct::ApproachS20 : debug << "ApproachS20"; break;
2044  case GarminProduct::VivoSmart2 : debug << "VivoSmart2"; break;
2045  case GarminProduct::Edge1000Thai : debug << "Edge1000Thai"; break;
2046  case GarminProduct::VariaRemote : debug << "VariaRemote"; break;
2047  case GarminProduct::Edge25Asia : debug << "Edge25Asia"; break;
2048  case GarminProduct::Edge25Jpn : debug << "Edge25Jpn"; break;
2049  case GarminProduct::Edge20Asia : debug << "Edge20Asia"; break;
2050  case GarminProduct::ApproachX40 : debug << "ApproachX40"; break;
2051  case GarminProduct::Fenix3Japan : debug << "Fenix3Japan"; break;
2052  case GarminProduct::VivoSmartEmea : debug << "VivoSmartEmea"; break;
2053  case GarminProduct::Fr630Asia : debug << "Fr630Asia"; break;
2054  case GarminProduct::Fr630Jpn : debug << "Fr630Jpn"; break;
2055  case GarminProduct::Fr230Jpn : debug << "Fr230Jpn"; break;
2056  case GarminProduct::Hrm4Run : debug << "Hrm4Run"; break;
2057  case GarminProduct::EpixJapan : debug << "EpixJapan"; break;
2058  case GarminProduct::VivoActiveHr : debug << "VivoActiveHr"; break;
2059  case GarminProduct::VivoSmartGpsHr : debug << "VivoSmartGpsHr"; break;
2060  case GarminProduct::VivoSmartHr : debug << "VivoSmartHr"; break;
2061  case GarminProduct::VivoSmartHrAsia : debug << "VivoSmartHrAsia"; break;
2062  case GarminProduct::VivoSmartGpsHrAsia : debug << "VivoSmartGpsHrAsia"; break;
2063  case GarminProduct::VivoMove : debug << "VivoMove"; break;
2064  case GarminProduct::VariaTaillight : debug << "VariaTaillight"; break;
2065  case GarminProduct::Fr235Asia : debug << "Fr235Asia"; break;
2066  case GarminProduct::Fr235Japan : debug << "Fr235Japan"; break;
2067  case GarminProduct::VariaVision : debug << "VariaVision"; break;
2068  case GarminProduct::VivoFit3 : debug << "VivoFit3"; break;
2069  case GarminProduct::Fenix3Korea : debug << "Fenix3Korea"; break;
2070  case GarminProduct::Fenix3Sea : debug << "Fenix3Sea"; break;
2071  case GarminProduct::Fenix3Hr : debug << "Fenix3Hr"; break;
2072  case GarminProduct::VirbUltra30 : debug << "VirbUltra30"; break;
2073  case GarminProduct::IndexSmartScale : debug << "IndexSmartScale"; break;
2074  case GarminProduct::Fr235 : debug << "Fr235"; break;
2075  case GarminProduct::Fenix3Chronos : debug << "Fenix3Chronos"; break;
2076  case GarminProduct::Oregon7xx : debug << "Oregon7xx"; break;
2077  case GarminProduct::Rino7xx : debug << "Rino7xx"; break;
2078  case GarminProduct::EpixKorea : debug << "EpixKorea"; break;
2079  case GarminProduct::Fenix3HrChn : debug << "Fenix3HrChn"; break;
2080  case GarminProduct::Fenix3HrTwn : debug << "Fenix3HrTwn"; break;
2081  case GarminProduct::Fenix3HrJpn : debug << "Fenix3HrJpn"; break;
2082  case GarminProduct::Fenix3HrSea : debug << "Fenix3HrSea"; break;
2083  case GarminProduct::Fenix3HrKor : debug << "Fenix3HrKor"; break;
2084  case GarminProduct::Nautix : debug << "Nautix"; break;
2085  case GarminProduct::VivoActiveHrApac : debug << "VivoActiveHrApac"; break;
2086  case GarminProduct::Oregon7xxWw : debug << "Oregon7xxWw"; break;
2087  case GarminProduct::Edge820 : debug << "Edge820"; break;
2088  case GarminProduct::EdgeExplore820 : debug << "EdgeExplore820"; break;
2089  case GarminProduct::Fr735xtApac : debug << "Fr735xtApac"; break;
2090  case GarminProduct::Fr735xtJapan : debug << "Fr735xtJapan"; break;
2091  case GarminProduct::Fenix5s : debug << "Fenix5s"; break;
2092  case GarminProduct::D2BravoTitanium : debug << "D2BravoTitanium"; break;
2093  case GarminProduct::VariaUt800 : debug << "VariaUt800"; break;
2094  case GarminProduct::RunningDynamicsPod : debug << "RunningDynamicsPod"; break;
2095  case GarminProduct::Edge820China : debug << "Edge820China"; break;
2096  case GarminProduct::Edge820Japan : debug << "Edge820Japan"; break;
2097  case GarminProduct::Fenix5x : debug << "Fenix5x"; break;
2098  case GarminProduct::VivoFitJr : debug << "VivoFitJr"; break;
2099  case GarminProduct::VivoSmart3 : debug << "VivoSmart3"; break;
2100  case GarminProduct::VivoSport : debug << "VivoSport"; break;
2101  case GarminProduct::Edge820Taiwan : debug << "Edge820Taiwan"; break;
2102  case GarminProduct::Edge820Korea : debug << "Edge820Korea"; break;
2103  case GarminProduct::Edge820Sea : debug << "Edge820Sea"; break;
2104  case GarminProduct::Fr35Hebrew : debug << "Fr35Hebrew"; break;
2105  case GarminProduct::ApproachS60 : debug << "ApproachS60"; break;
2106  case GarminProduct::Fr35Apac : debug << "Fr35Apac"; break;
2107  case GarminProduct::Fr35Japan : debug << "Fr35Japan"; break;
2108  case GarminProduct::Fenix3ChronosAsia : debug << "Fenix3ChronosAsia"; break;
2109  case GarminProduct::Virb360 : debug << "Virb360"; break;
2110  case GarminProduct::Fr935 : debug << "Fr935"; break;
2111  case GarminProduct::Fenix5 : debug << "Fenix5"; break;
2112  case GarminProduct::Vivoactive3 : debug << "Vivoactive3"; break;
2113  case GarminProduct::Fr235ChinaNfc : debug << "Fr235ChinaNfc"; break;
2114  case GarminProduct::Foretrex601701 : debug << "Foretrex601701"; break;
2115  case GarminProduct::VivoMoveHr : debug << "VivoMoveHr"; break;
2116  case GarminProduct::Edge1030 : debug << "Edge1030"; break;
2117  case GarminProduct::Vector3 : debug << "Vector3"; break;
2118  case GarminProduct::Fenix5Asia : debug << "Fenix5Asia"; break;
2119  case GarminProduct::Fenix5sAsia : debug << "Fenix5sAsia"; break;
2120  case GarminProduct::Fenix5xAsia : debug << "Fenix5xAsia"; break;
2121  case GarminProduct::ApproachZ80 : debug << "ApproachZ80"; break;
2122  case GarminProduct::Fr35Korea : debug << "Fr35Korea"; break;
2123  case GarminProduct::D2charlie : debug << "D2charlie"; break;
2124  case GarminProduct::VivoSmart3Apac : debug << "VivoSmart3Apac"; break;
2125  case GarminProduct::VivoSportApac : debug << "VivoSportApac"; break;
2126  case GarminProduct::Fr935Asia : debug << "Fr935Asia"; break;
2127  case GarminProduct::Descent : debug << "Descent"; break;
2128  case GarminProduct::VivoFit4 : debug << "VivoFit4"; break;
2129  case GarminProduct::Fr645 : debug << "Fr645"; break;
2130  case GarminProduct::Fr645m : debug << "Fr645m"; break;
2131  case GarminProduct::Fr30 : debug << "Fr30"; break;
2132  case GarminProduct::Fenix5sPlus : debug << "Fenix5sPlus"; break;
2133  case GarminProduct::Edge130 : debug << "Edge130"; break;
2134  case GarminProduct::Edge1030Asia : debug << "Edge1030Asia"; break;
2135  case GarminProduct::Vivosmart4 : debug << "Vivosmart4"; break;
2136  case GarminProduct::VivoMoveHrAsia : debug << "VivoMoveHrAsia"; break;
2137  case GarminProduct::ApproachX10 : debug << "ApproachX10"; break;
2138  case GarminProduct::Fr30Asia : debug << "Fr30Asia"; break;
2139  case GarminProduct::Vivoactive3mW : debug << "Vivoactive3mW"; break;
2140  case GarminProduct::Fr645Asia : debug << "Fr645Asia"; break;
2141  case GarminProduct::Fr645mAsia : debug << "Fr645mAsia"; break;
2142  case GarminProduct::EdgeExplore : debug << "EdgeExplore"; break;
2143  case GarminProduct::Gpsmap66 : debug << "Gpsmap66"; break;
2144  case GarminProduct::ApproachS10 : debug << "ApproachS10"; break;
2145  case GarminProduct::Vivoactive3mL : debug << "Vivoactive3mL"; break;
2146  case GarminProduct::ApproachG80 : debug << "ApproachG80"; break;
2147  case GarminProduct::Edge130Asia : debug << "Edge130Asia"; break;
2148  case GarminProduct::Edge1030Bontrager : debug << "Edge1030Bontrager"; break;
2149  case GarminProduct::Fenix5Plus : debug << "Fenix5Plus"; break;
2150  case GarminProduct::Fenix5xPlus : debug << "Fenix5xPlus"; break;
2151  case GarminProduct::Edge520Plus : debug << "Edge520Plus"; break;
2152  case GarminProduct::Fr945 : debug << "Fr945"; break;
2153  case GarminProduct::Edge530 : debug << "Edge530"; break;
2154  case GarminProduct::Edge830 : debug << "Edge830"; break;
2155  case GarminProduct::InstinctEsports : debug << "InstinctEsports"; break;
2156  case GarminProduct::Fenix5sPlusApac : debug << "Fenix5sPlusApac"; break;
2157  case GarminProduct::Fenix5xPlusApac : debug << "Fenix5xPlusApac"; break;
2158  case GarminProduct::Edge520PlusApac : debug << "Edge520PlusApac"; break;
2159  case GarminProduct::Fr235lAsia : debug << "Fr235lAsia"; break;
2160  case GarminProduct::Fr245Asia : debug << "Fr245Asia"; break;
2161  case GarminProduct::VivoActive3mApac : debug << "VivoActive3mApac"; break;
2162  case GarminProduct::Gen3Bsm : debug << "Gen3Bsm"; break;
2163  case GarminProduct::Gen3Bcm : debug << "Gen3Bcm"; break;
2164  case GarminProduct::VivoSmart4Asia : debug << "VivoSmart4Asia"; break;
2165  case GarminProduct::Vivoactive4Small : debug << "Vivoactive4Small"; break;
2166  case GarminProduct::Vivoactive4Large : debug << "Vivoactive4Large"; break;
2167  case GarminProduct::Venu : debug << "Venu"; break;
2168  case GarminProduct::MarqDriver : debug << "MarqDriver"; break;
2169  case GarminProduct::MarqAviator : debug << "MarqAviator"; break;
2170  case GarminProduct::MarqCaptain : debug << "MarqCaptain"; break;
2171  case GarminProduct::MarqCommander : debug << "MarqCommander"; break;
2172  case GarminProduct::MarqExpedition : debug << "MarqExpedition"; break;
2173  case GarminProduct::MarqAthlete : debug << "MarqAthlete"; break;
2174  case GarminProduct::DescentMk2 : debug << "DescentMk2"; break;
2175  case GarminProduct::Gpsmap66i : debug << "Gpsmap66i"; break;
2176  case GarminProduct::Fenix6sSport : debug << "Fenix6sSport"; break;
2177  case GarminProduct::Fenix6s : debug << "Fenix6s"; break;
2178  case GarminProduct::Fenix6Sport : debug << "Fenix6Sport"; break;
2179  case GarminProduct::Fenix6 : debug << "Fenix6"; break;
2180  case GarminProduct::Fenix6x : debug << "Fenix6x"; break;
2181  case GarminProduct::HrmDual : debug << "HrmDual"; break;
2182  case GarminProduct::HrmPro : debug << "HrmPro"; break;
2183  case GarminProduct::VivoMove3Premium : debug << "VivoMove3Premium"; break;
2184  case GarminProduct::ApproachS40 : debug << "ApproachS40"; break;
2185  case GarminProduct::Fr245mAsia : debug << "Fr245mAsia"; break;
2186  case GarminProduct::Edge530Apac : debug << "Edge530Apac"; break;
2187  case GarminProduct::Edge830Apac : debug << "Edge830Apac"; break;
2188  case GarminProduct::VivoMove3 : debug << "VivoMove3"; break;
2189  case GarminProduct::VivoActive4SmallAsia : debug << "VivoActive4SmallAsia"; break;
2190  case GarminProduct::VivoActive4LargeAsia : debug << "VivoActive4LargeAsia"; break;
2191  case GarminProduct::VivoActive4OledAsia : debug << "VivoActive4OledAsia"; break;
2192  case GarminProduct::Swim2 : debug << "Swim2"; break;
2193  case GarminProduct::MarqDriverAsia : debug << "MarqDriverAsia"; break;
2194  case GarminProduct::MarqAviatorAsia : debug << "MarqAviatorAsia"; break;
2195  case GarminProduct::VivoMove3Asia : debug << "VivoMove3Asia"; break;
2196  case GarminProduct::Fr945Asia : debug << "Fr945Asia"; break;
2197  case GarminProduct::VivoActive3tChn : debug << "VivoActive3tChn"; break;
2198  case GarminProduct::MarqCaptainAsia : debug << "MarqCaptainAsia"; break;
2199  case GarminProduct::MarqCommanderAsia : debug << "MarqCommanderAsia"; break;
2200  case GarminProduct::MarqExpeditionAsia : debug << "MarqExpeditionAsia"; break;
2201  case GarminProduct::MarqAthleteAsia : debug << "MarqAthleteAsia"; break;
2202  case GarminProduct::Fr45Asia : debug << "Fr45Asia"; break;
2203  case GarminProduct::Vivoactive3Daimler : debug << "Vivoactive3Daimler"; break;
2204  case GarminProduct::LegacyRey : debug << "LegacyRey"; break;
2205  case GarminProduct::LegacyDarthVader : debug << "LegacyDarthVader"; break;
2206  case GarminProduct::LegacyCaptainMarvel : debug << "LegacyCaptainMarvel"; break;
2207  case GarminProduct::LegacyFirstAvenger : debug << "LegacyFirstAvenger"; break;
2208  case GarminProduct::Fenix6sSportAsia : debug << "Fenix6sSportAsia"; break;
2209  case GarminProduct::Fenix6sAsia : debug << "Fenix6sAsia"; break;
2210  case GarminProduct::Fenix6SportAsia : debug << "Fenix6SportAsia"; break;
2211  case GarminProduct::Fenix6Asia : debug << "Fenix6Asia"; break;
2212  case GarminProduct::Fenix6xAsia : debug << "Fenix6xAsia"; break;
2213  case GarminProduct::LegacyCaptainMarvelAsia : debug << "LegacyCaptainMarvelAsia"; break;
2214  case GarminProduct::LegacyFirstAvengerAsia : debug << "LegacyFirstAvengerAsia"; break;
2215  case GarminProduct::LegacyReyAsia : debug << "LegacyReyAsia"; break;
2216  case GarminProduct::LegacyDarthVaderAsia : debug << "LegacyDarthVaderAsia"; break;
2217  case GarminProduct::DescentMk2s : debug << "DescentMk2s"; break;
2218  case GarminProduct::Edge130Plus : debug << "Edge130Plus"; break;
2219  case GarminProduct::Edge1030Plus : debug << "Edge1030Plus"; break;
2220  case GarminProduct::Rally200 : debug << "Rally200"; break;
2221  case GarminProduct::Fr745 : debug << "Fr745"; break;
2222  case GarminProduct::Venusq : debug << "Venusq"; break;
2223  case GarminProduct::Lily : debug << "Lily"; break;
2224  case GarminProduct::MarqAdventurer : debug << "MarqAdventurer"; break;
2225  case GarminProduct::Enduro : debug << "Enduro"; break;
2226  case GarminProduct::Swim2Apac : debug << "Swim2Apac"; break;
2227  case GarminProduct::MarqAdventurerAsia : debug << "MarqAdventurerAsia"; break;
2228  case GarminProduct::Fr945Lte : debug << "Fr945Lte"; break;
2229  case GarminProduct::DescentMk2Asia : debug << "DescentMk2Asia"; break;
2230  case GarminProduct::Venu2 : debug << "Venu2"; break;
2231  case GarminProduct::Venu2s : debug << "Venu2s"; break;
2232  case GarminProduct::VenuDaimlerAsia : debug << "VenuDaimlerAsia"; break;
2233  case GarminProduct::MarqGolfer : debug << "MarqGolfer"; break;
2234  case GarminProduct::VenuDaimler : debug << "VenuDaimler"; break;
2235  case GarminProduct::Fr745Asia : debug << "Fr745Asia"; break;
2236  case GarminProduct::LilyAsia : debug << "LilyAsia"; break;
2237  case GarminProduct::Edge1030PlusAsia : debug << "Edge1030PlusAsia"; break;
2238  case GarminProduct::Edge130PlusAsia : debug << "Edge130PlusAsia"; break;
2239  case GarminProduct::ApproachS12 : debug << "ApproachS12"; break;
2240  case GarminProduct::EnduroAsia : debug << "EnduroAsia"; break;
2241  case GarminProduct::VenusqAsia : debug << "VenusqAsia"; break;
2242  case GarminProduct::MarqGolferAsia : debug << "MarqGolferAsia"; break;
2243  case GarminProduct::Fr55 : debug << "Fr55"; break;
2244  case GarminProduct::ApproachG12 : debug << "ApproachG12"; break;
2245  case GarminProduct::DescentMk2sAsia : debug << "DescentMk2sAsia"; break;
2246  case GarminProduct::ApproachS42 : debug << "ApproachS42"; break;
2247  case GarminProduct::Venu2sAsia : debug << "Venu2sAsia"; break;
2248  case GarminProduct::Venu2Asia : debug << "Venu2Asia"; break;
2249  case GarminProduct::Fr945LteAsia : debug << "Fr945LteAsia"; break;
2250  case GarminProduct::ApproachS12Asia : debug << "ApproachS12Asia"; break;
2251  case GarminProduct::ApproachG12Asia : debug << "ApproachG12Asia"; break;
2252  case GarminProduct::ApproachS42Asia : debug << "ApproachS42Asia"; break;
2253  case GarminProduct::Fr55Asia : debug << "Fr55Asia"; break;
2254  case GarminProduct::Sdm4 : debug << "Sdm4"; break;
2255  case GarminProduct::EdgeRemote : debug << "EdgeRemote"; break;
2256  case GarminProduct::TacxTrainingAppWin : debug << "TacxTrainingAppWin"; break;
2257  case GarminProduct::TacxTrainingAppMac : debug << "TacxTrainingAppMac"; break;
2258  case GarminProduct::TrainingCenter : debug << "TrainingCenter"; break;
2259  case GarminProduct::TacxTrainingAppAndroid : debug << "TacxTrainingAppAndroid"; break;
2260  case GarminProduct::TacxTrainingAppIos : debug << "TacxTrainingAppIos"; break;
2261  case GarminProduct::TacxTrainingAppLegacy : debug << "TacxTrainingAppLegacy"; break;
2262  case GarminProduct::ConnectiqSimulator : debug << "ConnectiqSimulator"; break;
2263  case GarminProduct::AndroidAntplusPlugin : debug << "AndroidAntplusPlugin"; break;
2264  case GarminProduct::Connect : debug << "Connect"; break;
2265  default: debug << "unknown";
2266  }
2267  return debug;
2268 }
2269 
2270 /*!
2271  * Writes the AntplusDeviceType \a value to the \a debug stream and returns a reference to the stream.
2272  *
2273  * \param debug Debug stream to write \a value to.
2274  * \param value Value to write to \a debug.
2275  *
2276  * \return a reference to the \a debug stream.
2277  */
2278 QDebug operator<<(QDebug debug, const AntplusDeviceType value)
2279 {
2280  switch (value) {
2281  case AntplusDeviceType::Antfs : debug << "Antfs"; break;
2282  case AntplusDeviceType::BikePower : debug << "BikePower"; break;
2283  case AntplusDeviceType::EnvironmentSensorLegacy: debug << "EnvironmentSensorLegacy"; break;
2284  case AntplusDeviceType::MultiSportSpeedDistance: debug << "MultiSportSpeedDistance"; break;
2285  case AntplusDeviceType::Control : debug << "Control"; break;
2286  case AntplusDeviceType::FitnessEquipment : debug << "FitnessEquipment"; break;
2287  case AntplusDeviceType::BloodPressure : debug << "BloodPressure"; break;
2288  case AntplusDeviceType::GeocacheNode : debug << "GeocacheNode"; break;
2289  case AntplusDeviceType::LightElectricVehicle : debug << "LightElectricVehicle"; break;
2290  case AntplusDeviceType::EnvSensor : debug << "EnvSensor"; break;
2291  case AntplusDeviceType::Racquet : debug << "Racquet"; break;
2292  case AntplusDeviceType::ControlHub : debug << "ControlHub"; break;
2293  case AntplusDeviceType::MuscleOxygen : debug << "MuscleOxygen"; break;
2294  case AntplusDeviceType::Shifting : debug << "Shifting"; break;
2295  case AntplusDeviceType::BikeLightMain : debug << "BikeLightMain"; break;
2296  case AntplusDeviceType::BikeLightShared : debug << "BikeLightShared"; break;
2297  case AntplusDeviceType::Exd : debug << "Exd"; break;
2298  case AntplusDeviceType::BikeRadar : debug << "BikeRadar"; break;
2299  case AntplusDeviceType::BikeAero : debug << "BikeAero"; break;
2300  case AntplusDeviceType::WeightScale : debug << "WeightScale"; break;
2301  case AntplusDeviceType::HeartRate : debug << "HeartRate"; break;
2302  case AntplusDeviceType::BikeSpeedCadence : debug << "BikeSpeedCadence"; break;
2303  case AntplusDeviceType::BikeCadence : debug << "BikeCadence"; break;
2304  case AntplusDeviceType::BikeSpeed : debug << "BikeSpeed"; break;
2305  case AntplusDeviceType::StrideSpeedDistance : debug << "StrideSpeedDistance"; break;
2306  default: debug << "unknown";
2307  }
2308  return debug;
2309 }
2310 
2311 /*!
2312  * Writes the AntNetwork \a value to the \a debug stream and returns a reference to the stream.
2313  *
2314  * \param debug Debug stream to write \a value to.
2315  * \param value Value to write to \a debug.
2316  *
2317  * \return a reference to the \a debug stream.
2318  */
2319 QDebug operator<<(QDebug debug, const AntNetwork value)
2320 {
2321  switch (value) {
2322  case AntNetwork::Public : debug << "Public"; break;
2323  case AntNetwork::Antplus: debug << "Antplus"; break;
2324  case AntNetwork::Antfs : debug << "Antfs"; break;
2325  case AntNetwork::Private: debug << "Private"; break;
2326  default: debug << "unknown";
2327  }
2328  return debug;
2329 }
2330 
2331 /*!
2332  * Writes the WorkoutCapabilities \a value to the \a debug stream and returns a reference to the stream.
2333  *
2334  * \param debug Debug stream to write \a value to.
2335  * \param value Value to write to \a debug.
2336  *
2337  * \return a reference to the \a debug stream.
2338  */
2339 QDebug operator<<(QDebug debug, const WorkoutCapabilities value)
2340 {
2341  switch (value) {
2342  case WorkoutCapabilities::Interval : debug << "Interval"; break;
2343  case WorkoutCapabilities::Custom : debug << "Custom"; break;
2344  case WorkoutCapabilities::FitnessEquipment: debug << "FitnessEquipment"; break;
2345  case WorkoutCapabilities::Firstbeat : debug << "Firstbeat"; break;
2346  case WorkoutCapabilities::NewLeaf : debug << "NewLeaf"; break;
2347  case WorkoutCapabilities::Tcx : debug << "Tcx"; break;
2348  case WorkoutCapabilities::Speed : debug << "Speed"; break;
2349  case WorkoutCapabilities::HeartRate : debug << "HeartRate"; break;
2350  case WorkoutCapabilities::Distance : debug << "Distance"; break;
2351  case WorkoutCapabilities::Cadence : debug << "Cadence"; break;
2352  case WorkoutCapabilities::Power : debug << "Power"; break;
2353  case WorkoutCapabilities::Grade : debug << "Grade"; break;
2354  case WorkoutCapabilities::Resistance : debug << "Resistance"; break;
2355  case WorkoutCapabilities::Protected : debug << "Protected"; break;
2356  default: debug << "unknown";
2357  }
2358  return debug;
2359 }
2360 
2361 /*!
2362  * Writes the BatteryStatus \a value to the \a debug stream and returns a reference to the stream.
2363  *
2364  * \param debug Debug stream to write \a value to.
2365  * \param value Value to write to \a debug.
2366  *
2367  * \return a reference to the \a debug stream.
2368  */
2369 QDebug operator<<(QDebug debug, const BatteryStatus value)
2370 {
2371  switch (value) {
2372  case BatteryStatus::New : debug << "New"; break;
2373  case BatteryStatus::Good : debug << "Good"; break;
2374  case BatteryStatus::Ok : debug << "Ok"; break;
2375  case BatteryStatus::Low : debug << "Low"; break;
2376  case BatteryStatus::Critical: debug << "Critical"; break;
2377  case BatteryStatus::Charging: debug << "Charging"; break;
2378  case BatteryStatus::Unknown : debug << "Unknown"; break;
2379  default: debug << "unknown";
2380  }
2381  return debug;
2382 }
2383 
2384 /*!
2385  * Writes the HrType \a value to the \a debug stream and returns a reference to the stream.
2386  *
2387  * \param debug Debug stream to write \a value to.
2388  * \param value Value to write to \a debug.
2389  *
2390  * \return a reference to the \a debug stream.
2391  */
2392 QDebug operator<<(QDebug debug, const HrType value)
2393 {
2394  switch (value) {
2395  case HrType::Normal : debug << "Normal"; break;
2396  case HrType::Irregular: debug << "Irregular"; break;
2397  default: debug << "unknown";
2398  }
2399  return debug;
2400 }
2401 
2402 /*!
2403  * Writes the CourseCapabilities \a value to the \a debug stream and returns a reference to the stream.
2404  *
2405  * \param debug Debug stream to write \a value to.
2406  * \param value Value to write to \a debug.
2407  *
2408  * \return a reference to the \a debug stream.
2409  */
2410 QDebug operator<<(QDebug debug, const CourseCapabilities value)
2411 {
2412  switch (value) {
2413  case CourseCapabilities::Processed : debug << "Processed"; break;
2414  case CourseCapabilities::Valid : debug << "Valid"; break;
2415  case CourseCapabilities::Time : debug << "Time"; break;
2416  case CourseCapabilities::Distance : debug << "Distance"; break;
2417  case CourseCapabilities::Position : debug << "Position"; break;
2418  case CourseCapabilities::HeartRate : debug << "HeartRate"; break;
2419  case CourseCapabilities::Power : debug << "Power"; break;
2420  case CourseCapabilities::Cadence : debug << "Cadence"; break;
2421  case CourseCapabilities::Training : debug << "Training"; break;
2422  case CourseCapabilities::Navigation: debug << "Navigation"; break;
2423  case CourseCapabilities::Bikeway : debug << "Bikeway"; break;
2424  default: debug << "unknown";
2425  }
2426  return debug;
2427 }
2428 
2429 /*!
2430  * Writes the Weight \a value to the \a debug stream and returns a reference to the stream.
2431  *
2432  * \param debug Debug stream to write \a value to.
2433  * \param value Value to write to \a debug.
2434  *
2435  * \return a reference to the \a debug stream.
2436  */
2437 QDebug operator<<(QDebug debug, const Weight value)
2438 {
2439  switch (value) {
2440  case Weight::Calculating: debug << "Calculating"; break;
2441  default: debug << "unknown";
2442  }
2443  return debug;
2444 }
2445 
2446 /*!
2447  * Writes the WorkoutHr \a value to the \a debug stream and returns a reference to the stream.
2448  *
2449  * \param debug Debug stream to write \a value to.
2450  * \param value Value to write to \a debug.
2451  *
2452  * \return a reference to the \a debug stream.
2453  */
2454 QDebug operator<<(QDebug debug, const WorkoutHr value)
2455 {
2456  switch (value) {
2457  case WorkoutHr::BpmOffset: debug << "BpmOffset"; break;
2458  default: debug << "unknown";
2459  }
2460  return debug;
2461 }
2462 
2463 /*!
2464  * Writes the WorkoutPower \a value to the \a debug stream and returns a reference to the stream.
2465  *
2466  * \param debug Debug stream to write \a value to.
2467  * \param value Value to write to \a debug.
2468  *
2469  * \return a reference to the \a debug stream.
2470  */
2471 QDebug operator<<(QDebug debug, const WorkoutPower value)
2472 {
2473  switch (value) {
2474  case WorkoutPower::WattsOffset: debug << "WattsOffset"; break;
2475  default: debug << "unknown";
2476  }
2477  return debug;
2478 }
2479 
2480 /*!
2481  * Writes the BpStatus \a value to the \a debug stream and returns a reference to the stream.
2482  *
2483  * \param debug Debug stream to write \a value to.
2484  * \param value Value to write to \a debug.
2485  *
2486  * \return a reference to the \a debug stream.
2487  */
2488 QDebug operator<<(QDebug debug, const BpStatus value)
2489 {
2490  switch (value) {
2491  case BpStatus::NoError : debug << "NoError"; break;
2492  case BpStatus::ErrorIncompleteData : debug << "ErrorIncompleteData"; break;
2493  case BpStatus::ErrorNoMeasurement : debug << "ErrorNoMeasurement"; break;
2494  case BpStatus::ErrorDataOutOfRange : debug << "ErrorDataOutOfRange"; break;
2495  case BpStatus::ErrorIrregularHeartRate: debug << "ErrorIrregularHeartRate"; break;
2496  default: debug << "unknown";
2497  }
2498  return debug;
2499 }
2500 
2501 /*!
2502  * Writes the UserLocalId \a value to the \a debug stream and returns a reference to the stream.
2503  *
2504  * \param debug Debug stream to write \a value to.
2505  * \param value Value to write to \a debug.
2506  *
2507  * \return a reference to the \a debug stream.
2508  */
2509 QDebug operator<<(QDebug debug, const UserLocalId value)
2510 {
2511  switch (value) {
2512  case UserLocalId::LocalMin : debug << "LocalMin"; break;
2513  case UserLocalId::LocalMax : debug << "LocalMax"; break;
2514  case UserLocalId::StationaryMin: debug << "StationaryMin"; break;
2515  case UserLocalId::StationaryMax: debug << "StationaryMax"; break;
2516  case UserLocalId::PortableMin : debug << "PortableMin"; break;
2517  case UserLocalId::PortableMax : debug << "PortableMax"; break;
2518  default: debug << "unknown";
2519  }
2520  return debug;
2521 }
2522 
2523 /*!
2524  * Writes the SwimStroke \a value to the \a debug stream and returns a reference to the stream.
2525  *
2526  * \param debug Debug stream to write \a value to.
2527  * \param value Value to write to \a debug.
2528  *
2529  * \return a reference to the \a debug stream.
2530  */
2531 QDebug operator<<(QDebug debug, const SwimStroke value)
2532 {
2533  switch (value) {
2534  case SwimStroke::Freestyle : debug << "Freestyle"; break;
2535  case SwimStroke::Backstroke : debug << "Backstroke"; break;
2536  case SwimStroke::Breaststroke: debug << "Breaststroke"; break;
2537  case SwimStroke::Butterfly : debug << "Butterfly"; break;
2538  case SwimStroke::Drill : debug << "Drill"; break;
2539  case SwimStroke::Mixed : debug << "Mixed"; break;
2540  case SwimStroke::Im : debug << "Im"; break;
2541  default: debug << "unknown";
2542  }
2543  return debug;
2544 }
2545 
2546 /*!
2547  * Writes the ActivityType \a value to the \a debug stream and returns a reference to the stream.
2548  *
2549  * \param debug Debug stream to write \a value to.
2550  * \param value Value to write to \a debug.
2551  *
2552  * \return a reference to the \a debug stream.
2553  */
2554 QDebug operator<<(QDebug debug, const ActivityType value)
2555 {
2556  switch (value) {
2557  case ActivityType::Generic : debug << "Generic"; break;
2558  case ActivityType::Running : debug << "Running"; break;
2559  case ActivityType::Cycling : debug << "Cycling"; break;
2560  case ActivityType::Transition : debug << "Transition"; break;
2561  case ActivityType::FitnessEquipment: debug << "FitnessEquipment"; break;
2562  case ActivityType::Swimming : debug << "Swimming"; break;
2563  case ActivityType::Walking : debug << "Walking"; break;
2564  case ActivityType::Sedentary : debug << "Sedentary"; break;
2565  case ActivityType::All : debug << "All"; break;
2566  default: debug << "unknown";
2567  }
2568  return debug;
2569 }
2570 
2571 /*!
2572  * Writes the ActivitySubtype \a value to the \a debug stream and returns a reference to the stream.
2573  *
2574  * \param debug Debug stream to write \a value to.
2575  * \param value Value to write to \a debug.
2576  *
2577  * \return a reference to the \a debug stream.
2578  */
2579 QDebug operator<<(QDebug debug, const ActivitySubtype value)
2580 {
2581  switch (value) {
2582  case ActivitySubtype::Generic : debug << "Generic"; break;
2583  case ActivitySubtype::Treadmill : debug << "Treadmill"; break;
2584  case ActivitySubtype::Street : debug << "Street"; break;
2585  case ActivitySubtype::Trail : debug << "Trail"; break;
2586  case ActivitySubtype::Track : debug << "Track"; break;
2587  case ActivitySubtype::Spin : debug << "Spin"; break;
2588  case ActivitySubtype::IndoorCycling: debug << "IndoorCycling"; break;
2589  case ActivitySubtype::Road : debug << "Road"; break;
2590  case ActivitySubtype::Mountain : debug << "Mountain"; break;
2591  case ActivitySubtype::Downhill : debug << "Downhill"; break;
2592  case ActivitySubtype::Recumbent : debug << "Recumbent"; break;
2593  case ActivitySubtype::Cyclocross : debug << "Cyclocross"; break;
2594  case ActivitySubtype::HandCycling : debug << "HandCycling"; break;
2595  case ActivitySubtype::TrackCycling : debug << "TrackCycling"; break;
2596  case ActivitySubtype::IndoorRowing : debug << "IndoorRowing"; break;
2597  case ActivitySubtype::Elliptical : debug << "Elliptical"; break;
2598  case ActivitySubtype::StairClimbing: debug << "StairClimbing"; break;
2599  case ActivitySubtype::LapSwimming : debug << "LapSwimming"; break;
2600  case ActivitySubtype::OpenWater : debug << "OpenWater"; break;
2601  case ActivitySubtype::All : debug << "All"; break;
2602  default: debug << "unknown";
2603  }
2604  return debug;
2605 }
2606 
2607 /*!
2608  * Writes the ActivityLevel \a value to the \a debug stream and returns a reference to the stream.
2609  *
2610  * \param debug Debug stream to write \a value to.
2611  * \param value Value to write to \a debug.
2612  *
2613  * \return a reference to the \a debug stream.
2614  */
2615 QDebug operator<<(QDebug debug, const ActivityLevel value)
2616 {
2617  switch (value) {
2618  case ActivityLevel::Low : debug << "Low"; break;
2619  case ActivityLevel::Medium: debug << "Medium"; break;
2620  case ActivityLevel::High : debug << "High"; break;
2621  default: debug << "unknown";
2622  }
2623  return debug;
2624 }
2625 
2626 /*!
2627  * Writes the Side \a value to the \a debug stream and returns a reference to the stream.
2628  *
2629  * \param debug Debug stream to write \a value to.
2630  * \param value Value to write to \a debug.
2631  *
2632  * \return a reference to the \a debug stream.
2633  */
2634 QDebug operator<<(QDebug debug, const Side value)
2635 {
2636  switch (value) {
2637  case Side::Right: debug << "Right"; break;
2638  case Side::Left : debug << "Left"; break;
2639  default: debug << "unknown";
2640  }
2641  return debug;
2642 }
2643 
2644 /*!
2645  * Writes the LeftRightBalance \a value to the \a debug stream and returns a reference to the stream.
2646  *
2647  * \param debug Debug stream to write \a value to.
2648  * \param value Value to write to \a debug.
2649  *
2650  * \return a reference to the \a debug stream.
2651  */
2652 QDebug operator<<(QDebug debug, const LeftRightBalance value)
2653 {
2654  switch (value) {
2655  case LeftRightBalance::Mask : debug << "Mask"; break;
2656  case LeftRightBalance::Right: debug << "Right"; break;
2657  default: debug << "unknown";
2658  }
2659  return debug;
2660 }
2661 
2662 /*!
2663  * Writes the LeftRightBalance100 \a value to the \a debug stream and returns a reference to the stream.
2664  *
2665  * \param debug Debug stream to write \a value to.
2666  * \param value Value to write to \a debug.
2667  *
2668  * \return a reference to the \a debug stream.
2669  */
2670 QDebug operator<<(QDebug debug, const LeftRightBalance100 value)
2671 {
2672  switch (value) {
2673  case LeftRightBalance100::Mask : debug << "Mask"; break;
2674  case LeftRightBalance100::Right: debug << "Right"; break;
2675  default: debug << "unknown";
2676  }
2677  return debug;
2678 }
2679 
2680 /*!
2681  * Writes the LengthType \a value to the \a debug stream and returns a reference to the stream.
2682  *
2683  * \param debug Debug stream to write \a value to.
2684  * \param value Value to write to \a debug.
2685  *
2686  * \return a reference to the \a debug stream.
2687  */
2688 QDebug operator<<(QDebug debug, const LengthType value)
2689 {
2690  switch (value) {
2691  case LengthType::Idle : debug << "Idle"; break;
2692  case LengthType::Active: debug << "Active"; break;
2693  default: debug << "unknown";
2694  }
2695  return debug;
2696 }
2697 
2698 /*!
2699  * Writes the DayOfWeek \a value to the \a debug stream and returns a reference to the stream.
2700  *
2701  * \param debug Debug stream to write \a value to.
2702  * \param value Value to write to \a debug.
2703  *
2704  * \return a reference to the \a debug stream.
2705  */
2706 QDebug operator<<(QDebug debug, const DayOfWeek value)
2707 {
2708  switch (value) {
2709  case DayOfWeek::Sunday : debug << "Sunday"; break;
2710  case DayOfWeek::Monday : debug << "Monday"; break;
2711  case DayOfWeek::Tuesday : debug << "Tuesday"; break;
2712  case DayOfWeek::Wednesday: debug << "Wednesday"; break;
2713  case DayOfWeek::Thursday : debug << "Thursday"; break;
2714  case DayOfWeek::Friday : debug << "Friday"; break;
2715  case DayOfWeek::Saturday : debug << "Saturday"; break;
2716  default: debug << "unknown";
2717  }
2718  return debug;
2719 }
2720 
2721 /*!
2722  * Writes the ConnectivityCapabilities \a value to the \a debug stream and returns a reference to the stream.
2723  *
2724  * \param debug Debug stream to write \a value to.
2725  * \param value Value to write to \a debug.
2726  *
2727  * \return a reference to the \a debug stream.
2728  */
2729 QDebug operator<<(QDebug debug, const ConnectivityCapabilities value)
2730 {
2731  switch (value) {
2732  case ConnectivityCapabilities::Bluetooth : debug << "Bluetooth"; break;
2733  case ConnectivityCapabilities::BluetoothLe : debug << "BluetoothLe"; break;
2734  case ConnectivityCapabilities::Ant : debug << "Ant"; break;
2735  case ConnectivityCapabilities::ActivityUpload : debug << "ActivityUpload"; break;
2736  case ConnectivityCapabilities::CourseDownload : debug << "CourseDownload"; break;
2737  case ConnectivityCapabilities::WorkoutDownload : debug << "WorkoutDownload"; break;
2738  case ConnectivityCapabilities::LiveTrack : debug << "LiveTrack"; break;
2739  case ConnectivityCapabilities::WeatherConditions : debug << "WeatherConditions"; break;
2740  case ConnectivityCapabilities::WeatherAlerts : debug << "WeatherAlerts"; break;
2741  case ConnectivityCapabilities::GpsEphemerisDownload : debug << "GpsEphemerisDownload"; break;
2742  case ConnectivityCapabilities::ExplicitArchive : debug << "ExplicitArchive"; break;
2743  case ConnectivityCapabilities::SetupIncomplete : debug << "SetupIncomplete"; break;
2744  case ConnectivityCapabilities::ContinueSyncAfterSoftwareUpdate: debug << "ContinueSyncAfterSoftwareUpdate"; break;
2745  case ConnectivityCapabilities::ConnectIqAppDownload : debug << "ConnectIqAppDownload"; break;
2746  case ConnectivityCapabilities::GolfCourseDownload : debug << "GolfCourseDownload"; break;
2747  case ConnectivityCapabilities::DeviceInitiatesSync : debug << "DeviceInitiatesSync"; break;
2748  case ConnectivityCapabilities::ConnectIqWatchAppDownload : debug << "ConnectIqWatchAppDownload"; break;
2749  case ConnectivityCapabilities::ConnectIqWidgetDownload : debug << "ConnectIqWidgetDownload"; break;
2750  case ConnectivityCapabilities::ConnectIqWatchFaceDownload : debug << "ConnectIqWatchFaceDownload"; break;
2751  case ConnectivityCapabilities::ConnectIqDataFieldDownload : debug << "ConnectIqDataFieldDownload"; break;
2752  case ConnectivityCapabilities::ConnectIqAppManagment : debug << "ConnectIqAppManagment"; break;
2753  case ConnectivityCapabilities::SwingSensor : debug << "SwingSensor"; break;
2754  case ConnectivityCapabilities::SwingSensorRemote : debug << "SwingSensorRemote"; break;
2755  case ConnectivityCapabilities::IncidentDetection : debug << "IncidentDetection"; break;
2756  case ConnectivityCapabilities::AudioPrompts : debug << "AudioPrompts"; break;
2757  case ConnectivityCapabilities::WifiVerification : debug << "WifiVerification"; break;
2758  case ConnectivityCapabilities::TrueUp : debug << "TrueUp"; break;
2759  case ConnectivityCapabilities::FindMyWatch : debug << "FindMyWatch"; break;
2760  case ConnectivityCapabilities::RemoteManualSync : debug << "RemoteManualSync"; break;
2761  case ConnectivityCapabilities::LiveTrackAutoStart : debug << "LiveTrackAutoStart"; break;
2762  case ConnectivityCapabilities::LiveTrackMessaging : debug << "LiveTrackMessaging"; break;
2763  case ConnectivityCapabilities::InstantInput : debug << "InstantInput"; break;
2764  default: debug << "unknown";
2765  }
2766  return debug;
2767 }
2768 
2769 /*!
2770  * Writes the WeatherReport \a value to the \a debug stream and returns a reference to the stream.
2771  *
2772  * \param debug Debug stream to write \a value to.
2773  * \param value Value to write to \a debug.
2774  *
2775  * \return a reference to the \a debug stream.
2776  */
2777 QDebug operator<<(QDebug debug, const WeatherReport value)
2778 {
2779  switch (value) {
2780  case WeatherReport::Current : debug << "Current"; break;
2781  case WeatherReport::HourlyForecast: debug << "HourlyForecast"; break;
2782  case WeatherReport::DailyForecast : debug << "DailyForecast"; break;
2783  default: debug << "unknown";
2784  }
2785  return debug;
2786 }
2787 
2788 /*!
2789  * Writes the WeatherStatus \a value to the \a debug stream and returns a reference to the stream.
2790  *
2791  * \param debug Debug stream to write \a value to.
2792  * \param value Value to write to \a debug.
2793  *
2794  * \return a reference to the \a debug stream.
2795  */
2796 QDebug operator<<(QDebug debug, const WeatherStatus value)
2797 {
2798  switch (value) {
2799  case WeatherStatus::Clear : debug << "Clear"; break;
2800  case WeatherStatus::PartlyCloudy : debug << "PartlyCloudy"; break;
2801  case WeatherStatus::MostlyCloudy : debug << "MostlyCloudy"; break;
2802  case WeatherStatus::Rain : debug << "Rain"; break;
2803  case WeatherStatus::Snow : debug << "Snow"; break;
2804  case WeatherStatus::Windy : debug << "Windy"; break;
2805  case WeatherStatus::Thunderstorms : debug << "Thunderstorms"; break;
2806  case WeatherStatus::WintryMix : debug << "WintryMix"; break;
2807  case WeatherStatus::Fog : debug << "Fog"; break;
2808  case WeatherStatus::Hazy : debug << "Hazy"; break;
2809  case WeatherStatus::Hail : debug << "Hail"; break;
2810  case WeatherStatus::ScatteredShowers : debug << "ScatteredShowers"; break;
2811  case WeatherStatus::ScatteredThunderstorms: debug << "ScatteredThunderstorms"; break;
2812  case WeatherStatus::UnknownPrecipitation : debug << "UnknownPrecipitation"; break;
2813  case WeatherStatus::LightRain : debug << "LightRain"; break;
2814  case WeatherStatus::HeavyRain : debug << "HeavyRain"; break;
2815  case WeatherStatus::LightSnow : debug << "LightSnow"; break;
2816  case WeatherStatus::HeavySnow : debug << "HeavySnow"; break;
2817  case WeatherStatus::LightRainSnow : debug << "LightRainSnow"; break;
2818  case WeatherStatus::HeavyRainSnow : debug << "HeavyRainSnow"; break;
2819  case WeatherStatus::Cloudy : debug << "Cloudy"; break;
2820  default: debug << "unknown";
2821  }
2822  return debug;
2823 }
2824 
2825 /*!
2826  * Writes the WeatherSeverity \a value to the \a debug stream and returns a reference to the stream.
2827  *
2828  * \param debug Debug stream to write \a value to.
2829  * \param value Value to write to \a debug.
2830  *
2831  * \return a reference to the \a debug stream.
2832  */
2833 QDebug operator<<(QDebug debug, const WeatherSeverity value)
2834 {
2835  switch (value) {
2836  case WeatherSeverity::Unknown : debug << "Unknown"; break;
2837  case WeatherSeverity::Warning : debug << "Warning"; break;
2838  case WeatherSeverity::Watch : debug << "Watch"; break;
2839  case WeatherSeverity::Advisory : debug << "Advisory"; break;
2840  case WeatherSeverity::Statement: debug << "Statement"; break;
2841  default: debug << "unknown";
2842  }
2843  return debug;
2844 }
2845 
2846 /*!
2847  * Writes the WeatherSevereType \a value to the \a debug stream and returns a reference to the stream.
2848  *
2849  * \param debug Debug stream to write \a value to.
2850  * \param value Value to write to \a debug.
2851  *
2852  * \return a reference to the \a debug stream.
2853  */
2854 QDebug operator<<(QDebug debug, const WeatherSevereType value)
2855 {
2856  switch (value) {
2857  case WeatherSevereType::Unspecified : debug << "Unspecified"; break;
2858  case WeatherSevereType::Tornado : debug << "Tornado"; break;
2859  case WeatherSevereType::Tsunami : debug << "Tsunami"; break;
2860  case WeatherSevereType::Hurricane : debug << "Hurricane"; break;
2861  case WeatherSevereType::ExtremeWind : debug << "ExtremeWind"; break;
2862  case WeatherSevereType::Typhoon : debug << "Typhoon"; break;
2863  case WeatherSevereType::InlandHurricane : debug << "InlandHurricane"; break;
2864  case WeatherSevereType::HurricaneForceWind : debug << "HurricaneForceWind"; break;
2865  case WeatherSevereType::Waterspout : debug << "Waterspout"; break;
2866  case WeatherSevereType::SevereThunderstorm : debug << "SevereThunderstorm"; break;
2867  case WeatherSevereType::WreckhouseWinds : debug << "WreckhouseWinds"; break;
2868  case WeatherSevereType::LesSuetesWind : debug << "LesSuetesWind"; break;
2869  case WeatherSevereType::Avalanche : debug << "Avalanche"; break;
2870  case WeatherSevereType::FlashFlood : debug << "FlashFlood"; break;
2871  case WeatherSevereType::TropicalStorm : debug << "TropicalStorm"; break;
2872  case WeatherSevereType::InlandTropicalStorm : debug << "InlandTropicalStorm"; break;
2873  case WeatherSevereType::Blizzard : debug << "Blizzard"; break;
2874  case WeatherSevereType::IceStorm : debug << "IceStorm"; break;
2875  case WeatherSevereType::FreezingRain : debug << "FreezingRain"; break;
2876  case WeatherSevereType::DebrisFlow : debug << "DebrisFlow"; break;
2877  case WeatherSevereType::FlashFreeze : debug << "FlashFreeze"; break;
2878  case WeatherSevereType::DustStorm : debug << "DustStorm"; break;
2879  case WeatherSevereType::HighWind : debug << "HighWind"; break;
2880  case WeatherSevereType::WinterStorm : debug << "WinterStorm"; break;
2881  case WeatherSevereType::HeavyFreezingSpray : debug << "HeavyFreezingSpray"; break;
2882  case WeatherSevereType::ExtremeCold : debug << "ExtremeCold"; break;
2883  case WeatherSevereType::WindChill : debug << "WindChill"; break;
2884  case WeatherSevereType::ColdWave : debug << "ColdWave"; break;
2885  case WeatherSevereType::HeavySnowAlert : debug << "HeavySnowAlert"; break;
2886  case WeatherSevereType::LakeEffectBlowingSnow : debug << "LakeEffectBlowingSnow"; break;
2887  case WeatherSevereType::SnowSquall : debug << "SnowSquall"; break;
2888  case WeatherSevereType::LakeEffectSnow : debug << "LakeEffectSnow"; break;
2889  case WeatherSevereType::WinterWeather : debug << "WinterWeather"; break;
2890  case WeatherSevereType::Sleet : debug << "Sleet"; break;
2891  case WeatherSevereType::Snowfall : debug << "Snowfall"; break;
2892  case WeatherSevereType::SnowAndBlowingSnow : debug << "SnowAndBlowingSnow"; break;
2893  case WeatherSevereType::BlowingSnow : debug << "BlowingSnow"; break;
2894  case WeatherSevereType::SnowAlert : debug << "SnowAlert"; break;
2895  case WeatherSevereType::ArcticOutflow : debug << "ArcticOutflow"; break;
2896  case WeatherSevereType::FreezingDrizzle : debug << "FreezingDrizzle"; break;
2897  case WeatherSevereType::Storm : debug << "Storm"; break;
2898  case WeatherSevereType::StormSurge : debug << "StormSurge"; break;
2899  case WeatherSevereType::Rainfall : debug << "Rainfall"; break;
2900  case WeatherSevereType::ArealFlood : debug << "ArealFlood"; break;
2901  case WeatherSevereType::CoastalFlood : debug << "CoastalFlood"; break;
2902  case WeatherSevereType::LakeshoreFlood : debug << "LakeshoreFlood"; break;
2903  case WeatherSevereType::ExcessiveHeat : debug << "ExcessiveHeat"; break;
2904  case WeatherSevereType::Heat : debug << "Heat"; break;
2905  case WeatherSevereType::Weather : debug << "Weather"; break;
2906  case WeatherSevereType::HighHeatAndHumidity : debug << "HighHeatAndHumidity"; break;
2907  case WeatherSevereType::HumidexAndHealth : debug << "HumidexAndHealth"; break;
2908  case WeatherSevereType::Humidex : debug << "Humidex"; break;
2909  case WeatherSevereType::Gale : debug << "Gale"; break;
2910  case WeatherSevereType::FreezingSpray : debug << "FreezingSpray"; break;
2911  case WeatherSevereType::SpecialMarine : debug << "SpecialMarine"; break;
2912  case WeatherSevereType::Squall : debug << "Squall"; break;
2913  case WeatherSevereType::StrongWind : debug << "StrongWind"; break;
2914  case WeatherSevereType::LakeWind : debug << "LakeWind"; break;
2915  case WeatherSevereType::MarineWeather : debug << "MarineWeather"; break;
2916  case WeatherSevereType::Wind : debug << "Wind"; break;
2917  case WeatherSevereType::SmallCraftHazardousSeas: debug << "SmallCraftHazardousSeas"; break;
2918  case WeatherSevereType::HazardousSeas : debug << "HazardousSeas"; break;
2919  case WeatherSevereType::SmallCraft : debug << "SmallCraft"; break;
2920  case WeatherSevereType::SmallCraftWinds : debug << "SmallCraftWinds"; break;
2921  case WeatherSevereType::SmallCraftRoughBar : debug << "SmallCraftRoughBar"; break;
2922  case WeatherSevereType::HighWaterLevel : debug << "HighWaterLevel"; break;
2923  case WeatherSevereType::Ashfall : debug << "Ashfall"; break;
2924  case WeatherSevereType::FreezingFog : debug << "FreezingFog"; break;
2925  case WeatherSevereType::DenseFog : debug << "DenseFog"; break;
2926  case WeatherSevereType::DenseSmoke : debug << "DenseSmoke"; break;
2927  case WeatherSevereType::BlowingDust : debug << "BlowingDust"; break;
2928  case WeatherSevereType::HardFreeze : debug << "HardFreeze"; break;
2929  case WeatherSevereType::Freeze : debug << "Freeze"; break;
2930  case WeatherSevereType::Frost : debug << "Frost"; break;
2931  case WeatherSevereType::FireWeather : debug << "FireWeather"; break;
2932  case WeatherSevereType::Flood : debug << "Flood"; break;
2933  case WeatherSevereType::RipTide : debug << "RipTide"; break;
2934  case WeatherSevereType::HighSurf : debug << "HighSurf"; break;
2935  case WeatherSevereType::Smog : debug << "Smog"; break;
2936  case WeatherSevereType::AirQuality : debug << "AirQuality"; break;
2937  case WeatherSevereType::BriskWind : debug << "BriskWind"; break;
2938  case WeatherSevereType::AirStagnation : debug << "AirStagnation"; break;
2939  case WeatherSevereType::LowWater : debug << "LowWater"; break;
2940  case WeatherSevereType::Hydrological : debug << "Hydrological"; break;
2941  case WeatherSevereType::SpecialWeather : debug << "SpecialWeather"; break;
2942  default: debug << "unknown";
2943  }
2944  return debug;
2945 }
2946 
2947 /*!
2948  * Writes the StrokeType \a value to the \a debug stream and returns a reference to the stream.
2949  *
2950  * \param debug Debug stream to write \a value to.
2951  * \param value Value to write to \a debug.
2952  *
2953  * \return a reference to the \a debug stream.
2954  */
2955 QDebug operator<<(QDebug debug, const StrokeType value)
2956 {
2957  switch (value) {
2958  case StrokeType::NoEvent : debug << "NoEvent"; break;
2959  case StrokeType::Other : debug << "Other"; break;
2960  case StrokeType::Serve : debug << "Serve"; break;
2961  case StrokeType::Forehand: debug << "Forehand"; break;
2962  case StrokeType::Backhand: debug << "Backhand"; break;
2963  case StrokeType::Smash : debug << "Smash"; break;
2964  default: debug << "unknown";
2965  }
2966  return debug;
2967 }
2968 
2969 /*!
2970  * Writes the BodyLocation \a value to the \a debug stream and returns a reference to the stream.
2971  *
2972  * \param debug Debug stream to write \a value to.
2973  * \param value Value to write to \a debug.
2974  *
2975  * \return a reference to the \a debug stream.
2976  */
2977 QDebug operator<<(QDebug debug, const BodyLocation value)
2978 {
2979  switch (value) {
2980  case BodyLocation::LeftLeg : debug << "LeftLeg"; break;
2981  case BodyLocation::LeftCalf : debug << "LeftCalf"; break;
2982  case BodyLocation::LeftShin : debug << "LeftShin"; break;
2983  case BodyLocation::LeftHamstring : debug << "LeftHamstring"; break;
2984  case BodyLocation::LeftQuad : debug << "LeftQuad"; break;
2985  case BodyLocation::LeftGlute : debug << "LeftGlute"; break;
2986  case BodyLocation::RightLeg : debug << "RightLeg"; break;
2987  case BodyLocation::RightCalf : debug << "RightCalf"; break;
2988  case BodyLocation::RightShin : debug << "RightShin"; break;
2989  case BodyLocation::RightHamstring : debug << "RightHamstring"; break;
2990  case BodyLocation::RightQuad : debug << "RightQuad"; break;
2991  case BodyLocation::RightGlute : debug << "RightGlute"; break;
2992  case BodyLocation::TorsoBack : debug << "TorsoBack"; break;
2993  case BodyLocation::LeftLowerBack : debug << "LeftLowerBack"; break;
2994  case BodyLocation::LeftUpperBack : debug << "LeftUpperBack"; break;
2995  case BodyLocation::RightLowerBack : debug << "RightLowerBack"; break;
2996  case BodyLocation::RightUpperBack : debug << "RightUpperBack"; break;
2997  case BodyLocation::TorsoFront : debug << "TorsoFront"; break;
2998  case BodyLocation::LeftAbdomen : debug << "LeftAbdomen"; break;
2999  case BodyLocation::LeftChest : debug << "LeftChest"; break;
3000  case BodyLocation::RightAbdomen : debug << "RightAbdomen"; break;
3001  case BodyLocation::RightChest : debug << "RightChest"; break;
3002  case BodyLocation::LeftArm : debug << "LeftArm"; break;
3003  case BodyLocation::LeftShoulder : debug << "LeftShoulder"; break;
3004  case BodyLocation::LeftBicep : debug << "LeftBicep"; break;
3005  case BodyLocation::LeftTricep : debug << "LeftTricep"; break;
3006  case BodyLocation::LeftBrachioradialis : debug << "LeftBrachioradialis"; break;
3007  case BodyLocation::LeftForearmExtensors : debug << "LeftForearmExtensors"; break;
3008  case BodyLocation::RightArm : debug << "RightArm"; break;
3009  case BodyLocation::RightShoulder : debug << "RightShoulder"; break;
3010  case BodyLocation::RightBicep : debug << "RightBicep"; break;
3011  case BodyLocation::RightTricep : debug << "RightTricep"; break;
3012  case BodyLocation::RightBrachioradialis : debug << "RightBrachioradialis"; break;
3013  case BodyLocation::RightForearmExtensors: debug << "RightForearmExtensors"; break;
3014  case BodyLocation::Neck : debug << "Neck"; break;
3015  case BodyLocation::Throat : debug << "Throat"; break;
3016  case BodyLocation::WaistMidBack : debug << "WaistMidBack"; break;
3017  case BodyLocation::WaistFront : debug << "WaistFront"; break;
3018  case BodyLocation::WaistLeft : debug << "WaistLeft"; break;
3019  case BodyLocation::WaistRight : debug << "WaistRight"; break;
3020  default: debug << "unknown";
3021  }
3022  return debug;
3023 }
3024 
3025 /*!
3026  * Writes the SegmentLapStatus \a value to the \a debug stream and returns a reference to the stream.
3027  *
3028  * \param debug Debug stream to write \a value to.
3029  * \param value Value to write to \a debug.
3030  *
3031  * \return a reference to the \a debug stream.
3032  */
3033 QDebug operator<<(QDebug debug, const SegmentLapStatus value)
3034 {
3035  switch (value) {
3036  case SegmentLapStatus::End : debug << "End"; break;
3037  case SegmentLapStatus::Fail: debug << "Fail"; break;
3038  default: debug << "unknown";
3039  }
3040  return debug;
3041 }
3042 
3043 /*!
3044  * Writes the SegmentLeaderboardType \a value to the \a debug stream and returns a reference to the stream.
3045  *
3046  * \param debug Debug stream to write \a value to.
3047  * \param value Value to write to \a debug.
3048  *
3049  * \return a reference to the \a debug stream.
3050  */
3051 QDebug operator<<(QDebug debug, const SegmentLeaderboardType value)
3052 {
3053  switch (value) {
3054  case SegmentLeaderboardType::Overall : debug << "Overall"; break;
3055  case SegmentLeaderboardType::PersonalBest: debug << "PersonalBest"; break;
3056  case SegmentLeaderboardType::Connections : debug << "Connections"; break;
3057  case SegmentLeaderboardType::Group : debug << "Group"; break;
3058  case SegmentLeaderboardType::Challenger : debug << "Challenger"; break;
3059  case SegmentLeaderboardType::Kom : debug << "Kom"; break;
3060  case SegmentLeaderboardType::Qom : debug << "Qom"; break;
3061  case SegmentLeaderboardType::Pr : debug << "Pr"; break;
3062  case SegmentLeaderboardType::Goal : debug << "Goal"; break;
3063  case SegmentLeaderboardType::Rival : debug << "Rival"; break;
3064  case SegmentLeaderboardType::ClubLeader : debug << "ClubLeader"; break;
3065  default: debug << "unknown";
3066  }
3067  return debug;
3068 }
3069 
3070 /*!
3071  * Writes the SegmentDeleteStatus \a value to the \a debug stream and returns a reference to the stream.
3072  *
3073  * \param debug Debug stream to write \a value to.
3074  * \param value Value to write to \a debug.
3075  *
3076  * \return a reference to the \a debug stream.
3077  */
3078 QDebug operator<<(QDebug debug, const SegmentDeleteStatus value)
3079 {
3080  switch (value) {
3081  case SegmentDeleteStatus::DoNotDelete: debug << "DoNotDelete"; break;
3082  case SegmentDeleteStatus::DeleteOne : debug << "DeleteOne"; break;
3083  case SegmentDeleteStatus::DeleteAll : debug << "DeleteAll"; break;
3084  default: debug << "unknown";
3085  }
3086  return debug;
3087 }
3088 
3089 /*!
3090  * Writes the SegmentSelectionType \a value to the \a debug stream and returns a reference to the stream.
3091  *
3092  * \param debug Debug stream to write \a value to.
3093  * \param value Value to write to \a debug.
3094  *
3095  * \return a reference to the \a debug stream.
3096  */
3097 QDebug operator<<(QDebug debug, const SegmentSelectionType value)
3098 {
3099  switch (value) {
3100  case SegmentSelectionType::Starred : debug << "Starred"; break;
3101  case SegmentSelectionType::Suggested: debug << "Suggested"; break;
3102  default: debug << "unknown";
3103  }
3104  return debug;
3105 }
3106 
3107 /*!
3108  * Writes the SourceType \a value to the \a debug stream and returns a reference to the stream.
3109  *
3110  * \param debug Debug stream to write \a value to.
3111  * \param value Value to write to \a debug.
3112  *
3113  * \return a reference to the \a debug stream.
3114  */
3115 QDebug operator<<(QDebug debug, const SourceType value)
3116 {
3117  switch (value) {
3118  case SourceType::Ant : debug << "Ant"; break;
3119  case SourceType::Antplus : debug << "Antplus"; break;
3120  case SourceType::Bluetooth : debug << "Bluetooth"; break;
3121  case SourceType::BluetoothLowEnergy: debug << "BluetoothLowEnergy"; break;
3122  case SourceType::Wifi : debug << "Wifi"; break;
3123  case SourceType::Local : debug << "Local"; break;
3124  default: debug << "unknown";
3125  }
3126  return debug;
3127 }
3128 
3129 /*!
3130  * Writes the DisplayOrientation \a value to the \a debug stream and returns a reference to the stream.
3131  *
3132  * \param debug Debug stream to write \a value to.
3133  * \param value Value to write to \a debug.
3134  *
3135  * \return a reference to the \a debug stream.
3136  */
3137 QDebug operator<<(QDebug debug, const DisplayOrientation value)
3138 {
3139  switch (value) {
3140  case DisplayOrientation::Auto : debug << "Auto"; break;
3141  case DisplayOrientation::Portrait : debug << "Portrait"; break;
3142  case DisplayOrientation::Landscape : debug << "Landscape"; break;
3143  case DisplayOrientation::PortraitFlipped : debug << "PortraitFlipped"; break;
3144  case DisplayOrientation::LandscapeFlipped: debug << "LandscapeFlipped"; break;
3145  default: debug << "unknown";
3146  }
3147  return debug;
3148 }
3149 
3150 /*!
3151  * Writes the WorkoutEquipment \a value to the \a debug stream and returns a reference to the stream.
3152  *
3153  * \param debug Debug stream to write \a value to.
3154  * \param value Value to write to \a debug.
3155  *
3156  * \return a reference to the \a debug stream.
3157  */
3158 QDebug operator<<(QDebug debug, const WorkoutEquipment value)
3159 {
3160  switch (value) {
3161  case WorkoutEquipment::None : debug << "None"; break;
3162  case WorkoutEquipment::SwimFins : debug << "SwimFins"; break;
3163  case WorkoutEquipment::SwimKickboard: debug << "SwimKickboard"; break;
3164  case WorkoutEquipment::SwimPaddles : debug << "SwimPaddles"; break;
3165  case WorkoutEquipment::SwimPullBuoy : debug << "SwimPullBuoy"; break;
3166  case WorkoutEquipment::SwimSnorkel : debug << "SwimSnorkel"; break;
3167  default: debug << "unknown";
3168  }
3169  return debug;
3170 }
3171 
3172 /*!
3173  * Writes the WatchfaceMode \a value to the \a debug stream and returns a reference to the stream.
3174  *
3175  * \param debug Debug stream to write \a value to.
3176  * \param value Value to write to \a debug.
3177  *
3178  * \return a reference to the \a debug stream.
3179  */
3180 QDebug operator<<(QDebug debug, const WatchfaceMode value)
3181 {
3182  switch (value) {
3183  case WatchfaceMode::Digital : debug << "Digital"; break;
3184  case WatchfaceMode::Analog : debug << "Analog"; break;
3185  case WatchfaceMode::ConnectIq: debug << "ConnectIq"; break;
3186  case WatchfaceMode::Disabled : debug << "Disabled"; break;
3187  default: debug << "unknown";
3188  }
3189  return debug;
3190 }
3191 
3192 /*!
3193  * Writes the DigitalWatchfaceLayout \a value to the \a debug stream and returns a reference to the stream.
3194  *
3195  * \param debug Debug stream to write \a value to.
3196  * \param value Value to write to \a debug.
3197  *
3198  * \return a reference to the \a debug stream.
3199  */
3200 QDebug operator<<(QDebug debug, const DigitalWatchfaceLayout value)
3201 {
3202  switch (value) {
3203  case DigitalWatchfaceLayout::Traditional: debug << "Traditional"; break;
3204  case DigitalWatchfaceLayout::Modern : debug << "Modern"; break;
3205  case DigitalWatchfaceLayout::Bold : debug << "Bold"; break;
3206  default: debug << "unknown";
3207  }
3208  return debug;
3209 }
3210 
3211 /*!
3212  * Writes the AnalogWatchfaceLayout \a value to the \a debug stream and returns a reference to the stream.
3213  *
3214  * \param debug Debug stream to write \a value to.
3215  * \param value Value to write to \a debug.
3216  *
3217  * \return a reference to the \a debug stream.
3218  */
3219 QDebug operator<<(QDebug debug, const AnalogWatchfaceLayout value)
3220 {
3221  switch (value) {
3222  case AnalogWatchfaceLayout::Minimal : debug << "Minimal"; break;
3223  case AnalogWatchfaceLayout::Traditional: debug << "Traditional"; break;
3224  case AnalogWatchfaceLayout::Modern : debug << "Modern"; break;
3225  default: debug << "unknown";
3226  }
3227  return debug;
3228 }
3229 
3230 /*!
3231  * Writes the RiderPositionType \a value to the \a debug stream and returns a reference to the stream.
3232  *
3233  * \param debug Debug stream to write \a value to.
3234  * \param value Value to write to \a debug.
3235  *
3236  * \return a reference to the \a debug stream.
3237  */
3238 QDebug operator<<(QDebug debug, const RiderPositionType value)
3239 {
3240  switch (value) {
3241  case RiderPositionType::Seated : debug << "Seated"; break;
3242  case RiderPositionType::Standing : debug << "Standing"; break;
3243  case RiderPositionType::TransitionToSeated : debug << "TransitionToSeated"; break;
3244  case RiderPositionType::TransitionToStanding: debug << "TransitionToStanding"; break;
3245  default: debug << "unknown";
3246  }
3247  return debug;
3248 }
3249 
3250 /*!
3251  * Writes the PowerPhaseType \a value to the \a debug stream and returns a reference to the stream.
3252  *
3253  * \param debug Debug stream to write \a value to.
3254  * \param value Value to write to \a debug.
3255  *
3256  * \return a reference to the \a debug stream.
3257  */
3258 QDebug operator<<(QDebug debug, const PowerPhaseType value)
3259 {
3260  switch (value) {
3261  case PowerPhaseType::PowerPhaseStartAngle: debug << "PowerPhaseStartAngle"; break;
3262  case PowerPhaseType::PowerPhaseEndAngle : debug << "PowerPhaseEndAngle"; break;
3263  case PowerPhaseType::PowerPhaseArcLength : debug << "PowerPhaseArcLength"; break;
3264  case PowerPhaseType::PowerPhaseCenter : debug << "PowerPhaseCenter"; break;
3265  default: debug << "unknown";
3266  }
3267  return debug;
3268 }
3269 
3270 /*!
3271  * Writes the CameraEventType \a value to the \a debug stream and returns a reference to the stream.
3272  *
3273  * \param debug Debug stream to write \a value to.
3274  * \param value Value to write to \a debug.
3275  *
3276  * \return a reference to the \a debug stream.
3277  */
3278 QDebug operator<<(QDebug debug, const CameraEventType value)
3279 {
3280  switch (value) {
3281  case CameraEventType::VideoStart : debug << "VideoStart"; break;
3282  case CameraEventType::VideoSplit : debug << "VideoSplit"; break;
3283  case CameraEventType::VideoEnd : debug << "VideoEnd"; break;
3284  case CameraEventType::PhotoTaken : debug << "PhotoTaken"; break;
3285  case CameraEventType::VideoSecondStreamStart : debug << "VideoSecondStreamStart"; break;
3286  case CameraEventType::VideoSecondStreamSplit : debug << "VideoSecondStreamSplit"; break;
3287  case CameraEventType::VideoSecondStreamEnd : debug << "VideoSecondStreamEnd"; break;
3288  case CameraEventType::VideoSplitStart : debug << "VideoSplitStart"; break;
3289  case CameraEventType::VideoSecondStreamSplitStart: debug << "VideoSecondStreamSplitStart"; break;
3290  case CameraEventType::VideoPause : debug << "VideoPause"; break;
3291  case CameraEventType::VideoSecondStreamPause : debug << "VideoSecondStreamPause"; break;
3292  case CameraEventType::VideoResume : debug << "VideoResume"; break;
3293  case CameraEventType::VideoSecondStreamResume : debug << "VideoSecondStreamResume"; break;
3294  default: debug << "unknown";
3295  }
3296  return debug;
3297 }
3298 
3299 /*!
3300  * Writes the SensorType \a value to the \a debug stream and returns a reference to the stream.
3301  *
3302  * \param debug Debug stream to write \a value to.
3303  * \param value Value to write to \a debug.
3304  *
3305  * \return a reference to the \a debug stream.
3306  */
3307 QDebug operator<<(QDebug debug, const SensorType value)
3308 {
3309  switch (value) {
3310  case SensorType::Accelerometer: debug << "Accelerometer"; break;
3311  case SensorType::Gyroscope : debug << "Gyroscope"; break;
3312  case SensorType::Compass : debug << "Compass"; break;
3313  case SensorType::Barometer : debug << "Barometer"; break;
3314  default: debug << "unknown";
3315  }
3316  return debug;
3317 }
3318 
3319 /*!
3320  * Writes the BikeLightNetworkConfigType \a value to the \a debug stream and returns a reference to the stream.
3321  *
3322  * \param debug Debug stream to write \a value to.
3323  * \param value Value to write to \a debug.
3324  *
3325  * \return a reference to the \a debug stream.
3326  */
3327 QDebug operator<<(QDebug debug, const BikeLightNetworkConfigType value)
3328 {
3329  switch (value) {
3330  case BikeLightNetworkConfigType::Auto : debug << "Auto"; break;
3331  case BikeLightNetworkConfigType::Individual : debug << "Individual"; break;
3332  case BikeLightNetworkConfigType::HighVisibility: debug << "HighVisibility"; break;
3333  case BikeLightNetworkConfigType::Trail : debug << "Trail"; break;
3334  default: debug << "unknown";
3335  }
3336  return debug;
3337 }
3338 
3339 /*!
3340  * Writes the CommTimeoutType \a value to the \a debug stream and returns a reference to the stream.
3341  *
3342  * \param debug Debug stream to write \a value to.
3343  * \param value Value to write to \a debug.
3344  *
3345  * \return a reference to the \a debug stream.
3346  */
3347 QDebug operator<<(QDebug debug, const CommTimeoutType value)
3348 {
3349  switch (value) {
3350  case CommTimeoutType::WildcardPairingTimeout: debug << "WildcardPairingTimeout"; break;
3351  case CommTimeoutType::PairingTimeout : debug << "PairingTimeout"; break;
3352  case CommTimeoutType::ConnectionLost : debug << "ConnectionLost"; break;
3353  case CommTimeoutType::ConnectionTimeout : debug << "ConnectionTimeout"; break;
3354  default: debug << "unknown";
3355  }
3356  return debug;
3357 }
3358 
3359 /*!
3360  * Writes the CameraOrientationType \a value to the \a debug stream and returns a reference to the stream.
3361  *
3362  * \param debug Debug stream to write \a value to.
3363  * \param value Value to write to \a debug.
3364  *
3365  * \return a reference to the \a debug stream.
3366  */
3367 QDebug operator<<(QDebug debug, const CameraOrientationType value)
3368 {
3369  switch (value) {
3370  case CameraOrientationType::CameraOrientation0 : debug << "CameraOrientation0"; break;
3371  case CameraOrientationType::CameraOrientation90 : debug << "CameraOrientation90"; break;
3372  case CameraOrientationType::CameraOrientation180: debug << "CameraOrientation180"; break;
3373  case CameraOrientationType::CameraOrientation270: debug << "CameraOrientation270"; break;
3374  default: debug << "unknown";
3375  }
3376  return debug;
3377 }
3378 
3379 /*!
3380  * Writes the AttitudeStage \a value to the \a debug stream and returns a reference to the stream.
3381  *
3382  * \param debug Debug stream to write \a value to.
3383  * \param value Value to write to \a debug.
3384  *
3385  * \return a reference to the \a debug stream.
3386  */
3387 QDebug operator<<(QDebug debug, const AttitudeStage value)
3388 {
3389  switch (value) {
3390  case AttitudeStage::Failed : debug << "Failed"; break;
3391  case AttitudeStage::Aligning: debug << "Aligning"; break;
3392  case AttitudeStage::Degraded: debug << "Degraded"; break;
3393  case AttitudeStage::Valid : debug << "Valid"; break;
3394  default: debug << "unknown";
3395  }
3396  return debug;
3397 }
3398 
3399 /*!
3400  * Writes the AttitudeValidity \a value to the \a debug stream and returns a reference to the stream.
3401  *
3402  * \param debug Debug stream to write \a value to.
3403  * \param value Value to write to \a debug.
3404  *
3405  * \return a reference to the \a debug stream.
3406  */
3407 QDebug operator<<(QDebug debug, const AttitudeValidity value)
3408 {
3409  switch (value) {
3410  case AttitudeValidity::TrackAngleHeadingValid: debug << "TrackAngleHeadingValid"; break;
3411  case AttitudeValidity::PitchValid : debug << "PitchValid"; break;
3412  case AttitudeValidity::RollValid : debug << "RollValid"; break;
3413  case AttitudeValidity::LateralBodyAccelValid : debug << "LateralBodyAccelValid"; break;
3414  case AttitudeValidity::NormalBodyAccelValid : debug << "NormalBodyAccelValid"; break;
3415  case AttitudeValidity::TurnRateValid : debug << "TurnRateValid"; break;
3416  case AttitudeValidity::HwFail : debug << "HwFail"; break;
3417  case AttitudeValidity::MagInvalid : debug << "MagInvalid"; break;
3418  case AttitudeValidity::NoGps : debug << "NoGps"; break;
3419  case AttitudeValidity::GpsInvalid : debug << "GpsInvalid"; break;
3420  case AttitudeValidity::SolutionCoasting : debug << "SolutionCoasting"; break;
3421  case AttitudeValidity::TrueTrackAngle : debug << "TrueTrackAngle"; break;
3422  case AttitudeValidity::MagneticHeading : debug << "MagneticHeading"; break;
3423  default: debug << "unknown";
3424  }
3425  return debug;
3426 }
3427 
3428 /*!
3429  * Writes the AutoSyncFrequency \a value to the \a debug stream and returns a reference to the stream.
3430  *
3431  * \param debug Debug stream to write \a value to.
3432  * \param value Value to write to \a debug.
3433  *
3434  * \return a reference to the \a debug stream.
3435  */
3436 QDebug operator<<(QDebug debug, const AutoSyncFrequency value)
3437 {
3438  switch (value) {
3439  case AutoSyncFrequency::Never : debug << "Never"; break;
3440  case AutoSyncFrequency::Occasionally: debug << "Occasionally"; break;
3441  case AutoSyncFrequency::Frequent : debug << "Frequent"; break;
3442  case AutoSyncFrequency::OnceADay : debug << "OnceADay"; break;
3443  case AutoSyncFrequency::Remote : debug << "Remote"; break;
3444  default: debug << "unknown";
3445  }
3446  return debug;
3447 }
3448 
3449 /*!
3450  * Writes the ExdLayout \a value to the \a debug stream and returns a reference to the stream.
3451  *
3452  * \param debug Debug stream to write \a value to.
3453  * \param value Value to write to \a debug.
3454  *
3455  * \return a reference to the \a debug stream.
3456  */
3457 QDebug operator<<(QDebug debug, const ExdLayout value)
3458 {
3459  switch (value) {
3460  case ExdLayout::FullScreen : debug << "FullScreen"; break;
3461  case ExdLayout::HalfVertical : debug << "HalfVertical"; break;
3462  case ExdLayout::HalfHorizontal : debug << "HalfHorizontal"; break;
3463  case ExdLayout::HalfVerticalRightSplit : debug << "HalfVerticalRightSplit"; break;
3464  case ExdLayout::HalfHorizontalBottomSplit: debug << "HalfHorizontalBottomSplit"; break;
3465  case ExdLayout::FullQuarterSplit : debug << "FullQuarterSplit"; break;
3466  case ExdLayout::HalfVerticalLeftSplit : debug << "HalfVerticalLeftSplit"; break;
3467  case ExdLayout::HalfHorizontalTopSplit : debug << "HalfHorizontalTopSplit"; break;
3468  case ExdLayout::Dynamic : debug << "Dynamic"; break;
3469  default: debug << "unknown";
3470  }
3471  return debug;
3472 }
3473 
3474 /*!
3475  * Writes the ExdDisplayType \a value to the \a debug stream and returns a reference to the stream.
3476  *
3477  * \param debug Debug stream to write \a value to.
3478  * \param value Value to write to \a debug.
3479  *
3480  * \return a reference to the \a debug stream.
3481  */
3482 QDebug operator<<(QDebug debug, const ExdDisplayType value)
3483 {
3484  switch (value) {
3485  case ExdDisplayType::Numerical : debug << "Numerical"; break;
3486  case ExdDisplayType::Simple : debug << "Simple"; break;
3487  case ExdDisplayType::Graph : debug << "Graph"; break;
3488  case ExdDisplayType::Bar : debug << "Bar"; break;
3489  case ExdDisplayType::CircleGraph : debug << "CircleGraph"; break;
3490  case ExdDisplayType::VirtualPartner : debug << "VirtualPartner"; break;
3491  case ExdDisplayType::Balance : debug << "Balance"; break;
3492  case ExdDisplayType::StringList : debug << "StringList"; break;
3493  case ExdDisplayType::String : debug << "String"; break;
3494  case ExdDisplayType::SimpleDynamicIcon: debug << "SimpleDynamicIcon"; break;
3495  case ExdDisplayType::Gauge : debug << "Gauge"; break;
3496  default: debug << "unknown";
3497  }
3498  return debug;
3499 }
3500 
3501 /*!
3502  * Writes the ExdDataUnits \a value to the \a debug stream and returns a reference to the stream.
3503  *
3504  * \param debug Debug stream to write \a value to.
3505  * \param value Value to write to \a debug.
3506  *
3507  * \return a reference to the \a debug stream.
3508  */
3509 QDebug operator<<(QDebug debug, const ExdDataUnits value)
3510 {
3511  switch (value) {
3512  case ExdDataUnits::NoUnits : debug << "NoUnits"; break;
3513  case ExdDataUnits::Laps : debug << "Laps"; break;
3514  case ExdDataUnits::MilesPerHour : debug << "MilesPerHour"; break;
3515  case ExdDataUnits::KilometersPerHour : debug << "KilometersPerHour"; break;
3516  case ExdDataUnits::FeetPerHour : debug << "FeetPerHour"; break;
3517  case ExdDataUnits::MetersPerHour : debug << "MetersPerHour"; break;
3518  case ExdDataUnits::DegreesCelsius : debug << "DegreesCelsius"; break;
3519  case ExdDataUnits::DegreesFarenheit : debug << "DegreesFarenheit"; break;
3520  case ExdDataUnits::Zone : debug << "Zone"; break;
3521  case ExdDataUnits::Gear : debug << "Gear"; break;
3522  case ExdDataUnits::Rpm : debug << "Rpm"; break;
3523  case ExdDataUnits::Bpm : debug << "Bpm"; break;
3524  case ExdDataUnits::Degrees : debug << "Degrees"; break;
3525  case ExdDataUnits::Millimeters : debug << "Millimeters"; break;
3526  case ExdDataUnits::Meters : debug << "Meters"; break;
3527  case ExdDataUnits::Kilometers : debug << "Kilometers"; break;
3528  case ExdDataUnits::Feet : debug << "Feet"; break;
3529  case ExdDataUnits::Yards : debug << "Yards"; break;
3530  case ExdDataUnits::Kilofeet : debug << "Kilofeet"; break;
3531  case ExdDataUnits::Miles : debug << "Miles"; break;
3532  case ExdDataUnits::Time : debug << "Time"; break;
3533  case ExdDataUnits::EnumTurnType : debug << "EnumTurnType"; break;
3534  case ExdDataUnits::Percent : debug << "Percent"; break;
3535  case ExdDataUnits::Watts : debug << "Watts"; break;
3536  case ExdDataUnits::WattsPerKilogram : debug << "WattsPerKilogram"; break;
3537  case ExdDataUnits::EnumBatteryStatus : debug << "EnumBatteryStatus"; break;
3538  case ExdDataUnits::EnumBikeLightBeamAngleMode : debug << "EnumBikeLightBeamAngleMode"; break;
3539  case ExdDataUnits::EnumBikeLightBatteryStatus : debug << "EnumBikeLightBatteryStatus"; break;
3540  case ExdDataUnits::EnumBikeLightNetworkConfigType: debug << "EnumBikeLightNetworkConfigType"; break;
3541  case ExdDataUnits::Lights : debug << "Lights"; break;
3542  case ExdDataUnits::Seconds : debug << "Seconds"; break;
3543  case ExdDataUnits::Minutes : debug << "Minutes"; break;
3544  case ExdDataUnits::Hours : debug << "Hours"; break;
3545  case ExdDataUnits::Calories : debug << "Calories"; break;
3546  case ExdDataUnits::Kilojoules : debug << "Kilojoules"; break;
3547  case ExdDataUnits::Milliseconds : debug << "Milliseconds"; break;
3548  case ExdDataUnits::SecondPerMile : debug << "SecondPerMile"; break;
3549  case ExdDataUnits::SecondPerKilometer : debug << "SecondPerKilometer"; break;
3550  case ExdDataUnits::Centimeter : debug << "Centimeter"; break;
3551  case ExdDataUnits::EnumCoursePoint : debug << "EnumCoursePoint"; break;
3552  case ExdDataUnits::Bradians : debug << "Bradians"; break;
3553  case ExdDataUnits::EnumSport : debug << "EnumSport"; break;
3554  case ExdDataUnits::InchesHg : debug << "InchesHg"; break;
3555  case ExdDataUnits::MmHg : debug << "MmHg"; break;
3556  case ExdDataUnits::Mbars : debug << "Mbars"; break;
3557  case ExdDataUnits::HectoPascals : debug << "HectoPascals"; break;
3558  case ExdDataUnits::FeetPerMin : debug << "FeetPerMin"; break;
3559  case ExdDataUnits::MetersPerMin : debug << "MetersPerMin"; break;
3560  case ExdDataUnits::MetersPerSec : debug << "MetersPerSec"; break;
3561  case ExdDataUnits::EightCardinal : debug << "EightCardinal"; break;
3562  default: debug << "unknown";
3563  }
3564  return debug;
3565 }
3566 
3567 /*!
3568  * Writes the ExdQualifiers \a value to the \a debug stream and returns a reference to the stream.
3569  *
3570  * \param debug Debug stream to write \a value to.
3571  * \param value Value to write to \a debug.
3572  *
3573  * \return a reference to the \a debug stream.
3574  */
3575 QDebug operator<<(QDebug debug, const ExdQualifiers value)
3576 {
3577  switch (value) {
3578  case ExdQualifiers::NoQualifier : debug << "NoQualifier"; break;
3579  case ExdQualifiers::Instantaneous : debug << "Instantaneous"; break;
3580  case ExdQualifiers::Average : debug << "Average"; break;
3581  case ExdQualifiers::Lap : debug << "Lap"; break;
3582  case ExdQualifiers::Maximum : debug << "Maximum"; break;
3583  case ExdQualifiers::MaximumAverage : debug << "MaximumAverage"; break;
3584  case ExdQualifiers::MaximumLap : debug << "MaximumLap"; break;
3585  case ExdQualifiers::LastLap : debug << "LastLap"; break;
3586  case ExdQualifiers::AverageLap : debug << "AverageLap"; break;
3587  case ExdQualifiers::ToDestination : debug << "ToDestination"; break;
3588  case ExdQualifiers::ToGo : debug << "ToGo"; break;
3589  case ExdQualifiers::ToNext : debug << "ToNext"; break;
3590  case ExdQualifiers::NextCoursePoint : debug << "NextCoursePoint"; break;
3591  case ExdQualifiers::Total : debug << "Total"; break;
3592  case ExdQualifiers::ThreeSecondAverage : debug << "ThreeSecondAverage"; break;
3593  case ExdQualifiers::TenSecondAverage : debug << "TenSecondAverage"; break;
3594  case ExdQualifiers::ThirtySecondAverage : debug << "ThirtySecondAverage"; break;
3595  case ExdQualifiers::PercentMaximum : debug << "PercentMaximum"; break;
3596  case ExdQualifiers::PercentMaximumAverage : debug << "PercentMaximumAverage"; break;
3597  case ExdQualifiers::LapPercentMaximum : debug << "LapPercentMaximum"; break;
3598  case ExdQualifiers::Elapsed : debug << "Elapsed"; break;
3599  case ExdQualifiers::Sunrise : debug << "Sunrise"; break;
3600  case ExdQualifiers::Sunset : debug << "Sunset"; break;
3601  case ExdQualifiers::ComparedToVirtualPartner: debug << "ComparedToVirtualPartner"; break;
3602  case ExdQualifiers::Maximum24h : debug << "Maximum24h"; break;
3603  case ExdQualifiers::Minimum24h : debug << "Minimum24h"; break;
3604  case ExdQualifiers::Minimum : debug << "Minimum"; break;
3605  case ExdQualifiers::First : debug << "First"; break;
3606  case ExdQualifiers::Second : debug << "Second"; break;
3607  case ExdQualifiers::Third : debug << "Third"; break;
3608  case ExdQualifiers::Shifter : debug << "Shifter"; break;
3609  case ExdQualifiers::LastSport : debug << "LastSport"; break;
3610  case ExdQualifiers::Moving : debug << "Moving"; break;
3611  case ExdQualifiers::Stopped : debug << "Stopped"; break;
3612  case ExdQualifiers::EstimatedTotal : debug << "EstimatedTotal"; break;
3613  case ExdQualifiers::Zone9 : debug << "Zone9"; break;
3614  case ExdQualifiers::Zone8 : debug << "Zone8"; break;
3615  case ExdQualifiers::Zone7 : debug << "Zone7"; break;
3616  case ExdQualifiers::Zone6 : debug << "Zone6"; break;
3617  case ExdQualifiers::Zone5 : debug << "Zone5"; break;
3618  case ExdQualifiers::Zone4 : debug << "Zone4"; break;
3619  case ExdQualifiers::Zone3 : debug << "Zone3"; break;
3620  case ExdQualifiers::Zone2 : debug << "Zone2"; break;
3621  case ExdQualifiers::Zone1 : debug << "Zone1"; break;
3622  default: debug << "unknown";
3623  }
3624  return debug;
3625 }
3626 
3627 /*!
3628  * Writes the ExdDescriptors \a value to the \a debug stream and returns a reference to the stream.
3629  *
3630  * \param debug Debug stream to write \a value to.
3631  * \param value Value to write to \a debug.
3632  *
3633  * \return a reference to the \a debug stream.
3634  */
3635 QDebug operator<<(QDebug debug, const ExdDescriptors value)
3636 {
3637  switch (value) {
3638  case ExdDescriptors::BikeLightBatteryStatus : debug << "BikeLightBatteryStatus"; break;
3639  case ExdDescriptors::BeamAngleStatus : debug << "BeamAngleStatus"; break;
3640  case ExdDescriptors::BateryLevel : debug << "BateryLevel"; break;
3641  case ExdDescriptors::LightNetworkMode : debug << "LightNetworkMode"; break;
3642  case ExdDescriptors::NumberLightsConnected : debug << "NumberLightsConnected"; break;
3643  case ExdDescriptors::Cadence : debug << "Cadence"; break;
3644  case ExdDescriptors::Distance : debug << "Distance"; break;
3645  case ExdDescriptors::EstimatedTimeOfArrival : debug << "EstimatedTimeOfArrival"; break;
3646  case ExdDescriptors::Heading : debug << "Heading"; break;
3647  case ExdDescriptors::Time : debug << "Time"; break;
3648  case ExdDescriptors::BatteryLevel : debug << "BatteryLevel"; break;
3649  case ExdDescriptors::TrainerResistance : debug << "TrainerResistance"; break;
3650  case ExdDescriptors::TrainerTargetPower : debug << "TrainerTargetPower"; break;
3651  case ExdDescriptors::TimeSeated : debug << "TimeSeated"; break;
3652  case ExdDescriptors::TimeStanding : debug << "TimeStanding"; break;
3653  case ExdDescriptors::Elevation : debug << "Elevation"; break;
3654  case ExdDescriptors::Grade : debug << "Grade"; break;
3655  case ExdDescriptors::Ascent : debug << "Ascent"; break;
3656  case ExdDescriptors::Descent : debug << "Descent"; break;
3657  case ExdDescriptors::VerticalSpeed : debug << "VerticalSpeed"; break;
3658  case ExdDescriptors::Di2BatteryLevel : debug << "Di2BatteryLevel"; break;
3659  case ExdDescriptors::FrontGear : debug << "FrontGear"; break;
3660  case ExdDescriptors::RearGear : debug << "RearGear"; break;
3661  case ExdDescriptors::GearRatio : debug << "GearRatio"; break;
3662  case ExdDescriptors::HeartRate : debug << "HeartRate"; break;
3663  case ExdDescriptors::HeartRateZone : debug << "HeartRateZone"; break;
3664  case ExdDescriptors::TimeInHeartRateZone : debug << "TimeInHeartRateZone"; break;
3665  case ExdDescriptors::HeartRateReserve : debug << "HeartRateReserve"; break;
3666  case ExdDescriptors::Calories : debug << "Calories"; break;
3667  case ExdDescriptors::GpsAccuracy : debug << "GpsAccuracy"; break;
3668  case ExdDescriptors::GpsSignalStrength : debug << "GpsSignalStrength"; break;
3669  case ExdDescriptors::Temperature : debug << "Temperature"; break;
3670  case ExdDescriptors::TimeOfDay : debug << "TimeOfDay"; break;
3671  case ExdDescriptors::Balance : debug << "Balance"; break;
3672  case ExdDescriptors::PedalSmoothness : debug << "PedalSmoothness"; break;
3673  case ExdDescriptors::Power : debug << "Power"; break;
3674  case ExdDescriptors::FunctionalThresholdPower : debug << "FunctionalThresholdPower"; break;
3675  case ExdDescriptors::IntensityFactor : debug << "IntensityFactor"; break;
3676  case ExdDescriptors::Work : debug << "Work"; break;
3677  case ExdDescriptors::PowerRatio : debug << "PowerRatio"; break;
3678  case ExdDescriptors::NormalizedPower : debug << "NormalizedPower"; break;
3679  case ExdDescriptors::TrainingStressScore : debug << "TrainingStressScore"; break;
3680  case ExdDescriptors::TimeOnZone : debug << "TimeOnZone"; break;
3681  case ExdDescriptors::Speed : debug << "Speed"; break;
3682  case ExdDescriptors::Laps : debug << "Laps"; break;
3683  case ExdDescriptors::Reps : debug << "Reps"; break;
3684  case ExdDescriptors::WorkoutStep : debug << "WorkoutStep"; break;
3685  case ExdDescriptors::CourseDistance : debug << "CourseDistance"; break;
3686  case ExdDescriptors::NavigationDistance : debug << "NavigationDistance"; break;
3687  case ExdDescriptors::CourseEstimatedTimeOfArrival : debug << "CourseEstimatedTimeOfArrival"; break;
3688  case ExdDescriptors::NavigationEstimatedTimeOfArrival: debug << "NavigationEstimatedTimeOfArrival"; break;
3689  case ExdDescriptors::CourseTime : debug << "CourseTime"; break;
3690  case ExdDescriptors::NavigationTime : debug << "NavigationTime"; break;
3691  case ExdDescriptors::CourseHeading : debug << "CourseHeading"; break;
3692  case ExdDescriptors::NavigationHeading : debug << "NavigationHeading"; break;
3693  case ExdDescriptors::PowerZone : debug << "PowerZone"; break;
3694  case ExdDescriptors::TorqueEffectiveness : debug << "TorqueEffectiveness"; break;
3695  case ExdDescriptors::TimerTime : debug << "TimerTime"; break;
3696  case ExdDescriptors::PowerWeightRatio : debug << "PowerWeightRatio"; break;
3697  case ExdDescriptors::LeftPlatformCenterOffset : debug << "LeftPlatformCenterOffset"; break;
3698  case ExdDescriptors::RightPlatformCenterOffset : debug << "RightPlatformCenterOffset"; break;
3699  case ExdDescriptors::LeftPowerPhaseStartAngle : debug << "LeftPowerPhaseStartAngle"; break;
3700  case ExdDescriptors::RightPowerPhaseStartAngle : debug << "RightPowerPhaseStartAngle"; break;
3701  case ExdDescriptors::LeftPowerPhaseFinishAngle : debug << "LeftPowerPhaseFinishAngle"; break;
3702  case ExdDescriptors::RightPowerPhaseFinishAngle : debug << "RightPowerPhaseFinishAngle"; break;
3703  case ExdDescriptors::Gears : debug << "Gears"; break;
3704  case ExdDescriptors::Pace : debug << "Pace"; break;
3705  case ExdDescriptors::TrainingEffect : debug << "TrainingEffect"; break;
3706  case ExdDescriptors::VerticalOscillation : debug << "VerticalOscillation"; break;
3707  case ExdDescriptors::VerticalRatio : debug << "VerticalRatio"; break;
3708  case ExdDescriptors::GroundContactTime : debug << "GroundContactTime"; break;
3709  case ExdDescriptors::LeftGroundContactTimeBalance : debug << "LeftGroundContactTimeBalance"; break;
3710  case ExdDescriptors::RightGroundContactTimeBalance : debug << "RightGroundContactTimeBalance"; break;
3711  case ExdDescriptors::StrideLength : debug << "StrideLength"; break;
3712  case ExdDescriptors::RunningCadence : debug << "RunningCadence"; break;
3713  case ExdDescriptors::PerformanceCondition : debug << "PerformanceCondition"; break;
3714  case ExdDescriptors::CourseType : debug << "CourseType"; break;
3715  case ExdDescriptors::TimeInPowerZone : debug << "TimeInPowerZone"; break;
3716  case ExdDescriptors::NavigationTurn : debug << "NavigationTurn"; break;
3717  case ExdDescriptors::CourseLocation : debug << "CourseLocation"; break;
3718  case ExdDescriptors::NavigationLocation : debug << "NavigationLocation"; break;
3719  case ExdDescriptors::Compass : debug << "Compass"; break;
3720  case ExdDescriptors::GearCombo : debug << "GearCombo"; break;
3721  case ExdDescriptors::MuscleOxygen : debug << "MuscleOxygen"; break;
3722  case ExdDescriptors::Icon : debug << "Icon"; break;
3723  case ExdDescriptors::CompassHeading : debug << "CompassHeading"; break;
3724  case ExdDescriptors::GpsHeading : debug << "GpsHeading"; break;
3725  case ExdDescriptors::GpsElevation : debug << "GpsElevation"; break;
3726  case ExdDescriptors::AnaerobicTrainingEffect : debug << "AnaerobicTrainingEffect"; break;
3727  case ExdDescriptors::Course : debug << "Course"; break;
3728  case ExdDescriptors::OffCourse : debug << "OffCourse"; break;
3729  case ExdDescriptors::GlideRatio : debug << "GlideRatio"; break;
3730  case ExdDescriptors::VerticalDistance : debug << "VerticalDistance"; break;
3731  case ExdDescriptors::Vmg : debug << "Vmg"; break;
3732  case ExdDescriptors::AmbientPressure : debug << "AmbientPressure"; break;
3733  case ExdDescriptors::Pressure : debug << "Pressure"; break;
3734  case ExdDescriptors::Vam : debug << "Vam"; break;
3735  default: debug << "unknown";
3736  }
3737  return debug;
3738 }
3739 
3740 /*!
3741  * Writes the AutoActivityDetect \a value to the \a debug stream and returns a reference to the stream.
3742  *
3743  * \param debug Debug stream to write \a value to.
3744  * \param value Value to write to \a debug.
3745  *
3746  * \return a reference to the \a debug stream.
3747  */
3748 QDebug operator<<(QDebug debug, const AutoActivityDetect value)
3749 {
3750  switch (value) {
3751  case AutoActivityDetect::None : debug << "None"; break;
3752  case AutoActivityDetect::Running : debug << "Running"; break;
3753  case AutoActivityDetect::Cycling : debug << "Cycling"; break;
3754  case AutoActivityDetect::Swimming : debug << "Swimming"; break;
3755  case AutoActivityDetect::Walking : debug << "Walking"; break;
3756  case AutoActivityDetect::Elliptical: debug << "Elliptical"; break;
3757  case AutoActivityDetect::Sedentary : debug << "Sedentary"; break;
3758  default: debug << "unknown";
3759  }
3760  return debug;
3761 }
3762 
3763 /*!
3764  * Writes the SupportedExdScreenLayouts \a value to the \a debug stream and returns a reference to the stream.
3765  *
3766  * \param debug Debug stream to write \a value to.
3767  * \param value Value to write to \a debug.
3768  *
3769  * \return a reference to the \a debug stream.
3770  */
3771 QDebug operator<<(QDebug debug, const SupportedExdScreenLayouts value)
3772 {
3773  switch (value) {
3774  case SupportedExdScreenLayouts::FullScreen : debug << "FullScreen"; break;
3775  case SupportedExdScreenLayouts::HalfVertical : debug << "HalfVertical"; break;
3776  case SupportedExdScreenLayouts::HalfHorizontal : debug << "HalfHorizontal"; break;
3777  case SupportedExdScreenLayouts::HalfVerticalRightSplit : debug << "HalfVerticalRightSplit"; break;
3778  case SupportedExdScreenLayouts::HalfHorizontalBottomSplit: debug << "HalfHorizontalBottomSplit"; break;
3779  case SupportedExdScreenLayouts::FullQuarterSplit : debug << "FullQuarterSplit"; break;
3780  case SupportedExdScreenLayouts::HalfVerticalLeftSplit : debug << "HalfVerticalLeftSplit"; break;
3781  case SupportedExdScreenLayouts::HalfHorizontalTopSplit : debug << "HalfHorizontalTopSplit"; break;
3782  default: debug << "unknown";
3783  }
3784  return debug;
3785 }
3786 
3787 /*!
3788  * Writes the FitBaseType \a value to the \a debug stream and returns a reference to the stream.
3789  *
3790  * \param debug Debug stream to write \a value to.
3791  * \param value Value to write to \a debug.
3792  *
3793  * \return a reference to the \a debug stream.
3794  */
3795 QDebug operator<<(QDebug debug, const FitBaseType value)
3796 {
3797  switch (value) {
3798  case FitBaseType::Enum : debug << "Enum"; break;
3799  case FitBaseType::Sint8 : debug << "Sint8"; break;
3800  case FitBaseType::Uint8 : debug << "Uint8"; break;
3801  case FitBaseType::Sint16 : debug << "Sint16"; break;
3802  case FitBaseType::Uint16 : debug << "Uint16"; break;
3803  case FitBaseType::Sint32 : debug << "Sint32"; break;
3804  case FitBaseType::Uint32 : debug << "Uint32"; break;
3805  case FitBaseType::String : debug << "String"; break;
3806  case FitBaseType::Float32: debug << "Float32"; break;
3807  case FitBaseType::Float64: debug << "Float64"; break;
3808  case FitBaseType::Uint8z : debug << "Uint8z"; break;
3809  case FitBaseType::Uint16z: debug << "Uint16z"; break;
3810  case FitBaseType::Uint32z: debug << "Uint32z"; break;
3811  case FitBaseType::Byte : debug << "Byte"; break;
3812  case FitBaseType::Sint64 : debug << "Sint64"; break;
3813  case FitBaseType::Uint64 : debug << "Uint64"; break;
3814  case FitBaseType::Uint64z: debug << "Uint64z"; break;
3815  default: debug << "unknown";
3816  }
3817  return debug;
3818 }
3819 
3820 /*!
3821  * Writes the TurnType \a value to the \a debug stream and returns a reference to the stream.
3822  *
3823  * \param debug Debug stream to write \a value to.
3824  * \param value Value to write to \a debug.
3825  *
3826  * \return a reference to the \a debug stream.
3827  */
3828 QDebug operator<<(QDebug debug, const TurnType value)
3829 {
3830  switch (value) {
3831  case TurnType::ArrivingIdx : debug << "ArrivingIdx"; break;
3832  case TurnType::ArrivingLeftIdx : debug << "ArrivingLeftIdx"; break;
3833  case TurnType::ArrivingRightIdx : debug << "ArrivingRightIdx"; break;
3834  case TurnType::ArrivingViaIdx : debug << "ArrivingViaIdx"; break;
3835  case TurnType::ArrivingViaLeftIdx : debug << "ArrivingViaLeftIdx"; break;
3836  case TurnType::ArrivingViaRightIdx : debug << "ArrivingViaRightIdx"; break;
3837  case TurnType::BearKeepLeftIdx : debug << "BearKeepLeftIdx"; break;
3838  case TurnType::BearKeepRightIdx : debug << "BearKeepRightIdx"; break;
3839  case TurnType::ContinueIdx : debug << "ContinueIdx"; break;
3840  case TurnType::ExitLeftIdx : debug << "ExitLeftIdx"; break;
3841  case TurnType::ExitRightIdx : debug << "ExitRightIdx"; break;
3842  case TurnType::FerryIdx : debug << "FerryIdx"; break;
3843  case TurnType::Roundabout45Idx : debug << "Roundabout45Idx"; break;
3844  case TurnType::Roundabout90Idx : debug << "Roundabout90Idx"; break;
3845  case TurnType::Roundabout135Idx : debug << "Roundabout135Idx"; break;
3846  case TurnType::Roundabout180Idx : debug << "Roundabout180Idx"; break;
3847  case TurnType::Roundabout225Idx : debug << "Roundabout225Idx"; break;
3848  case TurnType::Roundabout270Idx : debug << "Roundabout270Idx"; break;
3849  case TurnType::Roundabout315Idx : debug << "Roundabout315Idx"; break;
3850  case TurnType::Roundabout360Idx : debug << "Roundabout360Idx"; break;
3851  case TurnType::RoundaboutNeg45Idx : debug << "RoundaboutNeg45Idx"; break;
3852  case TurnType::RoundaboutNeg90Idx : debug << "RoundaboutNeg90Idx"; break;
3853  case TurnType::RoundaboutNeg135Idx : debug << "RoundaboutNeg135Idx"; break;
3854  case TurnType::RoundaboutNeg180Idx : debug << "RoundaboutNeg180Idx"; break;
3855  case TurnType::RoundaboutNeg225Idx : debug << "RoundaboutNeg225Idx"; break;
3856  case TurnType::RoundaboutNeg270Idx : debug << "RoundaboutNeg270Idx"; break;
3857  case TurnType::RoundaboutNeg315Idx : debug << "RoundaboutNeg315Idx"; break;
3858  case TurnType::RoundaboutNeg360Idx : debug << "RoundaboutNeg360Idx"; break;
3859  case TurnType::RoundaboutGenericIdx : debug << "RoundaboutGenericIdx"; break;
3860  case TurnType::RoundaboutNegGenericIdx: debug << "RoundaboutNegGenericIdx"; break;
3861  case TurnType::SharpTurnLeftIdx : debug << "SharpTurnLeftIdx"; break;
3862  case TurnType::SharpTurnRightIdx : debug << "SharpTurnRightIdx"; break;
3863  case TurnType::TurnLeftIdx : debug << "TurnLeftIdx"; break;
3864  case TurnType::TurnRightIdx : debug << "TurnRightIdx"; break;
3865  case TurnType::UturnLeftIdx : debug << "UturnLeftIdx"; break;
3866  case TurnType::UturnRightIdx : debug << "UturnRightIdx"; break;
3867  case TurnType::IconInvIdx : debug << "IconInvIdx"; break;
3868  case TurnType::IconIdxCnt : debug << "IconIdxCnt"; break;
3869  default: debug << "unknown";
3870  }
3871  return debug;
3872 }
3873 
3874 /*!
3875  * Writes the BikeLightBeamAngleMode \a value to the \a debug stream and returns a reference to the stream.
3876  *
3877  * \param debug Debug stream to write \a value to.
3878  * \param value Value to write to \a debug.
3879  *
3880  * \return a reference to the \a debug stream.
3881  */
3882 QDebug operator<<(QDebug debug, const BikeLightBeamAngleMode value)
3883 {
3884  switch (value) {
3885  case BikeLightBeamAngleMode::Manual: debug << "Manual"; break;
3886  case BikeLightBeamAngleMode::Auto : debug << "Auto"; break;
3887  default: debug << "unknown";
3888  }
3889  return debug;
3890 }
3891 
3892 /*!
3893  * Writes the FitBaseUnit \a value to the \a debug stream and returns a reference to the stream.
3894  *
3895  * \param debug Debug stream to write \a value to.
3896  * \param value Value to write to \a debug.
3897  *
3898  * \return a reference to the \a debug stream.
3899  */
3900 QDebug operator<<(QDebug debug, const FitBaseUnit value)
3901 {
3902  switch (value) {
3903  case FitBaseUnit::Other : debug << "Other"; break;
3904  case FitBaseUnit::Kilogram: debug << "Kilogram"; break;
3905  case FitBaseUnit::Pound : debug << "Pound"; break;
3906  default: debug << "unknown";
3907  }
3908  return debug;
3909 }
3910 
3911 /*!
3912  * Writes the SetType \a value to the \a debug stream and returns a reference to the stream.
3913  *
3914  * \param debug Debug stream to write \a value to.
3915  * \param value Value to write to \a debug.
3916  *
3917  * \return a reference to the \a debug stream.
3918  */
3919 QDebug operator<<(QDebug debug, const SetType value)
3920 {
3921  switch (value) {
3922  case SetType::Rest : debug << "Rest"; break;
3923  case SetType::Active: debug << "Active"; break;
3924  default: debug << "unknown";
3925  }
3926  return debug;
3927 }
3928 
3929 /*!
3930  * Writes the ExerciseCategory \a value to the \a debug stream and returns a reference to the stream.
3931  *
3932  * \param debug Debug stream to write \a value to.
3933  * \param value Value to write to \a debug.
3934  *
3935  * \return a reference to the \a debug stream.
3936  */
3937 QDebug operator<<(QDebug debug, const ExerciseCategory value)
3938 {
3939  switch (value) {
3940  case ExerciseCategory::BenchPress : debug << "BenchPress"; break;
3941  case ExerciseCategory::CalfRaise : debug << "CalfRaise"; break;
3942  case ExerciseCategory::Cardio : debug << "Cardio"; break;
3943  case ExerciseCategory::Carry : debug << "Carry"; break;
3944  case ExerciseCategory::Chop : debug << "Chop"; break;
3945  case ExerciseCategory::Core : debug << "Core"; break;
3946  case ExerciseCategory::Crunch : debug << "Crunch"; break;
3947  case ExerciseCategory::Curl : debug << "Curl"; break;
3948  case ExerciseCategory::Deadlift : debug << "Deadlift"; break;
3949  case ExerciseCategory::Flye : debug << "Flye"; break;
3950  case ExerciseCategory::HipRaise : debug << "HipRaise"; break;
3951  case ExerciseCategory::HipStability : debug << "HipStability"; break;
3952  case ExerciseCategory::HipSwing : debug << "HipSwing"; break;
3953  case ExerciseCategory::Hyperextension : debug << "Hyperextension"; break;
3954  case ExerciseCategory::LateralRaise : debug << "LateralRaise"; break;
3955  case ExerciseCategory::LegCurl : debug << "LegCurl"; break;
3956  case ExerciseCategory::LegRaise : debug << "LegRaise"; break;
3957  case ExerciseCategory::Lunge : debug << "Lunge"; break;
3958  case ExerciseCategory::OlympicLift : debug << "OlympicLift"; break;
3959  case ExerciseCategory::Plank : debug << "Plank"; break;
3960  case ExerciseCategory::Plyo : debug << "Plyo"; break;
3961  case ExerciseCategory::PullUp : debug << "PullUp"; break;
3962  case ExerciseCategory::PushUp : debug << "PushUp"; break;
3963  case ExerciseCategory::Row : debug << "Row"; break;
3964  case ExerciseCategory::ShoulderPress : debug << "ShoulderPress"; break;
3965  case ExerciseCategory::ShoulderStability: debug << "ShoulderStability"; break;
3966  case ExerciseCategory::Shrug : debug << "Shrug"; break;
3967  case ExerciseCategory::SitUp : debug << "SitUp"; break;
3968  case ExerciseCategory::Squat : debug << "Squat"; break;
3969  case ExerciseCategory::TotalBody : debug << "TotalBody"; break;
3970  case ExerciseCategory::TricepsExtension : debug << "TricepsExtension"; break;
3971  case ExerciseCategory::WarmUp : debug << "WarmUp"; break;
3972  case ExerciseCategory::Run : debug << "Run"; break;
3973  case ExerciseCategory::Unknown : debug << "Unknown"; break;
3974  default: debug << "unknown";
3975  }
3976  return debug;
3977 }
3978 
3979 /*!
3980  * Writes the BenchPressExerciseName \a value to the \a debug stream and returns a reference to the stream.
3981  *
3982  * \param debug Debug stream to write \a value to.
3983  * \param value Value to write to \a debug.
3984  *
3985  * \return a reference to the \a debug stream.
3986  */
3987 QDebug operator<<(QDebug debug, const BenchPressExerciseName value)
3988 {
3989  switch (value) {
3990  case BenchPressExerciseName::AlternatingDumbbellChestPressOnSwissBall: debug << "AlternatingDumbbellChestPressOnSwissBall"; break;
3991  case BenchPressExerciseName::BarbellBenchPress : debug << "BarbellBenchPress"; break;
3992  case BenchPressExerciseName::BarbellBoardBenchPress : debug << "BarbellBoardBenchPress"; break;
3993  case BenchPressExerciseName::BarbellFloorPress : debug << "BarbellFloorPress"; break;
3994  case BenchPressExerciseName::CloseGripBarbellBenchPress : debug << "CloseGripBarbellBenchPress"; break;
3995  case BenchPressExerciseName::DeclineDumbbellBenchPress : debug << "DeclineDumbbellBenchPress"; break;
3996  case BenchPressExerciseName::DumbbellBenchPress : debug << "DumbbellBenchPress"; break;
3997  case BenchPressExerciseName::DumbbellFloorPress : debug << "DumbbellFloorPress"; break;
3998  case BenchPressExerciseName::InclineBarbellBenchPress : debug << "InclineBarbellBenchPress"; break;
3999  case BenchPressExerciseName::InclineDumbbellBenchPress : debug << "InclineDumbbellBenchPress"; break;
4000  case BenchPressExerciseName::InclineSmithMachineBenchPress : debug << "InclineSmithMachineBenchPress"; break;
4001  case BenchPressExerciseName::IsometricBarbellBenchPress : debug << "IsometricBarbellBenchPress"; break;
4002  case BenchPressExerciseName::KettlebellChestPress : debug << "KettlebellChestPress"; break;
4003  case BenchPressExerciseName::NeutralGripDumbbellBenchPress : debug << "NeutralGripDumbbellBenchPress"; break;
4004  case BenchPressExerciseName::NeutralGripDumbbellInclineBenchPress : debug << "NeutralGripDumbbellInclineBenchPress"; break;
4005  case BenchPressExerciseName::OneArmFloorPress : debug << "OneArmFloorPress"; break;
4006  case BenchPressExerciseName::WeightedOneArmFloorPress : debug << "WeightedOneArmFloorPress"; break;
4007  case BenchPressExerciseName::PartialLockout : debug << "PartialLockout"; break;
4008  case BenchPressExerciseName::ReverseGripBarbellBenchPress : debug << "ReverseGripBarbellBenchPress"; break;
4009  case BenchPressExerciseName::ReverseGripInclineBenchPress : debug << "ReverseGripInclineBenchPress"; break;
4010  case BenchPressExerciseName::SingleArmCableChestPress : debug << "SingleArmCableChestPress"; break;
4011  case BenchPressExerciseName::SingleArmDumbbellBenchPress : debug << "SingleArmDumbbellBenchPress"; break;
4012  case BenchPressExerciseName::SmithMachineBenchPress : debug << "SmithMachineBenchPress"; break;
4013  case BenchPressExerciseName::SwissBallDumbbellChestPress : debug << "SwissBallDumbbellChestPress"; break;
4014  case BenchPressExerciseName::TripleStopBarbellBenchPress : debug << "TripleStopBarbellBenchPress"; break;
4015  case BenchPressExerciseName::WideGripBarbellBenchPress : debug << "WideGripBarbellBenchPress"; break;
4016  case BenchPressExerciseName::AlternatingDumbbellChestPress : debug << "AlternatingDumbbellChestPress"; break;
4017  default: debug << "unknown";
4018  }
4019  return debug;
4020 }
4021 
4022 /*!
4023  * Writes the CalfRaiseExerciseName \a value to the \a debug stream and returns a reference to the stream.
4024  *
4025  * \param debug Debug stream to write \a value to.
4026  * \param value Value to write to \a debug.
4027  *
4028  * \return a reference to the \a debug stream.
4029  */
4030 QDebug operator<<(QDebug debug, const CalfRaiseExerciseName value)
4031 {
4032  switch (value) {
4033  case CalfRaiseExerciseName::ThreeWayCalfRaise : debug << "ThreeWayCalfRaise"; break;
4034  case CalfRaiseExerciseName::ThreeWayWeightedCalfRaise : debug << "ThreeWayWeightedCalfRaise"; break;
4035  case CalfRaiseExerciseName::ThreeWaySingleLegCalfRaise : debug << "ThreeWaySingleLegCalfRaise"; break;
4036  case CalfRaiseExerciseName::ThreeWayWeightedSingleLegCalfRaise: debug << "ThreeWayWeightedSingleLegCalfRaise"; break;
4037  case CalfRaiseExerciseName::DonkeyCalfRaise : debug << "DonkeyCalfRaise"; break;
4038  case CalfRaiseExerciseName::WeightedDonkeyCalfRaise : debug << "WeightedDonkeyCalfRaise"; break;
4039  case CalfRaiseExerciseName::SeatedCalfRaise : debug << "SeatedCalfRaise"; break;
4040  case CalfRaiseExerciseName::WeightedSeatedCalfRaise : debug << "WeightedSeatedCalfRaise"; break;
4041  case CalfRaiseExerciseName::SeatedDumbbellToeRaise : debug << "SeatedDumbbellToeRaise"; break;
4042  case CalfRaiseExerciseName::SingleLegBentKneeCalfRaise : debug << "SingleLegBentKneeCalfRaise"; break;
4043  case CalfRaiseExerciseName::WeightedSingleLegBentKneeCalfRaise: debug << "WeightedSingleLegBentKneeCalfRaise"; break;
4044  case CalfRaiseExerciseName::SingleLegDeclinePushUp : debug << "SingleLegDeclinePushUp"; break;
4045  case CalfRaiseExerciseName::SingleLegDonkeyCalfRaise : debug << "SingleLegDonkeyCalfRaise"; break;
4046  case CalfRaiseExerciseName::WeightedSingleLegDonkeyCalfRaise : debug << "WeightedSingleLegDonkeyCalfRaise"; break;
4047  case CalfRaiseExerciseName::SingleLegHipRaiseWithKneeHold : debug << "SingleLegHipRaiseWithKneeHold"; break;
4048  case CalfRaiseExerciseName::SingleLegStandingCalfRaise : debug << "SingleLegStandingCalfRaise"; break;
4049  case CalfRaiseExerciseName::SingleLegStandingDumbbellCalfRaise: debug << "SingleLegStandingDumbbellCalfRaise"; break;
4050  case CalfRaiseExerciseName::StandingBarbellCalfRaise : debug << "StandingBarbellCalfRaise"; break;
4051  case CalfRaiseExerciseName::StandingCalfRaise : debug << "StandingCalfRaise"; break;
4052  case CalfRaiseExerciseName::WeightedStandingCalfRaise : debug << "WeightedStandingCalfRaise"; break;
4053  case CalfRaiseExerciseName::StandingDumbbellCalfRaise : debug << "StandingDumbbellCalfRaise"; break;
4054  default: debug << "unknown";
4055  }
4056  return debug;
4057 }
4058 
4059 /*!
4060  * Writes the CardioExerciseName \a value to the \a debug stream and returns a reference to the stream.
4061  *
4062  * \param debug Debug stream to write \a value to.
4063  * \param value Value to write to \a debug.
4064  *
4065  * \return a reference to the \a debug stream.
4066  */
4067 QDebug operator<<(QDebug debug, const CardioExerciseName value)
4068 {
4069  switch (value) {
4070  case CardioExerciseName::BobAndWeaveCircle : debug << "BobAndWeaveCircle"; break;
4071  case CardioExerciseName::WeightedBobAndWeaveCircle: debug << "WeightedBobAndWeaveCircle"; break;
4072  case CardioExerciseName::CardioCoreCrawl : debug << "CardioCoreCrawl"; break;
4073  case CardioExerciseName::WeightedCardioCoreCrawl : debug << "WeightedCardioCoreCrawl"; break;
4074  case CardioExerciseName::DoubleUnder : debug << "DoubleUnder"; break;
4075  case CardioExerciseName::WeightedDoubleUnder : debug << "WeightedDoubleUnder"; break;
4076  case CardioExerciseName::JumpRope : debug << "JumpRope"; break;
4077  case CardioExerciseName::WeightedJumpRope : debug << "WeightedJumpRope"; break;
4078  case CardioExerciseName::JumpRopeCrossover : debug << "JumpRopeCrossover"; break;
4079  case CardioExerciseName::WeightedJumpRopeCrossover: debug << "WeightedJumpRopeCrossover"; break;
4080  case CardioExerciseName::JumpRopeJog : debug << "JumpRopeJog"; break;
4081  case CardioExerciseName::WeightedJumpRopeJog : debug << "WeightedJumpRopeJog"; break;
4082  case CardioExerciseName::JumpingJacks : debug << "JumpingJacks"; break;
4083  case CardioExerciseName::WeightedJumpingJacks : debug << "WeightedJumpingJacks"; break;
4084  case CardioExerciseName::SkiMoguls : debug << "SkiMoguls"; break;
4085  case CardioExerciseName::WeightedSkiMoguls : debug << "WeightedSkiMoguls"; break;
4086  case CardioExerciseName::SplitJacks : debug << "SplitJacks"; break;
4087  case CardioExerciseName::WeightedSplitJacks : debug << "WeightedSplitJacks"; break;
4088  case CardioExerciseName::SquatJacks : debug << "SquatJacks"; break;
4089  case CardioExerciseName::WeightedSquatJacks : debug << "WeightedSquatJacks"; break;
4090  case CardioExerciseName::TripleUnder : debug << "TripleUnder"; break;
4091  case CardioExerciseName::WeightedTripleUnder : debug << "WeightedTripleUnder"; break;
4092  default: debug << "unknown";
4093  }
4094  return debug;
4095 }
4096 
4097 /*!
4098  * Writes the CarryExerciseName \a value to the \a debug stream and returns a reference to the stream.
4099  *
4100  * \param debug Debug stream to write \a value to.
4101  * \param value Value to write to \a debug.
4102  *
4103  * \return a reference to the \a debug stream.
4104  */
4105 QDebug operator<<(QDebug debug, const CarryExerciseName value)
4106 {
4107  switch (value) {
4108  case CarryExerciseName::BarHolds : debug << "BarHolds"; break;
4109  case CarryExerciseName::FarmersWalk : debug << "FarmersWalk"; break;
4110  case CarryExerciseName::FarmersWalkOnToes: debug << "FarmersWalkOnToes"; break;
4111  case CarryExerciseName::HexDumbbellHold : debug << "HexDumbbellHold"; break;
4112  case CarryExerciseName::OverheadCarry : debug << "OverheadCarry"; break;
4113  default: debug << "unknown";
4114  }
4115  return debug;
4116 }
4117 
4118 /*!
4119  * Writes the ChopExerciseName \a value to the \a debug stream and returns a reference to the stream.
4120  *
4121  * \param debug Debug stream to write \a value to.
4122  * \param value Value to write to \a debug.
4123  *
4124  * \return a reference to the \a debug stream.
4125  */
4126 QDebug operator<<(QDebug debug, const ChopExerciseName value)
4127 {
4128  switch (value) {
4129  case ChopExerciseName::CablePullThrough : debug << "CablePullThrough"; break;
4130  case ChopExerciseName::CableRotationalLift : debug << "CableRotationalLift"; break;
4131  case ChopExerciseName::CableWoodchop : debug << "CableWoodchop"; break;
4132  case ChopExerciseName::CrossChopToKnee : debug << "CrossChopToKnee"; break;
4133  case ChopExerciseName::WeightedCrossChopToKnee : debug << "WeightedCrossChopToKnee"; break;
4134  case ChopExerciseName::DumbbellChop : debug << "DumbbellChop"; break;
4135  case ChopExerciseName::HalfKneelingRotation : debug << "HalfKneelingRotation"; break;
4136  case ChopExerciseName::WeightedHalfKneelingRotation : debug << "WeightedHalfKneelingRotation"; break;
4137  case ChopExerciseName::HalfKneelingRotationalChop : debug << "HalfKneelingRotationalChop"; break;
4138  case ChopExerciseName::HalfKneelingRotationalReverseChop : debug << "HalfKneelingRotationalReverseChop"; break;
4139  case ChopExerciseName::HalfKneelingStabilityChop : debug << "HalfKneelingStabilityChop"; break;
4140  case ChopExerciseName::HalfKneelingStabilityReverseChop : debug << "HalfKneelingStabilityReverseChop"; break;
4141  case ChopExerciseName::KneelingRotationalChop : debug << "KneelingRotationalChop"; break;
4142  case ChopExerciseName::KneelingRotationalReverseChop : debug << "KneelingRotationalReverseChop"; break;
4143  case ChopExerciseName::KneelingStabilityChop : debug << "KneelingStabilityChop"; break;
4144  case ChopExerciseName::KneelingWoodchopper : debug << "KneelingWoodchopper"; break;
4145  case ChopExerciseName::MedicineBallWoodChops : debug << "MedicineBallWoodChops"; break;
4146  case ChopExerciseName::PowerSquatChops : debug << "PowerSquatChops"; break;
4147  case ChopExerciseName::WeightedPowerSquatChops : debug << "WeightedPowerSquatChops"; break;
4148  case ChopExerciseName::StandingRotationalChop : debug << "StandingRotationalChop"; break;
4149  case ChopExerciseName::StandingSplitRotationalChop : debug << "StandingSplitRotationalChop"; break;
4150  case ChopExerciseName::StandingSplitRotationalReverseChop: debug << "StandingSplitRotationalReverseChop"; break;
4151  case ChopExerciseName::StandingStabilityReverseChop : debug << "StandingStabilityReverseChop"; break;
4152  default: debug << "unknown";
4153  }
4154  return debug;
4155 }
4156 
4157 /*!
4158  * Writes the CoreExerciseName \a value to the \a debug stream and returns a reference to the stream.
4159  *
4160  * \param debug Debug stream to write \a value to.
4161  * \param value Value to write to \a debug.
4162  *
4163  * \return a reference to the \a debug stream.
4164  */
4165 QDebug operator<<(QDebug debug, const CoreExerciseName value)
4166 {
4167  switch (value) {
4168  case CoreExerciseName::AbsJabs : debug << "AbsJabs"; break;
4169  case CoreExerciseName::WeightedAbsJabs : debug << "WeightedAbsJabs"; break;
4170  case CoreExerciseName::AlternatingPlateReach : debug << "AlternatingPlateReach"; break;
4171  case CoreExerciseName::BarbellRollout : debug << "BarbellRollout"; break;
4172  case CoreExerciseName::WeightedBarbellRollout : debug << "WeightedBarbellRollout"; break;
4173  case CoreExerciseName::BodyBarObliqueTwist : debug << "BodyBarObliqueTwist"; break;
4174  case CoreExerciseName::CableCorePress : debug << "CableCorePress"; break;
4175  case CoreExerciseName::CableSideBend : debug << "CableSideBend"; break;
4176  case CoreExerciseName::SideBend : debug << "SideBend"; break;
4177  case CoreExerciseName::WeightedSideBend : debug << "WeightedSideBend"; break;
4178  case CoreExerciseName::CrescentCircle : debug << "CrescentCircle"; break;
4179  case CoreExerciseName::WeightedCrescentCircle : debug << "WeightedCrescentCircle"; break;
4180  case CoreExerciseName::CyclingRussianTwist : debug << "CyclingRussianTwist"; break;
4181  case CoreExerciseName::WeightedCyclingRussianTwist : debug << "WeightedCyclingRussianTwist"; break;
4182  case CoreExerciseName::ElevatedFeetRussianTwist : debug << "ElevatedFeetRussianTwist"; break;
4183  case CoreExerciseName::WeightedElevatedFeetRussianTwist: debug << "WeightedElevatedFeetRussianTwist"; break;
4184  case CoreExerciseName::HalfTurkishGetUp : debug << "HalfTurkishGetUp"; break;
4185  case CoreExerciseName::KettlebellWindmill : debug << "KettlebellWindmill"; break;
4186  case CoreExerciseName::KneelingAbWheel : debug << "KneelingAbWheel"; break;
4187  case CoreExerciseName::WeightedKneelingAbWheel : debug << "WeightedKneelingAbWheel"; break;
4188  case CoreExerciseName::ModifiedFrontLever : debug << "ModifiedFrontLever"; break;
4189  case CoreExerciseName::OpenKneeTucks : debug << "OpenKneeTucks"; break;
4190  case CoreExerciseName::WeightedOpenKneeTucks : debug << "WeightedOpenKneeTucks"; break;
4191  case CoreExerciseName::SideAbsLegLift : debug << "SideAbsLegLift"; break;
4192  case CoreExerciseName::WeightedSideAbsLegLift : debug << "WeightedSideAbsLegLift"; break;
4193  case CoreExerciseName::SwissBallJackknife : debug << "SwissBallJackknife"; break;
4194  case CoreExerciseName::WeightedSwissBallJackknife : debug << "WeightedSwissBallJackknife"; break;
4195  case CoreExerciseName::SwissBallPike : debug << "SwissBallPike"; break;
4196  case CoreExerciseName::WeightedSwissBallPike : debug << "WeightedSwissBallPike"; break;
4197  case CoreExerciseName::SwissBallRollout : debug << "SwissBallRollout"; break;
4198  case CoreExerciseName::WeightedSwissBallRollout : debug << "WeightedSwissBallRollout"; break;
4199  case CoreExerciseName::TriangleHipPress : debug << "TriangleHipPress"; break;
4200  case CoreExerciseName::WeightedTriangleHipPress : debug << "WeightedTriangleHipPress"; break;
4201  case CoreExerciseName::TrxSuspendedJackknife : debug << "TrxSuspendedJackknife"; break;
4202  case CoreExerciseName::WeightedTrxSuspendedJackknife : debug << "WeightedTrxSuspendedJackknife"; break;
4203  case CoreExerciseName::UBoat : debug << "UBoat"; break;
4204  case CoreExerciseName::WeightedUBoat : debug << "WeightedUBoat"; break;
4205  case CoreExerciseName::WindmillSwitches : debug << "WindmillSwitches"; break;
4206  case CoreExerciseName::WeightedWindmillSwitches : debug << "WeightedWindmillSwitches"; break;
4207  case CoreExerciseName::AlternatingSlideOut : debug << "AlternatingSlideOut"; break;
4208  case CoreExerciseName::WeightedAlternatingSlideOut : debug << "WeightedAlternatingSlideOut"; break;
4209  case CoreExerciseName::GhdBackExtensions : debug << "GhdBackExtensions"; break;
4210  case CoreExerciseName::WeightedGhdBackExtensions : debug << "WeightedGhdBackExtensions"; break;
4211  case CoreExerciseName::OverheadWalk : debug << "OverheadWalk"; break;
4212  case CoreExerciseName::Inchworm : debug << "Inchworm"; break;
4213  case CoreExerciseName::WeightedModifiedFrontLever : debug << "WeightedModifiedFrontLever"; break;
4214  case CoreExerciseName::RussianTwist : debug << "RussianTwist"; break;
4215  case CoreExerciseName::AbdominalLegRotations : debug << "AbdominalLegRotations"; break;
4216  case CoreExerciseName::ArmAndLegExtensionOnKnees : debug << "ArmAndLegExtensionOnKnees"; break;
4217  case CoreExerciseName::Bicycle : debug << "Bicycle"; break;
4218  case CoreExerciseName::BicepCurlWithLegExtension : debug << "BicepCurlWithLegExtension"; break;
4219  case CoreExerciseName::CatCow : debug << "CatCow"; break;
4220  case CoreExerciseName::Corkscrew : debug << "Corkscrew"; break;
4221  case CoreExerciseName::CrissCross : debug << "CrissCross"; break;
4222  case CoreExerciseName::CrissCrossWithBall : debug << "CrissCrossWithBall"; break;
4223  case CoreExerciseName::DoubleLegStretch : debug << "DoubleLegStretch"; break;
4224  case CoreExerciseName::KneeFolds : debug << "KneeFolds"; break;
4225  case CoreExerciseName::LowerLift : debug << "LowerLift"; break;
4226  case CoreExerciseName::NeckPull : debug << "NeckPull"; break;
4227  case CoreExerciseName::PelvicClocks : debug << "PelvicClocks"; break;
4228  case CoreExerciseName::RollOver : debug << "RollOver"; break;
4229  case CoreExerciseName::RollUp : debug << "RollUp"; break;
4230  case CoreExerciseName::Rolling : debug << "Rolling"; break;
4231  case CoreExerciseName::Rowing1 : debug << "Rowing1"; break;
4232  case CoreExerciseName::Rowing2 : debug << "Rowing2"; break;
4233  case CoreExerciseName::Scissors : debug << "Scissors"; break;
4234  case CoreExerciseName::SingleLegCircles : debug << "SingleLegCircles"; break;
4235  case CoreExerciseName::SingleLegStretch : debug << "SingleLegStretch"; break;
4236  case CoreExerciseName::SnakeTwist1And2 : debug << "SnakeTwist1And2"; break;
4237  case CoreExerciseName::Swan : debug << "Swan"; break;
4238  case CoreExerciseName::Swimming : debug << "Swimming"; break;
4239  case CoreExerciseName::Teaser : debug << "Teaser"; break;
4240  case CoreExerciseName::TheHundred : debug << "TheHundred"; break;
4241  default: debug << "unknown";
4242  }
4243  return debug;
4244 }
4245 
4246 /*!
4247  * Writes the CrunchExerciseName \a value to the \a debug stream and returns a reference to the stream.
4248  *
4249  * \param debug Debug stream to write \a value to.
4250  * \param value Value to write to \a debug.
4251  *
4252  * \return a reference to the \a debug stream.
4253  */
4254 QDebug operator<<(QDebug debug, const CrunchExerciseName value)
4255 {
4256  switch (value) {
4257  case CrunchExerciseName::BicycleCrunch : debug << "BicycleCrunch"; break;
4258  case CrunchExerciseName::CableCrunch : debug << "CableCrunch"; break;
4259  case CrunchExerciseName::CircularArmCrunch : debug << "CircularArmCrunch"; break;
4260  case CrunchExerciseName::CrossedArmsCrunch : debug << "CrossedArmsCrunch"; break;
4261  case CrunchExerciseName::WeightedCrossedArmsCrunch : debug << "WeightedCrossedArmsCrunch"; break;
4262  case CrunchExerciseName::CrossLegReverseCrunch : debug << "CrossLegReverseCrunch"; break;
4263  case CrunchExerciseName::WeightedCrossLegReverseCrunch : debug << "WeightedCrossLegReverseCrunch"; break;
4264  case CrunchExerciseName::CrunchChop : debug << "CrunchChop"; break;
4265  case CrunchExerciseName::WeightedCrunchChop : debug << "WeightedCrunchChop"; break;
4266  case CrunchExerciseName::DoubleCrunch : debug << "DoubleCrunch"; break;
4267  case CrunchExerciseName::WeightedDoubleCrunch : debug << "WeightedDoubleCrunch"; break;
4268  case CrunchExerciseName::ElbowToKneeCrunch : debug << "ElbowToKneeCrunch"; break;
4269  case CrunchExerciseName::WeightedElbowToKneeCrunch : debug << "WeightedElbowToKneeCrunch"; break;
4270  case CrunchExerciseName::FlutterKicks : debug << "FlutterKicks"; break;
4271  case CrunchExerciseName::WeightedFlutterKicks : debug << "WeightedFlutterKicks"; break;
4272  case CrunchExerciseName::FoamRollerReverseCrunchOnBench : debug << "FoamRollerReverseCrunchOnBench"; break;
4273  case CrunchExerciseName::WeightedFoamRollerReverseCrunchOnBench : debug << "WeightedFoamRollerReverseCrunchOnBench"; break;
4274  case CrunchExerciseName::FoamRollerReverseCrunchWithDumbbell : debug << "FoamRollerReverseCrunchWithDumbbell"; break;
4275  case CrunchExerciseName::FoamRollerReverseCrunchWithMedicineBall: debug << "FoamRollerReverseCrunchWithMedicineBall"; break;
4276  case CrunchExerciseName::FrogPress : debug << "FrogPress"; break;
4277  case CrunchExerciseName::HangingKneeRaiseObliqueCrunch : debug << "HangingKneeRaiseObliqueCrunch"; break;
4278  case CrunchExerciseName::WeightedHangingKneeRaiseObliqueCrunch : debug << "WeightedHangingKneeRaiseObliqueCrunch"; break;
4279  case CrunchExerciseName::HipCrossover : debug << "HipCrossover"; break;
4280  case CrunchExerciseName::WeightedHipCrossover : debug << "WeightedHipCrossover"; break;
4281  case CrunchExerciseName::HollowRock : debug << "HollowRock"; break;
4282  case CrunchExerciseName::WeightedHollowRock : debug << "WeightedHollowRock"; break;
4283  case CrunchExerciseName::InclineReverseCrunch : debug << "InclineReverseCrunch"; break;
4284  case CrunchExerciseName::WeightedInclineReverseCrunch : debug << "WeightedInclineReverseCrunch"; break;
4285  case CrunchExerciseName::KneelingCableCrunch : debug << "KneelingCableCrunch"; break;
4286  case CrunchExerciseName::KneelingCrossCrunch : debug << "KneelingCrossCrunch"; break;
4287  case CrunchExerciseName::WeightedKneelingCrossCrunch : debug << "WeightedKneelingCrossCrunch"; break;
4288  case CrunchExerciseName::KneelingObliqueCableCrunch : debug << "KneelingObliqueCableCrunch"; break;
4289  case CrunchExerciseName::KneesToElbow : debug << "KneesToElbow"; break;
4290  case CrunchExerciseName::LegExtensions : debug << "LegExtensions"; break;
4291  case CrunchExerciseName::WeightedLegExtensions : debug << "WeightedLegExtensions"; break;
4292  case CrunchExerciseName::LegLevers : debug << "LegLevers"; break;
4293  case CrunchExerciseName::McgillCurlUp : debug << "McgillCurlUp"; break;
4294  case CrunchExerciseName::WeightedMcgillCurlUp : debug << "WeightedMcgillCurlUp"; break;
4295  case CrunchExerciseName::ModifiedPilatesRollUpWithBall : debug << "ModifiedPilatesRollUpWithBall"; break;
4296  case CrunchExerciseName::WeightedModifiedPilatesRollUpWithBall : debug << "WeightedModifiedPilatesRollUpWithBall"; break;
4297  case CrunchExerciseName::PilatesCrunch : debug << "PilatesCrunch"; break;
4298  case CrunchExerciseName::WeightedPilatesCrunch : debug << "WeightedPilatesCrunch"; break;
4299  case CrunchExerciseName::PilatesRollUpWithBall : debug << "PilatesRollUpWithBall"; break;
4300  case CrunchExerciseName::WeightedPilatesRollUpWithBall : debug << "WeightedPilatesRollUpWithBall"; break;
4301  case CrunchExerciseName::RaisedLegsCrunch : debug << "RaisedLegsCrunch"; break;
4302  case CrunchExerciseName::WeightedRaisedLegsCrunch : debug << "WeightedRaisedLegsCrunch"; break;
4303  case CrunchExerciseName::ReverseCrunch : debug << "ReverseCrunch"; break;
4304  case CrunchExerciseName::WeightedReverseCrunch : debug << "WeightedReverseCrunch"; break;
4305  case CrunchExerciseName::ReverseCrunchOnABench : debug << "ReverseCrunchOnABench"; break;
4306  case CrunchExerciseName::WeightedReverseCrunchOnABench : debug << "WeightedReverseCrunchOnABench"; break;
4307  case CrunchExerciseName::ReverseCurlAndLift : debug << "ReverseCurlAndLift"; break;
4308  case CrunchExerciseName::WeightedReverseCurlAndLift : debug << "WeightedReverseCurlAndLift"; break;
4309  case CrunchExerciseName::RotationalLift : debug << "RotationalLift"; break;
4310  case CrunchExerciseName::WeightedRotationalLift : debug << "WeightedRotationalLift"; break;
4311  case CrunchExerciseName::SeatedAlternatingReverseCrunch : debug << "SeatedAlternatingReverseCrunch"; break;
4312  case CrunchExerciseName::WeightedSeatedAlternatingReverseCrunch : debug << "WeightedSeatedAlternatingReverseCrunch"; break;
4313  case CrunchExerciseName::SeatedLegU : debug << "SeatedLegU"; break;
4314  case CrunchExerciseName::WeightedSeatedLegU : debug << "WeightedSeatedLegU"; break;
4315  case CrunchExerciseName::SideToSideCrunchAndWeave : debug << "SideToSideCrunchAndWeave"; break;
4316  case CrunchExerciseName::WeightedSideToSideCrunchAndWeave : debug << "WeightedSideToSideCrunchAndWeave"; break;
4317  case CrunchExerciseName::SingleLegReverseCrunch : debug << "SingleLegReverseCrunch"; break;
4318  case CrunchExerciseName::WeightedSingleLegReverseCrunch : debug << "WeightedSingleLegReverseCrunch"; break;
4319  case CrunchExerciseName::SkaterCrunchCross : debug << "SkaterCrunchCross"; break;
4320  case CrunchExerciseName::WeightedSkaterCrunchCross : debug << "WeightedSkaterCrunchCross"; break;
4321  case CrunchExerciseName::StandingCableCrunch : debug << "StandingCableCrunch"; break;
4322  case CrunchExerciseName::StandingSideCrunch : debug << "StandingSideCrunch"; break;
4323  case CrunchExerciseName::StepClimb : debug << "StepClimb"; break;
4324  case CrunchExerciseName::WeightedStepClimb : debug << "WeightedStepClimb"; break;
4325  case CrunchExerciseName::SwissBallCrunch : debug << "SwissBallCrunch"; break;
4326  case CrunchExerciseName::SwissBallReverseCrunch : debug << "SwissBallReverseCrunch"; break;
4327  case CrunchExerciseName::WeightedSwissBallReverseCrunch : debug << "WeightedSwissBallReverseCrunch"; break;
4328  case CrunchExerciseName::SwissBallRussianTwist : debug << "SwissBallRussianTwist"; break;
4329  case CrunchExerciseName::WeightedSwissBallRussianTwist : debug << "WeightedSwissBallRussianTwist"; break;
4330  case CrunchExerciseName::SwissBallSideCrunch : debug << "SwissBallSideCrunch"; break;
4331  case CrunchExerciseName::WeightedSwissBallSideCrunch : debug << "WeightedSwissBallSideCrunch"; break;
4332  case CrunchExerciseName::ThoracicCrunchesOnFoamRoller : debug << "ThoracicCrunchesOnFoamRoller"; break;
4333  case CrunchExerciseName::WeightedThoracicCrunchesOnFoamRoller : debug << "WeightedThoracicCrunchesOnFoamRoller"; break;
4334  case CrunchExerciseName::TricepsCrunch : debug << "TricepsCrunch"; break;
4335  case CrunchExerciseName::WeightedBicycleCrunch : debug << "WeightedBicycleCrunch"; break;
4336  case CrunchExerciseName::WeightedCrunch : debug << "WeightedCrunch"; break;
4337  case CrunchExerciseName::WeightedSwissBallCrunch : debug << "WeightedSwissBallCrunch"; break;
4338  case CrunchExerciseName::ToesToBar : debug << "ToesToBar"; break;
4339  case CrunchExerciseName::WeightedToesToBar : debug << "WeightedToesToBar"; break;
4340  case CrunchExerciseName::Crunch : debug << "Crunch"; break;
4341  case CrunchExerciseName::StraightLegCrunchWithBall : debug << "StraightLegCrunchWithBall"; break;
4342  default: debug << "unknown";
4343  }
4344  return debug;
4345 }
4346 
4347 /*!
4348  * Writes the CurlExerciseName \a value to the \a debug stream and returns a reference to the stream.
4349  *
4350  * \param debug Debug stream to write \a value to.
4351  * \param value Value to write to \a debug.
4352  *
4353  * \return a reference to the \a debug stream.
4354  */
4355 QDebug operator<<(QDebug debug, const CurlExerciseName value)
4356 {
4357  switch (value) {
4358  case CurlExerciseName::AlternatingDumbbellBicepsCurl : debug << "AlternatingDumbbellBicepsCurl"; break;
4359  case CurlExerciseName::AlternatingDumbbellBicepsCurlOnSwissBall : debug << "AlternatingDumbbellBicepsCurlOnSwissBall"; break;
4360  case CurlExerciseName::AlternatingInclineDumbbellBicepsCurl : debug << "AlternatingInclineDumbbellBicepsCurl"; break;
4361  case CurlExerciseName::BarbellBicepsCurl : debug << "BarbellBicepsCurl"; break;
4362  case CurlExerciseName::BarbellReverseWristCurl : debug << "BarbellReverseWristCurl"; break;
4363  case CurlExerciseName::BarbellWristCurl : debug << "BarbellWristCurl"; break;
4364  case CurlExerciseName::BehindTheBackBarbellReverseWristCurl : debug << "BehindTheBackBarbellReverseWristCurl"; break;
4365  case CurlExerciseName::BehindTheBackOneArmCableCurl : debug << "BehindTheBackOneArmCableCurl"; break;
4366  case CurlExerciseName::CableBicepsCurl : debug << "CableBicepsCurl"; break;
4367  case CurlExerciseName::CableHammerCurl : debug << "CableHammerCurl"; break;
4368  case CurlExerciseName::CheatingBarbellBicepsCurl : debug << "CheatingBarbellBicepsCurl"; break;
4369  case CurlExerciseName::CloseGripEzBarBicepsCurl : debug << "CloseGripEzBarBicepsCurl"; break;
4370  case CurlExerciseName::CrossBodyDumbbellHammerCurl : debug << "CrossBodyDumbbellHammerCurl"; break;
4371  case CurlExerciseName::DeadHangBicepsCurl : debug << "DeadHangBicepsCurl"; break;
4372  case CurlExerciseName::DeclineHammerCurl : debug << "DeclineHammerCurl"; break;
4373  case CurlExerciseName::DumbbellBicepsCurlWithStaticHold : debug << "DumbbellBicepsCurlWithStaticHold"; break;
4374  case CurlExerciseName::DumbbellHammerCurl : debug << "DumbbellHammerCurl"; break;
4375  case CurlExerciseName::DumbbellReverseWristCurl : debug << "DumbbellReverseWristCurl"; break;
4376  case CurlExerciseName::DumbbellWristCurl : debug << "DumbbellWristCurl"; break;
4377  case CurlExerciseName::EzBarPreacherCurl : debug << "EzBarPreacherCurl"; break;
4378  case CurlExerciseName::ForwardBendBicepsCurl : debug << "ForwardBendBicepsCurl"; break;
4379  case CurlExerciseName::HammerCurlToPress : debug << "HammerCurlToPress"; break;
4380  case CurlExerciseName::InclineDumbbellBicepsCurl : debug << "InclineDumbbellBicepsCurl"; break;
4381  case CurlExerciseName::InclineOffsetThumbDumbbellCurl : debug << "InclineOffsetThumbDumbbellCurl"; break;
4382  case CurlExerciseName::KettlebellBicepsCurl : debug << "KettlebellBicepsCurl"; break;
4383  case CurlExerciseName::LyingConcentrationCableCurl : debug << "LyingConcentrationCableCurl"; break;
4384  case CurlExerciseName::OneArmPreacherCurl : debug << "OneArmPreacherCurl"; break;
4385  case CurlExerciseName::PlatePinchCurl : debug << "PlatePinchCurl"; break;
4386  case CurlExerciseName::PreacherCurlWithCable : debug << "PreacherCurlWithCable"; break;
4387  case CurlExerciseName::ReverseEzBarCurl : debug << "ReverseEzBarCurl"; break;
4388  case CurlExerciseName::ReverseGripWristCurl : debug << "ReverseGripWristCurl"; break;
4389  case CurlExerciseName::ReverseGripBarbellBicepsCurl : debug << "ReverseGripBarbellBicepsCurl"; break;
4390  case CurlExerciseName::SeatedAlternatingDumbbellBicepsCurl : debug << "SeatedAlternatingDumbbellBicepsCurl"; break;
4391  case CurlExerciseName::SeatedDumbbellBicepsCurl : debug << "SeatedDumbbellBicepsCurl"; break;
4392  case CurlExerciseName::SeatedReverseDumbbellCurl : debug << "SeatedReverseDumbbellCurl"; break;
4393  case CurlExerciseName::SplitStanceOffsetPinkyDumbbellCurl : debug << "SplitStanceOffsetPinkyDumbbellCurl"; break;
4394  case CurlExerciseName::StandingAlternatingDumbbellCurls : debug << "StandingAlternatingDumbbellCurls"; break;
4395  case CurlExerciseName::StandingDumbbellBicepsCurl : debug << "StandingDumbbellBicepsCurl"; break;
4396  case CurlExerciseName::StandingEzBarBicepsCurl : debug << "StandingEzBarBicepsCurl"; break;
4397  case CurlExerciseName::StaticCurl : debug << "StaticCurl"; break;
4398  case CurlExerciseName::SwissBallDumbbellOverheadTricepsExtension: debug << "SwissBallDumbbellOverheadTricepsExtension"; break;
4399  case CurlExerciseName::SwissBallEzBarPreacherCurl : debug << "SwissBallEzBarPreacherCurl"; break;
4400  case CurlExerciseName::TwistingStandingDumbbellBicepsCurl : debug << "TwistingStandingDumbbellBicepsCurl"; break;
4401  case CurlExerciseName::WideGripEzBarBicepsCurl : debug << "WideGripEzBarBicepsCurl"; break;
4402  default: debug << "unknown";
4403  }
4404  return debug;
4405 }
4406 
4407 /*!
4408  * Writes the DeadliftExerciseName \a value to the \a debug stream and returns a reference to the stream.
4409  *
4410  * \param debug Debug stream to write \a value to.
4411  * \param value Value to write to \a debug.
4412  *
4413  * \return a reference to the \a debug stream.
4414  */
4415 QDebug operator<<(QDebug debug, const DeadliftExerciseName value)
4416 {
4417  switch (value) {
4418  case DeadliftExerciseName::BarbellDeadlift : debug << "BarbellDeadlift"; break;
4419  case DeadliftExerciseName::BarbellStraightLegDeadlift : debug << "BarbellStraightLegDeadlift"; break;
4420  case DeadliftExerciseName::DumbbellDeadlift : debug << "DumbbellDeadlift"; break;
4421  case DeadliftExerciseName::DumbbellSingleLegDeadliftToRow : debug << "DumbbellSingleLegDeadliftToRow"; break;
4422  case DeadliftExerciseName::DumbbellStraightLegDeadlift : debug << "DumbbellStraightLegDeadlift"; break;
4423  case DeadliftExerciseName::KettlebellFloorToShelf : debug << "KettlebellFloorToShelf"; break;
4424  case DeadliftExerciseName::OneArmOneLegDeadlift : debug << "OneArmOneLegDeadlift"; break;
4425  case DeadliftExerciseName::RackPull : debug << "RackPull"; break;
4426  case DeadliftExerciseName::RotationalDumbbellStraightLegDeadlift: debug << "RotationalDumbbellStraightLegDeadlift"; break;
4427  case DeadliftExerciseName::SingleArmDeadlift : debug << "SingleArmDeadlift"; break;
4428  case DeadliftExerciseName::SingleLegBarbellDeadlift : debug << "SingleLegBarbellDeadlift"; break;
4429  case DeadliftExerciseName::SingleLegBarbellStraightLegDeadlift : debug << "SingleLegBarbellStraightLegDeadlift"; break;
4430  case DeadliftExerciseName::SingleLegDeadliftWithBarbell : debug << "SingleLegDeadliftWithBarbell"; break;
4431  case DeadliftExerciseName::SingleLegRdlCircuit : debug << "SingleLegRdlCircuit"; break;
4432  case DeadliftExerciseName::SingleLegRomanianDeadliftWithDumbbell: debug << "SingleLegRomanianDeadliftWithDumbbell"; break;
4433  case DeadliftExerciseName::SumoDeadlift : debug << "SumoDeadlift"; break;
4434  case DeadliftExerciseName::SumoDeadliftHighPull : debug << "SumoDeadliftHighPull"; break;
4435  case DeadliftExerciseName::TrapBarDeadlift : debug << "TrapBarDeadlift"; break;
4436  case DeadliftExerciseName::WideGripBarbellDeadlift : debug << "WideGripBarbellDeadlift"; break;
4437  default: debug << "unknown";
4438  }
4439  return debug;
4440 }
4441 
4442 /*!
4443  * Writes the FlyeExerciseName \a value to the \a debug stream and returns a reference to the stream.
4444  *
4445  * \param debug Debug stream to write \a value to.
4446  * \param value Value to write to \a debug.
4447  *
4448  * \return a reference to the \a debug stream.
4449  */
4450 QDebug operator<<(QDebug debug, const FlyeExerciseName value)
4451 {
4452  switch (value) {
4453  case FlyeExerciseName::CableCrossover : debug << "CableCrossover"; break;
4454  case FlyeExerciseName::DeclineDumbbellFlye : debug << "DeclineDumbbellFlye"; break;
4455  case FlyeExerciseName::DumbbellFlye : debug << "DumbbellFlye"; break;
4456  case FlyeExerciseName::InclineDumbbellFlye : debug << "InclineDumbbellFlye"; break;
4457  case FlyeExerciseName::KettlebellFlye : debug << "KettlebellFlye"; break;
4458  case FlyeExerciseName::KneelingRearFlye : debug << "KneelingRearFlye"; break;
4459  case FlyeExerciseName::SingleArmStandingCableReverseFlye: debug << "SingleArmStandingCableReverseFlye"; break;
4460  case FlyeExerciseName::SwissBallDumbbellFlye : debug << "SwissBallDumbbellFlye"; break;
4461  case FlyeExerciseName::ArmRotations : debug << "ArmRotations"; break;
4462  case FlyeExerciseName::HugATree : debug << "HugATree"; break;
4463  default: debug << "unknown";
4464  }
4465  return debug;
4466 }
4467 
4468 /*!
4469  * Writes the HipRaiseExerciseName \a value to the \a debug stream and returns a reference to the stream.
4470  *
4471  * \param debug Debug stream to write \a value to.
4472  * \param value Value to write to \a debug.
4473  *
4474  * \return a reference to the \a debug stream.
4475  */
4476 QDebug operator<<(QDebug debug, const HipRaiseExerciseName value)
4477 {
4478  switch (value) {
4479  case HipRaiseExerciseName::BarbellHipThrustOnFloor : debug << "BarbellHipThrustOnFloor"; break;
4480  case HipRaiseExerciseName::BarbellHipThrustWithBench : debug << "BarbellHipThrustWithBench"; break;
4481  case HipRaiseExerciseName::BentKneeSwissBallReverseHipRaise : debug << "BentKneeSwissBallReverseHipRaise"; break;
4482  case HipRaiseExerciseName::WeightedBentKneeSwissBallReverseHipRaise : debug << "WeightedBentKneeSwissBallReverseHipRaise"; break;
4483  case HipRaiseExerciseName::BridgeWithLegExtension : debug << "BridgeWithLegExtension"; break;
4484  case HipRaiseExerciseName::WeightedBridgeWithLegExtension : debug << "WeightedBridgeWithLegExtension"; break;
4485  case HipRaiseExerciseName::ClamBridge : debug << "ClamBridge"; break;
4486  case HipRaiseExerciseName::FrontKickTabletop : debug << "FrontKickTabletop"; break;
4487  case HipRaiseExerciseName::WeightedFrontKickTabletop : debug << "WeightedFrontKickTabletop"; break;
4488  case HipRaiseExerciseName::HipExtensionAndCross : debug << "HipExtensionAndCross"; break;
4489  case HipRaiseExerciseName::WeightedHipExtensionAndCross : debug << "WeightedHipExtensionAndCross"; break;
4490  case HipRaiseExerciseName::HipRaise : debug << "HipRaise"; break;
4491  case HipRaiseExerciseName::WeightedHipRaise : debug << "WeightedHipRaise"; break;
4492  case HipRaiseExerciseName::HipRaiseWithFeetOnSwissBall : debug << "HipRaiseWithFeetOnSwissBall"; break;
4493  case HipRaiseExerciseName::WeightedHipRaiseWithFeetOnSwissBall : debug << "WeightedHipRaiseWithFeetOnSwissBall"; break;
4494  case HipRaiseExerciseName::HipRaiseWithHeadOnBosuBall : debug << "HipRaiseWithHeadOnBosuBall"; break;
4495  case HipRaiseExerciseName::WeightedHipRaiseWithHeadOnBosuBall : debug << "WeightedHipRaiseWithHeadOnBosuBall"; break;
4496  case HipRaiseExerciseName::HipRaiseWithHeadOnSwissBall : debug << "HipRaiseWithHeadOnSwissBall"; break;
4497  case HipRaiseExerciseName::WeightedHipRaiseWithHeadOnSwissBall : debug << "WeightedHipRaiseWithHeadOnSwissBall"; break;
4498  case HipRaiseExerciseName::HipRaiseWithKneeSqueeze : debug << "HipRaiseWithKneeSqueeze"; break;
4499  case HipRaiseExerciseName::WeightedHipRaiseWithKneeSqueeze : debug << "WeightedHipRaiseWithKneeSqueeze"; break;
4500  case HipRaiseExerciseName::InclineRearLegExtension : debug << "InclineRearLegExtension"; break;
4501  case HipRaiseExerciseName::WeightedInclineRearLegExtension : debug << "WeightedInclineRearLegExtension"; break;
4502  case HipRaiseExerciseName::KettlebellSwing : debug << "KettlebellSwing"; break;
4503  case HipRaiseExerciseName::MarchingHipRaise : debug << "MarchingHipRaise"; break;
4504  case HipRaiseExerciseName::WeightedMarchingHipRaise : debug << "WeightedMarchingHipRaise"; break;
4505  case HipRaiseExerciseName::MarchingHipRaiseWithFeetOnASwissBall : debug << "MarchingHipRaiseWithFeetOnASwissBall"; break;
4506  case HipRaiseExerciseName::WeightedMarchingHipRaiseWithFeetOnASwissBall : debug << "WeightedMarchingHipRaiseWithFeetOnASwissBall"; break;
4507  case HipRaiseExerciseName::ReverseHipRaise : debug << "ReverseHipRaise"; break;
4508  case HipRaiseExerciseName::WeightedReverseHipRaise : debug << "WeightedReverseHipRaise"; break;
4509  case HipRaiseExerciseName::SingleLegHipRaise : debug << "SingleLegHipRaise"; break;
4510  case HipRaiseExerciseName::WeightedSingleLegHipRaise : debug << "WeightedSingleLegHipRaise"; break;
4511  case HipRaiseExerciseName::SingleLegHipRaiseWithFootOnBench : debug << "SingleLegHipRaiseWithFootOnBench"; break;
4512  case HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnBench : debug << "WeightedSingleLegHipRaiseWithFootOnBench"; break;
4513  case HipRaiseExerciseName::SingleLegHipRaiseWithFootOnBosuBall : debug << "SingleLegHipRaiseWithFootOnBosuBall"; break;
4514  case HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnBosuBall : debug << "WeightedSingleLegHipRaiseWithFootOnBosuBall"; break;
4515  case HipRaiseExerciseName::SingleLegHipRaiseWithFootOnFoamRoller : debug << "SingleLegHipRaiseWithFootOnFoamRoller"; break;
4516  case HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnFoamRoller : debug << "WeightedSingleLegHipRaiseWithFootOnFoamRoller"; break;
4517  case HipRaiseExerciseName::SingleLegHipRaiseWithFootOnMedicineBall : debug << "SingleLegHipRaiseWithFootOnMedicineBall"; break;
4518  case HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnMedicineBall: debug << "WeightedSingleLegHipRaiseWithFootOnMedicineBall"; break;
4519  case HipRaiseExerciseName::SingleLegHipRaiseWithHeadOnBosuBall : debug << "SingleLegHipRaiseWithHeadOnBosuBall"; break;
4520  case HipRaiseExerciseName::WeightedSingleLegHipRaiseWithHeadOnBosuBall : debug << "WeightedSingleLegHipRaiseWithHeadOnBosuBall"; break;
4521  case HipRaiseExerciseName::WeightedClamBridge : debug << "WeightedClamBridge"; break;
4522  case HipRaiseExerciseName::SingleLegSwissBallHipRaiseAndLegCurl : debug << "SingleLegSwissBallHipRaiseAndLegCurl"; break;
4523  case HipRaiseExerciseName::Clams : debug << "Clams"; break;
4524  case HipRaiseExerciseName::InnerThighCircles : debug << "InnerThighCircles"; break;
4525  case HipRaiseExerciseName::InnerThighSideLift : debug << "InnerThighSideLift"; break;
4526  case HipRaiseExerciseName::LegCircles : debug << "LegCircles"; break;
4527  case HipRaiseExerciseName::LegLift : debug << "LegLift"; break;
4528  case HipRaiseExerciseName::LegLiftInExternalRotation : debug << "LegLiftInExternalRotation"; break;
4529  default: debug << "unknown";
4530  }
4531  return debug;
4532 }
4533 
4534 /*!
4535  * Writes the HipStabilityExerciseName \a value to the \a debug stream and returns a reference to the stream.
4536  *
4537  * \param debug Debug stream to write \a value to.
4538  * \param value Value to write to \a debug.
4539  *
4540  * \return a reference to the \a debug stream.
4541  */
4542 QDebug operator<<(QDebug debug, const HipStabilityExerciseName value)
4543 {
4544  switch (value) {
4545  case HipStabilityExerciseName::BandSideLyingLegRaise : debug << "BandSideLyingLegRaise"; break;
4546  case HipStabilityExerciseName::DeadBug : debug << "DeadBug"; break;
4547  case HipStabilityExerciseName::WeightedDeadBug : debug << "WeightedDeadBug"; break;
4548  case HipStabilityExerciseName::ExternalHipRaise : debug << "ExternalHipRaise"; break;
4549  case HipStabilityExerciseName::WeightedExternalHipRaise : debug << "WeightedExternalHipRaise"; break;
4550  case HipStabilityExerciseName::FireHydrantKicks : debug << "FireHydrantKicks"; break;
4551  case HipStabilityExerciseName::WeightedFireHydrantKicks : debug << "WeightedFireHydrantKicks"; break;
4552  case HipStabilityExerciseName::HipCircles : debug << "HipCircles"; break;
4553  case HipStabilityExerciseName::WeightedHipCircles : debug << "WeightedHipCircles"; break;
4554  case HipStabilityExerciseName::InnerThighLift : debug << "InnerThighLift"; break;
4555  case HipStabilityExerciseName::WeightedInnerThighLift : debug << "WeightedInnerThighLift"; break;
4556  case HipStabilityExerciseName::LateralWalksWithBandAtAnkles : debug << "LateralWalksWithBandAtAnkles"; break;
4557  case HipStabilityExerciseName::PretzelSideKick : debug << "PretzelSideKick"; break;
4558  case HipStabilityExerciseName::WeightedPretzelSideKick : debug << "WeightedPretzelSideKick"; break;
4559  case HipStabilityExerciseName::ProneHipInternalRotation : debug << "ProneHipInternalRotation"; break;
4560  case HipStabilityExerciseName::WeightedProneHipInternalRotation : debug << "WeightedProneHipInternalRotation"; break;
4561  case HipStabilityExerciseName::Quadruped : debug << "Quadruped"; break;
4562  case HipStabilityExerciseName::QuadrupedHipExtension : debug << "QuadrupedHipExtension"; break;
4563  case HipStabilityExerciseName::WeightedQuadrupedHipExtension : debug << "WeightedQuadrupedHipExtension"; break;
4564  case HipStabilityExerciseName::QuadrupedWithLegLift : debug << "QuadrupedWithLegLift"; break;
4565  case HipStabilityExerciseName::WeightedQuadrupedWithLegLift : debug << "WeightedQuadrupedWithLegLift"; break;
4566  case HipStabilityExerciseName::SideLyingLegRaise : debug << "SideLyingLegRaise"; break;
4567  case HipStabilityExerciseName::WeightedSideLyingLegRaise : debug << "WeightedSideLyingLegRaise"; break;
4568  case HipStabilityExerciseName::SlidingHipAdduction : debug << "SlidingHipAdduction"; break;
4569  case HipStabilityExerciseName::WeightedSlidingHipAdduction : debug << "WeightedSlidingHipAdduction"; break;
4570  case HipStabilityExerciseName::StandingAdduction : debug << "StandingAdduction"; break;
4571  case HipStabilityExerciseName::WeightedStandingAdduction : debug << "WeightedStandingAdduction"; break;
4572  case HipStabilityExerciseName::StandingCableHipAbduction : debug << "StandingCableHipAbduction"; break;
4573  case HipStabilityExerciseName::StandingHipAbduction : debug << "StandingHipAbduction"; break;
4574  case HipStabilityExerciseName::WeightedStandingHipAbduction : debug << "WeightedStandingHipAbduction"; break;
4575  case HipStabilityExerciseName::StandingRearLegRaise : debug << "StandingRearLegRaise"; break;
4576  case HipStabilityExerciseName::WeightedStandingRearLegRaise : debug << "WeightedStandingRearLegRaise"; break;
4577  case HipStabilityExerciseName::SupineHipInternalRotation : debug << "SupineHipInternalRotation"; break;
4578  case HipStabilityExerciseName::WeightedSupineHipInternalRotation: debug << "WeightedSupineHipInternalRotation"; break;
4579  default: debug << "unknown";
4580  }
4581  return debug;
4582 }
4583 
4584 /*!
4585  * Writes the HipSwingExerciseName \a value to the \a debug stream and returns a reference to the stream.
4586  *
4587  * \param debug Debug stream to write \a value to.
4588  * \param value Value to write to \a debug.
4589  *
4590  * \return a reference to the \a debug stream.
4591  */
4592 QDebug operator<<(QDebug debug, const HipSwingExerciseName value)
4593 {
4594  switch (value) {
4595  case HipSwingExerciseName::SingleArmKettlebellSwing: debug << "SingleArmKettlebellSwing"; break;
4596  case HipSwingExerciseName::SingleArmDumbbellSwing : debug << "SingleArmDumbbellSwing"; break;
4597  case HipSwingExerciseName::StepOutSwing : debug << "StepOutSwing"; break;
4598  default: debug << "unknown";
4599  }
4600  return debug;
4601 }
4602 
4603 /*!
4604  * Writes the HyperextensionExerciseName \a value to the \a debug stream and returns a reference to the stream.
4605  *
4606  * \param debug Debug stream to write \a value to.
4607  * \param value Value to write to \a debug.
4608  *
4609  * \return a reference to the \a debug stream.
4610  */
4611 QDebug operator<<(QDebug debug, const HyperextensionExerciseName value)
4612 {
4613  switch (value) {
4614  case HyperextensionExerciseName::BackExtensionWithOppositeArmAndLegReach : debug << "BackExtensionWithOppositeArmAndLegReach"; break;
4615  case HyperextensionExerciseName::WeightedBackExtensionWithOppositeArmAndLegReach: debug << "WeightedBackExtensionWithOppositeArmAndLegReach"; break;
4616  case HyperextensionExerciseName::BaseRotations : debug << "BaseRotations"; break;
4617  case HyperextensionExerciseName::WeightedBaseRotations : debug << "WeightedBaseRotations"; break;
4618  case HyperextensionExerciseName::BentKneeReverseHyperextension : debug << "BentKneeReverseHyperextension"; break;
4619  case HyperextensionExerciseName::WeightedBentKneeReverseHyperextension : debug << "WeightedBentKneeReverseHyperextension"; break;
4620  case HyperextensionExerciseName::HollowHoldAndRoll : debug << "HollowHoldAndRoll"; break;
4621  case HyperextensionExerciseName::WeightedHollowHoldAndRoll : debug << "WeightedHollowHoldAndRoll"; break;
4622  case HyperextensionExerciseName::Kicks : debug << "Kicks"; break;
4623  case HyperextensionExerciseName::WeightedKicks : debug << "WeightedKicks"; break;
4624  case HyperextensionExerciseName::KneeRaises : debug << "KneeRaises"; break;
4625  case HyperextensionExerciseName::WeightedKneeRaises : debug << "WeightedKneeRaises"; break;
4626  case HyperextensionExerciseName::KneelingSuperman : debug << "KneelingSuperman"; break;
4627  case HyperextensionExerciseName::WeightedKneelingSuperman : debug << "WeightedKneelingSuperman"; break;
4628  case HyperextensionExerciseName::LatPullDownWithRow : debug << "LatPullDownWithRow"; break;
4629  case HyperextensionExerciseName::MedicineBallDeadliftToReach : debug << "MedicineBallDeadliftToReach"; break;
4630  case HyperextensionExerciseName::OneArmOneLegRow : debug << "OneArmOneLegRow"; break;
4631  case HyperextensionExerciseName::OneArmRowWithBand : debug << "OneArmRowWithBand"; break;
4632  case HyperextensionExerciseName::OverheadLungeWithMedicineBall : debug << "OverheadLungeWithMedicineBall"; break;
4633  case HyperextensionExerciseName::PlankKneeTucks : debug << "PlankKneeTucks"; break;
4634  case HyperextensionExerciseName::WeightedPlankKneeTucks : debug << "WeightedPlankKneeTucks"; break;
4635  case HyperextensionExerciseName::SideStep : debug << "SideStep"; break;
4636  case HyperextensionExerciseName::WeightedSideStep : debug << "WeightedSideStep"; break;
4637  case HyperextensionExerciseName::SingleLegBackExtension : debug << "SingleLegBackExtension"; break;
4638  case HyperextensionExerciseName::WeightedSingleLegBackExtension : debug << "WeightedSingleLegBackExtension"; break;
4639  case HyperextensionExerciseName::SpineExtension : debug << "SpineExtension"; break;
4640  case HyperextensionExerciseName::WeightedSpineExtension : debug << "WeightedSpineExtension"; break;
4641  case HyperextensionExerciseName::StaticBackExtension : debug << "StaticBackExtension"; break;
4642  case HyperextensionExerciseName::WeightedStaticBackExtension : debug << "WeightedStaticBackExtension"; break;
4643  case HyperextensionExerciseName::SupermanFromFloor : debug << "SupermanFromFloor"; break;
4644  case HyperextensionExerciseName::WeightedSupermanFromFloor : debug << "WeightedSupermanFromFloor"; break;
4645  case HyperextensionExerciseName::SwissBallBackExtension : debug << "SwissBallBackExtension"; break;
4646  case HyperextensionExerciseName::WeightedSwissBallBackExtension : debug << "WeightedSwissBallBackExtension"; break;
4647  case HyperextensionExerciseName::SwissBallHyperextension : debug << "SwissBallHyperextension"; break;
4648  case HyperextensionExerciseName::WeightedSwissBallHyperextension : debug << "WeightedSwissBallHyperextension"; break;
4649  case HyperextensionExerciseName::SwissBallOppositeArmAndLegLift : debug << "SwissBallOppositeArmAndLegLift"; break;
4650  case HyperextensionExerciseName::WeightedSwissBallOppositeArmAndLegLift : debug << "WeightedSwissBallOppositeArmAndLegLift"; break;
4651  case HyperextensionExerciseName::SupermanOnSwissBall : debug << "SupermanOnSwissBall"; break;
4652  case HyperextensionExerciseName::Cobra : debug << "Cobra"; break;
4653  case HyperextensionExerciseName::SupineFloorBarre : debug << "SupineFloorBarre"; break;
4654  default: debug << "unknown";
4655  }
4656  return debug;
4657 }
4658 
4659 /*!
4660  * Writes the LateralRaiseExerciseName \a value to the \a debug stream and returns a reference to the stream.
4661  *
4662  * \param debug Debug stream to write \a value to.
4663  * \param value Value to write to \a debug.
4664  *
4665  * \return a reference to the \a debug stream.
4666  */
4667 QDebug operator<<(QDebug debug, const LateralRaiseExerciseName value)
4668 {
4669  switch (value) {
4670  case LateralRaiseExerciseName::FortyFiveDegreeCableExternalRotation : debug << "FortyFiveDegreeCableExternalRotation"; break;
4671  case LateralRaiseExerciseName::AlternatingLateralRaiseWithStaticHold: debug << "AlternatingLateralRaiseWithStaticHold"; break;
4672  case LateralRaiseExerciseName::BarMuscleUp : debug << "BarMuscleUp"; break;
4673  case LateralRaiseExerciseName::BentOverLateralRaise : debug << "BentOverLateralRaise"; break;
4674  case LateralRaiseExerciseName::CableDiagonalRaise : debug << "CableDiagonalRaise"; break;
4675  case LateralRaiseExerciseName::CableFrontRaise : debug << "CableFrontRaise"; break;
4676  case LateralRaiseExerciseName::CalorieRow : debug << "CalorieRow"; break;
4677  case LateralRaiseExerciseName::ComboShoulderRaise : debug << "ComboShoulderRaise"; break;
4678  case LateralRaiseExerciseName::DumbbellDiagonalRaise : debug << "DumbbellDiagonalRaise"; break;
4679  case LateralRaiseExerciseName::DumbbellVRaise : debug << "DumbbellVRaise"; break;
4680  case LateralRaiseExerciseName::FrontRaise : debug << "FrontRaise"; break;
4681  case LateralRaiseExerciseName::LeaningDumbbellLateralRaise : debug << "LeaningDumbbellLateralRaise"; break;
4682  case LateralRaiseExerciseName::LyingDumbbellRaise : debug << "LyingDumbbellRaise"; break;
4683  case LateralRaiseExerciseName::MuscleUp : debug << "MuscleUp"; break;
4684  case LateralRaiseExerciseName::OneArmCableLateralRaise : debug << "OneArmCableLateralRaise"; break;
4685  case LateralRaiseExerciseName::OverhandGripRearLateralRaise : debug << "OverhandGripRearLateralRaise"; break;
4686  case LateralRaiseExerciseName::PlateRaises : debug << "PlateRaises"; break;
4687  case LateralRaiseExerciseName::RingDip : debug << "RingDip"; break;
4688  case LateralRaiseExerciseName::WeightedRingDip : debug << "WeightedRingDip"; break;
4689  case LateralRaiseExerciseName::RingMuscleUp : debug << "RingMuscleUp"; break;
4690  case LateralRaiseExerciseName::WeightedRingMuscleUp : debug << "WeightedRingMuscleUp"; break;
4691  case LateralRaiseExerciseName::RopeClimb : debug << "RopeClimb"; break;
4692  case LateralRaiseExerciseName::WeightedRopeClimb : debug << "WeightedRopeClimb"; break;
4693  case LateralRaiseExerciseName::Scaption : debug << "Scaption"; break;
4694  case LateralRaiseExerciseName::SeatedLateralRaise : debug << "SeatedLateralRaise"; break;
4695  case LateralRaiseExerciseName::SeatedRearLateralRaise : debug << "SeatedRearLateralRaise"; break;
4696  case LateralRaiseExerciseName::SideLyingLateralRaise : debug << "SideLyingLateralRaise"; break;
4697  case LateralRaiseExerciseName::StandingLift : debug << "StandingLift"; break;
4698  case LateralRaiseExerciseName::SuspendedRow : debug << "SuspendedRow"; break;
4699  case LateralRaiseExerciseName::UnderhandGripRearLateralRaise : debug << "UnderhandGripRearLateralRaise"; break;
4700  case LateralRaiseExerciseName::WallSlide : debug << "WallSlide"; break;
4701  case LateralRaiseExerciseName::WeightedWallSlide : debug << "WeightedWallSlide"; break;
4702  case LateralRaiseExerciseName::ArmCircles : debug << "ArmCircles"; break;
4703  case LateralRaiseExerciseName::ShavingTheHead : debug << "ShavingTheHead"; break;
4704  default: debug << "unknown";
4705  }
4706  return debug;
4707 }
4708 
4709 /*!
4710  * Writes the LegCurlExerciseName \a value to the \a debug stream and returns a reference to the stream.
4711  *
4712  * \param debug Debug stream to write \a value to.
4713  * \param value Value to write to \a debug.
4714  *
4715  * \return a reference to the \a debug stream.
4716  */
4717 QDebug operator<<(QDebug debug, const LegCurlExerciseName value)
4718 {
4719  switch (value) {
4720  case LegCurlExerciseName::LegCurl : debug << "LegCurl"; break;
4721  case LegCurlExerciseName::WeightedLegCurl : debug << "WeightedLegCurl"; break;
4722  case LegCurlExerciseName::GoodMorning : debug << "GoodMorning"; break;
4723  case LegCurlExerciseName::SeatedBarbellGoodMorning : debug << "SeatedBarbellGoodMorning"; break;
4724  case LegCurlExerciseName::SingleLegBarbellGoodMorning: debug << "SingleLegBarbellGoodMorning"; break;
4725  case LegCurlExerciseName::SingleLegSlidingLegCurl : debug << "SingleLegSlidingLegCurl"; break;
4726  case LegCurlExerciseName::SlidingLegCurl : debug << "SlidingLegCurl"; break;
4727  case LegCurlExerciseName::SplitBarbellGoodMorning : debug << "SplitBarbellGoodMorning"; break;
4728  case LegCurlExerciseName::SplitStanceExtension : debug << "SplitStanceExtension"; break;
4729  case LegCurlExerciseName::StaggeredStanceGoodMorning : debug << "StaggeredStanceGoodMorning"; break;
4730  case LegCurlExerciseName::SwissBallHipRaiseAndLegCurl: debug << "SwissBallHipRaiseAndLegCurl"; break;
4731  case LegCurlExerciseName::ZercherGoodMorning : debug << "ZercherGoodMorning"; break;
4732  default: debug << "unknown";
4733  }
4734  return debug;
4735 }
4736 
4737 /*!
4738  * Writes the LegRaiseExerciseName \a value to the \a debug stream and returns a reference to the stream.
4739  *
4740  * \param debug Debug stream to write \a value to.
4741  * \param value Value to write to \a debug.
4742  *
4743  * \return a reference to the \a debug stream.
4744  */
4745 QDebug operator<<(QDebug debug, const LegRaiseExerciseName value)
4746 {
4747  switch (value) {
4748  case LegRaiseExerciseName::HangingKneeRaise : debug << "HangingKneeRaise"; break;
4749  case LegRaiseExerciseName::HangingLegRaise : debug << "HangingLegRaise"; break;
4750  case LegRaiseExerciseName::WeightedHangingLegRaise : debug << "WeightedHangingLegRaise"; break;
4751  case LegRaiseExerciseName::HangingSingleLegRaise : debug << "HangingSingleLegRaise"; break;
4752  case LegRaiseExerciseName::WeightedHangingSingleLegRaise : debug << "WeightedHangingSingleLegRaise"; break;
4753  case LegRaiseExerciseName::KettlebellLegRaises : debug << "KettlebellLegRaises"; break;
4754  case LegRaiseExerciseName::LegLoweringDrill : debug << "LegLoweringDrill"; break;
4755  case LegRaiseExerciseName::WeightedLegLoweringDrill : debug << "WeightedLegLoweringDrill"; break;
4756  case LegRaiseExerciseName::LyingStraightLegRaise : debug << "LyingStraightLegRaise"; break;
4757  case LegRaiseExerciseName::WeightedLyingStraightLegRaise : debug << "WeightedLyingStraightLegRaise"; break;
4758  case LegRaiseExerciseName::MedicineBallLegDrops : debug << "MedicineBallLegDrops"; break;
4759  case LegRaiseExerciseName::QuadrupedLegRaise : debug << "QuadrupedLegRaise"; break;
4760  case LegRaiseExerciseName::WeightedQuadrupedLegRaise : debug << "WeightedQuadrupedLegRaise"; break;
4761  case LegRaiseExerciseName::ReverseLegRaise : debug << "ReverseLegRaise"; break;
4762  case LegRaiseExerciseName::WeightedReverseLegRaise : debug << "WeightedReverseLegRaise"; break;
4763  case LegRaiseExerciseName::ReverseLegRaiseOnSwissBall : debug << "ReverseLegRaiseOnSwissBall"; break;
4764  case LegRaiseExerciseName::WeightedReverseLegRaiseOnSwissBall: debug << "WeightedReverseLegRaiseOnSwissBall"; break;
4765  case LegRaiseExerciseName::SingleLegLoweringDrill : debug << "SingleLegLoweringDrill"; break;
4766  case LegRaiseExerciseName::WeightedSingleLegLoweringDrill : debug << "WeightedSingleLegLoweringDrill"; break;
4767  case LegRaiseExerciseName::WeightedHangingKneeRaise : debug << "WeightedHangingKneeRaise"; break;
4768  case LegRaiseExerciseName::LateralStepover : debug << "LateralStepover"; break;
4769  case LegRaiseExerciseName::WeightedLateralStepover : debug << "WeightedLateralStepover"; break;
4770  default: debug << "unknown";
4771  }
4772  return debug;
4773 }
4774 
4775 /*!
4776  * Writes the LungeExerciseName \a value to the \a debug stream and returns a reference to the stream.
4777  *
4778  * \param debug Debug stream to write \a value to.
4779  * \param value Value to write to \a debug.
4780  *
4781  * \return a reference to the \a debug stream.
4782  */
4783 QDebug operator<<(QDebug debug, const LungeExerciseName value)
4784 {
4785  switch (value) {
4786  case LungeExerciseName::OverheadLunge : debug << "OverheadLunge"; break;
4787  case LungeExerciseName::LungeMatrix : debug << "LungeMatrix"; break;
4788  case LungeExerciseName::WeightedLungeMatrix : debug << "WeightedLungeMatrix"; break;
4789  case LungeExerciseName::AlternatingBarbellForwardLunge : debug << "AlternatingBarbellForwardLunge"; break;
4790  case LungeExerciseName::AlternatingDumbbellLungeWithReach : debug << "AlternatingDumbbellLungeWithReach"; break;
4791  case LungeExerciseName::BackFootElevatedDumbbellSplitSquat : debug << "BackFootElevatedDumbbellSplitSquat"; break;
4792  case LungeExerciseName::BarbellBoxLunge : debug << "BarbellBoxLunge"; break;
4793  case LungeExerciseName::BarbellBulgarianSplitSquat : debug << "BarbellBulgarianSplitSquat"; break;
4794  case LungeExerciseName::BarbellCrossoverLunge : debug << "BarbellCrossoverLunge"; break;
4795  case LungeExerciseName::BarbellFrontSplitSquat : debug << "BarbellFrontSplitSquat"; break;
4796  case LungeExerciseName::BarbellLunge : debug << "BarbellLunge"; break;
4797  case LungeExerciseName::BarbellReverseLunge : debug << "BarbellReverseLunge"; break;
4798  case LungeExerciseName::BarbellSideLunge : debug << "BarbellSideLunge"; break;
4799  case LungeExerciseName::BarbellSplitSquat : debug << "BarbellSplitSquat"; break;
4800  case LungeExerciseName::CoreControlRearLunge : debug << "CoreControlRearLunge"; break;
4801  case LungeExerciseName::DiagonalLunge : debug << "DiagonalLunge"; break;
4802  case LungeExerciseName::DropLunge : debug << "DropLunge"; break;
4803  case LungeExerciseName::DumbbellBoxLunge : debug << "DumbbellBoxLunge"; break;
4804  case LungeExerciseName::DumbbellBulgarianSplitSquat : debug << "DumbbellBulgarianSplitSquat"; break;
4805  case LungeExerciseName::DumbbellCrossoverLunge : debug << "DumbbellCrossoverLunge"; break;
4806  case LungeExerciseName::DumbbellDiagonalLunge : debug << "DumbbellDiagonalLunge"; break;
4807  case LungeExerciseName::DumbbellLunge : debug << "DumbbellLunge"; break;
4808  case LungeExerciseName::DumbbellLungeAndRotation : debug << "DumbbellLungeAndRotation"; break;
4809  case LungeExerciseName::DumbbellOverheadBulgarianSplitSquat : debug << "DumbbellOverheadBulgarianSplitSquat"; break;
4810  case LungeExerciseName::DumbbellReverseLungeToHighKneeAndPress : debug << "DumbbellReverseLungeToHighKneeAndPress"; break;
4811  case LungeExerciseName::DumbbellSideLunge : debug << "DumbbellSideLunge"; break;
4812  case LungeExerciseName::ElevatedFrontFootBarbellSplitSquat : debug << "ElevatedFrontFootBarbellSplitSquat"; break;
4813  case LungeExerciseName::FrontFootElevatedDumbbellSplitSquat : debug << "FrontFootElevatedDumbbellSplitSquat"; break;
4814  case LungeExerciseName::GunslingerLunge : debug << "GunslingerLunge"; break;
4815  case LungeExerciseName::LawnmowerLunge : debug << "LawnmowerLunge"; break;
4816  case LungeExerciseName::LowLungeWithIsometricAdduction : debug << "LowLungeWithIsometricAdduction"; break;
4817  case LungeExerciseName::LowSideToSideLunge : debug << "LowSideToSideLunge"; break;
4818  case LungeExerciseName::Lunge : debug << "Lunge"; break;
4819  case LungeExerciseName::WeightedLunge : debug << "WeightedLunge"; break;
4820  case LungeExerciseName::LungeWithArmReach : debug << "LungeWithArmReach"; break;
4821  case LungeExerciseName::LungeWithDiagonalReach : debug << "LungeWithDiagonalReach"; break;
4822  case LungeExerciseName::LungeWithSideBend : debug << "LungeWithSideBend"; break;
4823  case LungeExerciseName::OffsetDumbbellLunge : debug << "OffsetDumbbellLunge"; break;
4824  case LungeExerciseName::OffsetDumbbellReverseLunge : debug << "OffsetDumbbellReverseLunge"; break;
4825  case LungeExerciseName::OverheadBulgarianSplitSquat : debug << "OverheadBulgarianSplitSquat"; break;
4826  case LungeExerciseName::OverheadDumbbellReverseLunge : debug << "OverheadDumbbellReverseLunge"; break;
4827  case LungeExerciseName::OverheadDumbbellSplitSquat : debug << "OverheadDumbbellSplitSquat"; break;
4828  case LungeExerciseName::OverheadLungeWithRotation : debug << "OverheadLungeWithRotation"; break;
4829  case LungeExerciseName::ReverseBarbellBoxLunge : debug << "ReverseBarbellBoxLunge"; break;
4830  case LungeExerciseName::ReverseBoxLunge : debug << "ReverseBoxLunge"; break;
4831  case LungeExerciseName::ReverseDumbbellBoxLunge : debug << "ReverseDumbbellBoxLunge"; break;
4832  case LungeExerciseName::ReverseDumbbellCrossoverLunge : debug << "ReverseDumbbellCrossoverLunge"; break;
4833  case LungeExerciseName::ReverseDumbbellDiagonalLunge : debug << "ReverseDumbbellDiagonalLunge"; break;
4834  case LungeExerciseName::ReverseLungeWithReachBack : debug << "ReverseLungeWithReachBack"; break;
4835  case LungeExerciseName::WeightedReverseLungeWithReachBack : debug << "WeightedReverseLungeWithReachBack"; break;
4836  case LungeExerciseName::ReverseLungeWithTwistAndOverheadReach : debug << "ReverseLungeWithTwistAndOverheadReach"; break;
4837  case LungeExerciseName::WeightedReverseLungeWithTwistAndOverheadReach: debug << "WeightedReverseLungeWithTwistAndOverheadReach"; break;
4838  case LungeExerciseName::ReverseSlidingBoxLunge : debug << "ReverseSlidingBoxLunge"; break;
4839  case LungeExerciseName::WeightedReverseSlidingBoxLunge : debug << "WeightedReverseSlidingBoxLunge"; break;
4840  case LungeExerciseName::ReverseSlidingLunge : debug << "ReverseSlidingLunge"; break;
4841  case LungeExerciseName::WeightedReverseSlidingLunge : debug << "WeightedReverseSlidingLunge"; break;
4842  case LungeExerciseName::RunnersLungeToBalance : debug << "RunnersLungeToBalance"; break;
4843  case LungeExerciseName::WeightedRunnersLungeToBalance : debug << "WeightedRunnersLungeToBalance"; break;
4844  case LungeExerciseName::ShiftingSideLunge : debug << "ShiftingSideLunge"; break;
4845  case LungeExerciseName::SideAndCrossoverLunge : debug << "SideAndCrossoverLunge"; break;
4846  case LungeExerciseName::WeightedSideAndCrossoverLunge : debug << "WeightedSideAndCrossoverLunge"; break;
4847  case LungeExerciseName::SideLunge : debug << "SideLunge"; break;
4848  case LungeExerciseName::WeightedSideLunge : debug << "WeightedSideLunge"; break;
4849  case LungeExerciseName::SideLungeAndPress : debug << "SideLungeAndPress"; break;
4850  case LungeExerciseName::SideLungeJumpOff : debug << "SideLungeJumpOff"; break;
4851  case LungeExerciseName::SideLungeSweep : debug << "SideLungeSweep"; break;
4852  case LungeExerciseName::WeightedSideLungeSweep : debug << "WeightedSideLungeSweep"; break;
4853  case LungeExerciseName::SideLungeToCrossoverTap : debug << "SideLungeToCrossoverTap"; break;
4854  case LungeExerciseName::WeightedSideLungeToCrossoverTap : debug << "WeightedSideLungeToCrossoverTap"; break;
4855  case LungeExerciseName::SideToSideLungeChops : debug << "SideToSideLungeChops"; break;
4856  case LungeExerciseName::WeightedSideToSideLungeChops : debug << "WeightedSideToSideLungeChops"; break;
4857  case LungeExerciseName::SiffJumpLunge : debug << "SiffJumpLunge"; break;
4858  case LungeExerciseName::WeightedSiffJumpLunge : debug << "WeightedSiffJumpLunge"; break;
4859  case LungeExerciseName::SingleArmReverseLungeAndPress : debug << "SingleArmReverseLungeAndPress"; break;
4860  case LungeExerciseName::SlidingLateralLunge : debug << "SlidingLateralLunge"; break;
4861  case LungeExerciseName::WeightedSlidingLateralLunge : debug << "WeightedSlidingLateralLunge"; break;
4862  case LungeExerciseName::WalkingBarbellLunge : debug << "WalkingBarbellLunge"; break;
4863  case LungeExerciseName::WalkingDumbbellLunge : debug << "WalkingDumbbellLunge"; break;
4864  case LungeExerciseName::WalkingLunge : debug << "WalkingLunge"; break;
4865  case LungeExerciseName::WeightedWalkingLunge : debug << "WeightedWalkingLunge"; break;
4866  case LungeExerciseName::WideGripOverheadBarbellSplitSquat : debug << "WideGripOverheadBarbellSplitSquat"; break;
4867  default: debug << "unknown";
4868  }
4869  return debug;
4870 }
4871 
4872 /*!
4873  * Writes the OlympicLiftExerciseName \a value to the \a debug stream and returns a reference to the stream.
4874  *
4875  * \param debug Debug stream to write \a value to.
4876  * \param value Value to write to \a debug.
4877  *
4878  * \return a reference to the \a debug stream.
4879  */
4880 QDebug operator<<(QDebug debug, const OlympicLiftExerciseName value)
4881 {
4882  switch (value) {
4883  case OlympicLiftExerciseName::BarbellHangPowerClean : debug << "BarbellHangPowerClean"; break;
4884  case OlympicLiftExerciseName::BarbellHangSquatClean : debug << "BarbellHangSquatClean"; break;
4885  case OlympicLiftExerciseName::BarbellPowerClean : debug << "BarbellPowerClean"; break;
4886  case OlympicLiftExerciseName::BarbellPowerSnatch : debug << "BarbellPowerSnatch"; break;
4887  case OlympicLiftExerciseName::BarbellSquatClean : debug << "BarbellSquatClean"; break;
4888  case OlympicLiftExerciseName::CleanAndJerk : debug << "CleanAndJerk"; break;
4889  case OlympicLiftExerciseName::BarbellHangPowerSnatch : debug << "BarbellHangPowerSnatch"; break;
4890  case OlympicLiftExerciseName::BarbellHangPull : debug << "BarbellHangPull"; break;
4891  case OlympicLiftExerciseName::BarbellHighPull : debug << "BarbellHighPull"; break;
4892  case OlympicLiftExerciseName::BarbellSnatch : debug << "BarbellSnatch"; break;
4893  case OlympicLiftExerciseName::BarbellSplitJerk : debug << "BarbellSplitJerk"; break;
4894  case OlympicLiftExerciseName::Clean : debug << "Clean"; break;
4895  case OlympicLiftExerciseName::DumbbellClean : debug << "DumbbellClean"; break;
4896  case OlympicLiftExerciseName::DumbbellHangPull : debug << "DumbbellHangPull"; break;
4897  case OlympicLiftExerciseName::OneHandDumbbellSplitSnatch: debug << "OneHandDumbbellSplitSnatch"; break;
4898  case OlympicLiftExerciseName::PushJerk : debug << "PushJerk"; break;
4899  case OlympicLiftExerciseName::SingleArmDumbbellSnatch : debug << "SingleArmDumbbellSnatch"; break;
4900  case OlympicLiftExerciseName::SingleArmHangSnatch : debug << "SingleArmHangSnatch"; break;
4901  case OlympicLiftExerciseName::SingleArmKettlebellSnatch : debug << "SingleArmKettlebellSnatch"; break;
4902  case OlympicLiftExerciseName::SplitJerk : debug << "SplitJerk"; break;
4903  case OlympicLiftExerciseName::SquatCleanAndJerk : debug << "SquatCleanAndJerk"; break;
4904  default: debug << "unknown";
4905  }
4906  return debug;
4907 }
4908 
4909 /*!
4910  * Writes the PlankExerciseName \a value to the \a debug stream and returns a reference to the stream.
4911  *
4912  * \param debug Debug stream to write \a value to.
4913  * \param value Value to write to \a debug.
4914  *
4915  * \return a reference to the \a debug stream.
4916  */
4917 QDebug operator<<(QDebug debug, const PlankExerciseName value)
4918 {
4919  switch (value) {
4920  case PlankExerciseName::FortyFiveDegreePlank : debug << "FortyFiveDegreePlank"; break;
4921  case PlankExerciseName::Weighted45DegreePlank : debug << "Weighted45DegreePlank"; break;
4922  case PlankExerciseName::NinetyDegreeStaticHold : debug << "NinetyDegreeStaticHold"; break;
4923  case PlankExerciseName::Weighted90DegreeStaticHold : debug << "Weighted90DegreeStaticHold"; break;
4924  case PlankExerciseName::BearCrawl : debug << "BearCrawl"; break;
4925  case PlankExerciseName::WeightedBearCrawl : debug << "WeightedBearCrawl"; break;
4926  case PlankExerciseName::CrossBodyMountainClimber : debug << "CrossBodyMountainClimber"; break;
4927  case PlankExerciseName::WeightedCrossBodyMountainClimber : debug << "WeightedCrossBodyMountainClimber"; break;
4928  case PlankExerciseName::ElbowPlankPikeJacks : debug << "ElbowPlankPikeJacks"; break;
4929  case PlankExerciseName::WeightedElbowPlankPikeJacks : debug << "WeightedElbowPlankPikeJacks"; break;
4930  case PlankExerciseName::ElevatedFeetPlank : debug << "ElevatedFeetPlank"; break;
4931  case PlankExerciseName::WeightedElevatedFeetPlank : debug << "WeightedElevatedFeetPlank"; break;
4932  case PlankExerciseName::ElevatorAbs : debug << "ElevatorAbs"; break;
4933  case PlankExerciseName::WeightedElevatorAbs : debug << "WeightedElevatorAbs"; break;
4934  case PlankExerciseName::ExtendedPlank : debug << "ExtendedPlank"; break;
4935  case PlankExerciseName::WeightedExtendedPlank : debug << "WeightedExtendedPlank"; break;
4936  case PlankExerciseName::FullPlankPasseTwist : debug << "FullPlankPasseTwist"; break;
4937  case PlankExerciseName::WeightedFullPlankPasseTwist : debug << "WeightedFullPlankPasseTwist"; break;
4938  case PlankExerciseName::InchingElbowPlank : debug << "InchingElbowPlank"; break;
4939  case PlankExerciseName::WeightedInchingElbowPlank : debug << "WeightedInchingElbowPlank"; break;
4940  case PlankExerciseName::InchwormToSidePlank : debug << "InchwormToSidePlank"; break;
4941  case PlankExerciseName::WeightedInchwormToSidePlank : debug << "WeightedInchwormToSidePlank"; break;
4942  case PlankExerciseName::KneelingPlank : debug << "KneelingPlank"; break;
4943  case PlankExerciseName::WeightedKneelingPlank : debug << "WeightedKneelingPlank"; break;
4944  case PlankExerciseName::KneelingSidePlankWithLegLift : debug << "KneelingSidePlankWithLegLift"; break;
4945  case PlankExerciseName::WeightedKneelingSidePlankWithLegLift : debug << "WeightedKneelingSidePlankWithLegLift"; break;
4946  case PlankExerciseName::LateralRoll : debug << "LateralRoll"; break;
4947  case PlankExerciseName::WeightedLateralRoll : debug << "WeightedLateralRoll"; break;
4948  case PlankExerciseName::LyingReversePlank : debug << "LyingReversePlank"; break;
4949  case PlankExerciseName::WeightedLyingReversePlank : debug << "WeightedLyingReversePlank"; break;
4950  case PlankExerciseName::MedicineBallMountainClimber : debug << "MedicineBallMountainClimber"; break;
4951  case PlankExerciseName::WeightedMedicineBallMountainClimber : debug << "WeightedMedicineBallMountainClimber"; break;
4952  case PlankExerciseName::ModifiedMountainClimberAndExtension : debug << "ModifiedMountainClimberAndExtension"; break;
4953  case PlankExerciseName::WeightedModifiedMountainClimberAndExtension : debug << "WeightedModifiedMountainClimberAndExtension"; break;
4954  case PlankExerciseName::MountainClimber : debug << "MountainClimber"; break;
4955  case PlankExerciseName::WeightedMountainClimber : debug << "WeightedMountainClimber"; break;
4956  case PlankExerciseName::MountainClimberOnSlidingDiscs : debug << "MountainClimberOnSlidingDiscs"; break;
4957  case PlankExerciseName::WeightedMountainClimberOnSlidingDiscs : debug << "WeightedMountainClimberOnSlidingDiscs"; break;
4958  case PlankExerciseName::MountainClimberWithFeetOnBosuBall : debug << "MountainClimberWithFeetOnBosuBall"; break;
4959  case PlankExerciseName::WeightedMountainClimberWithFeetOnBosuBall : debug << "WeightedMountainClimberWithFeetOnBosuBall"; break;
4960  case PlankExerciseName::MountainClimberWithHandsOnBench : debug << "MountainClimberWithHandsOnBench"; break;
4961  case PlankExerciseName::MountainClimberWithHandsOnSwissBall : debug << "MountainClimberWithHandsOnSwissBall"; break;
4962  case PlankExerciseName::WeightedMountainClimberWithHandsOnSwissBall : debug << "WeightedMountainClimberWithHandsOnSwissBall"; break;
4963  case PlankExerciseName::Plank : debug << "Plank"; break;
4964  case PlankExerciseName::PlankJacksWithFeetOnSlidingDiscs : debug << "PlankJacksWithFeetOnSlidingDiscs"; break;
4965  case PlankExerciseName::WeightedPlankJacksWithFeetOnSlidingDiscs : debug << "WeightedPlankJacksWithFeetOnSlidingDiscs"; break;
4966  case PlankExerciseName::PlankKneeTwist : debug << "PlankKneeTwist"; break;
4967  case PlankExerciseName::WeightedPlankKneeTwist : debug << "WeightedPlankKneeTwist"; break;
4968  case PlankExerciseName::PlankPikeJumps : debug << "PlankPikeJumps"; break;
4969  case PlankExerciseName::WeightedPlankPikeJumps : debug << "WeightedPlankPikeJumps"; break;
4970  case PlankExerciseName::PlankPikes : debug << "PlankPikes"; break;
4971  case PlankExerciseName::WeightedPlankPikes : debug << "WeightedPlankPikes"; break;
4972  case PlankExerciseName::PlankToStandUp : debug << "PlankToStandUp"; break;
4973  case PlankExerciseName::WeightedPlankToStandUp : debug << "WeightedPlankToStandUp"; break;
4974  case PlankExerciseName::PlankWithArmRaise : debug << "PlankWithArmRaise"; break;
4975  case PlankExerciseName::WeightedPlankWithArmRaise : debug << "WeightedPlankWithArmRaise"; break;
4976  case PlankExerciseName::PlankWithKneeToElbow : debug << "PlankWithKneeToElbow"; break;
4977  case PlankExerciseName::WeightedPlankWithKneeToElbow : debug << "WeightedPlankWithKneeToElbow"; break;
4978  case PlankExerciseName::PlankWithObliqueCrunch : debug << "PlankWithObliqueCrunch"; break;
4979  case PlankExerciseName::WeightedPlankWithObliqueCrunch : debug << "WeightedPlankWithObliqueCrunch"; break;
4980  case PlankExerciseName::PlyometricSidePlank : debug << "PlyometricSidePlank"; break;
4981  case PlankExerciseName::WeightedPlyometricSidePlank : debug << "WeightedPlyometricSidePlank"; break;
4982  case PlankExerciseName::RollingSidePlank : debug << "RollingSidePlank"; break;
4983  case PlankExerciseName::WeightedRollingSidePlank : debug << "WeightedRollingSidePlank"; break;
4984  case PlankExerciseName::SideKickPlank : debug << "SideKickPlank"; break;
4985  case PlankExerciseName::WeightedSideKickPlank : debug << "WeightedSideKickPlank"; break;
4986  case PlankExerciseName::SidePlank : debug << "SidePlank"; break;
4987  case PlankExerciseName::WeightedSidePlank : debug << "WeightedSidePlank"; break;
4988  case PlankExerciseName::SidePlankAndRow : debug << "SidePlankAndRow"; break;
4989  case PlankExerciseName::WeightedSidePlankAndRow : debug << "WeightedSidePlankAndRow"; break;
4990  case PlankExerciseName::SidePlankLift : debug << "SidePlankLift"; break;
4991  case PlankExerciseName::WeightedSidePlankLift : debug << "WeightedSidePlankLift"; break;
4992  case PlankExerciseName::SidePlankWithElbowOnBosuBall : debug << "SidePlankWithElbowOnBosuBall"; break;
4993  case PlankExerciseName::WeightedSidePlankWithElbowOnBosuBall : debug << "WeightedSidePlankWithElbowOnBosuBall"; break;
4994  case PlankExerciseName::SidePlankWithFeetOnBench : debug << "SidePlankWithFeetOnBench"; break;
4995  case PlankExerciseName::WeightedSidePlankWithFeetOnBench : debug << "WeightedSidePlankWithFeetOnBench"; break;
4996  case PlankExerciseName::SidePlankWithKneeCircle : debug << "SidePlankWithKneeCircle"; break;
4997  case PlankExerciseName::WeightedSidePlankWithKneeCircle : debug << "WeightedSidePlankWithKneeCircle"; break;
4998  case PlankExerciseName::SidePlankWithKneeTuck : debug << "SidePlankWithKneeTuck"; break;
4999  case PlankExerciseName::WeightedSidePlankWithKneeTuck : debug << "WeightedSidePlankWithKneeTuck"; break;
5000  case PlankExerciseName::SidePlankWithLegLift : debug << "SidePlankWithLegLift"; break;
5001  case PlankExerciseName::WeightedSidePlankWithLegLift : debug << "WeightedSidePlankWithLegLift"; break;
5002  case PlankExerciseName::SidePlankWithReachUnder : debug << "SidePlankWithReachUnder"; break;
5003  case PlankExerciseName::WeightedSidePlankWithReachUnder : debug << "WeightedSidePlankWithReachUnder"; break;
5004  case PlankExerciseName::SingleLegElevatedFeetPlank : debug << "SingleLegElevatedFeetPlank"; break;
5005  case PlankExerciseName::WeightedSingleLegElevatedFeetPlank : debug << "WeightedSingleLegElevatedFeetPlank"; break;
5006  case PlankExerciseName::SingleLegFlexAndExtend : debug << "SingleLegFlexAndExtend"; break;
5007  case PlankExerciseName::WeightedSingleLegFlexAndExtend : debug << "WeightedSingleLegFlexAndExtend"; break;
5008  case PlankExerciseName::SingleLegSidePlank : debug << "SingleLegSidePlank"; break;
5009  case PlankExerciseName::WeightedSingleLegSidePlank : debug << "WeightedSingleLegSidePlank"; break;
5010  case PlankExerciseName::SpidermanPlank : debug << "SpidermanPlank"; break;
5011  case PlankExerciseName::WeightedSpidermanPlank : debug << "WeightedSpidermanPlank"; break;
5012  case PlankExerciseName::StraightArmPlank : debug << "StraightArmPlank"; break;
5013  case PlankExerciseName::WeightedStraightArmPlank : debug << "WeightedStraightArmPlank"; break;
5014  case PlankExerciseName::StraightArmPlankWithShoulderTouch : debug << "StraightArmPlankWithShoulderTouch"; break;
5015  case PlankExerciseName::WeightedStraightArmPlankWithShoulderTouch : debug << "WeightedStraightArmPlankWithShoulderTouch"; break;
5016  case PlankExerciseName::SwissBallPlank : debug << "SwissBallPlank"; break;
5017  case PlankExerciseName::WeightedSwissBallPlank : debug << "WeightedSwissBallPlank"; break;
5018  case PlankExerciseName::SwissBallPlankLegLift : debug << "SwissBallPlankLegLift"; break;
5019  case PlankExerciseName::WeightedSwissBallPlankLegLift : debug << "WeightedSwissBallPlankLegLift"; break;
5020  case PlankExerciseName::SwissBallPlankLegLiftAndHold : debug << "SwissBallPlankLegLiftAndHold"; break;
5021  case PlankExerciseName::SwissBallPlankWithFeetOnBench : debug << "SwissBallPlankWithFeetOnBench"; break;
5022  case PlankExerciseName::WeightedSwissBallPlankWithFeetOnBench : debug << "WeightedSwissBallPlankWithFeetOnBench"; break;
5023  case PlankExerciseName::SwissBallProneJackknife : debug << "SwissBallProneJackknife"; break;
5024  case PlankExerciseName::WeightedSwissBallProneJackknife : debug << "WeightedSwissBallProneJackknife"; break;
5025  case PlankExerciseName::SwissBallSidePlank : debug << "SwissBallSidePlank"; break;
5026  case PlankExerciseName::WeightedSwissBallSidePlank : debug << "WeightedSwissBallSidePlank"; break;
5027  case PlankExerciseName::ThreeWayPlank : debug << "ThreeWayPlank"; break;
5028  case PlankExerciseName::WeightedThreeWayPlank : debug << "WeightedThreeWayPlank"; break;
5029  case PlankExerciseName::TowelPlankAndKneeIn : debug << "TowelPlankAndKneeIn"; break;
5030  case PlankExerciseName::WeightedTowelPlankAndKneeIn : debug << "WeightedTowelPlankAndKneeIn"; break;
5031  case PlankExerciseName::TStabilization : debug << "TStabilization"; break;
5032  case PlankExerciseName::WeightedTStabilization : debug << "WeightedTStabilization"; break;
5033  case PlankExerciseName::TurkishGetUpToSidePlank : debug << "TurkishGetUpToSidePlank"; break;
5034  case PlankExerciseName::WeightedTurkishGetUpToSidePlank : debug << "WeightedTurkishGetUpToSidePlank"; break;
5035  case PlankExerciseName::TwoPointPlank : debug << "TwoPointPlank"; break;
5036  case PlankExerciseName::WeightedTwoPointPlank : debug << "WeightedTwoPointPlank"; break;
5037  case PlankExerciseName::WeightedPlank : debug << "WeightedPlank"; break;
5038  case PlankExerciseName::WideStancePlankWithDiagonalArmLift : debug << "WideStancePlankWithDiagonalArmLift"; break;
5039  case PlankExerciseName::WeightedWideStancePlankWithDiagonalArmLift : debug << "WeightedWideStancePlankWithDiagonalArmLift"; break;
5040  case PlankExerciseName::WideStancePlankWithDiagonalLegLift : debug << "WideStancePlankWithDiagonalLegLift"; break;
5041  case PlankExerciseName::WeightedWideStancePlankWithDiagonalLegLift : debug << "WeightedWideStancePlankWithDiagonalLegLift"; break;
5042  case PlankExerciseName::WideStancePlankWithLegLift : debug << "WideStancePlankWithLegLift"; break;
5043  case PlankExerciseName::WeightedWideStancePlankWithLegLift : debug << "WeightedWideStancePlankWithLegLift"; break;
5044  case PlankExerciseName::WideStancePlankWithOppositeArmAndLegLift : debug << "WideStancePlankWithOppositeArmAndLegLift"; break;
5045  case PlankExerciseName::WeightedMountainClimberWithHandsOnBench : debug << "WeightedMountainClimberWithHandsOnBench"; break;
5046  case PlankExerciseName::WeightedSwissBallPlankLegLiftAndHold : debug << "WeightedSwissBallPlankLegLiftAndHold"; break;
5047  case PlankExerciseName::WeightedWideStancePlankWithOppositeArmAndLegLift: debug << "WeightedWideStancePlankWithOppositeArmAndLegLift"; break;
5048  case PlankExerciseName::PlankWithFeetOnSwissBall : debug << "PlankWithFeetOnSwissBall"; break;
5049  case PlankExerciseName::SidePlankToPlankWithReachUnder : debug << "SidePlankToPlankWithReachUnder"; break;
5050  case PlankExerciseName::BridgeWithGluteLowerLift : debug << "BridgeWithGluteLowerLift"; break;
5051  case PlankExerciseName::BridgeOneLegBridge : debug << "BridgeOneLegBridge"; break;
5052  case PlankExerciseName::PlankWithArmVariations : debug << "PlankWithArmVariations"; break;
5053  case PlankExerciseName::PlankWithLegLift : debug << "PlankWithLegLift"; break;
5054  case PlankExerciseName::ReversePlankWithLegPull : debug << "ReversePlankWithLegPull"; break;
5055  default: debug << "unknown";
5056  }
5057  return debug;
5058 }
5059 
5060 /*!
5061  * Writes the PlyoExerciseName \a value to the \a debug stream and returns a reference to the stream.
5062  *
5063  * \param debug Debug stream to write \a value to.
5064  * \param value Value to write to \a debug.
5065  *
5066  * \return a reference to the \a debug stream.
5067  */
5068 QDebug operator<<(QDebug debug, const PlyoExerciseName value)
5069 {
5070  switch (value) {
5071  case PlyoExerciseName::AlternatingJumpLunge : debug << "AlternatingJumpLunge"; break;
5072  case PlyoExerciseName::WeightedAlternatingJumpLunge : debug << "WeightedAlternatingJumpLunge"; break;
5073  case PlyoExerciseName::BarbellJumpSquat : debug << "BarbellJumpSquat"; break;
5074  case PlyoExerciseName::BodyWeightJumpSquat : debug << "BodyWeightJumpSquat"; break;
5075  case PlyoExerciseName::WeightedJumpSquat : debug << "WeightedJumpSquat"; break;
5076  case PlyoExerciseName::CrossKneeStrike : debug << "CrossKneeStrike"; break;
5077  case PlyoExerciseName::WeightedCrossKneeStrike : debug << "WeightedCrossKneeStrike"; break;
5078  case PlyoExerciseName::DepthJump : debug << "DepthJump"; break;
5079  case PlyoExerciseName::WeightedDepthJump : debug << "WeightedDepthJump"; break;
5080  case PlyoExerciseName::DumbbellJumpSquat : debug << "DumbbellJumpSquat"; break;
5081  case PlyoExerciseName::DumbbellSplitJump : debug << "DumbbellSplitJump"; break;
5082  case PlyoExerciseName::FrontKneeStrike : debug << "FrontKneeStrike"; break;
5083  case PlyoExerciseName::WeightedFrontKneeStrike : debug << "WeightedFrontKneeStrike"; break;
5084  case PlyoExerciseName::HighBoxJump : debug << "HighBoxJump"; break;
5085  case PlyoExerciseName::WeightedHighBoxJump : debug << "WeightedHighBoxJump"; break;
5086  case PlyoExerciseName::IsometricExplosiveBodyWeightJumpSquat: debug << "IsometricExplosiveBodyWeightJumpSquat"; break;
5087  case PlyoExerciseName::WeightedIsometricExplosiveJumpSquat : debug << "WeightedIsometricExplosiveJumpSquat"; break;
5088  case PlyoExerciseName::LateralLeapAndHop : debug << "LateralLeapAndHop"; break;
5089  case PlyoExerciseName::WeightedLateralLeapAndHop : debug << "WeightedLateralLeapAndHop"; break;
5090  case PlyoExerciseName::LateralPlyoSquats : debug << "LateralPlyoSquats"; break;
5091  case PlyoExerciseName::WeightedLateralPlyoSquats : debug << "WeightedLateralPlyoSquats"; break;
5092  case PlyoExerciseName::LateralSlide : debug << "LateralSlide"; break;
5093  case PlyoExerciseName::WeightedLateralSlide : debug << "WeightedLateralSlide"; break;
5094  case PlyoExerciseName::MedicineBallOverheadThrows : debug << "MedicineBallOverheadThrows"; break;
5095  case PlyoExerciseName::MedicineBallSideThrow : debug << "MedicineBallSideThrow"; break;
5096  case PlyoExerciseName::MedicineBallSlam : debug << "MedicineBallSlam"; break;
5097  case PlyoExerciseName::SideToSideMedicineBallThrows : debug << "SideToSideMedicineBallThrows"; break;
5098  case PlyoExerciseName::SideToSideShuffleJump : debug << "SideToSideShuffleJump"; break;
5099  case PlyoExerciseName::WeightedSideToSideShuffleJump : debug << "WeightedSideToSideShuffleJump"; break;
5100  case PlyoExerciseName::SquatJumpOntoBox : debug << "SquatJumpOntoBox"; break;
5101  case PlyoExerciseName::WeightedSquatJumpOntoBox : debug << "WeightedSquatJumpOntoBox"; break;
5102  case PlyoExerciseName::SquatJumpsInAndOut : debug << "SquatJumpsInAndOut"; break;
5103  case PlyoExerciseName::WeightedSquatJumpsInAndOut : debug << "WeightedSquatJumpsInAndOut"; break;
5104  default: debug << "unknown";
5105  }
5106  return debug;
5107 }
5108 
5109 /*!
5110  * Writes the PullUpExerciseName \a value to the \a debug stream and returns a reference to the stream.
5111  *
5112  * \param debug Debug stream to write \a value to.
5113  * \param value Value to write to \a debug.
5114  *
5115  * \return a reference to the \a debug stream.
5116  */
5117 QDebug operator<<(QDebug debug, const PullUpExerciseName value)
5118 {
5119  switch (value) {
5120  case PullUpExerciseName::BandedPullUps : debug << "BandedPullUps"; break;
5121  case PullUpExerciseName::ThirtyDegreeLatPulldown : debug << "ThirtyDegreeLatPulldown"; break;
5122  case PullUpExerciseName::BandAssistedChinUp : debug << "BandAssistedChinUp"; break;
5123  case PullUpExerciseName::CloseGripChinUp : debug << "CloseGripChinUp"; break;
5124  case PullUpExerciseName::WeightedCloseGripChinUp : debug << "WeightedCloseGripChinUp"; break;
5125  case PullUpExerciseName::CloseGripLatPulldown : debug << "CloseGripLatPulldown"; break;
5126  case PullUpExerciseName::CrossoverChinUp : debug << "CrossoverChinUp"; break;
5127  case PullUpExerciseName::WeightedCrossoverChinUp : debug << "WeightedCrossoverChinUp"; break;
5128  case PullUpExerciseName::EzBarPullover : debug << "EzBarPullover"; break;
5129  case PullUpExerciseName::HangingHurdle : debug << "HangingHurdle"; break;
5130  case PullUpExerciseName::WeightedHangingHurdle : debug << "WeightedHangingHurdle"; break;
5131  case PullUpExerciseName::KneelingLatPulldown : debug << "KneelingLatPulldown"; break;
5132  case PullUpExerciseName::KneelingUnderhandGripLatPulldown: debug << "KneelingUnderhandGripLatPulldown"; break;
5133  case PullUpExerciseName::LatPulldown : debug << "LatPulldown"; break;
5134  case PullUpExerciseName::MixedGripChinUp : debug << "MixedGripChinUp"; break;
5135  case PullUpExerciseName::WeightedMixedGripChinUp : debug << "WeightedMixedGripChinUp"; break;
5136  case PullUpExerciseName::MixedGripPullUp : debug << "MixedGripPullUp"; break;
5137  case PullUpExerciseName::WeightedMixedGripPullUp : debug << "WeightedMixedGripPullUp"; break;
5138  case PullUpExerciseName::ReverseGripPulldown : debug << "ReverseGripPulldown"; break;
5139  case PullUpExerciseName::StandingCablePullover : debug << "StandingCablePullover"; break;
5140  case PullUpExerciseName::StraightArmPulldown : debug << "StraightArmPulldown"; break;
5141  case PullUpExerciseName::SwissBallEzBarPullover : debug << "SwissBallEzBarPullover"; break;
5142  case PullUpExerciseName::TowelPullUp : debug << "TowelPullUp"; break;
5143  case PullUpExerciseName::WeightedTowelPullUp : debug << "WeightedTowelPullUp"; break;
5144  case PullUpExerciseName::WeightedPullUp : debug << "WeightedPullUp"; break;
5145  case PullUpExerciseName::WideGripLatPulldown : debug << "WideGripLatPulldown"; break;
5146  case PullUpExerciseName::WideGripPullUp : debug << "WideGripPullUp"; break;
5147  case PullUpExerciseName::WeightedWideGripPullUp : debug << "WeightedWideGripPullUp"; break;
5148  case PullUpExerciseName::BurpeePullUp : debug << "BurpeePullUp"; break;
5149  case PullUpExerciseName::WeightedBurpeePullUp : debug << "WeightedBurpeePullUp"; break;
5150  case PullUpExerciseName::JumpingPullUps : debug << "JumpingPullUps"; break;
5151  case PullUpExerciseName::WeightedJumpingPullUps : debug << "WeightedJumpingPullUps"; break;
5152  case PullUpExerciseName::KippingPullUp : debug << "KippingPullUp"; break;
5153  case PullUpExerciseName::WeightedKippingPullUp : debug << "WeightedKippingPullUp"; break;
5154  case PullUpExerciseName::LPullUp : debug << "LPullUp"; break;
5155  case PullUpExerciseName::WeightedLPullUp : debug << "WeightedLPullUp"; break;
5156  case PullUpExerciseName::SuspendedChinUp : debug << "SuspendedChinUp"; break;
5157  case PullUpExerciseName::WeightedSuspendedChinUp : debug << "WeightedSuspendedChinUp"; break;
5158  case PullUpExerciseName::PullUp : debug << "PullUp"; break;
5159  default: debug << "unknown";
5160  }
5161  return debug;
5162 }
5163 
5164 /*!
5165  * Writes the PushUpExerciseName \a value to the \a debug stream and returns a reference to the stream.
5166  *
5167  * \param debug Debug stream to write \a value to.
5168  * \param value Value to write to \a debug.
5169  *
5170  * \return a reference to the \a debug stream.
5171  */
5172 QDebug operator<<(QDebug debug, const PushUpExerciseName value)
5173 {
5174  switch (value) {
5175  case PushUpExerciseName::ChestPressWithBand : debug << "ChestPressWithBand"; break;
5176  case PushUpExerciseName::AlternatingStaggeredPushUp : debug << "AlternatingStaggeredPushUp"; break;
5177  case PushUpExerciseName::WeightedAlternatingStaggeredPushUp : debug << "WeightedAlternatingStaggeredPushUp"; break;
5178  case PushUpExerciseName::AlternatingHandsMedicineBallPushUp : debug << "AlternatingHandsMedicineBallPushUp"; break;
5179  case PushUpExerciseName::WeightedAlternatingHandsMedicineBallPushUp: debug << "WeightedAlternatingHandsMedicineBallPushUp"; break;
5180  case PushUpExerciseName::BosuBallPushUp : debug << "BosuBallPushUp"; break;
5181  case PushUpExerciseName::WeightedBosuBallPushUp : debug << "WeightedBosuBallPushUp"; break;
5182  case PushUpExerciseName::ClappingPushUp : debug << "ClappingPushUp"; break;
5183  case PushUpExerciseName::WeightedClappingPushUp : debug << "WeightedClappingPushUp"; break;
5184  case PushUpExerciseName::CloseGripMedicineBallPushUp : debug << "CloseGripMedicineBallPushUp"; break;
5185  case PushUpExerciseName::WeightedCloseGripMedicineBallPushUp : debug << "WeightedCloseGripMedicineBallPushUp"; break;
5186  case PushUpExerciseName::CloseHandsPushUp : debug << "CloseHandsPushUp"; break;
5187  case PushUpExerciseName::WeightedCloseHandsPushUp : debug << "WeightedCloseHandsPushUp"; break;
5188  case PushUpExerciseName::DeclinePushUp : debug << "DeclinePushUp"; break;
5189  case PushUpExerciseName::WeightedDeclinePushUp : debug << "WeightedDeclinePushUp"; break;
5190  case PushUpExerciseName::DiamondPushUp : debug << "DiamondPushUp"; break;
5191  case PushUpExerciseName::WeightedDiamondPushUp : debug << "WeightedDiamondPushUp"; break;
5192  case PushUpExerciseName::ExplosiveCrossoverPushUp : debug << "ExplosiveCrossoverPushUp"; break;
5193  case PushUpExerciseName::WeightedExplosiveCrossoverPushUp : debug << "WeightedExplosiveCrossoverPushUp"; break;
5194  case PushUpExerciseName::ExplosivePushUp : debug << "ExplosivePushUp"; break;
5195  case PushUpExerciseName::WeightedExplosivePushUp : debug << "WeightedExplosivePushUp"; break;
5196  case PushUpExerciseName::FeetElevatedSideToSidePushUp : debug << "FeetElevatedSideToSidePushUp"; break;
5197  case PushUpExerciseName::WeightedFeetElevatedSideToSidePushUp : debug << "WeightedFeetElevatedSideToSidePushUp"; break;
5198  case PushUpExerciseName::HandReleasePushUp : debug << "HandReleasePushUp"; break;
5199  case PushUpExerciseName::WeightedHandReleasePushUp : debug << "WeightedHandReleasePushUp"; break;
5200  case PushUpExerciseName::HandstandPushUp : debug << "HandstandPushUp"; break;
5201  case PushUpExerciseName::WeightedHandstandPushUp : debug << "WeightedHandstandPushUp"; break;
5202  case PushUpExerciseName::InclinePushUp : debug << "InclinePushUp"; break;
5203  case PushUpExerciseName::WeightedInclinePushUp : debug << "WeightedInclinePushUp"; break;
5204  case PushUpExerciseName::IsometricExplosivePushUp : debug << "IsometricExplosivePushUp"; break;
5205  case PushUpExerciseName::WeightedIsometricExplosivePushUp : debug << "WeightedIsometricExplosivePushUp"; break;
5206  case PushUpExerciseName::JudoPushUp : debug << "JudoPushUp"; break;
5207  case PushUpExerciseName::WeightedJudoPushUp : debug << "WeightedJudoPushUp"; break;
5208  case PushUpExerciseName::KneelingPushUp : debug << "KneelingPushUp"; break;
5209  case PushUpExerciseName::WeightedKneelingPushUp : debug << "WeightedKneelingPushUp"; break;
5210  case PushUpExerciseName::MedicineBallChestPass : debug << "MedicineBallChestPass"; break;
5211  case PushUpExerciseName::MedicineBallPushUp : debug << "MedicineBallPushUp"; break;
5212  case PushUpExerciseName::WeightedMedicineBallPushUp : debug << "WeightedMedicineBallPushUp"; break;
5213  case PushUpExerciseName::OneArmPushUp : debug << "OneArmPushUp"; break;
5214  case PushUpExerciseName::WeightedOneArmPushUp : debug << "WeightedOneArmPushUp"; break;
5215  case PushUpExerciseName::WeightedPushUp : debug << "WeightedPushUp"; break;
5216  case PushUpExerciseName::PushUpAndRow : debug << "PushUpAndRow"; break;
5217  case PushUpExerciseName::WeightedPushUpAndRow : debug << "WeightedPushUpAndRow"; break;
5218  case PushUpExerciseName::PushUpPlus : debug << "PushUpPlus"; break;
5219  case PushUpExerciseName::WeightedPushUpPlus : debug << "WeightedPushUpPlus"; break;
5220  case PushUpExerciseName::PushUpWithFeetOnSwissBall : debug << "PushUpWithFeetOnSwissBall"; break;
5221  case PushUpExerciseName::WeightedPushUpWithFeetOnSwissBall : debug << "WeightedPushUpWithFeetOnSwissBall"; break;
5222  case PushUpExerciseName::PushUpWithOneHandOnMedicineBall : debug << "PushUpWithOneHandOnMedicineBall"; break;
5223  case PushUpExerciseName::WeightedPushUpWithOneHandOnMedicineBall : debug << "WeightedPushUpWithOneHandOnMedicineBall"; break;
5224  case PushUpExerciseName::ShoulderPushUp : debug << "ShoulderPushUp"; break;
5225  case PushUpExerciseName::WeightedShoulderPushUp : debug << "WeightedShoulderPushUp"; break;
5226  case PushUpExerciseName::SingleArmMedicineBallPushUp : debug << "SingleArmMedicineBallPushUp"; break;
5227  case PushUpExerciseName::WeightedSingleArmMedicineBallPushUp : debug << "WeightedSingleArmMedicineBallPushUp"; break;
5228  case PushUpExerciseName::SpidermanPushUp : debug << "SpidermanPushUp"; break;
5229  case PushUpExerciseName::WeightedSpidermanPushUp : debug << "WeightedSpidermanPushUp"; break;
5230  case PushUpExerciseName::StackedFeetPushUp : debug << "StackedFeetPushUp"; break;
5231  case PushUpExerciseName::WeightedStackedFeetPushUp : debug << "WeightedStackedFeetPushUp"; break;
5232  case PushUpExerciseName::StaggeredHandsPushUp : debug << "StaggeredHandsPushUp"; break;
5233  case PushUpExerciseName::WeightedStaggeredHandsPushUp : debug << "WeightedStaggeredHandsPushUp"; break;
5234  case PushUpExerciseName::SuspendedPushUp : debug << "SuspendedPushUp"; break;
5235  case PushUpExerciseName::WeightedSuspendedPushUp : debug << "WeightedSuspendedPushUp"; break;
5236  case PushUpExerciseName::SwissBallPushUp : debug << "SwissBallPushUp"; break;
5237  case PushUpExerciseName::WeightedSwissBallPushUp : debug << "WeightedSwissBallPushUp"; break;
5238  case PushUpExerciseName::SwissBallPushUpPlus : debug << "SwissBallPushUpPlus"; break;
5239  case PushUpExerciseName::WeightedSwissBallPushUpPlus : debug << "WeightedSwissBallPushUpPlus"; break;
5240  case PushUpExerciseName::TPushUp : debug << "TPushUp"; break;
5241  case PushUpExerciseName::WeightedTPushUp : debug << "WeightedTPushUp"; break;
5242  case PushUpExerciseName::TripleStopPushUp : debug << "TripleStopPushUp"; break;
5243  case PushUpExerciseName::WeightedTripleStopPushUp : debug << "WeightedTripleStopPushUp"; break;
5244  case PushUpExerciseName::WideHandsPushUp : debug << "WideHandsPushUp"; break;
5245  case PushUpExerciseName::WeightedWideHandsPushUp : debug << "WeightedWideHandsPushUp"; break;
5246  case PushUpExerciseName::ParalletteHandstandPushUp : debug << "ParalletteHandstandPushUp"; break;
5247  case PushUpExerciseName::WeightedParalletteHandstandPushUp : debug << "WeightedParalletteHandstandPushUp"; break;
5248  case PushUpExerciseName::RingHandstandPushUp : debug << "RingHandstandPushUp"; break;
5249  case PushUpExerciseName::WeightedRingHandstandPushUp : debug << "WeightedRingHandstandPushUp"; break;
5250  case PushUpExerciseName::RingPushUp : debug << "RingPushUp"; break;
5251  case PushUpExerciseName::WeightedRingPushUp : debug << "WeightedRingPushUp"; break;
5252  case PushUpExerciseName::PushUp : debug << "PushUp"; break;
5253  case PushUpExerciseName::PilatesPushup : debug << "PilatesPushup"; break;
5254  default: debug << "unknown";
5255  }
5256  return debug;
5257 }
5258 
5259 /*!
5260  * Writes the RowExerciseName \a value to the \a debug stream and returns a reference to the stream.
5261  *
5262  * \param debug Debug stream to write \a value to.
5263  * \param value Value to write to \a debug.
5264  *
5265  * \return a reference to the \a debug stream.
5266  */
5267 QDebug operator<<(QDebug debug, const RowExerciseName value)
5268 {
5269  switch (value) {
5270  case RowExerciseName::BarbellStraightLegDeadliftToRow : debug << "BarbellStraightLegDeadliftToRow"; break;
5271  case RowExerciseName::CableRowStanding : debug << "CableRowStanding"; break;
5272  case RowExerciseName::DumbbellRow : debug << "DumbbellRow"; break;
5273  case RowExerciseName::ElevatedFeetInvertedRow : debug << "ElevatedFeetInvertedRow"; break;
5274  case RowExerciseName::WeightedElevatedFeetInvertedRow : debug << "WeightedElevatedFeetInvertedRow"; break;
5275  case RowExerciseName::FacePull : debug << "FacePull"; break;
5276  case RowExerciseName::FacePullWithExternalRotation : debug << "FacePullWithExternalRotation"; break;
5277  case RowExerciseName::InvertedRowWithFeetOnSwissBall : debug << "InvertedRowWithFeetOnSwissBall"; break;
5278  case RowExerciseName::WeightedInvertedRowWithFeetOnSwissBall : debug << "WeightedInvertedRowWithFeetOnSwissBall"; break;
5279  case RowExerciseName::KettlebellRow : debug << "KettlebellRow"; break;
5280  case RowExerciseName::ModifiedInvertedRow : debug << "ModifiedInvertedRow"; break;
5281  case RowExerciseName::WeightedModifiedInvertedRow : debug << "WeightedModifiedInvertedRow"; break;
5282  case RowExerciseName::NeutralGripAlternatingDumbbellRow : debug << "NeutralGripAlternatingDumbbellRow"; break;
5283  case RowExerciseName::OneArmBentOverRow : debug << "OneArmBentOverRow"; break;
5284  case RowExerciseName::OneLeggedDumbbellRow : debug << "OneLeggedDumbbellRow"; break;
5285  case RowExerciseName::RenegadeRow : debug << "RenegadeRow"; break;
5286  case RowExerciseName::ReverseGripBarbellRow : debug << "ReverseGripBarbellRow"; break;
5287  case RowExerciseName::RopeHandleCableRow : debug << "RopeHandleCableRow"; break;
5288  case RowExerciseName::SeatedCableRow : debug << "SeatedCableRow"; break;
5289  case RowExerciseName::SeatedDumbbellRow : debug << "SeatedDumbbellRow"; break;
5290  case RowExerciseName::SingleArmCableRow : debug << "SingleArmCableRow"; break;
5291  case RowExerciseName::SingleArmCableRowAndRotation : debug << "SingleArmCableRowAndRotation"; break;
5292  case RowExerciseName::SingleArmInvertedRow : debug << "SingleArmInvertedRow"; break;
5293  case RowExerciseName::WeightedSingleArmInvertedRow : debug << "WeightedSingleArmInvertedRow"; break;
5294  case RowExerciseName::SingleArmNeutralGripDumbbellRow : debug << "SingleArmNeutralGripDumbbellRow"; break;
5295  case RowExerciseName::SingleArmNeutralGripDumbbellRowAndRotation: debug << "SingleArmNeutralGripDumbbellRowAndRotation"; break;
5296  case RowExerciseName::SuspendedInvertedRow : debug << "SuspendedInvertedRow"; break;
5297  case RowExerciseName::WeightedSuspendedInvertedRow : debug << "WeightedSuspendedInvertedRow"; break;
5298  case RowExerciseName::TBarRow : debug << "TBarRow"; break;
5299  case RowExerciseName::TowelGripInvertedRow : debug << "TowelGripInvertedRow"; break;
5300  case RowExerciseName::WeightedTowelGripInvertedRow : debug << "WeightedTowelGripInvertedRow"; break;
5301  case RowExerciseName::UnderhandGripCableRow : debug << "UnderhandGripCableRow"; break;
5302  case RowExerciseName::VGripCableRow : debug << "VGripCableRow"; break;
5303  case RowExerciseName::WideGripSeatedCableRow : debug << "WideGripSeatedCableRow"; break;
5304  default: debug << "unknown";
5305  }
5306  return debug;
5307 }
5308 
5309 /*!
5310  * Writes the ShoulderPressExerciseName \a value to the \a debug stream and returns a reference to the stream.
5311  *
5312  * \param debug Debug stream to write \a value to.
5313  * \param value Value to write to \a debug.
5314  *
5315  * \return a reference to the \a debug stream.
5316  */
5317 QDebug operator<<(QDebug debug, const ShoulderPressExerciseName value)
5318 {
5319  switch (value) {
5320  case ShoulderPressExerciseName::AlternatingDumbbellShoulderPress : debug << "AlternatingDumbbellShoulderPress"; break;
5321  case ShoulderPressExerciseName::ArnoldPress : debug << "ArnoldPress"; break;
5322  case ShoulderPressExerciseName::BarbellFrontSquatToPushPress : debug << "BarbellFrontSquatToPushPress"; break;
5323  case ShoulderPressExerciseName::BarbellPushPress : debug << "BarbellPushPress"; break;
5324  case ShoulderPressExerciseName::BarbellShoulderPress : debug << "BarbellShoulderPress"; break;
5325  case ShoulderPressExerciseName::DeadCurlPress : debug << "DeadCurlPress"; break;
5326  case ShoulderPressExerciseName::DumbbellAlternatingShoulderPressAndTwist: debug << "DumbbellAlternatingShoulderPressAndTwist"; break;
5327  case ShoulderPressExerciseName::DumbbellHammerCurlToLungeToPress : debug << "DumbbellHammerCurlToLungeToPress"; break;
5328  case ShoulderPressExerciseName::DumbbellPushPress : debug << "DumbbellPushPress"; break;
5329  case ShoulderPressExerciseName::FloorInvertedShoulderPress : debug << "FloorInvertedShoulderPress"; break;
5330  case ShoulderPressExerciseName::WeightedFloorInvertedShoulderPress : debug << "WeightedFloorInvertedShoulderPress"; break;
5331  case ShoulderPressExerciseName::InvertedShoulderPress : debug << "InvertedShoulderPress"; break;
5332  case ShoulderPressExerciseName::WeightedInvertedShoulderPress : debug << "WeightedInvertedShoulderPress"; break;
5333  case ShoulderPressExerciseName::OneArmPushPress : debug << "OneArmPushPress"; break;
5334  case ShoulderPressExerciseName::OverheadBarbellPress : debug << "OverheadBarbellPress"; break;
5335  case ShoulderPressExerciseName::OverheadDumbbellPress : debug << "OverheadDumbbellPress"; break;
5336  case ShoulderPressExerciseName::SeatedBarbellShoulderPress : debug << "SeatedBarbellShoulderPress"; break;
5337  case ShoulderPressExerciseName::SeatedDumbbellShoulderPress : debug << "SeatedDumbbellShoulderPress"; break;
5338  case ShoulderPressExerciseName::SingleArmDumbbellShoulderPress : debug << "SingleArmDumbbellShoulderPress"; break;
5339  case ShoulderPressExerciseName::SingleArmStepUpAndPress : debug << "SingleArmStepUpAndPress"; break;
5340  case ShoulderPressExerciseName::SmithMachineOverheadPress : debug << "SmithMachineOverheadPress"; break;
5341  case ShoulderPressExerciseName::SplitStanceHammerCurlToPress : debug << "SplitStanceHammerCurlToPress"; break;
5342  case ShoulderPressExerciseName::SwissBallDumbbellShoulderPress : debug << "SwissBallDumbbellShoulderPress"; break;
5343  case ShoulderPressExerciseName::WeightPlateFrontRaise : debug << "WeightPlateFrontRaise"; break;
5344  default: debug << "unknown";
5345  }
5346  return debug;
5347 }
5348 
5349 /*!
5350  * Writes the ShoulderStabilityExerciseName \a value to the \a debug stream and returns a reference to the stream.
5351  *
5352  * \param debug Debug stream to write \a value to.
5353  * \param value Value to write to \a debug.
5354  *
5355  * \return a reference to the \a debug stream.
5356  */
5357 QDebug operator<<(QDebug debug, const ShoulderStabilityExerciseName value)
5358 {
5359  switch (value) {
5360  case ShoulderStabilityExerciseName::NinetyDegreeCableExternalRotation : debug << "NinetyDegreeCableExternalRotation"; break;
5361  case ShoulderStabilityExerciseName::BandExternalRotation : debug << "BandExternalRotation"; break;
5362  case ShoulderStabilityExerciseName::BandInternalRotation : debug << "BandInternalRotation"; break;
5363  case ShoulderStabilityExerciseName::BentArmLateralRaiseAndExternalRotation: debug << "BentArmLateralRaiseAndExternalRotation"; break;
5364  case ShoulderStabilityExerciseName::CableExternalRotation : debug << "CableExternalRotation"; break;
5365  case ShoulderStabilityExerciseName::DumbbellFacePullWithExternalRotation : debug << "DumbbellFacePullWithExternalRotation"; break;
5366  case ShoulderStabilityExerciseName::FloorIRaise : debug << "FloorIRaise"; break;
5367  case ShoulderStabilityExerciseName::WeightedFloorIRaise : debug << "WeightedFloorIRaise"; break;
5368  case ShoulderStabilityExerciseName::FloorTRaise : debug << "FloorTRaise"; break;
5369  case ShoulderStabilityExerciseName::WeightedFloorTRaise : debug << "WeightedFloorTRaise"; break;
5370  case ShoulderStabilityExerciseName::FloorYRaise : debug << "FloorYRaise"; break;
5371  case ShoulderStabilityExerciseName::WeightedFloorYRaise : debug << "WeightedFloorYRaise"; break;
5372  case ShoulderStabilityExerciseName::InclineIRaise : debug << "InclineIRaise"; break;
5373  case ShoulderStabilityExerciseName::WeightedInclineIRaise : debug << "WeightedInclineIRaise"; break;
5374  case ShoulderStabilityExerciseName::InclineLRaise : debug << "InclineLRaise"; break;
5375  case ShoulderStabilityExerciseName::WeightedInclineLRaise : debug << "WeightedInclineLRaise"; break;
5376  case ShoulderStabilityExerciseName::InclineTRaise : debug << "InclineTRaise"; break;
5377  case ShoulderStabilityExerciseName::WeightedInclineTRaise : debug << "WeightedInclineTRaise"; break;
5378  case ShoulderStabilityExerciseName::InclineWRaise : debug << "InclineWRaise"; break;
5379  case ShoulderStabilityExerciseName::WeightedInclineWRaise : debug << "WeightedInclineWRaise"; break;
5380  case ShoulderStabilityExerciseName::InclineYRaise : debug << "InclineYRaise"; break;
5381  case ShoulderStabilityExerciseName::WeightedInclineYRaise : debug << "WeightedInclineYRaise"; break;
5382  case ShoulderStabilityExerciseName::LyingExternalRotation : debug << "LyingExternalRotation"; break;
5383  case ShoulderStabilityExerciseName::SeatedDumbbellExternalRotation : debug << "SeatedDumbbellExternalRotation"; break;
5384  case ShoulderStabilityExerciseName::StandingLRaise : debug << "StandingLRaise"; break;
5385  case ShoulderStabilityExerciseName::SwissBallIRaise : debug << "SwissBallIRaise"; break;
5386  case ShoulderStabilityExerciseName::WeightedSwissBallIRaise : debug << "WeightedSwissBallIRaise"; break;
5387  case ShoulderStabilityExerciseName::SwissBallTRaise : debug << "SwissBallTRaise"; break;
5388  case ShoulderStabilityExerciseName::WeightedSwissBallTRaise : debug << "WeightedSwissBallTRaise"; break;
5389  case ShoulderStabilityExerciseName::SwissBallWRaise : debug << "SwissBallWRaise"; break;
5390  case ShoulderStabilityExerciseName::WeightedSwissBallWRaise : debug << "WeightedSwissBallWRaise"; break;
5391  case ShoulderStabilityExerciseName::SwissBallYRaise : debug << "SwissBallYRaise"; break;
5392  case ShoulderStabilityExerciseName::WeightedSwissBallYRaise : debug << "WeightedSwissBallYRaise"; break;
5393  default: debug << "unknown";
5394  }
5395  return debug;
5396 }
5397 
5398 /*!
5399  * Writes the ShrugExerciseName \a value to the \a debug stream and returns a reference to the stream.
5400  *
5401  * \param debug Debug stream to write \a value to.
5402  * \param value Value to write to \a debug.
5403  *
5404  * \return a reference to the \a debug stream.
5405  */
5406 QDebug operator<<(QDebug debug, const ShrugExerciseName value)
5407 {
5408  switch (value) {
5409  case ShrugExerciseName::BarbellJumpShrug : debug << "BarbellJumpShrug"; break;
5410  case ShrugExerciseName::BarbellShrug : debug << "BarbellShrug"; break;
5411  case ShrugExerciseName::BarbellUprightRow : debug << "BarbellUprightRow"; break;
5412  case ShrugExerciseName::BehindTheBackSmithMachineShrug: debug << "BehindTheBackSmithMachineShrug"; break;
5413  case ShrugExerciseName::DumbbellJumpShrug : debug << "DumbbellJumpShrug"; break;
5414  case ShrugExerciseName::DumbbellShrug : debug << "DumbbellShrug"; break;
5415  case ShrugExerciseName::DumbbellUprightRow : debug << "DumbbellUprightRow"; break;
5416  case ShrugExerciseName::InclineDumbbellShrug : debug << "InclineDumbbellShrug"; break;
5417  case ShrugExerciseName::OverheadBarbellShrug : debug << "OverheadBarbellShrug"; break;
5418  case ShrugExerciseName::OverheadDumbbellShrug : debug << "OverheadDumbbellShrug"; break;
5419  case ShrugExerciseName::ScaptionAndShrug : debug << "ScaptionAndShrug"; break;
5420  case ShrugExerciseName::ScapularRetraction : debug << "ScapularRetraction"; break;
5421  case ShrugExerciseName::SerratusChairShrug : debug << "SerratusChairShrug"; break;
5422  case ShrugExerciseName::WeightedSerratusChairShrug : debug << "WeightedSerratusChairShrug"; break;
5423  case ShrugExerciseName::SerratusShrug : debug << "SerratusShrug"; break;
5424  case ShrugExerciseName::WeightedSerratusShrug : debug << "WeightedSerratusShrug"; break;
5425  case ShrugExerciseName::WideGripJumpShrug : debug << "WideGripJumpShrug"; break;
5426  default: debug << "unknown";
5427  }
5428  return debug;
5429 }
5430 
5431 /*!
5432  * Writes the SitUpExerciseName \a value to the \a debug stream and returns a reference to the stream.
5433  *
5434  * \param debug Debug stream to write \a value to.
5435  * \param value Value to write to \a debug.
5436  *
5437  * \return a reference to the \a debug stream.
5438  */
5439 QDebug operator<<(QDebug debug, const SitUpExerciseName value)
5440 {
5441  switch (value) {
5442  case SitUpExerciseName::AlternatingSitUp : debug << "AlternatingSitUp"; break;
5443  case SitUpExerciseName::WeightedAlternatingSitUp : debug << "WeightedAlternatingSitUp"; break;
5444  case SitUpExerciseName::BentKneeVUp : debug << "BentKneeVUp"; break;
5445  case SitUpExerciseName::WeightedBentKneeVUp : debug << "WeightedBentKneeVUp"; break;
5446  case SitUpExerciseName::ButterflySitUp : debug << "ButterflySitUp"; break;
5447  case SitUpExerciseName::WeightedButterflySitup : debug << "WeightedButterflySitup"; break;
5448  case SitUpExerciseName::CrossPunchRollUp : debug << "CrossPunchRollUp"; break;
5449  case SitUpExerciseName::WeightedCrossPunchRollUp : debug << "WeightedCrossPunchRollUp"; break;
5450  case SitUpExerciseName::CrossedArmsSitUp : debug << "CrossedArmsSitUp"; break;
5451  case SitUpExerciseName::WeightedCrossedArmsSitUp : debug << "WeightedCrossedArmsSitUp"; break;
5452  case SitUpExerciseName::GetUpSitUp : debug << "GetUpSitUp"; break;
5453  case SitUpExerciseName::WeightedGetUpSitUp : debug << "WeightedGetUpSitUp"; break;
5454  case SitUpExerciseName::HoveringSitUp : debug << "HoveringSitUp"; break;
5455  case SitUpExerciseName::WeightedHoveringSitUp : debug << "WeightedHoveringSitUp"; break;
5456  case SitUpExerciseName::KettlebellSitUp : debug << "KettlebellSitUp"; break;
5457  case SitUpExerciseName::MedicineBallAlternatingVUp : debug << "MedicineBallAlternatingVUp"; break;
5458  case SitUpExerciseName::MedicineBallSitUp : debug << "MedicineBallSitUp"; break;
5459  case SitUpExerciseName::MedicineBallVUp : debug << "MedicineBallVUp"; break;
5460  case SitUpExerciseName::ModifiedSitUp : debug << "ModifiedSitUp"; break;
5461  case SitUpExerciseName::NegativeSitUp : debug << "NegativeSitUp"; break;
5462  case SitUpExerciseName::OneArmFullSitUp : debug << "OneArmFullSitUp"; break;
5463  case SitUpExerciseName::RecliningCircle : debug << "RecliningCircle"; break;
5464  case SitUpExerciseName::WeightedRecliningCircle : debug << "WeightedRecliningCircle"; break;
5465  case SitUpExerciseName::ReverseCurlUp : debug << "ReverseCurlUp"; break;
5466  case SitUpExerciseName::WeightedReverseCurlUp : debug << "WeightedReverseCurlUp"; break;
5467  case SitUpExerciseName::SingleLegSwissBallJackknife : debug << "SingleLegSwissBallJackknife"; break;
5468  case SitUpExerciseName::WeightedSingleLegSwissBallJackknife: debug << "WeightedSingleLegSwissBallJackknife"; break;
5469  case SitUpExerciseName::TheTeaser : debug << "TheTeaser"; break;
5470  case SitUpExerciseName::TheTeaserWeighted : debug << "TheTeaserWeighted"; break;
5471  case SitUpExerciseName::ThreePartRollDown : debug << "ThreePartRollDown"; break;
5472  case SitUpExerciseName::WeightedThreePartRollDown : debug << "WeightedThreePartRollDown"; break;
5473  case SitUpExerciseName::VUp : debug << "VUp"; break;
5474  case SitUpExerciseName::WeightedVUp : debug << "WeightedVUp"; break;
5475  case SitUpExerciseName::WeightedRussianTwistOnSwissBall : debug << "WeightedRussianTwistOnSwissBall"; break;
5476  case SitUpExerciseName::WeightedSitUp : debug << "WeightedSitUp"; break;
5477  case SitUpExerciseName::XAbs : debug << "XAbs"; break;
5478  case SitUpExerciseName::WeightedXAbs : debug << "WeightedXAbs"; break;
5479  case SitUpExerciseName::SitUp : debug << "SitUp"; break;
5480  default: debug << "unknown";
5481  }
5482  return debug;
5483 }
5484 
5485 /*!
5486  * Writes the SquatExerciseName \a value to the \a debug stream and returns a reference to the stream.
5487  *
5488  * \param debug Debug stream to write \a value to.
5489  * \param value Value to write to \a debug.
5490  *
5491  * \return a reference to the \a debug stream.
5492  */
5493 QDebug operator<<(QDebug debug, const SquatExerciseName value)
5494 {
5495  switch (value) {
5496  case SquatExerciseName::LegPress : debug << "LegPress"; break;
5497  case SquatExerciseName::BackSquatWithBodyBar : debug << "BackSquatWithBodyBar"; break;
5498  case SquatExerciseName::BackSquats : debug << "BackSquats"; break;
5499  case SquatExerciseName::WeightedBackSquats : debug << "WeightedBackSquats"; break;
5500  case SquatExerciseName::BalancingSquat : debug << "BalancingSquat"; break;
5501  case SquatExerciseName::WeightedBalancingSquat : debug << "WeightedBalancingSquat"; break;
5502  case SquatExerciseName::BarbellBackSquat : debug << "BarbellBackSquat"; break;
5503  case SquatExerciseName::BarbellBoxSquat : debug << "BarbellBoxSquat"; break;
5504  case SquatExerciseName::BarbellFrontSquat : debug << "BarbellFrontSquat"; break;
5505  case SquatExerciseName::BarbellHackSquat : debug << "BarbellHackSquat"; break;
5506  case SquatExerciseName::BarbellHangSquatSnatch : debug << "BarbellHangSquatSnatch"; break;
5507  case SquatExerciseName::BarbellLateralStepUp : debug << "BarbellLateralStepUp"; break;
5508  case SquatExerciseName::BarbellQuarterSquat : debug << "BarbellQuarterSquat"; break;
5509  case SquatExerciseName::BarbellSiffSquat : debug << "BarbellSiffSquat"; break;
5510  case SquatExerciseName::BarbellSquatSnatch : debug << "BarbellSquatSnatch"; break;
5511  case SquatExerciseName::BarbellSquatWithHeelsRaised : debug << "BarbellSquatWithHeelsRaised"; break;
5512  case SquatExerciseName::BarbellStepover : debug << "BarbellStepover"; break;
5513  case SquatExerciseName::BarbellStepUp : debug << "BarbellStepUp"; break;
5514  case SquatExerciseName::BenchSquatWithRotationalChop : debug << "BenchSquatWithRotationalChop"; break;
5515  case SquatExerciseName::WeightedBenchSquatWithRotationalChop : debug << "WeightedBenchSquatWithRotationalChop"; break;
5516  case SquatExerciseName::BodyWeightWallSquat : debug << "BodyWeightWallSquat"; break;
5517  case SquatExerciseName::WeightedWallSquat : debug << "WeightedWallSquat"; break;
5518  case SquatExerciseName::BoxStepSquat : debug << "BoxStepSquat"; break;
5519  case SquatExerciseName::WeightedBoxStepSquat : debug << "WeightedBoxStepSquat"; break;
5520  case SquatExerciseName::BracedSquat : debug << "BracedSquat"; break;
5521  case SquatExerciseName::CrossedArmBarbellFrontSquat : debug << "CrossedArmBarbellFrontSquat"; break;
5522  case SquatExerciseName::CrossoverDumbbellStepUp : debug << "CrossoverDumbbellStepUp"; break;
5523  case SquatExerciseName::DumbbellFrontSquat : debug << "DumbbellFrontSquat"; break;
5524  case SquatExerciseName::DumbbellSplitSquat : debug << "DumbbellSplitSquat"; break;
5525  case SquatExerciseName::DumbbellSquat : debug << "DumbbellSquat"; break;
5526  case SquatExerciseName::DumbbellSquatClean : debug << "DumbbellSquatClean"; break;
5527  case SquatExerciseName::DumbbellStepover : debug << "DumbbellStepover"; break;
5528  case SquatExerciseName::DumbbellStepUp : debug << "DumbbellStepUp"; break;
5529  case SquatExerciseName::ElevatedSingleLegSquat : debug << "ElevatedSingleLegSquat"; break;
5530  case SquatExerciseName::WeightedElevatedSingleLegSquat : debug << "WeightedElevatedSingleLegSquat"; break;
5531  case SquatExerciseName::FigureFourSquats : debug << "FigureFourSquats"; break;
5532  case SquatExerciseName::WeightedFigureFourSquats : debug << "WeightedFigureFourSquats"; break;
5533  case SquatExerciseName::GobletSquat : debug << "GobletSquat"; break;
5534  case SquatExerciseName::KettlebellSquat : debug << "KettlebellSquat"; break;
5535  case SquatExerciseName::KettlebellSwingOverhead : debug << "KettlebellSwingOverhead"; break;
5536  case SquatExerciseName::KettlebellSwingWithFlipToSquat : debug << "KettlebellSwingWithFlipToSquat"; break;
5537  case SquatExerciseName::LateralDumbbellStepUp : debug << "LateralDumbbellStepUp"; break;
5538  case SquatExerciseName::OneLeggedSquat : debug << "OneLeggedSquat"; break;
5539  case SquatExerciseName::OverheadDumbbellSquat : debug << "OverheadDumbbellSquat"; break;
5540  case SquatExerciseName::OverheadSquat : debug << "OverheadSquat"; break;
5541  case SquatExerciseName::PartialSingleLegSquat : debug << "PartialSingleLegSquat"; break;
5542  case SquatExerciseName::WeightedPartialSingleLegSquat : debug << "WeightedPartialSingleLegSquat"; break;
5543  case SquatExerciseName::PistolSquat : debug << "PistolSquat"; break;
5544  case SquatExerciseName::WeightedPistolSquat : debug << "WeightedPistolSquat"; break;
5545  case SquatExerciseName::PlieSlides : debug << "PlieSlides"; break;
5546  case SquatExerciseName::WeightedPlieSlides : debug << "WeightedPlieSlides"; break;
5547  case SquatExerciseName::PlieSquat : debug << "PlieSquat"; break;
5548  case SquatExerciseName::WeightedPlieSquat : debug << "WeightedPlieSquat"; break;
5549  case SquatExerciseName::PrisonerSquat : debug << "PrisonerSquat"; break;
5550  case SquatExerciseName::WeightedPrisonerSquat : debug << "WeightedPrisonerSquat"; break;
5551  case SquatExerciseName::SingleLegBenchGetUp : debug << "SingleLegBenchGetUp"; break;
5552  case SquatExerciseName::WeightedSingleLegBenchGetUp : debug << "WeightedSingleLegBenchGetUp"; break;
5553  case SquatExerciseName::SingleLegBenchSquat : debug << "SingleLegBenchSquat"; break;
5554  case SquatExerciseName::WeightedSingleLegBenchSquat : debug << "WeightedSingleLegBenchSquat"; break;
5555  case SquatExerciseName::SingleLegSquatOnSwissBall : debug << "SingleLegSquatOnSwissBall"; break;
5556  case SquatExerciseName::WeightedSingleLegSquatOnSwissBall : debug << "WeightedSingleLegSquatOnSwissBall"; break;
5557  case SquatExerciseName::Squat : debug << "Squat"; break;
5558  case SquatExerciseName::WeightedSquat : debug << "WeightedSquat"; break;
5559  case SquatExerciseName::SquatsWithBand : debug << "SquatsWithBand"; break;
5560  case SquatExerciseName::StaggeredSquat : debug << "StaggeredSquat"; break;
5561  case SquatExerciseName::WeightedStaggeredSquat : debug << "WeightedStaggeredSquat"; break;
5562  case SquatExerciseName::StepUp : debug << "StepUp"; break;
5563  case SquatExerciseName::WeightedStepUp : debug << "WeightedStepUp"; break;
5564  case SquatExerciseName::SuitcaseSquats : debug << "SuitcaseSquats"; break;
5565  case SquatExerciseName::SumoSquat : debug << "SumoSquat"; break;
5566  case SquatExerciseName::SumoSquatSlideIn : debug << "SumoSquatSlideIn"; break;
5567  case SquatExerciseName::WeightedSumoSquatSlideIn : debug << "WeightedSumoSquatSlideIn"; break;
5568  case SquatExerciseName::SumoSquatToHighPull : debug << "SumoSquatToHighPull"; break;
5569  case SquatExerciseName::SumoSquatToStand : debug << "SumoSquatToStand"; break;
5570  case SquatExerciseName::WeightedSumoSquatToStand : debug << "WeightedSumoSquatToStand"; break;
5571  case SquatExerciseName::SumoSquatWithRotation : debug << "SumoSquatWithRotation"; break;
5572  case SquatExerciseName::WeightedSumoSquatWithRotation : debug << "WeightedSumoSquatWithRotation"; break;
5573  case SquatExerciseName::SwissBallBodyWeightWallSquat : debug << "SwissBallBodyWeightWallSquat"; break;
5574  case SquatExerciseName::WeightedSwissBallWallSquat : debug << "WeightedSwissBallWallSquat"; break;
5575  case SquatExerciseName::Thrusters : debug << "Thrusters"; break;
5576  case SquatExerciseName::UnevenSquat : debug << "UnevenSquat"; break;
5577  case SquatExerciseName::WeightedUnevenSquat : debug << "WeightedUnevenSquat"; break;
5578  case SquatExerciseName::WaistSlimmingSquat : debug << "WaistSlimmingSquat"; break;
5579  case SquatExerciseName::WallBall : debug << "WallBall"; break;
5580  case SquatExerciseName::WideStanceBarbellSquat : debug << "WideStanceBarbellSquat"; break;
5581  case SquatExerciseName::WideStanceGobletSquat : debug << "WideStanceGobletSquat"; break;
5582  case SquatExerciseName::ZercherSquat : debug << "ZercherSquat"; break;
5583  case SquatExerciseName::KbsOverhead : debug << "KbsOverhead"; break;
5584  case SquatExerciseName::SquatAndSideKick : debug << "SquatAndSideKick"; break;
5585  case SquatExerciseName::SquatJumpsInNOut : debug << "SquatJumpsInNOut"; break;
5586  case SquatExerciseName::PilatesPlieSquatsParallelTurnedOutFlatAndHeels : debug << "PilatesPlieSquatsParallelTurnedOutFlatAndHeels"; break;
5587  case SquatExerciseName::ReleveStraightLegAndKneeBentWithOneLegVariation: debug << "ReleveStraightLegAndKneeBentWithOneLegVariation"; break;
5588  default: debug << "unknown";
5589  }
5590  return debug;
5591 }
5592 
5593 /*!
5594  * Writes the TotalBodyExerciseName \a value to the \a debug stream and returns a reference to the stream.
5595  *
5596  * \param debug Debug stream to write \a value to.
5597  * \param value Value to write to \a debug.
5598  *
5599  * \return a reference to the \a debug stream.
5600  */
5601 QDebug operator<<(QDebug debug, const TotalBodyExerciseName value)
5602 {
5603  switch (value) {
5604  case TotalBodyExerciseName::Burpee : debug << "Burpee"; break;
5605  case TotalBodyExerciseName::WeightedBurpee : debug << "WeightedBurpee"; break;
5606  case TotalBodyExerciseName::BurpeeBoxJump : debug << "BurpeeBoxJump"; break;
5607  case TotalBodyExerciseName::WeightedBurpeeBoxJump : debug << "WeightedBurpeeBoxJump"; break;
5608  case TotalBodyExerciseName::HighPullBurpee : debug << "HighPullBurpee"; break;
5609  case TotalBodyExerciseName::ManMakers : debug << "ManMakers"; break;
5610  case TotalBodyExerciseName::OneArmBurpee : debug << "OneArmBurpee"; break;
5611  case TotalBodyExerciseName::SquatThrusts : debug << "SquatThrusts"; break;
5612  case TotalBodyExerciseName::WeightedSquatThrusts : debug << "WeightedSquatThrusts"; break;
5613  case TotalBodyExerciseName::SquatPlankPushUp : debug << "SquatPlankPushUp"; break;
5614  case TotalBodyExerciseName::WeightedSquatPlankPushUp : debug << "WeightedSquatPlankPushUp"; break;
5615  case TotalBodyExerciseName::StandingTRotationBalance : debug << "StandingTRotationBalance"; break;
5616  case TotalBodyExerciseName::WeightedStandingTRotationBalance: debug << "WeightedStandingTRotationBalance"; break;
5617  default: debug << "unknown";
5618  }
5619  return debug;
5620 }
5621 
5622 /*!
5623  * Writes the TricepsExtensionExerciseName \a value to the \a debug stream and returns a reference to the stream.
5624  *
5625  * \param debug Debug stream to write \a value to.
5626  * \param value Value to write to \a debug.
5627  *
5628  * \return a reference to the \a debug stream.
5629  */
5630 QDebug operator<<(QDebug debug, const TricepsExtensionExerciseName value)
5631 {
5632  switch (value) {
5633  case TricepsExtensionExerciseName::BenchDip : debug << "BenchDip"; break;
5634  case TricepsExtensionExerciseName::WeightedBenchDip : debug << "WeightedBenchDip"; break;
5635  case TricepsExtensionExerciseName::BodyWeightDip : debug << "BodyWeightDip"; break;
5636  case TricepsExtensionExerciseName::CableKickback : debug << "CableKickback"; break;
5637  case TricepsExtensionExerciseName::CableLyingTricepsExtension : debug << "CableLyingTricepsExtension"; break;
5638  case TricepsExtensionExerciseName::CableOverheadTricepsExtension : debug << "CableOverheadTricepsExtension"; break;
5639  case TricepsExtensionExerciseName::DumbbellKickback : debug << "DumbbellKickback"; break;
5640  case TricepsExtensionExerciseName::DumbbellLyingTricepsExtension : debug << "DumbbellLyingTricepsExtension"; break;
5641  case TricepsExtensionExerciseName::EzBarOverheadTricepsExtension : debug << "EzBarOverheadTricepsExtension"; break;
5642  case TricepsExtensionExerciseName::InclineDip : debug << "InclineDip"; break;
5643  case TricepsExtensionExerciseName::WeightedInclineDip : debug << "WeightedInclineDip"; break;
5644  case TricepsExtensionExerciseName::InclineEzBarLyingTricepsExtension : debug << "InclineEzBarLyingTricepsExtension"; break;
5645  case TricepsExtensionExerciseName::LyingDumbbellPulloverToExtension : debug << "LyingDumbbellPulloverToExtension"; break;
5646  case TricepsExtensionExerciseName::LyingEzBarTricepsExtension : debug << "LyingEzBarTricepsExtension"; break;
5647  case TricepsExtensionExerciseName::LyingTricepsExtensionToCloseGripBenchPress : debug << "LyingTricepsExtensionToCloseGripBenchPress"; break;
5648  case TricepsExtensionExerciseName::OverheadDumbbellTricepsExtension : debug << "OverheadDumbbellTricepsExtension"; break;
5649  case TricepsExtensionExerciseName::RecliningTricepsPress : debug << "RecliningTricepsPress"; break;
5650  case TricepsExtensionExerciseName::ReverseGripPressdown : debug << "ReverseGripPressdown"; break;
5651  case TricepsExtensionExerciseName::ReverseGripTricepsPressdown : debug << "ReverseGripTricepsPressdown"; break;
5652  case TricepsExtensionExerciseName::RopePressdown : debug << "RopePressdown"; break;
5653  case TricepsExtensionExerciseName::SeatedBarbellOverheadTricepsExtension : debug << "SeatedBarbellOverheadTricepsExtension"; break;
5654  case TricepsExtensionExerciseName::SeatedDumbbellOverheadTricepsExtension : debug << "SeatedDumbbellOverheadTricepsExtension"; break;
5655  case TricepsExtensionExerciseName::SeatedEzBarOverheadTricepsExtension : debug << "SeatedEzBarOverheadTricepsExtension"; break;
5656  case TricepsExtensionExerciseName::SeatedSingleArmOverheadDumbbellExtension : debug << "SeatedSingleArmOverheadDumbbellExtension"; break;
5657  case TricepsExtensionExerciseName::SingleArmDumbbellOverheadTricepsExtension : debug << "SingleArmDumbbellOverheadTricepsExtension"; break;
5658  case TricepsExtensionExerciseName::SingleDumbbellSeatedOverheadTricepsExtension: debug << "SingleDumbbellSeatedOverheadTricepsExtension"; break;
5659  case TricepsExtensionExerciseName::SingleLegBenchDipAndKick : debug << "SingleLegBenchDipAndKick"; break;
5660  case TricepsExtensionExerciseName::WeightedSingleLegBenchDipAndKick : debug << "WeightedSingleLegBenchDipAndKick"; break;
5661  case TricepsExtensionExerciseName::SingleLegDip : debug << "SingleLegDip"; break;
5662  case TricepsExtensionExerciseName::WeightedSingleLegDip : debug << "WeightedSingleLegDip"; break;
5663  case TricepsExtensionExerciseName::StaticLyingTricepsExtension : debug << "StaticLyingTricepsExtension"; break;
5664  case TricepsExtensionExerciseName::SuspendedDip : debug << "SuspendedDip"; break;
5665  case TricepsExtensionExerciseName::WeightedSuspendedDip : debug << "WeightedSuspendedDip"; break;
5666  case TricepsExtensionExerciseName::SwissBallDumbbellLyingTricepsExtension : debug << "SwissBallDumbbellLyingTricepsExtension"; break;
5667  case TricepsExtensionExerciseName::SwissBallEzBarLyingTricepsExtension : debug << "SwissBallEzBarLyingTricepsExtension"; break;
5668  case TricepsExtensionExerciseName::SwissBallEzBarOverheadTricepsExtension : debug << "SwissBallEzBarOverheadTricepsExtension"; break;
5669  case TricepsExtensionExerciseName::TabletopDip : debug << "TabletopDip"; break;
5670  case TricepsExtensionExerciseName::WeightedTabletopDip : debug << "WeightedTabletopDip"; break;
5671  case TricepsExtensionExerciseName::TricepsExtensionOnFloor : debug << "TricepsExtensionOnFloor"; break;
5672  case TricepsExtensionExerciseName::TricepsPressdown : debug << "TricepsPressdown"; break;
5673  case TricepsExtensionExerciseName::WeightedDip : debug << "WeightedDip"; break;
5674  default: debug << "unknown";
5675  }
5676  return debug;
5677 }
5678 
5679 /*!
5680  * Writes the WarmUpExerciseName \a value to the \a debug stream and returns a reference to the stream.
5681  *
5682  * \param debug Debug stream to write \a value to.
5683  * \param value Value to write to \a debug.
5684  *
5685  * \return a reference to the \a debug stream.
5686  */
5687 QDebug operator<<(QDebug debug, const WarmUpExerciseName value)
5688 {
5689  switch (value) {
5690  case WarmUpExerciseName::QuadrupedRocking : debug << "QuadrupedRocking"; break;
5691  case WarmUpExerciseName::NeckTilts : debug << "NeckTilts"; break;
5692  case WarmUpExerciseName::AnkleCircles : debug << "AnkleCircles"; break;
5693  case WarmUpExerciseName::AnkleDorsiflexionWithBand : debug << "AnkleDorsiflexionWithBand"; break;
5694  case WarmUpExerciseName::AnkleInternalRotation : debug << "AnkleInternalRotation"; break;
5695  case WarmUpExerciseName::ArmCircles : debug << "ArmCircles"; break;
5696  case WarmUpExerciseName::BentOverReachToSky : debug << "BentOverReachToSky"; break;
5697  case WarmUpExerciseName::CatCamel : debug << "CatCamel"; break;
5698  case WarmUpExerciseName::ElbowToFootLunge : debug << "ElbowToFootLunge"; break;
5699  case WarmUpExerciseName::ForwardAndBackwardLegSwings: debug << "ForwardAndBackwardLegSwings"; break;
5700  case WarmUpExerciseName::Groiners : debug << "Groiners"; break;
5701  case WarmUpExerciseName::InvertedHamstringStretch : debug << "InvertedHamstringStretch"; break;
5702  case WarmUpExerciseName::LateralDuckUnder : debug << "LateralDuckUnder"; break;
5703  case WarmUpExerciseName::NeckRotations : debug << "NeckRotations"; break;
5704  case WarmUpExerciseName::OppositeArmAndLegBalance : debug << "OppositeArmAndLegBalance"; break;
5705  case WarmUpExerciseName::ReachRollAndLift : debug << "ReachRollAndLift"; break;
5706  case WarmUpExerciseName::Scorpion : debug << "Scorpion"; break;
5707  case WarmUpExerciseName::ShoulderCircles : debug << "ShoulderCircles"; break;
5708  case WarmUpExerciseName::SideToSideLegSwings : debug << "SideToSideLegSwings"; break;
5709  case WarmUpExerciseName::SleeperStretch : debug << "SleeperStretch"; break;
5710  case WarmUpExerciseName::SlideOut : debug << "SlideOut"; break;
5711  case WarmUpExerciseName::SwissBallHipCrossover : debug << "SwissBallHipCrossover"; break;
5712  case WarmUpExerciseName::SwissBallReachRollAndLift : debug << "SwissBallReachRollAndLift"; break;
5713  case WarmUpExerciseName::SwissBallWindshieldWipers : debug << "SwissBallWindshieldWipers"; break;
5714  case WarmUpExerciseName::ThoracicRotation : debug << "ThoracicRotation"; break;
5715  case WarmUpExerciseName::WalkingHighKicks : debug << "WalkingHighKicks"; break;
5716  case WarmUpExerciseName::WalkingHighKnees : debug << "WalkingHighKnees"; break;
5717  case WarmUpExerciseName::WalkingKneeHugs : debug << "WalkingKneeHugs"; break;
5718  case WarmUpExerciseName::WalkingLegCradles : debug << "WalkingLegCradles"; break;
5719  case WarmUpExerciseName::Walkout : debug << "Walkout"; break;
5720  case WarmUpExerciseName::WalkoutFromPushUpPosition : debug << "WalkoutFromPushUpPosition"; break;
5721  default: debug << "unknown";
5722  }
5723  return debug;
5724 }
5725 
5726 /*!
5727  * Writes the RunExerciseName \a value to the \a debug stream and returns a reference to the stream.
5728  *
5729  * \param debug Debug stream to write \a value to.
5730  * \param value Value to write to \a debug.
5731  *
5732  * \return a reference to the \a debug stream.
5733  */
5734 QDebug operator<<(QDebug debug, const RunExerciseName value)
5735 {
5736  switch (value) {
5737  case RunExerciseName::Run : debug << "Run"; break;
5738  case RunExerciseName::Walk : debug << "Walk"; break;
5739  case RunExerciseName::Jog : debug << "Jog"; break;
5740  case RunExerciseName::Sprint: debug << "Sprint"; break;
5741  default: debug << "unknown";
5742  }
5743  return debug;
5744 }
5745 
5746 /*!
5747  * Writes the WaterType \a value to the \a debug stream and returns a reference to the stream.
5748  *
5749  * \param debug Debug stream to write \a value to.
5750  * \param value Value to write to \a debug.
5751  *
5752  * \return a reference to the \a debug stream.
5753  */
5754 QDebug operator<<(QDebug debug, const WaterType value)
5755 {
5756  switch (value) {
5757  case WaterType::Fresh : debug << "Fresh"; break;
5758  case WaterType::Salt : debug << "Salt"; break;
5759  case WaterType::En13319: debug << "En13319"; break;
5760  case WaterType::Custom : debug << "Custom"; break;
5761  default: debug << "unknown";
5762  }
5763  return debug;
5764 }
5765 
5766 /*!
5767  * Writes the TissueModelType \a value to the \a debug stream and returns a reference to the stream.
5768  *
5769  * \param debug Debug stream to write \a value to.
5770  * \param value Value to write to \a debug.
5771  *
5772  * \return a reference to the \a debug stream.
5773  */
5774 QDebug operator<<(QDebug debug, const TissueModelType value)
5775 {
5776  switch (value) {
5777  case TissueModelType::Zhl16c: debug << "Zhl16c"; break;
5778  default: debug << "unknown";
5779  }
5780  return debug;
5781 }
5782 
5783 /*!
5784  * Writes the DiveGasStatus \a value to the \a debug stream and returns a reference to the stream.
5785  *
5786  * \param debug Debug stream to write \a value to.
5787  * \param value Value to write to \a debug.
5788  *
5789  * \return a reference to the \a debug stream.
5790  */
5791 QDebug operator<<(QDebug debug, const DiveGasStatus value)
5792 {
5793  switch (value) {
5794  case DiveGasStatus::Disabled : debug << "Disabled"; break;
5795  case DiveGasStatus::Enabled : debug << "Enabled"; break;
5796  case DiveGasStatus::BackupOnly: debug << "BackupOnly"; break;
5797  default: debug << "unknown";
5798  }
5799  return debug;
5800 }
5801 
5802 /*!
5803  * Writes the DiveAlarmType \a value to the \a debug stream and returns a reference to the stream.
5804  *
5805  * \param debug Debug stream to write \a value to.
5806  * \param value Value to write to \a debug.
5807  *
5808  * \return a reference to the \a debug stream.
5809  */
5810 QDebug operator<<(QDebug debug, const DiveAlarmType value)
5811 {
5812  switch (value) {
5813  case DiveAlarmType::Depth: debug << "Depth"; break;
5814  case DiveAlarmType::Time : debug << "Time"; break;
5815  default: debug << "unknown";
5816  }
5817  return debug;
5818 }
5819 
5820 /*!
5821  * Writes the DiveBacklightMode \a value to the \a debug stream and returns a reference to the stream.
5822  *
5823  * \param debug Debug stream to write \a value to.
5824  * \param value Value to write to \a debug.
5825  *
5826  * \return a reference to the \a debug stream.
5827  */
5828 QDebug operator<<(QDebug debug, const DiveBacklightMode value)
5829 {
5830  switch (value) {
5831  case DiveBacklightMode::AtDepth : debug << "AtDepth"; break;
5832  case DiveBacklightMode::AlwaysOn: debug << "AlwaysOn"; break;
5833  default: debug << "unknown";
5834  }
5835  return debug;
5836 }
5837 
5838 /*!
5839  * Writes the FaveroProduct \a value to the \a debug stream and returns a reference to the stream.
5840  *
5841  * \param debug Debug stream to write \a value to.
5842  * \param value Value to write to \a debug.
5843  *
5844  * \return a reference to the \a debug stream.
5845  */
5846 QDebug operator<<(QDebug debug, const FaveroProduct value)
5847 {
5848  switch (value) {
5849  case FaveroProduct::AssiomaUno: debug << "AssiomaUno"; break;
5850  case FaveroProduct::AssiomaDuo: debug << "AssiomaDuo"; break;
5851  default: debug << "unknown";
5852  }
5853  return debug;
5854 }
5855 
5856 /*!
5857  * Writes the ClimbProEvent \a value to the \a debug stream and returns a reference to the stream.
5858  *
5859  * \param debug Debug stream to write \a value to.
5860  * \param value Value to write to \a debug.
5861  *
5862  * \return a reference to the \a debug stream.
5863  */
5864 QDebug operator<<(QDebug debug, const ClimbProEvent value)
5865 {
5866  switch (value) {
5867  case ClimbProEvent::Approach: debug << "Approach"; break;
5868  case ClimbProEvent::Start : debug << "Start"; break;
5869  case ClimbProEvent::Complete: debug << "Complete"; break;
5870  default: debug << "unknown";
5871  }
5872  return debug;
5873 }
5874 
5875 /*!
5876  * Writes the TapSensitivity \a value to the \a debug stream and returns a reference to the stream.
5877  *
5878  * \param debug Debug stream to write \a value to.
5879  * \param value Value to write to \a debug.
5880  *
5881  * \return a reference to the \a debug stream.
5882  */
5883 QDebug operator<<(QDebug debug, const TapSensitivity value)
5884 {
5885  switch (value) {
5886  case TapSensitivity::High : debug << "High"; break;
5887  case TapSensitivity::Medium: debug << "Medium"; break;
5888  case TapSensitivity::Low : debug << "Low"; break;
5889  default: debug << "unknown";
5890  }
5891  return debug;
5892 }
5893 
5894 /*!
5895  * Writes the RadarThreatLevelType \a value to the \a debug stream and returns a reference to the stream.
5896  *
5897  * \param debug Debug stream to write \a value to.
5898  * \param value Value to write to \a debug.
5899  *
5900  * \return a reference to the \a debug stream.
5901  */
5902 QDebug operator<<(QDebug debug, const RadarThreatLevelType value)
5903 {
5904  switch (value) {
5905  case RadarThreatLevelType::ThreatUnknown : debug << "ThreatUnknown"; break;
5906  case RadarThreatLevelType::ThreatNone : debug << "ThreatNone"; break;
5907  case RadarThreatLevelType::ThreatApproaching : debug << "ThreatApproaching"; break;
5908  case RadarThreatLevelType::ThreatApproachingFast: debug << "ThreatApproachingFast"; break;
5909  default: debug << "unknown";
5910  }
5911  return debug;
5912 }
5913 
#define QTFIT_END_NAMESPACE
Macro for ending the QtFit library's top-most namespace (if one is defined).
Definition: QtFit_global.h:78
#define QTFIT_BEGIN_NAMESPACE
Macro for starting the QtFit library's top-most namespace (if one is defined).
Definition: QtFit_global.h:77
QTFIT_BEGIN_NAMESPACE QDebug operator<<(QDebug debug, const File value)
Writes the File value to the debug stream and returns a reference to the stream.
Definition: types.cpp:48
Types defined by the ANT+ FIT SDK.
WeatherStatus
Garmin FIT WeatherStatus type.
Definition: types.h:2484
GarminProduct
Garmin FIT GarminProduct type.
Definition: types.h:1687
@ DescentMk2Asia
Mk2 and Mk2i.
@ HrmDual
HRM-Dual.
@ Fr310xt
Forerunner 310.
@ Axs01
AXS01 HRM Bike Chipset model for ANT+ messaging.
@ Connect
Garmin Connect website.
@ Sdm4
SDM4 footpod.
@ Bcm
BCM model for ANT+ messaging.
@ HrmTri
Also HRM-Swim.
@ Gen3Bcm
gen3 bike cadence sensor
@ HrmTriSingleByteProductId
hrm_tri model for HRM ANT+ messaging
@ Gen3Bsm
gen3 bike speed sensor
@ HrmRunSingleByteProductId
hrm_run model for HRM ANT+ messaging
@ HrmPro
HRM-Pro.
@ Hrm4RunSingleByteProductId
hrm4 run model for HRM ANT+ messaging
@ VariaUt800
Varia UT 800 SW.
@ Fr60
Forerunner 60.
@ Gen3BcmSingleByteProductId
gen3_bcm model for Bike Cadence ANT+ messaging
@ Gen3BsmSingleByteProductId
gen3_bsm model for Bike Speed ANT+ messaging
@ Axh01
AXH01 HRM chipset.
@ Bsm
BSM model for ANT+ messaging.
@ Rally200
Rally 100/200 Power Meter Series.
@ Fr110
Forerunner 110.
@ Fr225SingleByteProductId
fr225 model for HRM ANT+ messaging
@ Fr50
Forerunner 50.
@ EdgeTouring
Also Edge Touring Plus.
@ Fr405
Forerunner 405.
SwimStroke
Garmin FIT SwimStroke type.
Definition: types.h:2262
@ Im
IM is a mixed interval containing the same number of lengths for each of: Butterfly,...
LocalDateTime
Seconds since 00:00 Dec 31 1989 in local time zone.
Definition: types.h:250
@ Min
if date_time is < 0x10000000 then it is system time (seconds from device power on)
WatchfaceMode
Garmin FIT WatchfaceMode type.
Definition: types.h:2853
ConnectivityCapabilities
Garmin FIT ConnectivityCapabilities type.
Definition: types.h:2424
@ InstantInput
Device supports instant input feature.
@ ConnectIqAppManagment
Device supports delete and reorder of apps via GCM.
@ FindMyWatch
Device supports Find My Watch.
@ WifiVerification
Device supports reporting wifi verification via GCM.
@ IncidentDetection
Device supports incident detection.
@ LiveTrackMessaging
Device supports LiveTrack Messaging.
@ LiveTrackAutoStart
Device supports LiveTrack auto start.
@ TrueUp
Device supports True Up.
@ DeviceInitiatesSync
Indicates device is in control of initiating all syncs.
SportBits4
Bit field corresponding to sport enum type (1 << (sport-32)).
Definition: types.h:828
LegCurlExerciseName
Garmin FIT LegCurlExerciseName type.
Definition: types.h:4226
HipSwingExerciseName
Garmin FIT HipSwingExerciseName type.
Definition: types.h:4113
PlankExerciseName
Garmin FIT PlankExerciseName type.
Definition: types.h:4410
UserLocalId
Garmin FIT UserLocalId type.
Definition: types.h:2244
Weight
Garmin FIT Weight type.
Definition: types.h:2188
AutoActivityDetect
Garmin FIT AutoActivityDetect type.
Definition: types.h:3349
SensorType
Garmin FIT SensorType type.
Definition: types.h:2956
@ Compass
Magnetometer.
BenchPressExerciseName
Garmin FIT BenchPressExerciseName type.
Definition: types.h:3556
Goal
Garmin FIT Goal type.
Definition: types.h:1380
EventType
Garmin FIT EventType type.
Definition: types.h:1182
BikeLightBeamAngleMode
Garmin FIT BikeLightBeamAngleMode type.
Definition: types.h:3467
WarmUpExerciseName
Garmin FIT WarmUpExerciseName type.
Definition: types.h:5132
@ Scorpion
Deprecated do not use.
TimeMode
Garmin FIT TimeMode type.
Definition: types.h:1069
@ Military
Uses a leading zero and does not have a colon.
@ Hour24
Does not use a leading zero and has a colon.
DisplayHeart
Garmin FIT DisplayHeart type.
Definition: types.h:587
RadarThreatLevelType
Garmin FIT RadarThreatLevelType type.
Definition: types.h:5307
Language
Garmin FIT Language type.
Definition: types.h:305
SupportedExdScreenLayouts
Garmin FIT SupportedExdScreenLayouts type.
Definition: types.h:3368
SquatExerciseName
Garmin FIT SquatExerciseName type.
Definition: types.h:4950
@ KbsOverhead
Deprecated do not use.
AttitudeValidity
Garmin FIT AttitudeValidity type.
Definition: types.h:3036
HrType
Garmin FIT HrType type.
Definition: types.h:2151
Gender
Garmin FIT Gender type.
Definition: types.h:291
WeatherReport
Garmin FIT WeatherReport type.
Definition: types.h:2468
LeftRightBalance
Garmin FIT LeftRightBalance type.
Definition: types.h:2363
@ Mask
% contribution
@ Right
data corresponds to right if set, otherwise unknown
AutolapTrigger
Garmin FIT AutolapTrigger type.
Definition: types.h:1029
DisplayOrientation
Garmin FIT DisplayOrientation type.
Definition: types.h:2818
@ Auto
automatic if the device supports it
@ PortraitFlipped
portrait mode but rotated 180 degrees
@ LandscapeFlipped
landscape mode but rotated 180 degrees
ActivityType
Garmin FIT ActivityType type.
Definition: types.h:2281
@ Transition
Mulitsport transition.
@ All
All is for goals only to include all sports.
SourceType
Garmin FIT SourceType type.
Definition: types.h:2789
@ Antplus
External device connected with ANT+.
@ BluetoothLowEnergy
External device connected with BLE.
@ Local
Onboard device.
@ Bluetooth
External device connected with BT.
@ Ant
External device connected with ANT.
@ Wifi
External device connected with Wifi.
CalfRaiseExerciseName
Garmin FIT CalfRaiseExerciseName type.
Definition: types.h:3595
ExdQualifiers
Garmin FIT ExdQualifiers type.
Definition: types.h:3184
ExdDescriptors
Garmin FIT ExdDescriptors type.
Definition: types.h:3240
@ Gears
Combined gear information.
LanguageBits3
Garmin FIT LanguageBits3 type.
Definition: types.h:416
CrunchExerciseName
Garmin FIT CrunchExerciseName type.
Definition: types.h:3799
LapTrigger
Garmin FIT LapTrigger type.
Definition: types.h:1048
RowExerciseName
Garmin FIT RowExerciseName type.
Definition: types.h:4744
ClimbProEvent
Garmin FIT ClimbProEvent type.
Definition: types.h:5277
CameraEventType
Garmin FIT CameraEventType type.
Definition: types.h:2931
@ VideoSplitStart
Mark of video file split start.
@ VideoStart
Start of video recording.
@ VideoPause
Mark when a video recording has been paused.
@ VideoEnd
End of video recording.
@ PhotoTaken
Still photo taken.
@ VideoSplit
Mark of video file split (end of one file, beginning of the other)
@ VideoResume
Mark when a video recording has been resumed.
ExdLayout
Garmin FIT ExdLayout type.
Definition: types.h:3078
@ Dynamic
The EXD may display the configured concepts in any layout it sees fit.
WeatherSevereType
Garmin FIT WeatherSevereType type.
Definition: types.h:2534
DeviceIndex
Garmin FIT DeviceIndex type.
Definition: types.h:278
@ Creator
Creator of the file is always device index 0.
AttitudeStage
Garmin FIT AttitudeStage type.
Definition: types.h:3020
WeatherSeverity
Garmin FIT WeatherSeverity type.
Definition: types.h:2517
SegmentDeleteStatus
Garmin FIT SegmentDeleteStatus type.
Definition: types.h:2760
BodyLocation
Garmin FIT BodyLocation type.
Definition: types.h:2671
@ LeftForearmExtensors
Left posterior forearm.
@ RightBrachioradialis
Right anterior forearm.
@ RightForearmExtensors
Right posterior forearm.
@ LeftBrachioradialis
Left anterior forearm.
DiveGasStatus
Garmin FIT DiveGasStatus type.
Definition: types.h:5220
Event
Garmin FIT Event type.
Definition: types.h:1133
@ HrLowAlert
Group 0. Start / stop when in alert condition.
@ VirtualPartnerPace
Group 1. Start at beginning of activity if VP enabled, when VP pace is changed during activity or VP ...
@ DistanceDurationAlert
Group 1. Start if enabled mid activity (not required at start of activity). Stop when duration is rea...
@ CadLowAlert
Group 0. Start / stop when in alert condition.
@ Workout
start / stop
@ UserMarker
marker
@ TimeDurationAlert
Group 1. Start if enabled mid activity (not required at start of activity). Stop when duration is rea...
@ SpeedHighAlert
Group 0. Start / stop when in alert condition.
@ PowerUp
stop_all group 0
@ RecoveryHr
marker
@ BatteryLow
marker
@ OffCourse
start / stop group 0
@ HrHighAlert
Group 0. Start / stop when in alert condition.
@ FitnessEquipment
marker
@ CoursePoint
marker
@ SpeedLowAlert
Group 0. Start / stop when in alert condition.
@ PowerDown
stop_all group 0
@ CalorieDurationAlert
Group 1. Start if enabled mid activity (not required at start of activity). Stop when duration is rea...
@ RadarThreatAlert
start/stop/marker
@ PowerHighAlert
Group 0. Start / stop when in alert condition.
@ RearGearChange
marker
@ ElevLowAlert
Group 0. Start / stop when in alert condition.
@ Session
Stop at end of each session.
@ Lap
Stop at end of each lap.
@ ElevHighAlert
Group 0. Start / stop when in alert condition.
@ CadHighAlert
Group 0. Start / stop when in alert condition.
@ WorkoutStep
Start at beginning of workout. Stop at end of each step.
@ PowerLowAlert
Group 0. Start / stop when in alert condition.
@ Length
Stop at end of each length.
@ RiderPositionChange
marker
@ FrontGearChange
marker
@ Battery
marker
@ CommTimeout
marker
@ SportPoint
marker
@ Activity
Group 1.. Stop at end of activity.
@ Timer
Group 0. Start / stop_all.
@ Calibration
start/stop/marker
AutoSyncFrequency
Garmin FIT AutoSyncFrequency type.
Definition: types.h:3061
Tone
Garmin FIT Tone type.
Definition: types.h:1235
DeadliftExerciseName
Garmin FIT DeadliftExerciseName type.
Definition: types.h:3952
Intensity
Garmin FIT Intensity type.
Definition: types.h:994
SportBits1
Bit field corresponding to sport enum type (1 << (sport-8)).
Definition: types.h:768
PushUpExerciseName
Garmin FIT PushUpExerciseName type.
Definition: types.h:4653
WorkoutEquipment
Garmin FIT WorkoutEquipment type.
Definition: types.h:2835
HipStabilityExerciseName
Garmin FIT HipStabilityExerciseName type.
Definition: types.h:4067
PowerPhaseType
Garmin FIT PowerPhaseType type.
Definition: types.h:2915
Autoscroll
Garmin FIT Autoscroll type.
Definition: types.h:1251
CardioExerciseName
Garmin FIT CardioExerciseName type.
Definition: types.h:3628
LungeExerciseName
Garmin FIT LungeExerciseName type.
Definition: types.h:4284
WorkoutHr
0 - 100 indicates% of max hr; >100 indicates bpm (255 max) plus 100
Definition: types.h:2201
DiveBacklightMode
Garmin FIT DiveBacklightMode type.
Definition: types.h:5249
RunExerciseName
Garmin FIT RunExerciseName type.
Definition: types.h:5175
MesgCount
Garmin FIT MesgCount type.
Definition: types.h:222
CoreExerciseName
Garmin FIT CoreExerciseName type.
Definition: types.h:3714
@ SnakeTwist1And2
Deprecated do not use.
@ AbdominalLegRotations
Deprecated do not use.
@ CrissCrossWithBall
Deprecated do not use.
SetType
Garmin FIT SetType type.
Definition: types.h:3496
DiveAlarmType
Garmin FIT DiveAlarmType type.
Definition: types.h:5235
TissueModelType
Garmin FIT TissueModelType type.
Definition: types.h:5207
@ Zhl16c
Buhlmann's decompression algorithm, version C.
FitBaseType
Garmin FIT FitBaseType type.
Definition: types.h:3388
SportEvent
Garmin FIT SportEvent type.
Definition: types.h:959
TotalBodyExerciseName
Garmin FIT TotalBodyExerciseName type.
Definition: types.h:5054
CommTimeoutType
Garmin FIT CommTimeoutType type.
Definition: types.h:2988
@ ConnectionTimeout
Connection closed due to extended bad communications.
@ PairingTimeout
Timeout pairing to previously paired device.
@ WildcardPairingTimeout
Timeout pairing to any device.
@ ConnectionLost
Temporary loss of communications.
ActivityLevel
Garmin FIT ActivityLevel type.
Definition: types.h:2334
DateMode
Garmin FIT DateMode type.
Definition: types.h:1106
SportBits3
Bit field corresponding to sport enum type (1 << (sport-24)).
Definition: types.h:808
GoalRecurrence
Garmin FIT GoalRecurrence type.
Definition: types.h:1399
SportBits0
Bit field corresponding to sport enum type (1 << sport).
Definition: types.h:748
@ Transition
Mulitsport transition.
LeftRightBalance100
Garmin FIT LeftRightBalance100 type.
Definition: types.h:2377
@ Mask
% contribution scaled by 100
@ Right
data corresponds to right if set, otherwise unknown
DigitalWatchfaceLayout
Garmin FIT DigitalWatchfaceLayout type.
Definition: types.h:2869
TurnType
Garmin FIT TurnType type.
Definition: types.h:3417
Side
Garmin FIT Side type.
Definition: types.h:2349
Sport
Garmin FIT Sport type.
Definition: types.h:685
@ Transition
Mulitsport transition.
@ All
All is for goals only to include all sports.
Activity
Garmin FIT Activity type.
Definition: types.h:980
StrokeType
Garmin FIT StrokeType type.
Definition: types.h:2653
@ Other
stroke was detected but cannot be identified
LegRaiseExerciseName
Garmin FIT LegRaiseExerciseName type.
Definition: types.h:4250
CoursePoint
Garmin FIT CoursePoint type.
Definition: types.h:1446
BikeLightNetworkConfigType
Garmin FIT BikeLightNetworkConfigType type.
Definition: types.h:2972
TapSensitivity
Garmin FIT TapSensitivity type.
Definition: types.h:5292
ChopExerciseName
Garmin FIT ChopExerciseName type.
Definition: types.h:3679
AntNetwork
Garmin FIT AntNetwork type.
Definition: types.h:2090
CarryExerciseName
Garmin FIT CarryExerciseName type.
Definition: types.h:3662
ExerciseCategory
Garmin FIT ExerciseCategory type.
Definition: types.h:3510
PwrZoneCalc
Garmin FIT PwrZoneCalc type.
Definition: types.h:1297
RiderPositionType
Garmin FIT RiderPositionType type.
Definition: types.h:2899
HipRaiseExerciseName
Garmin FIT HipRaiseExerciseName type.
Definition: types.h:4005
@ InnerThighSideLift
Deprecated do not use.
@ InnerThighCircles
Deprecated do not use.
WorkoutPower
0 - 1000 indicates % of functional threshold power; >1000 indicates watts plus 1000.
Definition: types.h:2214
Switch
Garmin FIT Switch type.
Definition: types.h:670
PlyoExerciseName
Garmin FIT PlyoExerciseName type.
Definition: types.h:4557
CourseCapabilities
Garmin FIT CourseCapabilities type.
Definition: types.h:2165
LanguageBits2
Garmin FIT LanguageBits2 type.
Definition: types.h:396
SegmentLapStatus
Garmin FIT SegmentLapStatus type.
Definition: types.h:2723
FlyeExerciseName
Garmin FIT FlyeExerciseName type.
Definition: types.h:3983
BacklightTimeout
Timeout in seconds.
Definition: types.h:1120
@ Infinite
Backlight stays on forever.
TricepsExtensionExerciseName
Garmin FIT TricepsExtensionExerciseName type.
Definition: types.h:5079
GoalSource
Garmin FIT GoalSource type.
Definition: types.h:1417
@ Auto
Device generated.
@ Community
Social network sourced goal.
@ User
Manually generated.
Schedule
Garmin FIT Schedule type.
Definition: types.h:1432
LanguageBits0
Bit field corresponding to language enum type (1 << language).
Definition: types.h:356
FitBaseUnit
Garmin FIT FitBaseUnit type.
Definition: types.h:3481
ActivityClass
Garmin FIT ActivityClass type.
Definition: types.h:1267
@ Level
0 to 100
MesgNum
Garmin FIT MesgNum type.
Definition: types.h:91
@ MfgRangeMin
0xFF00 - 0xFFFE reserved for manufacturer specific messages
@ MfgRangeMax
0xFF00 - 0xFFFE reserved for manufacturer specific messages
SportBits5
Bit field corresponding to sport enum type (1 << (sport-40)).
Definition: types.h:848
LanguageBits4
Garmin FIT LanguageBits4 type.
Definition: types.h:436
AntplusDeviceType
Garmin FIT AntplusDeviceType type.
Definition: types.h:2053
LateralRaiseExerciseName
Garmin FIT LateralRaiseExerciseName type.
Definition: types.h:4180
SessionTrigger
Garmin FIT SessionTrigger type.
Definition: types.h:1013
@ FitnessEquipment
Auto sport change caused by user linking to fitness equipment.
@ AutoMultiSport
Auto multi-sport feature is enabled and user pressed lap button to advance session.
@ Manual
User changed sport.
DayOfWeek
Garmin FIT DayOfWeek type.
Definition: types.h:2405
SitUpExerciseName
Garmin FIT SitUpExerciseName type.
Definition: types.h:4900
SegmentLeaderboardType
Garmin FIT SegmentLeaderboardType type.
Definition: types.h:2737
DisplayMeasure
Garmin FIT DisplayMeasure type.
Definition: types.h:572
Checksum
Garmin FIT Checksum type.
Definition: types.h:193
@ Ok
Set to mark checksum as valid if computes to invalid values 0 or 0xFF. Checksum can also be set to ok...
@ Clear
Allows clear of checksum for flash memory where can only write 1 to 0 without erasing sector.
ShrugExerciseName
Garmin FIT ShrugExerciseName type.
Definition: types.h:4871
ShoulderPressExerciseName
Garmin FIT ShoulderPressExerciseName type.
Definition: types.h:4790
MessageIndex
Garmin FIT MessageIndex type.
Definition: types.h:263
@ Selected
message is selected if set
@ Reserved
reserved (default 0)
Manufacturer
Garmin FIT Manufacturer type.
Definition: types.h:1484
@ FalcoEMotors
Falco eMotors Inc.
@ Icg
Indoorcycling Group.
@ TopactionTechnology
TopAction Technology Inc.
@ Precor
Amer Sports.
@ LimitsTechnology
Limits Technology Ltd.
@ Navman
MiTAC Global Corporation (Mio Technology)
@ Cobi
COBI GmbH.
@ Tigrasport
Tigrasport.
@ GarminFr405Antfs
Do not use. Used by FR405 for ANTFS man id.
CurlExerciseName
Garmin FIT CurlExerciseName type.
Definition: types.h:3896
SegmentSelectionType
Garmin FIT SegmentSelectionType type.
Definition: types.h:2775
ShoulderStabilityExerciseName
Garmin FIT ShoulderStabilityExerciseName type.
Definition: types.h:4826
ExdDisplayType
Garmin FIT ExdDisplayType type.
Definition: types.h:3099
DisplayPosition
Garmin FIT DisplayPosition type.
Definition: types.h:616
@ IndiaZoneIia
India zone IIA.
@ UtmUpsGrid
UTM/UPS grid system.
@ DegreeMinute
dddmm.mmm
@ WestMalayan
West Malayan RSO.
@ HungarianGrid
Hungarian grid system.
@ SwissGrid
Swiss CH-1903 grid.
@ UnitedStatesGrid
United States National Grid.
@ BritishGrid
British National Grid.
@ DegreeMinuteSecond
dddmmss
@ Loran
Loran TD.
@ EstonianGrid
Estonian grid system.
@ IndiaZoneIb
India zone IB.
@ DutchGrid
Dutch grid system.
@ IndiaZoneIvb
India zone IVB.
@ IndiaZoneIib
India zone IIB.
@ Degree
dd.dddddd
@ SwedishGrid
RT-90 (Sweden)
@ GermanGrid
Gausss Krueger (German)
@ QatarGrid
Qatar National Grid.
@ IcelandicGrid
Icelandic Grid.
@ IndiaZoneIva
India zone IVA.
@ IrishTransverse
Irish Transverse Mercator.
@ MgrsGrid
MGRS grid system.
@ AustrianGrid
Austrian Grid (BMN)
@ MaidenheadGrid
Maidenhead grid system.
@ BorneoRso
Borneo RSO.
@ NewZealandTransverse
New Zealand Transverse Mercator.
@ ModifiedSwedishGrid
Modified RT-90 (Sweden)
@ IndiaZoneIiia
India zone IIIA.
@ SouthAfricanGrid
South African Grid.
@ NewZealandGrid
New Zealand grid system.
@ IndonesianEquatorial
Indonesian Equatorial LCO.
@ IndonesianIrian
Indonesian Irian LCO.
@ TaiwanGrid
Taiwan Grid.
@ IndonesianSouthern
Indonesian Southern LCO.
@ IndiaZoneIa
India zone IA.
@ IndiaZoneIiib
India zone IIIB.
@ IrishGrid
Irish Grid.
@ LatvianGrid
Latvian Transverse Mercator.
@ SwedishRef99Grid
Reference Grid 99 TM (Swedish)
@ IndiaZone0
India zone 0.
@ FinnishGrid
Finnish grid system Zone3 KKJ27.
WorkoutCapabilities
Garmin FIT WorkoutCapabilities type.
Definition: types.h:2106
@ Distance
Distance source required for workout step.
@ Tcx
For backwards compatibility. Watch should add missing id fields then clear flag.
@ Speed
Speed source required for workout step.
@ Grade
Grade source required for workout step.
@ HeartRate
Heart rate source required for workout step.
@ Resistance
Resistance source required for workout step.
@ Cadence
Cadence source required for workout step.
@ Power
Power source required for workout step.
HyperextensionExerciseName
Garmin FIT HyperextensionExerciseName type.
Definition: types.h:4128
@ SupineFloorBarre
Deprecated do not use.
TimeZone
Garmin FIT TimeZone type.
Definition: types.h:454
ActivitySubtype
Garmin FIT ActivitySubtype type.
Definition: types.h:2302
@ StairClimbing
Fitness Equipment.
@ LapSwimming
Swimming.
@ TrackCycling
Cycling.
@ IndoorCycling
Cycling.
@ Downhill
Cycling.
@ Recumbent
Cycling.
@ Cyclocross
Cycling.
@ IndoorRowing
Fitness Equipment.
@ Elliptical
Fitness Equipment.
@ Road
Cycling.
@ HandCycling
Cycling.
@ OpenWater
Swimming.
@ Mountain
Cycling.
@ Spin
Cycling.
OlympicLiftExerciseName
Garmin FIT OlympicLiftExerciseName type.
Definition: types.h:4377
ExdDataUnits
Garmin FIT ExdDataUnits type.
Definition: types.h:3122
LengthType
Garmin FIT LengthType type.
Definition: types.h:2391
@ Active
Length with strokes.
@ Idle
Rest period. Length with no strokes.
TimerTrigger
Timer event data.
Definition: types.h:1204
BatteryStatus
Garmin FIT BatteryStatus type.
Definition: types.h:2132
DisplayPower
Garmin FIT DisplayPower type.
Definition: types.h:602
WktStepTarget
Garmin FIT WktStepTarget type.
Definition: types.h:1354
SportBits6
Bit field corresponding to sport enum type (1 << (sport-48)).
Definition: types.h:868
SportBits2
Bit field corresponding to sport enum type (1 << (sport-16)).
Definition: types.h:788
FileFlags
Garmin FIT FileFlags type.
Definition: types.h:207
WktStepDuration
Garmin FIT WktStepDuration type.
Definition: types.h:1311
HrZoneCalc
Garmin FIT HrZoneCalc type.
Definition: types.h:1282
SubSport
Garmin FIT SubSport type.
Definition: types.h:881
@ StairClimbing
Fitness Equipment.
@ EBikeFitness
E-Biking.
@ LapSwimming
Swimming.
@ FlexibilityTraining
Training.
@ TrackCycling
Cycling.
@ Motocross
Motorcycling.
@ MultiGasDiving
Diving.
@ SailRace
Sailing.
@ BikeToRunTransition
Transition.
@ IndoorCycling
Cycling/Fitness Equipment.
@ EBikeMountain
Cycling.
@ GaugeDiving
Diving.
@ RunToBikeTransition
Transition.
@ CasualWalking
Walking.
@ Treadmill
Run/Fitness Equipment.
@ ApneaHunting
Diving.
@ CardioTraining
Training.
@ Atv
Motorcycling.
@ IndoorRunning
Run.
@ ApneaDiving
Diving.
@ Match
Tennis.
@ Downhill
Cycling.
@ SwimToBikeTransition
Transition.
@ Pilates
Fitness Equipment.
@ Ultra
Ultramarathon.
@ SkateSkiing
Cross Country Skiing.
@ Wingsuit
Flying.
@ IndoorClimbing
Climbing.
@ IndoorSkiing
Fitness Equipment.
@ Yoga
Training.
@ Track
Run.
@ Recumbent
Cycling.
@ Cyclocross
Cycling.
@ StrengthTraining
Training.
@ IndoorRowing
Fitness Equipment.
@ SingleGasDiving
Diving.
@ Resort
Alpine Skiing/Snowboarding.
@ GravelCycling
Cycling.
@ Whitewater
Kayaking/Rafting.
@ MixedSurface
Cycling.
@ Elliptical
Fitness Equipment.
@ Road
Cycling.
@ WarmUp
Tennis.
@ HandCycling
Cycling.
@ Trail
Run.
@ Street
Run.
@ Bmx
Cycling.
@ IndoorWalking
Walking/Fitness Equipment.
@ Commuting
Cycling.
@ OpenWater
Swimming.
@ SpeedWalking
Walking.
@ Bouldering
Climbing.
@ Mountain
Cycling.
@ Exercise
Tennis.
@ Spin
Cycling.
@ Backcountry
Alpine Skiing/Snowboarding.
@ RcDrone
Flying.
@ Obstacle
Used for events where participants run, crawl through mud, climb over walls, etc.
FitnessEquipmentState
Fitness equipment event data.
Definition: types.h:1219
@ Unknown
lost connection to fitness equipment
File
Garmin FIT File type.
Definition: types.h:59
@ Workout
Read/write/erase, multiple files. Directory=Workouts.
@ BloodPressure
Read only. Directory=Blood Pressure.
@ Course
Read/write/erase, multiple files. Directory=Courses.
@ MonitoringB
Read only. Directory=Monitoring. File number=identifier.
@ Segment
Read/write/erase. Multiple Files. Directory=Segments.
@ SegmentList
Read/write/erase. Single File. Directory=Segments.
@ MonitoringA
Read only. Directory=Monitoring. File number=sub type.
@ ActivitySummary
Read/erase, multiple files. Directory=Activities.
@ Weight
Read only, single file. Circular buffer. All message definitions at start of file....
@ Sport
Read/write, multiple files, file number = sport type. Directory=Sports.
@ MfgRangeMin
0xF7 - 0xFE reserved for manufacturer specific file types
@ MfgRangeMax
0xF7 - 0xFE reserved for manufacturer specific file types
@ Schedules
Read/write, single file. Directory=Schedules.
@ Goals
Read/write, single file. Directory=Goals.
@ Device
Read only, single file. Must be in root directory.
@ Activity
Read/erase, multiple files. Directory=Activities.
@ Totals
Read only, single file. Directory=Totals.
@ ExdConfiguration
Read/write/erase. Single File. Directory=Settings.
@ Settings
Read/write, single file. Directory=Settings.
WaterType
Garmin FIT WaterType type.
Definition: types.h:5191
FaveroProduct
Garmin FIT FaveroProduct type.
Definition: types.h:5263
BacklightMode
Garmin FIT BacklightMode type.
Definition: types.h:1087
LanguageBits1
Garmin FIT LanguageBits1 type.
Definition: types.h:376
PullUpExerciseName
Garmin FIT PullUpExerciseName type.
Definition: types.h:4602
CameraOrientationType
Garmin FIT CameraOrientationType type.
Definition: types.h:3004
AnalogWatchfaceLayout
Garmin FIT AnalogWatchfaceLayout type.
Definition: types.h:2884
BpStatus
Garmin FIT BpStatus type.
Definition: types.h:2227
DateTime
Seconds since UTC 00:00 Dec 31 1989.
Definition: types.h:237
@ Min
if date_time is < 0x10000000 then it is system time (seconds from device power on)