/**
 * Forth heap and compile memory
 *
 * Created on 2021/11/13.
 */

#ifndef FORTH_FH_MEM_H
#define FORTH_FH_MEM_H

enum fh_error fh_heap_reserve(
    struct fh_thread_s *fh,
    size_t len,
    uint32_t *addr
);
void fh_heap_write(struct fh_thread_s *fh, uint32_t addr, const void *src, uint32_t len);
enum fh_error fh_heap_put(struct fh_thread_s *fh, const void *src, uint32_t len);
void fh_heap_copy_from_compile(struct fh_thread_s *fh, uint32_t addr, uint32_t srcaddr, uint32_t len);

enum fh_error fh_compile_reserve(
    struct fh_thread_s *fh,
    size_t len,
    uint32_t *addr
);
void fh_compile_write(struct fh_thread_s *fh, uint32_t addr, const void *src, uint32_t len);
enum fh_error fh_compile_put(struct fh_thread_s *fh, const void *src, uint32_t len);

#endif //FORTH_FH_MEM_H