@@ -331,19 +331,6 @@ bool Command::InitArgument(size_t argIndex, char * argValue)
331
331
return true ;
332
332
}
333
333
334
- case ArgumentType::Attribute: {
335
- if (arg.isOptional () || arg.isNullable ())
336
- {
337
- isValidArgument = false ;
338
- }
339
- else
340
- {
341
- char * value = reinterpret_cast <char *>(arg.value );
342
- isValidArgument = (strcmp (argValue, value) == 0 );
343
- }
344
- break ;
345
- }
346
-
347
334
case ArgumentType::String: {
348
335
isValidArgument = HandleNullableOptional<char *>(arg, argValue, [&](auto * value) {
349
336
*value = argValue;
@@ -603,16 +590,14 @@ bool Command::InitArgument(size_t argIndex, char * argValue)
603
590
return isValidArgument;
604
591
}
605
592
606
- size_t Command::AddArgument (const char * name, const char * value, const char * desc, uint8_t flags )
593
+ void Command::AddArgument (const char * name, const char * value, const char * desc)
607
594
{
608
- Argument arg;
609
- arg.type = ArgumentType::Attribute;
595
+ ReadOnlyGlobalCommandArgument arg;
610
596
arg.name = name;
611
- arg.value = const_cast <void *>(reinterpret_cast <const void *>(value));
612
- arg.flags = flags;
597
+ arg.value = value;
613
598
arg.desc = desc;
614
599
615
- return AddArgumentToList ( std::move ( arg) );
600
+ mReadOnlyGlobalCommandArgument . SetValue ( arg);
616
601
}
617
602
618
603
size_t Command::AddArgument (const char * name, char ** value, const char * desc, uint8_t flags)
@@ -832,31 +817,36 @@ const char * Command::GetArgumentDescription(size_t index) const
832
817
return nullptr ;
833
818
}
834
819
820
+ const char * Command::GetReadOnlyGlobalCommandArgument () const
821
+ {
822
+ if (GetAttribute ())
823
+ {
824
+ return GetAttribute ();
825
+ }
826
+
827
+ if (GetEvent ())
828
+ {
829
+ return GetEvent ();
830
+ }
831
+
832
+ return nullptr ;
833
+ }
834
+
835
835
const char * Command::GetAttribute () const
836
836
{
837
- size_t argsCount = mArgs .size ();
838
- for (size_t i = 0 ; i < argsCount; i++)
837
+ if (mReadOnlyGlobalCommandArgument .HasValue ())
839
838
{
840
- Argument arg = mArgs .at (i);
841
- if (arg.type == ArgumentType::Attribute)
842
- {
843
- return reinterpret_cast <const char *>(arg.value );
844
- }
839
+ return mReadOnlyGlobalCommandArgument .Value ().value ;
845
840
}
846
841
847
842
return nullptr ;
848
843
}
849
844
850
845
const char * Command::GetEvent () const
851
846
{
852
- size_t argsCount = mArgs .size ();
853
- for (size_t i = 0 ; i < argsCount; i++)
847
+ if (mReadOnlyGlobalCommandArgument .HasValue ())
854
848
{
855
- Argument arg = mArgs .at (i);
856
- if (arg.type == ArgumentType::Attribute)
857
- {
858
- return reinterpret_cast <const char *>(arg.value );
859
- }
849
+ return mReadOnlyGlobalCommandArgument .Value ().value ;
860
850
}
861
851
862
852
return nullptr ;
@@ -943,11 +933,6 @@ void Command::ResetArguments()
943
933
VerifyOrDie (false );
944
934
break ;
945
935
}
946
- case ArgumentType::Attribute: {
947
- // No optional Attribute arguments so far.
948
- VerifyOrDie (false );
949
- break ;
950
- }
951
936
case ArgumentType::String: {
952
937
ResetOptionalArg<char *>(arg);
953
938
break ;
0 commit comments