~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/strfunc.cc

  • Committer: Lee Bieber
  • Date: 2011-02-16 14:48:10 UTC
  • mfrom: (2172.1.5 build)
  • Revision ID: kalebral@gmail.com-20110216144810-u3w6f3a5s6qwisrz
Merge Stewart - remove unused macros
Merge Olaf - remove old style casts
Merge Stewart remove  unused macros in drizzledump
Merge Andrew - 718657: Several errors in Date/Time docs
Merge Olaf - Move strfunc functions into TYPELIB class

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
 
46
46
static const char field_separator=',';
47
47
 
48
 
uint64_t find_set(TYPELIB *lib, const char *str, uint32_t length,
 
48
uint64_t st_typelib::find_set(const char *str, uint32_t length,
49
49
                  const CHARSET_INFO * const cs,
50
 
                  char **err_pos, uint32_t *err_len, bool *set_warning)
 
50
                  char **err_pos, uint32_t *err_len, bool *set_warning) const
51
51
{
52
52
  const CHARSET_INFO * const strip= cs ? cs : &my_charset_utf8_general_ci;
53
53
  const char *end= str + strip->cset->lengthsp(strip, str, length);
65
65
      for (; pos != end && *pos != field_separator; pos++) 
66
66
      {}
67
67
      var_len= (uint32_t) (pos - start);
68
 
      uint32_t find= cs ? find_type2(lib, start, var_len, cs) :
69
 
                      find_type(lib, start, var_len, (bool) 0);
 
68
      uint32_t find= cs ? find_type2(start, var_len, cs) : find_type(start, var_len, false);
70
69
      if (!find)
71
70
      {
72
71
        *err_pos= (char*) start;
100
99
  > 0 position in TYPELIB->type_names +1
101
100
*/
102
101
 
103
 
uint32_t find_type(const TYPELIB *lib, const char *find, uint32_t length,
104
 
               bool part_match)
 
102
uint32_t st_typelib::find_type(const char *find, uint32_t length, bool part_match) const
105
103
{
106
104
  uint32_t found_count=0, found_pos=0;
107
105
  const char *end= find+length;
108
106
  const char *i;
109
107
  const char *j;
110
 
  for (uint32_t pos=0 ; (j=lib->type_names[pos++]) ; )
 
108
  for (uint32_t pos= 0 ; (j= type_names[pos++]) ; )
111
109
  {
112
110
    for (i=find ; i != end &&
113
111
           my_toupper(system_charset_info,*i) ==
141
139
    >0  Offset+1 in typelib for matched string
142
140
*/
143
141
 
144
 
uint32_t find_type2(const TYPELIB *typelib, const char *x, uint32_t length,
145
 
                const CHARSET_INFO * const cs)
 
142
uint32_t st_typelib::find_type2(const char *x, uint32_t length, const CHARSET_INFO *cs) const
146
143
{
147
 
  int pos;
 
144
  if (!count)
 
145
    return 0;
148
146
  const char *j;
149
 
 
150
 
  if (!typelib->count)
151
 
  {
152
 
    return(0);
153
 
  }
154
 
 
155
 
  for (pos=0 ; (j=typelib->type_names[pos]) ; pos++)
 
147
  for (int pos=0 ; (j= type_names[pos]) ; pos++)
156
148
  {
157
149
    if (!my_strnncoll(cs, (const unsigned char*) x, length,
158
 
                          (const unsigned char*) j, typelib->type_lengths[pos]))
159
 
      return(pos+1);
 
150
                          (const unsigned char*) j, type_lengths[pos]))
 
151
      return pos + 1;
160
152
  }
161
 
  return(0);
 
153
  return 0;
162
154
} /* find_type */
163
155
 
164
156
} /* namespace drizzled */