@@ -371,154 +371,156 @@ class Value : public std::enable_shared_from_this<Value>
371
371
#pragma GCC diagnostic pop
372
372
#endif
373
373
namespace exceptions {
374
- class exception : public std ::exception
375
- {
376
- public:
377
- explicit exception (std::string message)
378
- : m_message(std::move(message))
379
- {
380
- }
381
374
382
- CXXOPTS_NODISCARD
383
- const char *
384
- what () const noexcept override
385
- {
386
- return m_message.c_str ();
387
- }
388
-
389
- private:
390
- std::string m_message;
391
- };
375
+ class exception : public std ::exception
376
+ {
377
+ public:
378
+ explicit exception (std::string message)
379
+ : m_message(std::move(message))
380
+ {
381
+ }
392
382
393
- class specification : public exception
383
+ CXXOPTS_NODISCARD
384
+ const char *
385
+ what () const noexcept override
394
386
{
395
- public:
387
+ return m_message.c_str ();
388
+ }
396
389
397
- explicit specification (const std::string& message)
398
- : exception(message)
399
- {
400
- }
401
- };
390
+ private:
391
+ std::string m_message;
392
+ };
402
393
403
- class parsing : public exception
404
- {
405
- public:
406
- explicit parsing (const std::string& message)
407
- : exception(message)
408
- {
409
- }
410
- };
394
+ class specification : public exception
395
+ {
396
+ public:
411
397
412
- class option_already_exists : public specification
398
+ explicit specification (const std::string& message)
399
+ : exception(message)
413
400
{
414
- public:
415
- explicit option_already_exists (const std::string& option)
416
- : specification(" Option " + LQUOTE + option + RQUOTE + " already exists" )
417
- {
418
- }
419
- };
401
+ }
402
+ };
420
403
421
- class invalid_option_format : public specification
404
+ class parsing : public exception
405
+ {
406
+ public:
407
+ explicit parsing (const std::string& message)
408
+ : exception(message)
422
409
{
423
- public:
424
- explicit invalid_option_format (const std::string& format)
425
- : specification(" Invalid option format " + LQUOTE + format + RQUOTE)
426
- {
427
- }
428
- };
410
+ }
411
+ };
429
412
430
- class invalid_option_syntax : public parsing {
431
- public:
432
- explicit invalid_option_syntax ( const std::string& text)
433
- : parsing( " Argument " + LQUOTE + text + RQUOTE +
434
- " starts with a - but has incorrect syntax " )
435
- {
436
- }
437
- };
413
+ class option_already_exists : public specification
414
+ {
415
+ public:
416
+ explicit option_already_exists ( const std::string& option)
417
+ : specification( " Option " + LQUOTE + option + RQUOTE + " already exists " )
418
+ {
419
+ }
420
+ };
438
421
439
- class no_such_option : public parsing
422
+ class invalid_option_format : public specification
423
+ {
424
+ public:
425
+ explicit invalid_option_format (const std::string& format)
426
+ : specification(" Invalid option format " + LQUOTE + format + RQUOTE)
440
427
{
441
- public:
442
- explicit no_such_option (const std::string& option)
443
- : parsing(" Option " + LQUOTE + option + RQUOTE + " does not exist" )
444
- {
445
- }
446
- };
428
+ }
429
+ };
447
430
448
- class missing_argument : public parsing
431
+ class invalid_option_syntax : public parsing {
432
+ public:
433
+ explicit invalid_option_syntax (const std::string& text)
434
+ : parsing(" Argument " + LQUOTE + text + RQUOTE +
435
+ " starts with a - but has incorrect syntax" )
449
436
{
450
- public:
451
- explicit missing_argument (const std::string& option)
452
- : parsing(
453
- " Option " + LQUOTE + option + RQUOTE + " is missing an argument"
454
- )
455
- {
456
- }
457
- };
437
+ }
438
+ };
458
439
459
- class option_requires_argument : public parsing
440
+ class no_such_option : public parsing
441
+ {
442
+ public:
443
+ explicit no_such_option (const std::string& option)
444
+ : parsing(" Option " + LQUOTE + option + RQUOTE + " does not exist" )
460
445
{
461
- public:
462
- explicit option_requires_argument (const std::string& option)
463
- : parsing(
464
- " Option " + LQUOTE + option + RQUOTE + " requires an argument"
465
- )
466
- {
467
- }
468
- };
446
+ }
447
+ };
469
448
470
- class gratuitous_argument_for_option : public parsing
449
+ class missing_argument : public parsing
450
+ {
451
+ public:
452
+ explicit missing_argument (const std::string& option)
453
+ : parsing(
454
+ " Option " + LQUOTE + option + RQUOTE + " is missing an argument"
455
+ )
471
456
{
472
- public:
473
- gratuitous_argument_for_option
474
- (
475
- const std::string& option,
476
- const std::string& arg
457
+ }
458
+ };
459
+
460
+ class option_requires_argument : public parsing
461
+ {
462
+ public:
463
+ explicit option_requires_argument (const std::string& option)
464
+ : parsing(
465
+ " Option " + LQUOTE + option + RQUOTE + " requires an argument"
477
466
)
478
- : parsing(
479
- " Option " + LQUOTE + option + RQUOTE +
480
- " does not take an argument, but argument " +
481
- LQUOTE + arg + RQUOTE + " given"
482
- )
483
- {
484
- }
485
- };
467
+ {
468
+ }
469
+ };
486
470
487
- class requested_option_not_present : public parsing
471
+ class gratuitous_argument_for_option : public parsing
472
+ {
473
+ public:
474
+ gratuitous_argument_for_option
475
+ (
476
+ const std::string& option,
477
+ const std::string& arg
478
+ )
479
+ : parsing(
480
+ " Option " + LQUOTE + option + RQUOTE +
481
+ " does not take an argument, but argument " +
482
+ LQUOTE + arg + RQUOTE + " given"
483
+ )
488
484
{
489
- public:
490
- explicit requested_option_not_present (const std::string& option)
491
- : parsing(" Option " + LQUOTE + option + RQUOTE + " not present" )
492
- {
493
- }
494
- };
485
+ }
486
+ };
495
487
496
- class option_has_no_value : public exception
488
+ class requested_option_not_present : public parsing
489
+ {
490
+ public:
491
+ explicit requested_option_not_present (const std::string& option)
492
+ : parsing(" Option " + LQUOTE + option + RQUOTE + " not present" )
497
493
{
498
- public:
499
- explicit option_has_no_value (const std::string& option)
500
- : exception(
501
- !option.empty() ?
502
- (" Option " + LQUOTE + option + RQUOTE + " has no value" ) :
503
- "Option has no value")
504
- {
505
- }
506
- };
494
+ }
495
+ };
507
496
508
- class incorrect_argument_type : public parsing
497
+ class option_has_no_value : public exception
498
+ {
499
+ public:
500
+ explicit option_has_no_value (const std::string& option)
501
+ : exception(
502
+ !option.empty() ?
503
+ (" Option " + LQUOTE + option + RQUOTE + " has no value" ) :
504
+ "Option has no value")
509
505
{
510
- public:
511
- explicit incorrect_argument_type
512
- (
513
- const std::string& arg
506
+ }
507
+ };
508
+
509
+ class incorrect_argument_type : public parsing
510
+ {
511
+ public:
512
+ explicit incorrect_argument_type
513
+ (
514
+ const std::string& arg
515
+ )
516
+ : parsing(
517
+ " Argument " + LQUOTE + arg + RQUOTE + " failed to parse"
514
518
)
515
- : parsing(
516
- " Argument " + LQUOTE + arg + RQUOTE + " failed to parse"
517
- )
518
- {
519
- }
520
- };
521
- }
519
+ {
520
+ }
521
+ };
522
+
523
+ } // namespace exceptions
522
524
523
525
template <typename T>
524
526
void throw_or_mimic (const std::string& text)
0 commit comments