michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- michael@0: * michael@0: * This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #include "nsISupports.idl" michael@0: #include "nsIASN1Object.idl" michael@0: michael@0: interface nsIMutableArray; michael@0: michael@0: /** michael@0: * This represents a sequence of ASN.1 objects, michael@0: * where ASN.1 is "Abstract Syntax Notation number One". michael@0: * michael@0: * Overview of how this ASN1 interface is intended to michael@0: * work. michael@0: * michael@0: * First off, the nsIASN1Sequence is any type in ASN1 michael@0: * that consists of sub-elements (ie SEQUENCE, SET) michael@0: * nsIASN1Printable Items are all the other types that michael@0: * can be viewed by themselves without interpreting further. michael@0: * Examples would include INTEGER, UTF-8 STRING, OID. michael@0: * These are not intended to directly reflect the numberous michael@0: * types that exist in ASN1, but merely an interface to ease michael@0: * producing a tree display the ASN1 structure of any DER michael@0: * object. michael@0: * michael@0: * The additional state information carried in this interface michael@0: * makes it fit for being used as the data structure michael@0: * when working with visual reprenstation of ASN.1 objects michael@0: * in a human user interface, like in a tree widget michael@0: * where open/close state of nodes must be remembered. michael@0: */ michael@0: [scriptable, uuid(b6b957e6-1dd1-11b2-89d7-e30624f50b00)] michael@0: interface nsIASN1Sequence : nsIASN1Object { michael@0: michael@0: /** michael@0: * The array of objects stored in the sequence. michael@0: */ michael@0: attribute nsIMutableArray ASN1Objects; michael@0: michael@0: /** michael@0: * Whether the node at this position in the ASN.1 data structure michael@0: * sequence contains sub elements understood by the michael@0: * application. michael@0: */ michael@0: attribute boolean isValidContainer; michael@0: michael@0: /** michael@0: * Whether the contained objects should be shown or hidden. michael@0: * A UI implementation can use this flag to store the current michael@0: * expansion state when shown in a tree widget. michael@0: */ michael@0: attribute boolean isExpanded; michael@0: };