Reduce #include dependencies on style system headers: reduce what nsRuleData.h pulls in. b=379089 r+sr=bzbarsky
authordbaron@dbaron.org
Sat, 28 Apr 2007 09:01:24 -0700
changeset 902 8fa64f3d2b154b5a4e9e2fe34c4cb1fa03906be1
parent 901 379f89b45a4645ed4e4998e031df0027bca46668
child 903 ec5f7ff52bc33c04647500095cd2720c1f09adfe
push idunknown
push userunknown
push dateunknown
bugs379089
milestone1.9a5pre
Reduce #include dependencies on style system headers: reduce what nsRuleData.h pulls in. b=379089 r+sr=bzbarsky
content/html/content/src/nsHTMLIFrameElement.cpp
layout/style/Makefile.in
layout/style/nsCSSDataBlock.cpp
layout/style/nsRuleData.h
layout/style/nsRuleNode.h
layout/style/nsStyleStruct.h
layout/style/nsStyleStructFwd.h
--- a/content/html/content/src/nsHTMLIFrameElement.cpp
+++ b/content/html/content/src/nsHTMLIFrameElement.cpp
@@ -38,16 +38,17 @@
 #include "nsGenericHTMLElement.h"
 #include "nsGkAtoms.h"
 #include "nsPresContext.h"
 #include "nsIPresShell.h"
 #include "nsIDocument.h"
 #include "nsMappedAttributes.h"
 #include "nsDOMError.h"
 #include "nsRuleData.h"
+#include "nsStyleConsts.h"
 
 class nsHTMLIFrameElement : public nsGenericHTMLFrameElement,
                             public nsIDOMHTMLIFrameElement
 {
 public:
   nsHTMLIFrameElement(nsINodeInfo *aNodeInfo);
   virtual ~nsHTMLIFrameElement();
 
--- a/layout/style/Makefile.in
+++ b/layout/style/Makefile.in
@@ -112,16 +112,17 @@ EXPORTS		= \
 		nsLayoutStylesheetCache.h \
 		nsRuleData.h \
 		nsRuleNode.h \
 		nsRuleWalker.h \
 		nsStyleContext.h \
 		nsStyleCoord.h \
 		nsStyleSet.h \
 		nsStyleStruct.h \
+		nsStyleStructFwd.h \
 		nsStyleStructList.h \
 		nsStyleUtil.h \
 		$(NULL)
 
 CPPSRCS		= \
 		nsCSSAnonBoxes.cpp \
 		nsCSSDataBlock.cpp \
 		nsCSSDeclaration.cpp \
--- a/layout/style/nsCSSDataBlock.cpp
+++ b/layout/style/nsCSSDataBlock.cpp
@@ -38,16 +38,17 @@
 /*
  * compact representation of the property-value pairs within a CSS
  * declaration, and the code for expanding and compacting it
  */
 
 #include "nsCSSDataBlock.h"
 #include "nsCSSProps.h"
 #include "nsRuleData.h"
+#include "nsRuleNode.h"
 
 /*
  * nsCSSCompressedDataBlock holds property-value pairs corresponding to
  * CSS declaration blocks.  The value is stored in one of the six CSS
  * data types.  These six types are nsCSSValue, nsCSSRect,
  * nsCSSValueList, nsCSSCounterData, nsCSSQuotes, and nsCSSValuePair, and
  * each correspond to a value of the nsCSSType enumeration.
  *
--- a/layout/style/nsRuleData.h
+++ b/layout/style/nsRuleData.h
@@ -40,17 +40,22 @@
  * temporary (expanded) representation of property-value pairs used to
  * hold data from matched rules during style data computation 
  */
 
 #ifndef nsRuleData_h_
 #define nsRuleData_h_
 
 #include "nsCSSStruct.h"
-#include "nsRuleNode.h"
+#include "nsStyleStructFwd.h"
+class nsPresContext;
+class nsStyleContext;
+
+struct nsRuleData;
+typedef void (*nsPostResolveFunc)(nsStyleStruct* aStyleStruct, nsRuleData* aData);
 
 struct nsRuleData
 {
   nsStyleStructID mSID;
   PRPackedBool mCanStoreInRuleTree;
   nsPresContext* mPresContext;
   nsStyleContext* mStyleContext;
   nsPostResolveFunc mPostResolveCallback;
--- a/layout/style/nsRuleNode.h
+++ b/layout/style/nsRuleNode.h
@@ -55,18 +55,16 @@ struct nsRuleData;
 class nsIStyleRule;
 struct nsCSSStruct;
 // Copy of typedef that's in nsCSSStruct.h, for compilation speed.
 typedef nsCSSStruct nsRuleDataStruct;
 
 struct nsRuleDataFont;
 class nsCSSValue;
 
-typedef void (*nsPostResolveFunc)(nsStyleStruct* aStyleStruct, nsRuleData* aData);
-
 struct nsInheritedStyleData
 {
 
 #define STYLE_STRUCT_INHERITED(name, checkdata_cb, ctor_args) \
   nsStyle##name * m##name##Data;
 #define STYLE_STRUCT_RESET(name, checkdata_cb, ctor_args)
 
 #include "nsStyleStructList.h"
--- a/layout/style/nsStyleStruct.h
+++ b/layout/style/nsStyleStruct.h
@@ -60,32 +60,18 @@
 #include "nsCOMArray.h"
 #include "nsIAtom.h"
 #include "nsIURI.h"
 #include "nsCSSValue.h"
 
 class nsIFrame;
 class imgIRequest;
 
-enum nsStyleStructID {
-
-/*
- * Define the constants eStyleStruct_Font, etc.
- *
- * The C++ standard, section 7.2, guarantees that enums begin with 0 and
- * increase by 1.
- */
-
-#define STYLE_STRUCT(name, checkdata_cb, ctor_args) eStyleStruct_##name,
-#include "nsStyleStructList.h"
-#undef STYLE_STRUCT
-
-nsStyleStructID_Length /* one past the end; length of 0-based list */
-
-};
+// Includes nsStyleStructID.
+#include "nsStyleStructFwd.h"
 
 // Bits for each struct.
 #define NS_STYLE_INHERIT_BIT(sid_)        (1 << PRInt32(eStyleStruct_##sid_))
 #define NS_STYLE_INHERIT_MASK             0x00ffffff
 
 // Additional bits for nsStyleContext's mBits:
 // A bit to test whether or not we have any text decorations.
 #define NS_STYLE_HAS_TEXT_DECORATIONS     0x01000000
new file mode 100644
--- /dev/null
+++ b/layout/style/nsStyleStructFwd.h
@@ -0,0 +1,65 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   L. David Baron <dbaron@dbaron.org>, Mozilla Corporation
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either of the GNU General Public License Version 2 or later (the "GPL"),
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*
+ * Forward declarations to avoid including all of nsStyleStruct.h.
+ */
+
+#ifndef nsStyleStructFwd_h_
+#define nsStyleStructFwd_h_
+
+enum nsStyleStructID {
+
+/*
+ * Define the constants eStyleStruct_Font, etc.
+ *
+ * The C++ standard, section 7.2, guarantees that enums begin with 0 and
+ * increase by 1.
+ */
+
+#define STYLE_STRUCT(name, checkdata_cb, ctor_args) eStyleStruct_##name,
+#include "nsStyleStructList.h"
+#undef STYLE_STRUCT
+
+nsStyleStructID_Length /* one past the end; length of 0-based list */
+
+};
+
+struct nsStyleStruct;
+
+#endif /* nsStyleStructFwd_h_ */