Skip to content

Commit 320590b

Browse files
committed
Get rid of Optional and switch to C++20
1 parent 2e3937b commit 320590b

File tree

13 files changed

+91
-964
lines changed

13 files changed

+91
-964
lines changed

modules/yup_audio_basics/audio_play_head/yup_AudioPlayHead.h

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -361,43 +361,43 @@ class YUP_API AudioPlayHead
361361
{
362362
public:
363363
/** Returns the number of samples that have elapsed. */
364-
Optional<int64_t> getTimeInSamples() const { return getOptional (flagTimeSamples, timeInSamples); }
364+
std::optional<int64_t> getTimeInSamples() const { return getOptional (flagTimeSamples, timeInSamples); }
365365

366366
/** @see getTimeInSamples() */
367-
void setTimeInSamples (Optional<int64_t> timeInSamplesIn) { setOptional (flagTimeSamples, timeInSamples, timeInSamplesIn); }
367+
void setTimeInSamples (std::optional<int64_t> timeInSamplesIn) { setOptional (flagTimeSamples, timeInSamples, timeInSamplesIn); }
368368

369369
/** Returns the number of seconds that have elapsed. */
370-
Optional<double> getTimeInSeconds() const { return getOptional (flagTimeSeconds, timeInSeconds); }
370+
std::optional<double> getTimeInSeconds() const { return getOptional (flagTimeSeconds, timeInSeconds); }
371371

372372
/** @see getTimeInSamples() */
373-
void setTimeInSeconds (Optional<double> timeInSecondsIn) { setOptional (flagTimeSeconds, timeInSeconds, timeInSecondsIn); }
373+
void setTimeInSeconds (std::optional<double> timeInSecondsIn) { setOptional (flagTimeSeconds, timeInSeconds, timeInSecondsIn); }
374374

375375
/** Returns the bpm, if available. */
376-
Optional<double> getBpm() const { return getOptional (flagTempo, tempoBpm); }
376+
std::optional<double> getBpm() const { return getOptional (flagTempo, tempoBpm); }
377377

378378
/** @see getBpm() */
379-
void setBpm (Optional<double> bpmIn) { setOptional (flagTempo, tempoBpm, bpmIn); }
379+
void setBpm (std::optional<double> bpmIn) { setOptional (flagTempo, tempoBpm, bpmIn); }
380380

381381
/** Returns the time signature, if available. */
382-
Optional<TimeSignature> getTimeSignature() const { return getOptional (flagTimeSignature, timeSignature); }
382+
std::optional<TimeSignature> getTimeSignature() const { return getOptional (flagTimeSignature, timeSignature); }
383383

384384
/** @see getTimeSignature() */
385-
void setTimeSignature (Optional<TimeSignature> timeSignatureIn) { setOptional (flagTimeSignature, timeSignature, timeSignatureIn); }
385+
void setTimeSignature (std::optional<TimeSignature> timeSignatureIn) { setOptional (flagTimeSignature, timeSignature, timeSignatureIn); }
386386

387387
/** Returns host loop points, if available. */
388-
Optional<LoopPoints> getLoopPoints() const { return getOptional (flagLoopPoints, loopPoints); }
388+
std::optional<LoopPoints> getLoopPoints() const { return getOptional (flagLoopPoints, loopPoints); }
389389

390390
/** @see getLoopPoints() */
391-
void setLoopPoints (Optional<LoopPoints> loopPointsIn) { setOptional (flagLoopPoints, loopPoints, loopPointsIn); }
391+
void setLoopPoints (std::optional<LoopPoints> loopPointsIn) { setOptional (flagLoopPoints, loopPoints, loopPointsIn); }
392392

393393
/** The number of bars since the beginning of the timeline.
394394
395395
This value isn't available in all hosts or in all plugin formats.
396396
*/
397-
Optional<int64_t> getBarCount() const { return getOptional (flagBarCount, barCount); }
397+
std::optional<int64_t> getBarCount() const { return getOptional (flagBarCount, barCount); }
398398

399399
/** @see getBarCount() */
400-
void setBarCount (Optional<int64_t> barCountIn) { setOptional (flagBarCount, barCount, barCountIn); }
400+
void setBarCount (std::optional<int64_t> barCountIn) { setOptional (flagBarCount, barCount, barCountIn); }
401401

402402
/** The position of the start of the last bar, in units of quarter-notes.
403403
@@ -406,40 +406,40 @@ class YUP_API AudioPlayHead
406406
407407
Note - this value may be unavailable on some hosts, e.g. Pro-Tools.
408408
*/
409-
Optional<double> getPpqPositionOfLastBarStart() const { return getOptional (flagLastBarStartPpq, lastBarStartPpq); }
409+
std::optional<double> getPpqPositionOfLastBarStart() const { return getOptional (flagLastBarStartPpq, lastBarStartPpq); }
410410

411411
/** @see getPpqPositionOfLastBarStart() */
412-
void setPpqPositionOfLastBarStart (Optional<double> positionIn) { setOptional (flagLastBarStartPpq, lastBarStartPpq, positionIn); }
412+
void setPpqPositionOfLastBarStart (std::optional<double> positionIn) { setOptional (flagLastBarStartPpq, lastBarStartPpq, positionIn); }
413413

414414
/** The video frame rate, if available. */
415-
Optional<FrameRate> getFrameRate() const { return getOptional (flagFrameRate, frame); }
415+
std::optional<FrameRate> getFrameRate() const { return getOptional (flagFrameRate, frame); }
416416

417417
/** @see getFrameRate() */
418-
void setFrameRate (Optional<FrameRate> frameRateIn) { setOptional (flagFrameRate, frame, frameRateIn); }
418+
void setFrameRate (std::optional<FrameRate> frameRateIn) { setOptional (flagFrameRate, frame, frameRateIn); }
419419

420420
/** The current play position, in units of quarter-notes. */
421-
Optional<double> getPpqPosition() const { return getOptional (flagPpqPosition, positionPpq); }
421+
std::optional<double> getPpqPosition() const { return getOptional (flagPpqPosition, positionPpq); }
422422

423423
/** @see getPpqPosition() */
424-
void setPpqPosition (Optional<double> ppqPositionIn) { setOptional (flagPpqPosition, positionPpq, ppqPositionIn); }
424+
void setPpqPosition (std::optional<double> ppqPositionIn) { setOptional (flagPpqPosition, positionPpq, ppqPositionIn); }
425425

426426
/** For timecode, the position of the start of the timeline, in seconds from 00:00:00:00. */
427-
Optional<double> getEditOriginTime() const { return getOptional (flagOriginTime, originTime); }
427+
std::optional<double> getEditOriginTime() const { return getOptional (flagOriginTime, originTime); }
428428

429429
/** @see getEditOriginTime() */
430-
void setEditOriginTime (Optional<double> editOriginTimeIn) { setOptional (flagOriginTime, originTime, editOriginTimeIn); }
430+
void setEditOriginTime (std::optional<double> editOriginTimeIn) { setOptional (flagOriginTime, originTime, editOriginTimeIn); }
431431

432432
/** Get the host's callback time in nanoseconds, if available. */
433-
Optional<uint64_t> getHostTimeNs() const { return getOptional (flagHostTimeNs, hostTimeNs); }
433+
std::optional<uint64_t> getHostTimeNs() const { return getOptional (flagHostTimeNs, hostTimeNs); }
434434

435435
/** @see getHostTimeNs() */
436-
void setHostTimeNs (Optional<uint64_t> hostTimeNsIn) { setOptional (flagHostTimeNs, hostTimeNs, hostTimeNsIn); }
436+
void setHostTimeNs (std::optional<uint64_t> hostTimeNsIn) { setOptional (flagHostTimeNs, hostTimeNs, hostTimeNsIn); }
437437

438438
/** The current play position, in samples from the start of processing, without looping, if available. */
439-
Optional<int64_t> getContinuousTimeInSamples() const { return getOptional (flagContinuousTime, continuousTimeInSamples); }
439+
std::optional<int64_t> getContinuousTimeInSamples() const { return getOptional (flagContinuousTime, continuousTimeInSamples); }
440440

441441
/** @see getContinuousTimeInSamples() */
442-
void setContinuousTimeInSamples (Optional<int64_t> cont) { setOptional (flagContinuousTime, continuousTimeInSamples, cont); }
442+
void setContinuousTimeInSamples (std::optional<int64_t> cont) { setOptional (flagContinuousTime, continuousTimeInSamples, cont); }
443443

444444
/** True if the transport is currently playing. */
445445
bool getIsPlaying() const { return getFlag (flagIsPlaying); }
@@ -502,18 +502,18 @@ class YUP_API AudioPlayHead
502502
}
503503

