YSTest  PreAlpha_b400_20130424
The YSLib Test Project
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义  
cstring.cpp
浏览该文件的文档.
1 /*
2  Copyright by FrankHB 2009 - 2013.
3 
4  This file is part of the YSLib project, and may only be used,
5  modified, and distributed under the terms of the YSLib project
6  license, LICENSE.TXT. By continuing to use, modify, or distribute
7  this file you indicate that you have read the license and
8  understand and accept it fully.
9 */
10 
28 #include "ystdex/cstring.h"
29 #include <cstdio>
30 
31 namespace ystdex
32 {
33 
34 size_t
35 strlen_n(const char* s)
36 {
37  return s ? std::strlen(s) : 0;
38 }
39 
40 char*
41 strcpy_n(char* d, const char* s)
42 {
43  return d && s ? std::strcpy(d, s) : nullptr;
44 }
45 
46 char*
47 strcpycat(char* d, const char* s1, const char* s2)
48 {
49  if(YB_UNLIKELY(!d))
50  return nullptr;
51  if(s1)
52  std::strcpy(d, s1);
53  if(s2)
54  std::strcat(d, s2);
55  return d;
56 }
57 
58 char*
59 strcatdup(const char* s1, const char* s2, void*(*fun)(size_t))
60 {
61  auto d(static_cast<char*>(
62  fun((strlen(s1) + strlen(s2) + 1) * sizeof(char))));
63 
64  return strcpycat(d, s1, s2);
65 }
66 
67 } // namespace ystdex;
68