From e54b306cf13d6742af89794f1075d7833c938c79 Mon Sep 17 00:00:00 2001 From: "peterl%netscape.com" Date: Fri, 11 Dec 1998 02:51:05 +0000 Subject: [PATCH] added css atoms --- content/html/style/public/nsCSSAtoms.h | 53 ++++++++++++++++ content/shared/public/nsCSSAtoms.h | 53 ++++++++++++++++ content/shared/src/nsCSSAtoms.cpp | 84 ++++++++++++++++++++++++++ layout/html/style/public/MANIFEST | 1 + layout/html/style/public/Makefile.in | 1 + layout/html/style/public/makefile.win | 2 +- layout/html/style/public/nsCSSAtoms.h | 53 ++++++++++++++++ layout/html/style/src/Makefile.in | 1 + layout/html/style/src/makefile.win | 2 + layout/html/style/src/nsCSSAtoms.cpp | 84 ++++++++++++++++++++++++++ 10 files changed, 333 insertions(+), 1 deletion(-) create mode 100644 content/html/style/public/nsCSSAtoms.h create mode 100644 content/shared/public/nsCSSAtoms.h create mode 100644 content/shared/src/nsCSSAtoms.cpp create mode 100644 layout/html/style/public/nsCSSAtoms.h create mode 100644 layout/html/style/src/nsCSSAtoms.cpp diff --git a/content/html/style/public/nsCSSAtoms.h b/content/html/style/public/nsCSSAtoms.h new file mode 100644 index 000000000000..661fc1fc3473 --- /dev/null +++ b/content/html/style/public/nsCSSAtoms.h @@ -0,0 +1,53 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ +#ifndef nsCSSAtoms_h___ +#define nsCSSAtoms_h___ + +#include "nsIAtom.h" + +/** + * This class wraps up the creation (and destruction) of the standard + * set of CSS atoms used during normal CSS handling. These objects + * are created when the first CSS style sheet is created and they + * are destroyed when the last CSS style sheet is destroyed. + */ +class nsCSSAtoms { +public: + + static void AddrefAtoms(); + static void ReleaseAtoms(); + + // Alphabetical list of html attribute atoms + static nsIAtom* activePseudo; + + static nsIAtom* firstChildPseudo; + static nsIAtom* focusPseudo; + + static nsIAtom* hoverPseudo; + + static nsIAtom* langPseudo; + static nsIAtom* linkPseudo; + + static nsIAtom* outOfDatePseudo; // Netscape extension + + static nsIAtom* universalSelector; + + static nsIAtom* visitedPseudo; +}; + +#endif /* nsCSSAtoms_h___ */ diff --git a/content/shared/public/nsCSSAtoms.h b/content/shared/public/nsCSSAtoms.h new file mode 100644 index 000000000000..661fc1fc3473 --- /dev/null +++ b/content/shared/public/nsCSSAtoms.h @@ -0,0 +1,53 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ +#ifndef nsCSSAtoms_h___ +#define nsCSSAtoms_h___ + +#include "nsIAtom.h" + +/** + * This class wraps up the creation (and destruction) of the standard + * set of CSS atoms used during normal CSS handling. These objects + * are created when the first CSS style sheet is created and they + * are destroyed when the last CSS style sheet is destroyed. + */ +class nsCSSAtoms { +public: + + static void AddrefAtoms(); + static void ReleaseAtoms(); + + // Alphabetical list of html attribute atoms + static nsIAtom* activePseudo; + + static nsIAtom* firstChildPseudo; + static nsIAtom* focusPseudo; + + static nsIAtom* hoverPseudo; + + static nsIAtom* langPseudo; + static nsIAtom* linkPseudo; + + static nsIAtom* outOfDatePseudo; // Netscape extension + + static nsIAtom* universalSelector; + + static nsIAtom* visitedPseudo; +}; + +#endif /* nsCSSAtoms_h___ */ diff --git a/content/shared/src/nsCSSAtoms.cpp b/content/shared/src/nsCSSAtoms.cpp new file mode 100644 index 000000000000..0c75595e4249 --- /dev/null +++ b/content/shared/src/nsCSSAtoms.cpp @@ -0,0 +1,84 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ +#include "nsCSSAtoms.h" + +// XXX make this be autogenerated. doh! + +nsIAtom* nsCSSAtoms::activePseudo; + +nsIAtom* nsCSSAtoms::firstChildPseudo; +nsIAtom* nsCSSAtoms::focusPseudo; + +nsIAtom* nsCSSAtoms::hoverPseudo; + +nsIAtom* nsCSSAtoms::langPseudo; +nsIAtom* nsCSSAtoms::linkPseudo; + +nsIAtom* nsCSSAtoms::outOfDatePseudo; + +nsIAtom* nsCSSAtoms::universalSelector; + +nsIAtom* nsCSSAtoms::visitedPseudo; + + +static nsrefcnt gRefCnt; + +void nsCSSAtoms::AddrefAtoms() +{ + if (0 == gRefCnt) { + activePseudo = NS_NewAtom(":ACTIVE"); + + firstChildPseudo = NS_NewAtom(":FIRST-CHILD"); + focusPseudo = NS_NewAtom(":FOCUS"); + + hoverPseudo = NS_NewAtom(":HOVER"); + + langPseudo = NS_NewAtom(":LANG"); + linkPseudo = NS_NewAtom(":LINK"); + + outOfDatePseudo = NS_NewAtom(":OUT-OF-DATE"); + + universalSelector = NS_NewAtom("*"); + + visitedPseudo = NS_NewAtom(":VISITED"); + } + ++gRefCnt; +} + +void nsCSSAtoms::ReleaseAtoms() +{ + NS_PRECONDITION(gRefCnt != 0, "bad release atoms"); + if (--gRefCnt == 0) { + NS_RELEASE(activePseudo); + + NS_RELEASE(firstChildPseudo); + NS_RELEASE(focusPseudo); + + NS_RELEASE(hoverPseudo); + + NS_RELEASE(langPseudo); + NS_RELEASE(linkPseudo); + + NS_RELEASE(outOfDatePseudo); + + NS_RELEASE(universalSelector); + + NS_RELEASE(visitedPseudo); + } +} + diff --git a/layout/html/style/public/MANIFEST b/layout/html/style/public/MANIFEST index 284524ad3e56..afdf492359e3 100644 --- a/layout/html/style/public/MANIFEST +++ b/layout/html/style/public/MANIFEST @@ -2,6 +2,7 @@ # This is a list of local files which get copied to the mozilla:dist:layout directory # +nsCSSAtoms.h nsICSSParser.h nsICSSStyleSheet.h nsStyleUtil.h diff --git a/layout/html/style/public/Makefile.in b/layout/html/style/public/Makefile.in index cb11f5b3a428..7cd778d73df5 100644 --- a/layout/html/style/public/Makefile.in +++ b/layout/html/style/public/Makefile.in @@ -25,6 +25,7 @@ include $(DEPTH)/config/autoconf.mk MODULE = raptor EXPORTS = \ + nsCSSAtoms.h \ nsICSSParser.h \ nsICSSStyleSheet.h \ nsStyleUtil.h \ diff --git a/layout/html/style/public/makefile.win b/layout/html/style/public/makefile.win index 43bf79d4c8cc..f7c2a4ea1e18 100644 --- a/layout/html/style/public/makefile.win +++ b/layout/html/style/public/makefile.win @@ -17,7 +17,7 @@ DEPTH=..\..\..\.. -EXPORTS=nsICSSParser.h nsICSSStyleSheet.h nsStyleUtil.h +EXPORTS=nsCSSAtoms.h nsICSSParser.h nsICSSStyleSheet.h nsStyleUtil.h MODULE=raptor include <$(DEPTH)\layout\config\rules.mak> diff --git a/layout/html/style/public/nsCSSAtoms.h b/layout/html/style/public/nsCSSAtoms.h new file mode 100644 index 000000000000..661fc1fc3473 --- /dev/null +++ b/layout/html/style/public/nsCSSAtoms.h @@ -0,0 +1,53 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ +#ifndef nsCSSAtoms_h___ +#define nsCSSAtoms_h___ + +#include "nsIAtom.h" + +/** + * This class wraps up the creation (and destruction) of the standard + * set of CSS atoms used during normal CSS handling. These objects + * are created when the first CSS style sheet is created and they + * are destroyed when the last CSS style sheet is destroyed. + */ +class nsCSSAtoms { +public: + + static void AddrefAtoms(); + static void ReleaseAtoms(); + + // Alphabetical list of html attribute atoms + static nsIAtom* activePseudo; + + static nsIAtom* firstChildPseudo; + static nsIAtom* focusPseudo; + + static nsIAtom* hoverPseudo; + + static nsIAtom* langPseudo; + static nsIAtom* linkPseudo; + + static nsIAtom* outOfDatePseudo; // Netscape extension + + static nsIAtom* universalSelector; + + static nsIAtom* visitedPseudo; +}; + +#endif /* nsCSSAtoms_h___ */ diff --git a/layout/html/style/src/Makefile.in b/layout/html/style/src/Makefile.in index 54ce3a66c794..b52182f6eec3 100644 --- a/layout/html/style/src/Makefile.in +++ b/layout/html/style/src/Makefile.in @@ -30,6 +30,7 @@ DEFINES += -D_IMPL_NS_HTML # Note the sophisticated alphabetical ordering :-| CPPSRCS = \ + nsCSSAtoms.cpp \ nsCSSKeywords.cpp \ nsCSSDeclaration.cpp \ nsCSSParser.cpp \ diff --git a/layout/html/style/src/makefile.win b/layout/html/style/src/makefile.win index 4d06f81b6778..8b45040ef7d4 100644 --- a/layout/html/style/src/makefile.win +++ b/layout/html/style/src/makefile.win @@ -36,6 +36,7 @@ EXPORTS = \ $(NULL) CPPSRCS= \ + nsCSSAtoms.cpp \ nsCSSKeywords.cpp \ nsCSSDeclaration.cpp \ nsCSSParser.cpp \ @@ -55,6 +56,7 @@ CPPSRCS= \ $(NULL) CPP_OBJS = \ + .\$(OBJDIR)\nsCSSAtoms.obj \ .\$(OBJDIR)\nsCSSKeywords.obj \ .\$(OBJDIR)\nsCSSDeclaration.obj \ .\$(OBJDIR)\nsCSSParser.obj \ diff --git a/layout/html/style/src/nsCSSAtoms.cpp b/layout/html/style/src/nsCSSAtoms.cpp new file mode 100644 index 000000000000..0c75595e4249 --- /dev/null +++ b/layout/html/style/src/nsCSSAtoms.cpp @@ -0,0 +1,84 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ +#include "nsCSSAtoms.h" + +// XXX make this be autogenerated. doh! + +nsIAtom* nsCSSAtoms::activePseudo; + +nsIAtom* nsCSSAtoms::firstChildPseudo; +nsIAtom* nsCSSAtoms::focusPseudo; + +nsIAtom* nsCSSAtoms::hoverPseudo; + +nsIAtom* nsCSSAtoms::langPseudo; +nsIAtom* nsCSSAtoms::linkPseudo; + +nsIAtom* nsCSSAtoms::outOfDatePseudo; + +nsIAtom* nsCSSAtoms::universalSelector; + +nsIAtom* nsCSSAtoms::visitedPseudo; + + +static nsrefcnt gRefCnt; + +void nsCSSAtoms::AddrefAtoms() +{ + if (0 == gRefCnt) { + activePseudo = NS_NewAtom(":ACTIVE"); + + firstChildPseudo = NS_NewAtom(":FIRST-CHILD"); + focusPseudo = NS_NewAtom(":FOCUS"); + + hoverPseudo = NS_NewAtom(":HOVER"); + + langPseudo = NS_NewAtom(":LANG"); + linkPseudo = NS_NewAtom(":LINK"); + + outOfDatePseudo = NS_NewAtom(":OUT-OF-DATE"); + + universalSelector = NS_NewAtom("*"); + + visitedPseudo = NS_NewAtom(":VISITED"); + } + ++gRefCnt; +} + +void nsCSSAtoms::ReleaseAtoms() +{ + NS_PRECONDITION(gRefCnt != 0, "bad release atoms"); + if (--gRefCnt == 0) { + NS_RELEASE(activePseudo); + + NS_RELEASE(firstChildPseudo); + NS_RELEASE(focusPseudo); + + NS_RELEASE(hoverPseudo); + + NS_RELEASE(langPseudo); + NS_RELEASE(linkPseudo); + + NS_RELEASE(outOfDatePseudo); + + NS_RELEASE(universalSelector); + + NS_RELEASE(visitedPseudo); + } +} +