summaryrefslogtreecommitdiff
path: root/src/mozApocPolicyNodeDOMData.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mozApocPolicyNodeDOMData.h')
-rw-r--r--src/mozApocPolicyNodeDOMData.h108
1 files changed, 108 insertions, 0 deletions
diff --git a/src/mozApocPolicyNodeDOMData.h b/src/mozApocPolicyNodeDOMData.h
new file mode 100644
index 0000000..7736a6f
--- /dev/null
+++ b/src/mozApocPolicyNodeDOMData.h
@@ -0,0 +1,108 @@
+
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either
+ * the GNU General Public License Version 2 only ("GPL") or
+ * the Common Development and Distribution License("CDDL")
+ * (collectively, the "License"). You may not use this file
+ * except in compliance with the License. You can obtain a copy
+ * of the License at www.sun.com/CDDL or at COPYRIGHT. See the
+ * License for the specific language governing permissions and
+ * limitations under the License. When distributing the software,
+ * include this License Header Notice in each file and include
+ * the License file at /legal/license.txt. If applicable, add the
+ * following below the License Header, with the fields enclosed
+ * by brackets [] replaced by your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ *
+ * If you wish your version of this file to be governed by
+ * only the CDDL or only the GPL Version 2, indicate your
+ * decision by adding "[Contributor] elects to include this
+ * software in this distribution under the [CDDL or GPL
+ * Version 2] license." If you don't indicate a single choice
+ * of license, a recipient has the option to distribute your
+ * version of this file under either the CDDL, the GPL Version
+ * 2 or to extend the choice of license to its licensees as
+ * provided above. However, if you add GPL Version 2 code and
+ * therefore, elected the GPL Version 2 license, then the
+ * option applies only if the new code is made subject to such
+ * option by the copyright holder.
+ */
+
+
+#ifndef MOZAPOC_POLICYNODEDOMDATA_H_INCLUDED
+#define MOZAPOC_POLICYNODEDOMDATA_H_INCLUDED
+
+#include "mozApocPolicyNodeAttributes.h"
+
+#include "mozApocPolicyModel.h"
+
+class mozApocPolicyComponentDOMData;
+class mozApocUniqueCStringList;
+
+class mozApocPolicyNodeLayerDOMData
+{
+ mozApocPolicyModelNodeRef mPolicyData;
+ mozApocEntryAttributes mAttributes;
+public:
+ mozApocPolicyNodeLayerDOMData();
+ explicit
+ mozApocPolicyNodeLayerDOMData(const mozApocPolicyModelNodeRef & aDOMRoot, const nsACString & aComponent);
+
+ mozApocEntryAttributes GetAttributes() const { return mAttributes; }
+ PRBool ExistsInPolicy() const { return mPolicyData != nsnull; }
+ // PRBool ExistsInPolicy() const { return mozApocExistsInPolicy(mAttributes); }
+ PRBool IsNode() const { return mozApocIsNode(mAttributes); }
+ PRBool IsProperty() const { return mozApocIsProperty(mAttributes); }
+ PRBool HasValue() const { return mozApocHasValue(mAttributes); }
+
+ nsresult GetValue(nsAString & _retval) const;
+
+ nsresult ListChildren(mozApocUniqueCStringList & aList) const;
+
+ nsresult GotoChild(const nsACString & aName);
+private:
+ nsresult GetChildElement(const nsACString & aName, mozApocPolicyModelNodeRef & aElement);
+ nsresult AdjustAttributes();
+};
+
+class mozApocPolicyNodeDOMData
+{
+ mozApocPolicyNodeLayerDOMData * mLayers;
+ PRInt32 mLayerCount;
+ mozApocEntryAttributes mEffectiveAttributes;
+public:
+ mozApocPolicyNodeDOMData();
+ explicit
+ mozApocPolicyNodeDOMData(const mozApocPolicyComponentDOMData * aRawLayerData);
+ mozApocPolicyNodeDOMData(const mozApocPolicyNodeDOMData & aOther);
+ mozApocPolicyNodeDOMData & operator=(const mozApocPolicyNodeDOMData & aOther);
+ ~mozApocPolicyNodeDOMData();
+
+ mozApocEntryAttributes GetAttributes() const { return mEffectiveAttributes; }
+ PRBool IsReal() const { return mozApocExistsInPolicy(mEffectiveAttributes); }
+ PRBool IsNode() const { return mozApocIsNode(mEffectiveAttributes); }
+ PRBool IsProperty() const { return mozApocIsProperty(mEffectiveAttributes); }
+ PRBool HasValue() const { return mozApocHasValue(mEffectiveAttributes); }
+
+ nsresult GetValue(nsAString & _retval) const;
+ // TODO: Add support for localized values
+
+ nsresult ListChildren(mozApocUniqueCStringList & aList) const;
+
+ nsresult GotoChild(const nsACString & aName);
+private:
+ PRBool CopyLayers(const mozApocPolicyNodeLayerDOMData * pData, PRInt32 nCount);
+ void AccumulateAttributes();
+ void SuppressDataFrom(PRInt32 nIndex);
+ void Clear();
+};
+
+#endif
+