| 1234567891011121314151617181920212223242526272829303132333435 |
- //
- // Created by 李晓明 on 2023/6/14.
- //
- #include "chunk.h"
- #include "memory.h"
- #include <stdlib.h>
- void initChunk(Chunk *chunk) {
- chunk->count = 0;
- chunk->capacity = 0;
- chunk->code = NULL;
- initValueArray(&chunk->constants);
- }
- void freeChunk(Chunk *chunk) {
- FREE_ARRAY(uint8_t, chunk->code, chunk->capacity);
- freeValueArray(&chunk->constants);
- initChunk(chunk);
- }
- void writeChunk(Chunk *chunk, uint8_t byte) {
- // 容量不够
- if (chunk->capacity < chunk->count + 1) {
- int oldCapacity = chunk->capacity;
- chunk->capacity = GROW_CAPACITY(oldCapacity);
- chunk->code = GROW_ARRAY(uint8_t, chunk->code, oldCapacity, chunk->capacity);
- }
- // 赋值
- chunk->code[chunk->count] = byte;
- chunk->count++;
- }
- int addConstant(Chunk *chunk, Value value) {
- writeValueArray(&chunk->constants, value);
- return chunk->constants.count - 1;
- }
|