Quick Links:

bal | bbl | bdl | bsl

Namespaces

Component bdlde_base64decoderoptions
[Package bdlde]

Provide value-semantic attribute class for decoder options. More...

Namespaces

namespace  bdlde
namespace  bsl

Detailed Description

Outline
Purpose:
Provide value-semantic attribute class for decoder options.
Classes:
bdlde::Base64DecoderOptions options for decoder
See also:
bdlde_base64encorderoptions, bdlde_base64decorderoptions, Component bdlde_base64encoder, Component bdlde_base64decoder Component bdlde_base64alphabet
Description:
This component provides a value-semantic attribute class for specifying options for bdlde::Base64Decoder.
This class supports default-generated copy construction and copy assignment, but the constructor is private. To create an object one must call one of the class methods, which will return a newly-constructed object by value. Specialized class methods are provided to create objects configured for the mime, urlSafe, and standard configurations.
Other configurations may be obtained by specifying arguments to the custom class method, or by calling the setters after the object is created.
Usage:
In this section we show intended use of this component.
Example 1:
Suppose we want a Base64DecoderOptions object configured for MIME encoding, meaning alphabet == e_BASIC, isPadded == true, and ignoreMode = e_IGNORE_WHITESPACE.
First, we call the mime class method, and we're done. Then, we check the attributes:
  assert(mimeOptions.ignoreMode() ==
                               bdlde::Base64IgnoreMode::e_IGNORE_WHITESPACE);
  assert(mimeOptions.alphabet()   == bdlde::Base64Alphabet::e_BASIC);
  assert(mimeOptions.isPadded()   == true);
Now, we stream the object:
  mimeOptions.print(cout);
Finally, we observe the output:
  [
      ignoreMode = IGNORE_WHITESPACE
      alphabet = BASIC
      isPadded = true
  ]
Example 2:
Suppose we want a Base64DecoderOptions object configured for translating URL's. That would mean alphabet == e_URL, isPadded == false, and ignoring neither unrecognized characters nor whitespace.
First, the class method urlSafe returns an object configured exactly that way, so we simply call it: Then, we check the attributes:
  assert(urlOptions.ignoreMode() == bdlde::Base64IgnoreMode::e_IGNORE_NONE);
  assert(urlOptions.alphabet()   == bdlde::Base64Alphabet::e_URL);
  assert(urlOptions.isPadded()   == false);
Now, we stream the object:
  urlOptions.print(cout);
Finally, we observe the output:
  [
      ignoreMode = IGNORE_NONE
      alphabet = URL
      isPadded = false
  ]
Example 3:
Suppose we want an options object configured for standard Base64:
First, we can simply call the standard class method: Then, we check the attributes:
  assert(standardOptions.ignoreMode() ==
                                     bdlde::Base64IgnoreMode::e_IGNORE_NONE);
  assert(standardOptions.alphabet()            ==
                                             bdlde::Base64Alphabet::e_BASIC);
  assert(standardOptions.isPadded()            == true);
Now, we stream the object:
  standardOptions.print(cout);
Finally, we observe the output:
  [
      ignoreMode = IGNORE_NONE
      alphabet = BASIC
      isPadded = true
  ]
Example 4:
Suppose we want a really strangely configured options object with alphabet == e_URL, and padding, and ignoring neither unrecognized characters nor whitespace.
First, we can simply call the custom class method. The padded and unrecognizedIsError == true arguments are last, and they default to true, so we don't have to pass that. Then, we check the attributes:
  assert(customOptions.ignoreMode() ==
                                     bdlde::Base64IgnoreMode::e_IGNORE_NONE);
  assert(customOptions.alphabet()   == bdlde::Base64Alphabet::e_URL);
  assert(customOptions.isPadded()   == true);
Now, we stream the object:
  cout << customOptions << endl;
Finally, we observe the output:
  [ ignoreMode = IGNORE_NONE alphabet = URL isPadded = true ]