~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_string.cc

  • Committer: Lee Bieber
  • Date: 2011-04-14 16:20:43 UTC
  • mfrom: (2277.1.3 build)
  • Revision ID: kalebral@gmail.com-20110414162043-2khq8mql7gvodnzn
Merge Olaf - Refactor Session Cache and Remove table::Cache::singleton()
Merge Olaf - Refactor Thread
Merge Olaf - remove unused functions

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
 
32
32
using namespace std;
33
33
 
34
 
namespace drizzled
35
 
{
 
34
namespace drizzled {
36
35
 
37
36
// Converstion functions to and from std::string.
38
37
 
122
121
  {
123
122
    if (Alloced_length > 0)
124
123
      free();
125
 
    if (!(Ptr=(char*) malloc(arg_length)))
126
 
      return true;
 
124
    Ptr=(char*) malloc(arg_length);
127
125
    Alloced_length=arg_length;
128
126
    alloced=1;
129
127
  }
130
128
  Ptr[0]=0;
131
 
  return false;
 
129
  return false; // return void
132
130
}
133
131
 
134
132
 
145
143
    char *new_ptr;
146
144
    if (alloced)
147
145
    {
148
 
      if ((new_ptr= (char*) ::realloc(Ptr,len)))
149
 
      {
150
 
        Ptr=new_ptr;
151
 
        Alloced_length=len;
152
 
      }
153
 
      else
154
 
        return true;                            // Signal error
 
146
      new_ptr= (char*) ::realloc(Ptr,len);
 
147
      Ptr=new_ptr;
 
148
      Alloced_length=len;
155
149
    }
156
 
    else if ((new_ptr= (char*) malloc(len)))
 
150
    else 
157
151
    {
 
152
      new_ptr= (char*) malloc(len);
158
153
      if (str_length)                           // Avoid bugs in memcpy on AIX
159
 
        memcpy(new_ptr,Ptr,str_length);
 
154
        memcpy(new_ptr,Ptr,str_length);
160
155
      new_ptr[str_length]=0;
161
156
      Ptr=new_ptr;
162
157
      Alloced_length=len;
163
158
      alloced=1;
164
159
    }
165
 
    else
166
 
      return true;                      // Signal error
167
160
  }
168
161
  Ptr[alloc_length]=0;                  // This make other funcs shorter
169
 
  return false;
 
162
  return false; // return void
170
163
}
171
164
 
172
165
bool String::set_int(int64_t num, bool unsigned_flag, const charset_info_st * const cs)
785
778
  append(&quote_char, 1, system_charset_info);
786
779
}
787
780
 
788
 
 
789
 
/*
790
 
  Exchange state of this object and argument.
791
 
 
792
 
  SYNOPSIS
793
 
    String::swap()
794
 
 
795
 
  RETURN
796
 
    Target string will contain state of this object and vice versa.
797
 
*/
798
 
 
799
 
void String::swap(String &s)
800
 
{
801
 
  std::swap(Ptr, s.Ptr);
802
 
  std::swap(str_length, s.str_length);
803
 
  std::swap(Alloced_length, s.Alloced_length);
804
 
  std::swap(alloced, s.alloced);
805
 
  std::swap(str_charset, s.str_charset);
806
 
}
807
 
 
808
 
void String::q_append(const size_t n)
809
 
{
810
 
  int8store(Ptr + str_length, n);
811
 
  str_length += 4;
812
 
}
813
 
void String::q_append(double d)
814
 
{
815
 
  float8store(Ptr + str_length, d);
816
 
  str_length += 8;
817
 
}
818
 
void String::q_append(double *d)
819
 
{
820
 
  float8store(Ptr + str_length, *d);
821
 
  str_length += 8;
822
 
}
823
 
void String::q_append(const char *data, size_t data_len)
824
 
{
825
 
  memcpy(Ptr + str_length, data, data_len);
826
 
  str_length += data_len;
827
 
}
828
 
 
829
 
void String::write_at_position(int position, size_t value)
830
 
{
831
 
  int8store(Ptr + position,value);
832
 
}
833
781
bool check_if_only_end_space(const charset_info_st * const cs, char *str,
834
782
                             char *end)
835
783
{