Line data Source code
1 : /* This Source Code Form is subject to the terms of the Mozilla Public
2 : * License, v. 2.0. If a copy of the MPL was not distributed with this
3 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 : #ifndef _NSSASNTREE_H_
5 : #define _NSSASNTREE_H_
6 :
7 : #include "nscore.h"
8 : #include "nsIX509Cert.h"
9 : #include "nsIASN1Tree.h"
10 : #include "nsIASN1Object.h"
11 : #include "nsIASN1Sequence.h"
12 : #include "nsITreeView.h"
13 : #include "nsITreeBoxObject.h"
14 : #include "nsITreeSelection.h"
15 : #include "nsCOMPtr.h"
16 :
17 : //4bfaa9f0-1dd2-11b2-afae-a82cbaa0b606
18 : #define NS_NSSASN1OUTINER_CID { \
19 : 0x4bfaa9f0, \
20 : 0x1dd2, \
21 : 0x11b2, \
22 : {0xaf,0xae,0xa8,0x2c,0xba,0xa0,0xb6,0x06} \
23 : }
24 :
25 :
26 : class nsNSSASN1Tree : public nsIASN1Tree
27 : {
28 : public:
29 : NS_DECL_THREADSAFE_ISUPPORTS
30 : NS_DECL_NSIASN1TREE
31 : NS_DECL_NSITREEVIEW
32 :
33 : nsNSSASN1Tree();
34 : protected:
35 : virtual ~nsNSSASN1Tree();
36 :
37 0 : class myNode
38 : {
39 : public:
40 : nsCOMPtr<nsIASN1Object> obj;
41 : nsCOMPtr<nsIASN1Sequence> seq;
42 : myNode *child;
43 : myNode *next;
44 : myNode *parent;
45 :
46 0 : myNode() {
47 0 : child = next = parent = nullptr;
48 0 : }
49 : };
50 :
51 : myNode *mTopNode;
52 :
53 : nsCOMPtr<nsIASN1Object> mASN1Object;
54 : nsCOMPtr<nsITreeSelection> mSelection;
55 : nsCOMPtr<nsITreeBoxObject> mTree;
56 :
57 : void InitNodes();
58 : void InitChildsRecursively(myNode *n);
59 :
60 : void ClearNodes();
61 : void ClearNodesRecursively(myNode *n);
62 :
63 : int32_t CountVisibleNodes(myNode *n);
64 : myNode *FindNodeFromIndex(myNode *n, int32_t wantedIndex,
65 : int32_t &index_counter, int32_t &level_counter,
66 : int32_t *optionalOutParentIndex, int32_t *optionalOutLevel);
67 : myNode *FindNodeFromIndex(int32_t wantedIndex,
68 : int32_t *optionalOutParentIndex = nullptr,
69 : int32_t *optionalOutLevel = nullptr);
70 :
71 : };
72 : #endif //_NSSASNTREE_H_
|