]> granicus.if.org Git - graphviz/commit
cgraph agxbuf: support storing short strings inline
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 10 Sep 2022 20:54:55 +0000 (13:54 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Wed, 21 Dec 2022 03:35:56 +0000 (19:35 -0800)
commit2b6884b62f0346cba6bc85d6e13f968a1582d0bd
treee4d91fc0b289929aa141bb6d2b5ce30861fbf498
parent3bd856c9e1e7565afa13c32050b24c68b82c8a1a
cgraph agxbuf: support storing short strings inline

This commit implements Small String Optimization (SSO) for `axgbuf`. Strings
up to a certain size (24 bytes unterminated on x86-64) can be stored inline
within an `agxbuf` structure itself with no external backing memory.

There is currently no way to create a buffer in inline mode. Neither
`agxbuf_init` nor zero-initialization gives a path to this. The ability to
create inline strings will be added in an upcoming commit.

When a string is stored inline, its size is maintained in the `located` field
instead of in the `size` field.

Gitlab: #2302
lib/cgraph/agxbuf.h