29/* Assign to new growing buffer handle to initialize its contents.
30 Example:
31
32 {
33 GrowingBuffer gb = GB_INIT;
34 ...
35 gbAlloc(&gb, 1024);
36 }
37
38 or
39
40 {
41 GrowingBuffer gb;
42 gbInit(&gb);
43 ...
44 gbAlloc(&gb, 1024);
45 }
46 */
47#define GB_INIT {0, NULL}
48
49
50/* Инициализация gb перед первым использованием. Можно не вызывать для переменных, инициализированных с помощью GB_INIT в месте объявления. */
void gbInit (GrowingBuffer* gb);
/* Гарантирует, что по возвращенному указателю выделено не менее
new_size байтов памяти. В случае невозможности это сделать возвращается
NULL. */
void* gbAlloc (GrowingBuffer* gb, size_t new_size);
/* Гарантирует, что по возвращенному указателю выделено не менее
new_size байтов инициализированной нулями памяти. В случае
невозможности это сделать возвращается NULL. */
void* gbAllocEmpty (GrowingBuffer* gb, size_t new_size);
/* Гарантирует, что по возвращенному указателю выделено не менее
new_size байтов памяти, причем предыдущее содержимое памяти
сохраняется на том же месте, а новые байты нулевые. В случае
невозможности это сделать возвращается NULL. */
void* gbAllocSafe (GrowingBuffer* gb, size_t new_size);
/* Имеющаяся память обнуляется. */
void gbClean (GrowingBuffer* gb);
/* Физически освобождается блок памяти. После этого можно заново
выделять память операциями gbAlloc*(). */
void gbFree (GrowingBuffer* gb);
#ifdef __cplusplus
};
#endif /* __cplusplus */
#endif /* growbuf.h */
51 переменных, инициализированных с помощью GB_INIT в месте объявления. */
54/* Гарантирует, что по возвращенному указателю выделено не менее new_size байтов памяти. В случае невозможности это сделать возвращается
NULL. */
void* gbAlloc (GrowingBuffer* gb, size_t new_size);
/* Гарантирует, что по возвращенному указателю выделено не менее
new_size байтов инициализированной нулями памяти. В случае
невозможности это сделать возвращается NULL. */
void* gbAllocEmpty (GrowingBuffer* gb, size_t new_size);
/* Гарантирует, что по возвращенному указателю выделено не менее
new_size байтов памяти, причем предыдущее содержимое памяти
сохраняется на том же месте, а новые байты нулевые. В случае
невозможности это сделать возвращается NULL. */
void* gbAllocSafe (GrowingBuffer* gb, size_t new_size);
/* Имеющаяся память обнуляется. */
void gbClean (GrowingBuffer* gb);
/* Физически освобождается блок памяти. После этого можно заново
выделять память операциями gbAlloc*(). */
void gbFree (GrowingBuffer* gb);
#ifdef __cplusplus
};
#endif /* __cplusplus */
#endif /* growbuf.h */
55 new_size байтов памяти. В случае невозможности это сделать возвращается
59/* Гарантирует, что по возвращенному указателю выделено не менее new_size байтов инициализированной нулями памяти. В случае
невозможности это сделать возвращается NULL. */
void* gbAllocEmpty (GrowingBuffer* gb, size_t new_size);
/* Гарантирует, что по возвращенному указателю выделено не менее
new_size байтов памяти, причем предыдущее содержимое памяти
сохраняется на том же месте, а новые байты нулевые. В случае
невозможности это сделать возвращается NULL. */
void* gbAllocSafe (GrowingBuffer* gb, size_t new_size);
/* Имеющаяся память обнуляется. */
void gbClean (GrowingBuffer* gb);
/* Физически освобождается блок памяти. После этого можно заново
выделять память операциями gbAlloc*(). */
void gbFree (GrowingBuffer* gb);
#ifdef __cplusplus
};
#endif /* __cplusplus */
#endif /* growbuf.h */
60 new_size байтов инициализированной нулями памяти. В случае
61 невозможности это сделать возвращается NULL. */
64/* Гарантирует, что по возвращенному указателю выделено не менее new_size байтов памяти, причем предыдущее содержимое памяти
сохраняется на том же месте, а новые байты нулевые. В случае
невозможности это сделать возвращается NULL. */
void* gbAllocSafe (GrowingBuffer* gb, size_t new_size);
/* Имеющаяся память обнуляется. */
void gbClean (GrowingBuffer* gb);
/* Физически освобождается блок памяти. После этого можно заново
выделять память операциями gbAlloc*(). */
void gbFree (GrowingBuffer* gb);
#ifdef __cplusplus
};
#endif /* __cplusplus */
#endif /* growbuf.h */
65 new_size байтов памяти, причем предыдущее содержимое памяти сохраняется на том же месте, а новые байты нулевые. В случае
невозможности это сделать возвращается NULL. */
void* gbAllocSafe (GrowingBuffer* gb, size_t new_size);
/* Имеющаяся память обнуляется. */
void gbClean (GrowingBuffer* gb);
/* Физически освобождается блок памяти. После этого можно заново
выделять память операциями gbAlloc*(). */
void gbFree (GrowingBuffer* gb);
#ifdef __cplusplus
};
#endif /* __cplusplus */
#endif /* growbuf.h */
66 сохраняется на том же месте, а новые байты нулевые. В случае
67 невозможности это сделать возвращается NULL. */