mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-02-06 15:05:19 +00:00
127 lines
2.8 KiB
C
127 lines
2.8 KiB
C
/*
|
|
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
|
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
*/
|
|
|
|
#ifndef _WASM_VECTOR_H
|
|
#define _WASM_VECTOR_H
|
|
|
|
#include "bh_platform.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define DEFAULT_VECTOR_INIT_SIZE 8
|
|
|
|
typedef struct Vector {
|
|
/* max element number */
|
|
size_t max_elems;
|
|
/* vector data allocated */
|
|
uint8 *data;
|
|
/* current element num */
|
|
size_t num_elems;
|
|
/* size of each element */
|
|
size_t size_elem;
|
|
void *lock;
|
|
} Vector;
|
|
|
|
/**
|
|
* Initialize vector
|
|
*
|
|
* @param vector the vector to init
|
|
* @param init_length the initial length of the vector
|
|
* @param size_elem size of each element
|
|
*
|
|
* @return true if success, false otherwise
|
|
*/
|
|
bool
|
|
bh_vector_init(Vector *vector, size_t init_length, size_t size_elem,
|
|
bool use_lock);
|
|
|
|
/**
|
|
* Set element of vector
|
|
*
|
|
* @param vector the vector to set
|
|
* @param index the index of the element to set
|
|
* @param elem_buf the element buffer which stores the element data
|
|
*
|
|
* @return true if success, false otherwise
|
|
*/
|
|
bool
|
|
bh_vector_set(Vector *vector, uint32 index, const void *elem_buf);
|
|
|
|
/**
|
|
* Get element of vector
|
|
*
|
|
* @param vector the vector to get
|
|
* @param index the index of the element to get
|
|
* @param elem_buf the element buffer to store the element data,
|
|
* whose length must be no less than element size
|
|
*
|
|
* @return true if success, false otherwise
|
|
*/
|
|
bool
|
|
bh_vector_get(Vector *vector, uint32 index, void *elem_buf);
|
|
|
|
/**
|
|
* Insert element of vector
|
|
*
|
|
* @param vector the vector to insert
|
|
* @param index the index of the element to insert
|
|
* @param elem_buf the element buffer which stores the element data
|
|
*
|
|
* @return true if success, false otherwise
|
|
*/
|
|
bool
|
|
bh_vector_insert(Vector *vector, uint32 index, const void *elem_buf);
|
|
|
|
/**
|
|
* Append element to the end of vector
|
|
*
|
|
* @param vector the vector to append
|
|
* @param elem_buf the element buffer which stores the element data
|
|
*
|
|
* @return true if success, false otherwise
|
|
*/
|
|
bool
|
|
bh_vector_append(Vector *vector, const void *elem_buf);
|
|
|
|
/**
|
|
* Remove element from vector
|
|
*
|
|
* @param vector the vector to remove element
|
|
* @param index the index of the element to remove
|
|
* @param old_elem_buf if not NULL, copies the element data to the buffer
|
|
*
|
|
* @return true if success, false otherwise
|
|
*/
|
|
bool
|
|
bh_vector_remove(Vector *vector, uint32 index, void *old_elem_buf);
|
|
|
|
/**
|
|
* Return the size of the vector
|
|
*
|
|
* @param vector the vector to get size
|
|
*
|
|
* @return return the size of the vector
|
|
*/
|
|
size_t
|
|
bh_vector_size(const Vector *vector);
|
|
|
|
/**
|
|
* Destroy the vector
|
|
*
|
|
* @param vector the vector to destroy
|
|
*
|
|
* @return true if success, false otherwise
|
|
*/
|
|
bool
|
|
bh_vector_destroy(Vector *vector);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* endof _WASM_VECTOR_H */
|