Commit Graph

167 Commits

Author SHA1 Message Date
Ebrahim Byagowi aab8e08487
minor spacing fix (#1869) 2019-07-26 02:19:22 +04:30
Behdad Esfahbod 6492b2345c Minor 2019-06-17 14:19:13 -07:00
Behdad Esfahbod 8938dd23c6 Use injected class name 2019-06-17 14:12:11 -07:00
Behdad Esfahbod 1834cf86d4 [serialize] Pass offset to serialize_subset() 2019-05-31 14:39:32 -07:00
Behdad Esfahbod 9260441624 [serialize] Pass offset to serialize_copy() 2019-05-31 14:35:01 -07:00
Behdad Esfahbod dfa5e42971 Add back symmetric OffsetTo<>::friend operator+
Finally seems to be working now.
2019-05-15 21:18:14 -07:00
Behdad Esfahbod 203ea58bf6 More adjustment to OffsetTo<>::friend opeator+
Let's see if I break any bots.  But yeah, it wasn't accepting a
non-const pointer.  It just happens that we don't use that in the
code it seems.
2019-05-15 16:14:40 -07:00
Behdad Esfahbod 763ea4224b Another try 2019-05-15 01:21:32 -07:00
Behdad Esfahbod e1b2edb04a Completely revert the thing back 2019-05-15 01:12:04 -07:00
Behdad Esfahbod c58eeb5fb3 Another try at fix
Fails locally.  Trying to understand.  Sigh
2019-05-15 01:10:31 -07:00
Behdad Esfahbod 004edf3bda Ugh. How was the Travis bot happy before, but isn't now?! :( 2019-05-15 01:02:50 -07:00
Behdad Esfahbod e01c7b1648 Move OffsetTo operator+ back out of class
Apparently there's different overload resolution rules that apply, at
least with some (older?) version of gcc.

hb-ot-name-table.hh: In member function ‘void OT::name::accelerator_t::init(hb_face_t*)’:
hb-ot-name-table.hh:244:62: error: ambiguous overload for ‘operator+’ (operand types are ‘hb_blob_ptr_t<OT::name>’ and ‘OT::NNOffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned char, 1u> > > {aka const OT::OffsetTo<OT::UnsizedArrayOf<OT::IntType<unsigned char, 1u> >, OT::IntType<short unsigned int, 2u>, false>}’)
       this->pool = (const char *) (const void *) (this->table+this->table->stringOffset);
                                                              ^
hb-ot-name-table.hh:244:62: note: candidates are:
hb-ot-name-table.hh:244:62: note: operator+(const C*, long int) <built-in>
hb-ot-name-table.hh:244:62: note: operator+(const char*, long int) <built-in>
2019-05-15 00:52:17 -07:00
Behdad Esfahbod b213042f87 Revert "Revert symmetric OffsetTo overloads"
This reverts commit 01912efb74.

Actually this didn't break things.  Fixing
2019-05-15 00:50:48 -07:00
Behdad Esfahbod 01912efb74 Revert symmetric OffsetTo overloads
Reverts 57f65ae935

Caused ambiguous-overload on some gcc...
2019-05-15 00:42:47 -07:00
Behdad Esfahbod 57f65ae935 Add symmetric friend operator+ for OffsetTo 2019-05-14 22:52:59 -07:00
Behdad Esfahbod 71208e5047 Move OffsetTo<> deref operators in-class as friends 2019-05-14 22:51:59 -07:00
Behdad Esfahbod 9bfe22af61 [sanitize] Fix previous commit 2019-05-10 22:44:19 -07:00
Behdad Esfahbod 4dcf65328f [sanitize] Simplify 2019-05-10 22:23:24 -07:00
Behdad Esfahbod 23168c3981 [sanitize] Use hb_is_trivially_copyable() 2019-05-10 22:20:47 -07:00
Behdad Esfahbod 707ff5b59d Minor 2019-05-10 20:31:20 -07:00
Behdad Esfahbod ed972d5d73 [iter] Rewrite test functions
Notably, add hb_is_source_of(,) and hb_is_sink_of(,) to replace most
uses of hb_is_iterator_of(,).
2019-05-09 16:58:28 -07:00
Behdad Esfahbod e2a51ff726 Remove unused var 2019-05-08 16:41:39 -07:00
Behdad Esfahbod e8b45c1933 [array] Add .copy() 2019-05-08 16:37:38 -07:00
Behdad Esfahbod 7166bd5634 Minor 2019-05-08 15:08:33 -07:00
Behdad Esfahbod dfc5780245 Fix more double-promotion errors
WHy do only some of the clang bots catch this I have no idea :(.
2019-05-07 23:26:09 -07:00
Behdad Esfahbod af571dbffc [meta] Replace most hb_enable_if with hb_requires
They do absolutely same thing.  hb_requires is to encode constraints,
whereas hb_enable_if is for more conditional enabling.
2019-05-07 21:39:20 -07:00
Behdad Esfahbod 83e3eabd84 Whitespace 2019-05-07 20:58:43 -07:00
Behdad Esfahbod 41248cce0e Remove MIN/MAX in favor of hb_min/hb_max 2019-05-07 20:54:31 -07:00
Behdad Esfahbod 95426ea983 Add comment 2019-05-07 15:56:51 -07:00
Behdad Esfahbod b10f65933a [dispatch] Use functionality from previous commit
To remove a couple of unwanted wrapper methods
2019-05-05 09:23:35 -07:00
Behdad Esfahbod 8a32c9eecb [serialize] Misc getting copy() to work 2019-05-02 16:20:18 -07:00
Behdad Esfahbod 998b0b68ac [serializer] Add copy() to (Unsized)ArrayOf 2019-05-02 14:39:52 -07:00
Behdad Esfahbod 88a4147240 [serializer] Accept exact type in serialize_subset/copy() 2019-05-02 14:22:31 -07:00
Behdad Esfahbod 88fdeeecc0 [serialize] Take arguments in copy() 2019-05-02 14:14:33 -07:00
Behdad Esfahbod 273ed6127b [serializer] Add serialize_copy() 2019-05-02 14:04:51 -07:00
Ebrahim Byagowi 92588782d7
Remove space between right angle brackets now that we have C++11 (#1689) 2019-04-30 13:05:10 -07:00
Behdad Esfahbod c69f02784a Fix sign-compare error on 32-bit systems 2019-04-24 16:31:37 -07:00
Behdad Esfahbod 915b9ea5f4 [serialize] Add c->check_assign()
To check for assignment overflows.
2019-04-24 10:07:19 -04:00
Behdad Esfahbod 27377a7e28 Rely on variadic parameter pack more 2019-04-24 09:22:14 -04:00
Behdad Esfahbod 3ad20c38ad [serialize] Fix a few overflow TODO items 2019-04-24 09:09:00 -04:00
Behdad Esfahbod 441cca2354 Use hb_forward() when forwarding parameter pack 2019-04-23 23:51:59 -04:00
Behdad Esfahbod 20f3134789 Use variadic templates in OffsetTo<> and various ArrayOf<>s 2019-04-23 12:59:17 -04:00
Behdad Esfahbod 07776b6096 More tweaks to previous commit
Delete assignment operator of OffsetTo<> instead of Offset<>.

In simple ArrayOf<>::sanitize() assert that Type has assignment operator.
Ideally we should SFINAE this and fallback to calling Type::sanitize()
if assignment operator is not available.  But we don't have a case of
that in the codebase.
2019-04-15 16:43:34 -04:00
Behdad Esfahbod 699de689e9 Delete default assignment operator Offset<> 2019-04-15 16:00:20 -04:00
Behdad Esfahbod 95df00aec1 Hide a few static methods
Looks like static methods that do not get inlined end up exported.
We have a lot more.  Need to protect all at some point.  Wish there
was an easier way, like the visibility flag we pass that automatically
hides all inline methods.

Was exposed by check-symbols.sh when compiling on OS X 10.14 with:

$ make CPPFLAGS=-Oz CXXFLAGS=-flto=thin LDFLAGS=-lc++
2019-04-12 17:51:14 -04:00
Behdad Esfahbod b52c0e54b9 Use injected class name to simplify macros 2019-04-11 11:20:10 -04:00
Behdad Esfahbod 824fd342d5 Rename a few macros 2019-04-11 11:16:01 -04:00
Behdad Esfahbod aa2293a55e [serialize] Minor 2019-04-02 17:42:10 -07:00
Behdad Esfahbod e42b82c828 [serialize] Handle non-nullable offsets 2019-04-02 17:23:16 -07:00
Behdad Esfahbod 7f73c9744e [serialize] Minor 2019-04-02 17:12:24 -07:00