Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(721)

Unified Diff: Source/core/editing/VisiblePosition.h

Issue 1330563005: Introduce VisiblePositionTemplate template class (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: 2015-09-04T10:27:43 Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | Source/core/editing/VisiblePosition.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/editing/VisiblePosition.h
diff --git a/Source/core/editing/VisiblePosition.h b/Source/core/editing/VisiblePosition.h
index 838998e808304cc59335a52a43ed22f4804fba53..dd42ba154ae3a3e82b431f91b408b52cb9848940 100644
--- a/Source/core/editing/VisiblePosition.h
+++ b/Source/core/editing/VisiblePosition.h
@@ -67,32 +67,36 @@ class Range;
//
// NOTE: UPSTREAM affinity will be used only if pos is at end of a wrapped line,
// otherwise it will be converted to DOWNSTREAM.
-class CORE_EXPORT VisiblePosition final {
+template <typename Strategy>
+class CORE_TEMPLATE_CLASS_EXPORT VisiblePositionTemplate final {
DISALLOW_ALLOCATION();
public:
- VisiblePosition();
+ VisiblePositionTemplate();
// Node: Other than |createVisiblePosition()|, we should not use
// |createWithoutCanonicalization()|.
- static VisiblePosition createWithoutCanonicalization(const PositionWithAffinity& canonicalized);
+ static VisiblePositionTemplate createWithoutCanonicalization(const PositionWithAffinityTemplate<Strategy>& canonicalized);
// Intentionally delete |operator==()| and |operator!=()| for reducing
// compilation error message.
// TODO(yosin) We'll have |equals()| when we have use cases of checking
// equality of both position and affinity.
- bool operator==(const VisiblePosition&) const = delete;
- bool operator!=(const VisiblePosition&) const = delete;
+ bool operator==(const VisiblePositionTemplate&) const = delete;
+ bool operator!=(const VisiblePositionTemplate&) const = delete;
bool isNull() const { return m_positionWithAffinity.isNull(); }
bool isNotNull() const { return m_positionWithAffinity.isNotNull(); }
bool isOrphan() const { return deepEquivalent().isOrphan(); }
- Position deepEquivalent() const { return m_positionWithAffinity.position(); }
- Position toParentAnchoredPosition() const { return deepEquivalent().parentAnchoredEquivalent(); }
- PositionWithAffinity toPositionWithAffinity() const { return m_positionWithAffinity; }
+ PositionAlgorithm<Strategy> deepEquivalent() const { return m_positionWithAffinity.position(); }
+ PositionAlgorithm<Strategy> toParentAnchoredPosition() const { return deepEquivalent().parentAnchoredEquivalent(); }
+ PositionWithAffinityTemplate<Strategy> toPositionWithAffinity() const { return m_positionWithAffinity; }
TextAffinity affinity() const { return m_positionWithAffinity.affinity(); }
- DECLARE_TRACE();
+ DEFINE_INLINE_TRACE()
+ {
+ visitor->trace(m_positionWithAffinity);
+ }
#ifndef NDEBUG
void debugPosition(const char* msg = "") const;
@@ -101,11 +105,15 @@ public:
#endif
private:
- explicit VisiblePosition(const PositionWithAffinity&);
+ explicit VisiblePositionTemplate(const PositionWithAffinityTemplate<Strategy>&);
- PositionWithAffinity m_positionWithAffinity;
+ PositionWithAffinityTemplate<Strategy> m_positionWithAffinity;
};
+extern template class CORE_EXTERN_TEMPLATE_EXPORT VisiblePositionTemplate<EditingStrategy>;
+
+using VisiblePosition = VisiblePositionTemplate<EditingStrategy>;
+
CORE_EXPORT VisiblePosition createVisiblePosition(const Position&, TextAffinity = VP_DEFAULT_AFFINITY);
CORE_EXPORT VisiblePosition createVisiblePosition(const PositionWithAffinity&);
CORE_EXPORT VisiblePosition createVisiblePosition(const PositionInComposedTree&, TextAffinity = VP_DEFAULT_AFFINITY);
« no previous file with comments | « no previous file | Source/core/editing/VisiblePosition.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698