/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsILDAPBERValue;

/**
 * XPCOM representation of the C SDK LDAPControl structure.
 */
[scriptable, uuid(3a7ceb8e-482a-4a4f-9aa4-26b9a69a3595)]
interface nsILDAPControl : nsISupports
{
  /**
   * Control type, represented as a string.
   *
   * @exceptions   none
   */
  attribute ACString oid;

  /**
   * The data associated with a control, if any.  To specify that no data 
   * is to be associated with the control, don't set this at all (which
   * is equivalent to setting it to null).  
   *
   * @note Specifying a zero-length value is not currently supported.  At some
   * date, setting this to an nsILDAPBERValue which has not had any of the
   * set methods called will be the appropriate way to do that.
   *
   * @exceptions   none
   */
  attribute nsILDAPBERValue value;

  /**
   * Should the client or server abort if the control is not understood?
   * Should be set to false for server controls used in abandon and unbind
   * operations, since those have no server response.
   *
   * @exceptions   none
   */
  attribute boolean isCritical;
};