504504
template <typename Value>
505-
Optional<Value> getOptional (int64_t flagToCheck, Value value) const
505+
std::optional<Value> getOptional (int64_t flagToCheck, Value value) const
506506
{
507-
return getFlag (flagToCheck) ? makeOptional (std::move (value)) : nullopt;
507+
return getFlag (flagToCheck) ? std::make_optional (std::move (value)) : std::nullopt;
508508
}
509509

510510
template <typename Value>
511-
void setOptional (int64_t flagToCheck, Value& value, Optional<Value> opt)
511+
void setOptional (int64_t flagToCheck, Value& value, std::optional<Value> opt)
512512
{
513-
if (opt.hasValue())
513+
if (opt.has_value())
514514
value = *opt;
515515

516-
setFlag (flagToCheck, opt.hasValue());
516+
setFlag (flagToCheck, opt.has_value());
517517
}
518518

519519
enum
@@ -564,7 +564,7 @@ class YUP_API AudioPlayHead
564564
in which a time would make sense, and some hosts will almost certainly have
565565
multithreading issues if it's not called on the audio thread.
566566
*/
567-
virtual Optional<PositionInfo> getPosition() const = 0;
567+
virtual std::optional<PositionInfo> getPosition() const = 0;
568568

569569
/** Returns true if this object can control the transport. */
570570
virtual bool canControlTransport();

