mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-26 03:35:33 +00:00
21e7dce1a2
There are four things that must be provided for every static atom, two of which have a macro: - the atom pointer declaration (no macro); - the atom pointer definition (no macro); - the atom char buffer (NS_STATIC_ATOM_BUFFER); - the StaticAtomSetup struct (NS_STATIC_ATOM_SETUP). This patch introduces new macros for the first two things: NS_STATIC_ATOM_DECL and NS_STATIC_ATOM_DEFN, and changes the arguments of the existing two macros to make them easier to use (e.g. all the '##' concatenation now happens within the macros). One consequence of the change is that all static atoms must be within a class, so the patch adds a couple of classes where necessary (DefaultAtoms, TSAtoms). The patch also adds a big comment explaining how the macros are used, and what their expansion looks like. This makes it a lot easier to understand how static atoms work. Correspondingly, the patch removes some small comments scattered around the macro use points. MozReview-Commit-ID: wpRyrEOTHE --HG-- extra : rebase_source : 9f85d477b4d06c9a9e710c757de1f1476edb6efe
23 lines
594 B
C++
23 lines
594 B
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef nsGkAtoms_h___
|
|
#define nsGkAtoms_h___
|
|
|
|
#include "nsStaticAtom.h"
|
|
|
|
class nsGkAtoms
|
|
{
|
|
public:
|
|
static void AddRefAtoms();
|
|
|
|
#define GK_ATOM(_name, _value) NS_STATIC_ATOM_DECL(_name)
|
|
#include "nsGkAtomList.h"
|
|
#undef GK_ATOM
|
|
};
|
|
|
|
#endif /* nsGkAtoms_h___ */
|