mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-26 11:45:37 +00:00
6ed8680108
The style system already atomizes all CustomIdent values, which means that we're just wasting memory and CPU by doing string copies all over the place. This patch fixes it. This also simplifies further changes to use as much of the rust data structures as possible. I had to switch from nsTHashtable to mozilla::HashTable because the former doesn't handle well non-default-constructible structs (like NamedLine, which now has a StyleAtom, which is not default-constructible). Differential Revision: https://phabricator.services.mozilla.com/D35119 --HG-- extra : moz-landing-system : lando
66 lines
1.9 KiB
C++
66 lines
1.9 KiB
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 mozilla_dom_GridLines_h
|
|
#define mozilla_dom_GridLines_h
|
|
|
|
#include "nsCoord.h"
|
|
#include "nsTArray.h"
|
|
#include "nsWrapperCache.h"
|
|
|
|
class nsAtom;
|
|
|
|
namespace mozilla {
|
|
|
|
struct ComputedGridTrackInfo;
|
|
struct ComputedGridLineInfo;
|
|
|
|
namespace dom {
|
|
|
|
class GridDimension;
|
|
class GridLine;
|
|
class GridArea;
|
|
|
|
class GridLines : public nsISupports, public nsWrapperCache {
|
|
public:
|
|
explicit GridLines(GridDimension* aParent);
|
|
|
|
protected:
|
|
virtual ~GridLines();
|
|
|
|
public:
|
|
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
|
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(GridLines)
|
|
|
|
virtual JSObject* WrapObject(JSContext* aCx,
|
|
JS::Handle<JSObject*> aGivenProto) override;
|
|
GridDimension* GetParentObject() { return mParent; }
|
|
|
|
uint32_t Length() const;
|
|
GridLine* Item(uint32_t aIndex);
|
|
GridLine* IndexedGetter(uint32_t aIndex, bool& aFound);
|
|
|
|
void SetLineInfo(const ComputedGridTrackInfo* aTrackInfo,
|
|
const ComputedGridLineInfo* aLineInfo,
|
|
const nsTArray<RefPtr<GridArea>>& aAreas, bool aIsRow);
|
|
|
|
protected:
|
|
uint32_t AppendRemovedAutoFits(const ComputedGridTrackInfo* aTrackInfo,
|
|
const ComputedGridLineInfo* aLineInfo,
|
|
nscoord aLastTrackEdge, uint32_t& aRepeatIndex,
|
|
uint32_t aNumRepeatTracks,
|
|
uint32_t aNumLeadingTracks,
|
|
nsTArray<RefPtr<nsAtom>>& aLineNames);
|
|
|
|
RefPtr<GridDimension> mParent;
|
|
nsTArray<RefPtr<GridLine>> mLines;
|
|
};
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
#endif /* mozilla_dom_GridLines_h */
|