76 buffer_concat(buffer, "parsing the textual form of the value."); break; 77 case Flag::NON_WRITABLE: 78 buffer_concat(buffer, "flag is not writeable."); break; 79 case Flag::OUT_OF_BOUNDS: 80 print_flag_error_message_bounds(name, buffer); break; 81 case Flag::VIOLATES_CONSTRAINT: 82 buffer_concat(buffer, "value violates its flag's constraint."); break; 83 case Flag::INVALID_FLAG: 84 buffer_concat(buffer, "there is no flag with the given name."); break; 85 case Flag::ERR_OTHER: 86 buffer_concat(buffer, "other, unspecified error related to setting the flag."); break; 87 case Flag::SUCCESS: 88 break; 89 } 90 91 err_msg.print("%s", buffer); 92 } 93 94 // set a boolean global flag 95 Flag::Error WriteableFlags::set_bool_flag(const char* name, const char* arg, Flag::Flags origin, FormatBuffer<80>& err_msg) { 96 int value = true; 97 98 if (sscanf(arg, "%d", &value)) { 99 return set_bool_flag(name, value != 0, origin, err_msg); 100 } 101 err_msg.print("flag value must be a boolean (1 or 0)"); 102 return Flag::WRONG_FORMAT; 103 } 104 105 Flag::Error WriteableFlags::set_bool_flag(const char* name, bool value, Flag::Flags origin, FormatBuffer<80>& err_msg) { 106 Flag::Error err = CommandLineFlags::boolAtPut(name, &value, origin); 107 print_flag_error_message_if_needed(err, name, err_msg); 108 return err; 109 } 110 111 // set a int global flag 112 Flag::Error WriteableFlags::set_int_flag(const char* name, const char* arg, Flag::Flags origin, FormatBuffer<80>& err_msg) { 113 int value; 114 115 if (sscanf(arg, "%d", &value)) { 116 return set_int_flag(name, value, origin, err_msg); 117 } 118 err_msg.print("flag value must be an integer"); 119 return Flag::WRONG_FORMAT; 120 } 121 | 76 buffer_concat(buffer, "parsing the textual form of the value."); break; 77 case Flag::NON_WRITABLE: 78 buffer_concat(buffer, "flag is not writeable."); break; 79 case Flag::OUT_OF_BOUNDS: 80 print_flag_error_message_bounds(name, buffer); break; 81 case Flag::VIOLATES_CONSTRAINT: 82 buffer_concat(buffer, "value violates its flag's constraint."); break; 83 case Flag::INVALID_FLAG: 84 buffer_concat(buffer, "there is no flag with the given name."); break; 85 case Flag::ERR_OTHER: 86 buffer_concat(buffer, "other, unspecified error related to setting the flag."); break; 87 case Flag::SUCCESS: 88 break; 89 } 90 91 err_msg.print("%s", buffer); 92 } 93 94 // set a boolean global flag 95 Flag::Error WriteableFlags::set_bool_flag(const char* name, const char* arg, Flag::Flags origin, FormatBuffer<80>& err_msg) { 96 if ((strcasecmp(arg, "true") == 0) || (*arg == '1' && *(arg + 1) == 0)) { 97 return set_bool_flag(name, true, origin, err_msg); 98 } else if ((strcasecmp(arg, "false") == 0) || (*arg == '0' && *(arg + 1) == 0)) { 99 return set_bool_flag(name, false, origin, err_msg); 100 } 101 err_msg.print("flag value must be a boolean (1/0 or true/false)"); 102 return Flag::WRONG_FORMAT; 103 } 104 105 Flag::Error WriteableFlags::set_bool_flag(const char* name, bool value, Flag::Flags origin, FormatBuffer<80>& err_msg) { 106 Flag::Error err = CommandLineFlags::boolAtPut(name, &value, origin); 107 print_flag_error_message_if_needed(err, name, err_msg); 108 return err; 109 } 110 111 // set a int global flag 112 Flag::Error WriteableFlags::set_int_flag(const char* name, const char* arg, Flag::Flags origin, FormatBuffer<80>& err_msg) { 113 int value; 114 115 if (sscanf(arg, "%d", &value)) { 116 return set_int_flag(name, value, origin, err_msg); 117 } 118 err_msg.print("flag value must be an integer"); 119 return Flag::WRONG_FORMAT; 120 } 121 |