| /* | 
 |  * Copyright (C) 2016 Google Inc. | 
 |  * Dan Cross <crossd@gmail.com> | 
 |  * See LICENSE for license details. | 
 |  */ | 
 |  | 
 | #pragma once | 
 |  | 
 | /* | 
 |  * A tracking structure for growing lists of pointers. | 
 |  */ | 
 | struct slice { | 
 | 	void **ptrs; | 
 | 	size_t len; | 
 | 	size_t capacity; | 
 | }; | 
 |  | 
 | void slice_init(struct slice *slice); | 
 | void slice_clear(struct slice *slice); | 
 | void *slice_get(struct slice *slice, size_t i); | 
 | bool slice_put(struct slice *slice, size_t i, void *p); | 
 | bool slice_del(struct slice *slice, size_t i); | 
 | void slice_append(struct slice *s, void *p); | 
 | size_t slice_len(struct slice *slice); | 
 | void **slice_finalize(struct slice *slice); | 
 | void slice_destroy(struct slice *slice); |