ApophisZerg游戏引擎主要依赖Vulkan的独立跨平台实现代码1(engine/src/core部分)

1.kstring.h

#pragma once

#include "defines.h"

KAPI u64 string_length(const char* str);

KAPI char* string_duplicate(const char* str);

KAPI b8 strings_equal(const char* str0,const char* str1);


 

KAPI i32 string_format(char* dest,const char* format,...);

KAPI i32 string_format_v(char* dest,const char* format,void* va_listp);

2.kstring.c

#include "core/kstring.h"

#include "core/kmemory.h"

#include "stdarg.h"

#include "stdio.h"


 

#include <string.h>

u64 string_length(const char* str)

{

    return strlen(str);

}

char* string_duplicate(const char* str)

{

    u64 length = string_length(str);

    char* copy = kallocate(length + 1,MEMORY_TAG_STRING);

    kcopy_memory(copy,str,length+1);

    return copy;

}

b8 strings_equal(const char* str0,const char* str1)

{

    return strcmp(str0,str1) == 0;

}


 

i32 string_format(char* dest,const char* format,...)

{

    if(dest)

    {

        __builtin_va_list arg_ptr;

        va_start(arg_ptr,format);

        i32 written = string_format_v(dest,format,arg_ptr);

        va_end(arg_ptr);

        return written;

    }

    return -1;

}

KAPI i32 string_format_v(char* dest,const char* format,void* va_listp)

{

    if(dest)

    {

        char buffer[32000];

        i32 written = vsnprintf(buffer,32000,format,va_listp);

        buffer[written] = 0;

        kcopy_memory(dest,buffer,written + 1);

        return written;

    }

    return -1;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Magnum Lehar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值