Re: [PATCH 03/10] reftable/basics: provide new `reftable_buf` interface

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Patrick Steinhardt <ps@xxxxxx> writes:

> Implement a new `reftable_buf` interface that will replace Git's own
> `strbuf` interface. This is done due to three reasons:
>
>   - The `strbuf` interfaces do not handle memory allocation failures and
>     instead causes us to die. This is okay in the context of Git, but is
>     not context of the reftable library, which is supposed to be usable

s/not/not in the/

>     by third-party applications.
>
>   - The `strbuf` interface is quite deeply tied into Git, which makes it
>     hard to use the reftable library as a standalone library. Any
>     dependent would have to carefully extract the relevant parts of it
>     to make things work, which is not all that sensible.
>
>   - The `strbuf` interface does not use the pluggable allocators that
>     can be set up via `refatble_set_alloc()`.
>
> So we have good reasons to use our own type, and the implementation is
> rather trivial. Implement our own type. Conversion of the reftable
> library will be handled in subsequent commits.
>
> Signed-off-by: Patrick Steinhardt <ps@xxxxxx>

[snip]

> diff --git a/reftable/basics.h b/reftable/basics.h
> index 4c9ef0fe6c5..4cf3f0e7593 100644
> --- a/reftable/basics.h
> +++ b/reftable/basics.h
> @@ -16,6 +16,22 @@ license that can be found in the LICENSE file or at
>  #include "system.h"
>  #include "reftable-basics.h"
>
> +struct reftable_buf {
> +	size_t alloc;
> +	size_t len;
> +	char *buf;
> +};
> +#define REFTABLE_BUF_INIT { 0 }
> +
> +void reftable_buf_init(struct reftable_buf *buf);
> +void reftable_buf_release(struct reftable_buf *buf);
> +void reftable_buf_reset(struct reftable_buf *buf);
> +int reftable_buf_setlen(struct reftable_buf *buf, size_t len);
> +int reftable_buf_cmp(const struct reftable_buf *a, const struct reftable_buf *b);
> +int reftable_buf_add(struct reftable_buf *buf, const void *data, size_t len);
> +int reftable_buf_addstr(struct reftable_buf *buf, const char *s);
> +char *reftable_buf_detach(struct reftable_buf *buf);
> +

Nit: would be nice to have some comments explaining the functions here.
I know most of them are self-explanatory and similar to strbuf, but
since this is supposed to be isolated, it would be nice.

[snip]

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux