SmartAudio/package/allwinner/mtp/src/MtpCommon.h

91 lines
2.1 KiB
C

#ifndef _MTPCOMMON_H
#define _MTPCOMMON_H
#include <time.h>
#include <stdint.h>
#include <stdbool.h>
#include <dirent.h>
#ifndef PATH_MAX
#define PATH_MAX (512)
#endif
void formatDateTime(time_t seconds, char *buffer, int bufferLength);
bool parseDateTime(const char *dateTime, time_t *outSeconds);
typedef struct {
int num;
void **object;
}Vector;
void VectorAdd(void *newObject, Vector *vector);
void VectorRemove(int index, Vector *vector);
void VectorDestroy(Vector *vector);
static inline size_t VectorSize(Vector *vector)
{
return vector->num;
}
static inline void *VectorObject(int index, Vector *vector)
{
return vector->object[index];
}
#define vector_for_each(head) \
int Vector_local_i; \
for (Vector_local_i = 0; Vector_local_i < head.num; Vector_local_i++)
#define vector_entry(head) \
head.object[Vector_local_i]
#define VectorDestroyWithObject(vector, type, release_func) \
do \
{ \
vector_for_each(vector) { \
type *object = vector_entry(vector); \
release_func(object); \
} \
if (vector.object != NULL){ \
free_wrapper(vector.object); \
vector.object = NULL; \
} \
} while (0);
#define MTP_STRING_MAX_CHARACTER_NUMBER 255
struct MtpStringBuffer {
uint8_t mBuffer[MTP_STRING_MAX_CHARACTER_NUMBER * 3 + 1];
int mCharCount;
int mByteCount;
};
#ifdef MEM_DEBUG
void *malloc_wrapper(size_t size);
void *calloc_wrapper(size_t nmemb, size_t size);
void *realloc_wrapper(void *ptr, size_t size);
char *strdup_wrapper(const char *s);
void free_wrapper(void *ptr);
void memleak_print(void);
void memleak_exit(void);
int scandir_wrapper(const char *dirp, struct dirent ***namelist,
int (*filter)(const struct dirent *),
int (*compar)(const struct dirent **, const struct dirent **));
#else
#define malloc_wrapper(size) malloc(size)
#define calloc_wrapper(nmemb, size) calloc(nmemb, size)
#define realloc_wrapper(ptr, size) realloc(ptr, size)
#define strdup_wrapper(s) strdup(s)
#define scandir_wrapper(dirp, namelist, filter, compar) scandir(dirp, namelist, filter, compar)
#define free_wrapper(ptr) free(ptr)
#define memleak_print()
#define memleak_exit()
#endif
#endif