tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

nsFrameState.h (2207B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 /* constants for frame state bits and a type to store them in a uint64_t */
      8 
      9 #ifndef nsFrameState_h_
     10 #define nsFrameState_h_
     11 
     12 #include <stdint.h>
     13 
     14 #ifdef DEBUG
     15 #  include "nsString.h"
     16 
     17 class nsIFrame;
     18 #endif
     19 
     20 typedef uint64_t nsFrameState_size_t;
     21 
     22 #define NS_FRAME_STATE_BIT(n_) (nsFrameState(nsFrameState_size_t(1) << (n_)))
     23 
     24 enum nsFrameState : nsFrameState_size_t {
     25 #define FRAME_STATE_BIT(group_, value_, name_) \
     26  name_ = NS_FRAME_STATE_BIT(value_),
     27 #include "nsFrameStateBits.h"
     28 #undef FRAME_STATE_BIT
     29 };
     30 
     31 constexpr nsFrameState operator|(nsFrameState aLeft, nsFrameState aRight) {
     32  return nsFrameState(nsFrameState_size_t(aLeft) | nsFrameState_size_t(aRight));
     33 }
     34 
     35 constexpr nsFrameState operator&(nsFrameState aLeft, nsFrameState aRight) {
     36  return nsFrameState(nsFrameState_size_t(aLeft) & nsFrameState_size_t(aRight));
     37 }
     38 
     39 constexpr nsFrameState& operator|=(nsFrameState& aLeft, nsFrameState aRight) {
     40  aLeft = aLeft | aRight;
     41  return aLeft;
     42 }
     43 
     44 constexpr nsFrameState& operator&=(nsFrameState& aLeft, nsFrameState aRight) {
     45  aLeft = aLeft & aRight;
     46  return aLeft;
     47 }
     48 
     49 constexpr nsFrameState operator~(nsFrameState aRight) {
     50  return nsFrameState(~nsFrameState_size_t(aRight));
     51 }
     52 
     53 constexpr nsFrameState operator^(nsFrameState aLeft, nsFrameState aRight) {
     54  return nsFrameState(nsFrameState_size_t(aLeft) ^ nsFrameState_size_t(aRight));
     55 }
     56 
     57 constexpr nsFrameState& operator^=(nsFrameState& aLeft, nsFrameState aRight) {
     58  aLeft = aLeft ^ aRight;
     59  return aLeft;
     60 }
     61 
     62 // Bits 20-31 and 60-63 of the frame state are reserved for implementations.
     63 #define NS_FRAME_IMPL_RESERVED nsFrameState(0xF0000000FFF00000)
     64 #define NS_FRAME_RESERVED ~NS_FRAME_IMPL_RESERVED
     65 
     66 namespace mozilla {
     67 #ifdef DEBUG
     68 nsCString GetFrameState(nsIFrame* aFrame);
     69 void PrintFrameState(nsIFrame* aFrame);
     70 void DebugVerifyFrameStateBits();
     71 #endif
     72 }  // namespace mozilla
     73 
     74 #endif /* nsFrameState_h_ */