/src/qtbase/src/3rdparty/harfbuzz-ng/config.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright (C) 2015 The Qt Company Ltd. |
3 | | * Copyright (C) 2015 Konstantin Ritt |
4 | | * |
5 | | * Permission is hereby granted, without written agreement and without |
6 | | * license or royalty fees, to use, copy, modify, and distribute this |
7 | | * software and its documentation for any purpose, provided that the |
8 | | * above copyright notice and the following two paragraphs appear in |
9 | | * all copies of this software. |
10 | | * |
11 | | * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR |
12 | | * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES |
13 | | * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN |
14 | | * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH |
15 | | * DAMAGE. |
16 | | * |
17 | | * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
18 | | * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
19 | | * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS |
20 | | * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO |
21 | | * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
22 | | * |
23 | | */ |
24 | | |
25 | | #ifndef QHARFBUZZ_CONFIG_H |
26 | | #define QHARFBUZZ_CONFIG_H |
27 | | |
28 | | #include <QtCore/qatomic.h> |
29 | | |
30 | | QT_USE_NAMESPACE |
31 | | |
32 | | namespace { |
33 | | |
34 | | // We need to cast hb_atomic_int_t to QAtomicInt and pointers to |
35 | | // QAtomicPointer instead of using QAtomicOps, otherwise we get a failed |
36 | | // overload resolution of the template arguments for testAndSetOrdered. |
37 | | template <typename T> |
38 | | inline QAtomicPointer<T> *makeAtomicPointer(T * const &ptr) |
39 | 0 | { |
40 | 0 | return reinterpret_cast<QAtomicPointer<T> *>(const_cast<T **>(&ptr)); |
41 | 0 | } Unexecuted instantiation: hb-dummy.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-blob.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-buffer.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-face.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-face-builder.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-fallback-shape.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-font.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-outline.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-paint.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-paint-extents.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-shape.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-shape-plan.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-shaper.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-unicode.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-face.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-font.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-layout.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-metrics.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-shape.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-shape-fallback.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-shape-normalize.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-shaper-arabic.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-shaper-default.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-shaper-hangul.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-shaper-hebrew.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-shaper-indic.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-shaper-khmer.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-shaper-myanmar.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-shaper-syllabic.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-shaper-thai.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-shaper-use.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-shaper-vowel-constraints.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-var.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: VARC.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-aat-layout.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-aat-map.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-draw.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-paint-bounded.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-set.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-cff1-table.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-cff2-table.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-map.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) Unexecuted instantiation: hb-ot-shaper-indic-table.cc:QAtomicPointer<void>* (anonymous namespace)::makeAtomicPointer<void>(void* const&) |
42 | | |
43 | | static inline void _hb_memory_barrier () |
44 | 0 | { |
45 | 0 | QAtomicInt a; |
46 | 0 | a.ref(); // Ordered memory semantics, so imposes a memory barrier at this point |
47 | 0 | } Unexecuted instantiation: hb-dummy.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-blob.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-buffer.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-face.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-face-builder.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-fallback-shape.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-font.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-number.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-outline.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-paint.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-paint-extents.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-shape.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-shape-plan.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-shaper.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-unicode.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-face.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-font.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-layout.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-metrics.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-shape.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-shape-fallback.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-shape-normalize.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-shaper-arabic.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-shaper-default.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-shaper-hangul.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-shaper-hebrew.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-shaper-indic.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-shaper-khmer.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-shaper-myanmar.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-shaper-syllabic.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-shaper-thai.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-shaper-use.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-shaper-vowel-constraints.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-tag.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-var.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: VARC.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-aat-layout.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-aat-map.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-buffer-verify.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-draw.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-paint-bounded.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-set.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-cff1-table.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-cff2-table.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-map.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-ot-shaper-indic-table.cc:(anonymous namespace)::_hb_memory_barrier() Unexecuted instantiation: hb-buffer-serialize.cc:(anonymous namespace)::_hb_memory_barrier() |
48 | | |
49 | | } // namespace |
50 | | |
51 | | typedef int hb_atomic_int_impl_t; |
52 | | #define HB_ATOMIC_INT_IMPL_INIT(V) (V) |
53 | 0 | #define hb_atomic_int_impl_add(AI, V) reinterpret_cast<QAtomicInt *>(AI)->fetchAndAddOrdered(V) |
54 | | |
55 | 0 | #define hb_atomic_ptr_impl_get(P) makeAtomicPointer(*(P))->loadAcquire() |
56 | 0 | #define hb_atomic_ptr_impl_cmpexch(P,O,N) makeAtomicPointer(*(P))->testAndSetOrdered((O), (N)) |
57 | | |
58 | | #endif // QHARFBUZZ_CONFIG_H |