18
18
#include "config.h"
20
#include <mysys/my_sys.h>
21
#include <mystrings/m_string.h>
20
#include "drizzled/internal/my_sys.h"
21
#include "drizzled/internal/m_string.h"
22
#include "drizzled/charset.h"
23
24
#include <algorithm>
26
#include "drizzled/sql_string.h"
25
28
using namespace std;
28
The following extern declarations are ok as these are interface functions
29
required by the string function
32
extern unsigned char* sql_alloc(unsigned size);
33
extern void sql_element_free(void *ptr);
35
#include "sql_string.h"
37
30
/*****************************************************************************
38
31
** String functions
39
32
*****************************************************************************/
39
str_charset(&my_charset_bin)
42
String::String(uint32_t length_arg)
47
str_charset(&my_charset_bin)
49
(void) real_alloc(length_arg);
52
String::String(const char *str, const CHARSET_INFO * const cs)
53
: Ptr(const_cast<char*>(str)),
54
str_length(static_cast<uint32_t>(strlen(str))),
60
String::String(const char *str, uint32_t len, const CHARSET_INFO * const cs)
61
: Ptr(const_cast<char*>(str)),
68
String::String(char *str,uint32_t len, const CHARSET_INFO * const cs)
76
String::String(const String &str)
78
str_length(str.str_length),
79
Alloced_length(str.Alloced_length),
81
str_charset(str.str_charset)
84
void *String::operator new(size_t size, MEM_ROOT *mem_root)
86
return alloc_root(mem_root, static_cast<uint32_t>(size));
41
89
String::~String() { free(); }
43
91
bool String::real_alloc(uint32_t arg_length)
725
773
return !(s1 == s2);
776
bool check_if_only_end_space(const CHARSET_INFO * const cs, char *str,
779
return str+ cs->cset->scan(cs, str, end, MY_SEQ_SPACES) == end;