[#BloombergLP-baljsn-EncodeImplUtil-validate-06]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/baljsn.adoc[baljsn]::xref:BloombergLP/baljsn/EncodeImplUtil.adoc[EncodeImplUtil]::validate
:relfileprefix: ../../../
:mrdocs:

Determine whether `value` meets the encoding requirements for `category`&period;

== Synopsis

Declared in `&lt;baljsn&lowbar;encodeimplutil&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;class TYPE&gt;
static
int
validate(
    std::ostream* logStream,
    TYPE const& value,
    xref:BloombergLP/bdlat_TypeCategory/Choice.adoc[bdlat&lowbar;TypeCategory::Choice] category);
----

== Description

Determine if the specified `value` having the specified `bdlat` `category` satisfies the requirements for encoding using this component&period; If the `value` meets the encoding requirements, return 0, otherwise load an unspecified, human&hyphen;readable description of the requirements that are not satisfied by the `value` and return a non&hyphen;zero value&period; For values satisfying the `bdlat` `Choice` type&hyphen;category concept, the value of the `selectionId` attribute must not be undefined&period; For values satisfying the requirements of other `bdlat` type&hyphen;category concepts, there are no further requirements for encoding using this component&period; See the package&hyphen;level documentation of `bdlat` for an introduction to the requirements of `bdlat` type&hyphen;category concepts&period;

== Return Value

0 if valid, and a non&hyphen;zero value otherwise

== Parameters

[cols="1,4"]
|===
| Name| Description
| *logStream*
| stream for human&hyphen;readable error descriptions
| *value*
| value to validate for encoding
| *category*
| `bdlat` Choice type&hyphen;category tag
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
