#include <stdlib.h>
#include "nmd.h"
#include "nmd_impl.h"
#include "string.h"
Go to the source code of this file.
Data Structures | |
struct | NMD_string_ |
Functions | |
static NMDErrorCode | NMDStringCreateOfSize (int n, NMD_string *r_str) |
NMDErrorCode | NMDStringCreate (char *txt, NMD_string *r_str) |
NMDErrorCode | NMDStringDestroy (NMD_string str) |
NMDErrorCode | NMDStringGetString (NMD_string str, char **t) |
NMDErrorCode | NMDStringConcat (char s1, NMD_string str1, char s2, NMD_string str2, char s3, NMD_string *r_str) |
NMDErrorCode NMDStringConcat | ( | char | s1, | |
NMD_string | str1, | |||
char | s2, | |||
NMD_string | str2, | |||
char | s3, | |||
NMD_string * | r_str | |||
) |
Definition at line 57 of file nmdutil.c.
References CHECKHASNMDCOOKIE, NMD_string_::n, NMDStringCreateOfSize(), and NMD_string_::t.
00058 { 00059 NMD_string str; NMDErrorCode ierr; int l; 00060 CHECKHASNMDCOOKIE(str1); 00061 00062 l = str1->n + ( str2 ? str2->n : 0 ) + (s1!=0) + (s2!=0) + (s3!=0); 00063 ierr = NMDStringCreateOfSize(l,&str); NMD_ERR_RETURN(ierr); 00064 00065 l = 0; 00066 if (s1) { 00067 if (l+1>str->n) NMD_ERR_REPORT("string overflow"); 00068 memcpy(str->t+l,&s1,1); 00069 } 00070 00071 l = strlen(str->t); 00072 if (l+str1->n>str->n) NMD_ERR_REPORT("string overflow"); 00073 memcpy(str->t+l,str1->t,str1->n); 00074 00075 if (s2) { 00076 CHECKHASNMDCOOKIE(str2); 00077 l = strlen(str->t); 00078 if (l+1>str->n) NMD_ERR_REPORT("string overflow"); 00079 memcpy(str->t+l,&s2,1); 00080 } 00081 00082 if (str2) { 00083 l = strlen(str->t); 00084 if (l+str2->n>str->n) NMD_ERR_REPORT("string overflow"); 00085 memcpy(str->t+l,str2->t,str2->n); 00086 } 00087 00088 if (s3) { 00089 l = strlen(str->t); 00090 if (l+1>str->n) NMD_ERR_REPORT("string overflow"); 00091 memcpy(str->t+l,&s3,1); 00092 } 00093 00094 *r_str = str; 00095 return 0; 00096 }
NMDErrorCode NMDStringCreate | ( | char * | txt, | |
NMD_string * | r_str | |||
) |
Definition at line 25 of file nmdutil.c.
References NMDStringCreateOfSize(), and NMD_string_::t.
00026 { 00027 NMD_string str; NMDErrorCode ierr; int l; 00028 l = strlen(txt); 00029 ierr = NMDStringCreateOfSize(l,&str); NMD_ERR_RETURN(ierr); 00030 memcpy(str->t,txt,l); 00031 *r_str = str; 00032 return 0; 00033 }
static NMDErrorCode NMDStringCreateOfSize | ( | int | n, | |
NMD_string * | r_str | |||
) | [static] |
Definition at line 13 of file nmdutil.c.
References NMD_string_::cookie, NMD_string_::n, NMD_MALLOC, NMDCOOKIE, and NMD_string_::t.
Referenced by NMDStringConcat(), and NMDStringCreate().
00014 { 00015 NMD_string str; char *t; 00016 NMD_MALLOC(t,n+1,char,"nmd string"); 00017 NMD_MALLOC(str,1,struct NMD_string_,"string object"); 00018 str->n = n; str->t = t; str->cookie = NMDCOOKIE; 00019 *r_str = str; 00020 return 0; 00021 }
NMDErrorCode NMDStringDestroy | ( | NMD_string | str | ) |
Definition at line 37 of file nmdutil.c.
References CHECKHASNMDCOOKIE, NMD_FREE, and NMD_string_::t.
00038 { 00039 CHECKHASNMDCOOKIE(str); 00040 NMD_FREE(str->t); 00041 NMD_FREE(str); 00042 return 0; 00043 }
NMDErrorCode NMDStringGetString | ( | NMD_string | str, | |
char ** | t | |||
) |
Definition at line 47 of file nmdutil.c.
References CHECKHASNMDCOOKIE, and NMD_string_::t.
00048 { 00049 CHECKHASNMDCOOKIE(str); 00050 *t = str->t; 00051 return 0; 00052 }