<?php
namespace nur\ldap\syntaxes\pri;

use nur\ldap\CompositeValue;
use nur\ldap\syntaxes\BooleanSyntax;
use nur\ldap\syntaxes\DateSyntax;
use nur\ldap\TCompositeValue;

/**
 * Class MyCValue
 *
 * --autogen-properties-and-methods--
 * @property string $mvalue
 * @property string $mdate
 * @property string|null $ovalue
 * @property string|null $odate
 * @property bool|null $obool
 */
class MyValue extends CompositeValue {
  use TCompositeValue;

  const SCHEMA = [
    "mvalue" => "string",
    "mdate" => "date",
    "ovalue" => "?string",
    "odate" => "?date",
    "obool" => "?bool",
  ];

  const SYNTAXES = [
    "mdate" => DateSyntax::class,
    "odate" => DateSyntax::class,
    "obool" => BooleanSyntax::class,
  ];

  const MANDATORY_KEYS = [
    "mvalue", "mdate",
  ];

  const OPTIONAL_KEYS = [
    "ovalue", "odate", "obool",
  ];

  const KEY_KEYS = ["mvalue"];

  #############################################################################
  const _AUTOGEN_PROPERTIES = [[self::class, "_AUTOGEN_PROPERTIES"]];
}