#ifndef UCS_VFS_CB_H_
#define UCS_VFS_CB_H_
#include <ucs/datastruct/string_buffer.h>
#include <ucs/sys/compiler_def.h>
#include <stdint.h>
BEGIN_C_DECLS
typedef enum {
UCS_VFS_TYPE_POINTER,
UCS_VFS_TYPE_STRING,
UCS_VFS_TYPE_CHAR,
UCS_VFS_TYPE_SHORT,
UCS_VFS_TYPE_INT,
UCS_VFS_TYPE_LONG,
UCS_VFS_TYPE_LAST,
UCS_VFS_TYPE_FLAG_UNSIGNED = UCS_BIT(14),
UCS_VFS_TYPE_FLAG_HEX = UCS_BIT(15),
UCS_VFS_TYPE_I8 = UCS_VFS_TYPE_CHAR,
UCS_VFS_TYPE_U8 = UCS_VFS_TYPE_FLAG_UNSIGNED | UCS_VFS_TYPE_CHAR,
UCS_VFS_TYPE_I16 = UCS_VFS_TYPE_SHORT,
UCS_VFS_TYPE_U16 = UCS_VFS_TYPE_FLAG_UNSIGNED | UCS_VFS_TYPE_SHORT,
UCS_VFS_TYPE_I32 = UCS_VFS_TYPE_INT,
UCS_VFS_TYPE_U32 = UCS_VFS_TYPE_FLAG_UNSIGNED | UCS_VFS_TYPE_INT,
UCS_VFS_TYPE_U32_HEX = UCS_VFS_TYPE_U32 | UCS_VFS_TYPE_FLAG_HEX,
UCS_VFS_TYPE_ULONG = UCS_VFS_TYPE_FLAG_UNSIGNED | UCS_VFS_TYPE_LONG,
UCS_VFS_TYPE_SSIZET = UCS_VFS_TYPE_LONG,
UCS_VFS_TYPE_SIZET = UCS_VFS_TYPE_ULONG
} ucs_vfs_primitive_type_t;
void ucs_vfs_show_memory_address(void *obj, ucs_string_buffer_t *strb,
void *arg_ptr, uint64_t arg_u64);
void ucs_vfs_show_primitive(void *obj, ucs_string_buffer_t *strb, void *arg_ptr,
uint64_t arg_u64);
void ucs_vfs_show_ulunits(void *obj, ucs_string_buffer_t *strb, void *arg_ptr,
uint64_t arg_u64);
void ucs_vfs_show_memunits(void *obj, ucs_string_buffer_t *strb, void *arg_ptr,
uint64_t arg_u64);
END_C_DECLS
#endif