modules/yup_audio_basics/midi/yup_MidiFile.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,15 @@ struct ReadTrait<uint16>
7979
};
8080

8181
template <typename Integral>
82-
Optional<Integral> tryRead (const uint8*& data, size_t& remaining)
82+
std::optional<Integral> tryRead (const uint8*& data, size_t& remaining)
8383
{
8484
using Trait = ReadTrait<Integral>;
8585
constexpr auto size = sizeof (Integral);
8686

8787
if (remaining < size)
8888
return {};
8989

90-
const Optional<Integral> result { Trait::read (data) };
90+
const std::optional<Integral> result { Trait::read (data) };
9191

9292
data += size;
9393
remaining -= size;
@@ -103,15 +103,15 @@ struct HeaderDetails
103103
short numberOfTracks = 0;
104104
};
105105

106-
static Optional<HeaderDetails> parseMidiHeader (const uint8* const initialData,
107-
const size_t maxSize)
106+
static std::optional<HeaderDetails> parseMidiHeader (const uint8* const initialData,
107+
const size_t maxSize)
108108
{
109109
auto* data = initialData;
110110
auto remaining = maxSize;
111111

112112
auto ch = tryRead<uint32> (data, remaining);
113113

114-
if (! ch.hasValue())
114+
if (! ch.has_value())
115115
return {};
116116

117117
if (*ch != ByteOrder::bigEndianInt ("MThd"))
@@ -124,7 +124,7 @@ static Optional<HeaderDetails> parseMidiHeader (const uint8* const initialData,
124124
{
125125
ch = tryRead<uint32> (data, remaining);
126126

127-
if (! ch.hasValue())
127+
if (! ch.has_value())
128128
return {};
129129

130130
if (*ch == ByteOrder::bigEndianInt ("MThd"))
@@ -141,22 +141,22 @@ static Optional<HeaderDetails> parseMidiHeader (const uint8* const initialData,
141141

142142
const auto bytesRemaining = tryRead<uint32> (data, remaining);
143143

144-
if (! bytesRemaining.hasValue() || *bytesRemaining > remaining)
144+
if (! bytesRemaining.has_value() || *bytesRemaining > remaining)
145145
return {};
146146

147147
const auto optFileType = tryRead<uint16> (data, remaining);
148148

149-
if (! optFileType.hasValue() || 2 < *optFileType)
149+
if (! optFileType.has_value() || 2 < *optFileType)
150150
return {};
151151

152152
const auto optNumTracks = tryRead<uint16> (data, remaining);
153153

154-
if (! optNumTracks.hasValue() || (*optFileType == 0 && *optNumTracks != 1))
154+
if (! optNumTracks.has_value() || (*optFileType == 0 && *optNumTracks != 1))
155155
return {};
156156

157157
const auto optTimeFormat = tryRead<uint16> (data, remaining);
158158

159-
if (! optTimeFormat.hasValue())
159+
if (! optTimeFormat.has_value())
160160
return {};
161161

162162
HeaderDetails result;
@@ -403,7 +403,7 @@ bool MidiFile::readFrom (InputStream& sourceStream,
403403

404404
const auto optHeader = MidiFileHelpers::parseMidiHeader (d, size);
405405

406-
if (! optHeader.hasValue())
406+
if (! optHeader.has_value())
407407
return false;
408408

409409
const auto header = *optHeader;
@@ -416,12 +416,12 @@ bool MidiFile::readFrom (InputStream& sourceStream,
416416
{
417417
const auto optChunkType = MidiFileHelpers::tryRead<uint32> (d, size);
418418

419-
if (! optChunkType.hasValue())
419+
if (! optChunkType.has_value())
420420
return false;
421421

422422
const auto optChunkSize = MidiFileHelpers::tryRead<uint32> (d, size);
423423

424-
if (! optChunkSize.hasValue())
424+
if (! optChunkSize.has_value())
425425
return false;
426426

427427
const auto chunkSize = *optChunkSize;

modules/yup_audio_basics/midi/yup_MidiMessageSequence.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -335,12 +335,12 @@ void MidiMessageSequence::deleteSysExMessages()
335335
//==============================================================================
336336
class OptionalPitchWheel
337337
{
338-
Optional<int> value;
338+
std::optional<int> value;
339339

340340
public:
341341
void emit (int channel, Array<MidiMessage>& out) const
342342
{
343-
if (value.hasValue())
343+
if (value.has_value())
344344
out.add (MidiMessage::pitchWheel (channel, *value));
345345
}
346346

@@ -352,13 +352,13 @@ class OptionalPitchWheel
352352

353353
class OptionalControllerValues
354354
{
355-
Optional<char> values[128];
355+
std::optional<char> values[128];
356356

357357
public:
358358
void emit (int channel, Array<MidiMessage>& out) const
359359
{
360360
for (auto it = std::begin (values); it != std::end (values); ++it)
361-
if (it->hasValue())
361+
if (it->has_value())
362362
out.add (MidiMessage::controllerEvent (channel, (int) std::distance (std::begin (values), it), **it));
363363
}
364364

@@ -370,15 +370,15 @@ class OptionalControllerValues
370370

371371
class OptionalProgramChange
372372
{
373-
Optional<char> value, bankLSB, bankMSB;
373+
std::optional<char> value, bankLSB, bankMSB;
374374

375375
public:
376376
void emit (int channel, double time, Array<MidiMessage>& out) const
377377
{
378-
if (! value.hasValue())
378+
if (! value.has_value())
379379
return;
380380

381-
if (bankLSB.hasValue() && bankMSB.hasValue())
381+
if (bankLSB.has_value() && bankMSB.has_value())
382382
{
383383
out.add (MidiMessage::controllerEvent (channel, 0x00, *bankMSB).withTimeStamp (time));
384384
out.add (MidiMessage::controllerEvent (channel, 0x20, *bankLSB).withTimeStamp (time));
@@ -414,7 +414,7 @@ class ParameterNumberState
414414
nrpn
415415
};
416416

417-
Optional<char> newestRpnLsb, newestRpnMsb, newestNrpnLsb, newestNrpnMsb, lastSentLsb, lastSentMsb;
417+
std::optional<char> newestRpnLsb, newestRpnMsb, newestNrpnLsb, newestNrpnMsb, lastSentLsb, lastSentMsb;
418418
Kind lastSentKind = Kind::rpn, newestKind = Kind::rpn;
419419

420420
public:
@@ -430,7 +430,7 @@ class ParameterNumberState
430430
auto lastSent = std::tie (lastSentKind, lastSentMsb, lastSentLsb);
431431
const auto newest = std::tie (newestKind, newestMsb, newestLsb);
432432

433-
if (lastSent == newest || ! newestMsb.hasValue() || ! newestLsb.hasValue())
433+
if (lastSent == newest || ! newestMsb.has_value() || ! newestLsb.has_value())
434434
return;
435435

436436
out.add (MidiMessage::controllerEvent (channel, newestKind == Kind::rpn ? 0x65 : 0x63, *newestMsb).withTimeStamp (time));

modules/yup_audio_devices/native/yup_Audio_ios.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -658,7 +658,7 @@ struct iOSAudioIODevice::Pimpl final : public AsyncUpdater
658658
impl.handleAudioTransportEvent (kAudioUnitRemoteControlEvent_Rewind);
659659
}
660660

661-
Optional<PositionInfo> getPosition() const override
661+
std::optional<PositionInfo> getPosition() const override
662662
{
663663
if (! canControlTransportImpl())
664664
return {};

modules/yup_audio_plugin_client/clap/yup_audio_plugin_client_CLAP.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ class AudioPluginPlayHeadCLAP final : public AudioPlayHead
227227
return;
228228
}
229229

230-
Optional<PositionInfo> getPosition() const override
230+
std::optional<PositionInfo> getPosition() const override
231231
{
232232
if (process.transport == nullptr)
233233
return {};

0 commit comments

Comments
 (0)