~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_list.h

  • Committer: Brian Aker
  • Date: 2008-08-01 18:16:56 UTC
  • mfrom: (243.1.8 cleanup-mysql-priv)
  • Revision ID: brian@tangent.org-20080801181656-sut492wazlvp9glh
Merge from Jay.

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
#ifdef USE_PRAGMA_INTERFACE
20
20
#pragma interface                       /* gcc class implementation */
21
21
#endif
 
22
                                  
 
23
/** Struct to handle simple linked lists. */
 
24
typedef struct st_sql_list {
 
25
  uint elements;
 
26
  uchar *first;
 
27
  uchar **next;
 
28
 
 
29
  st_sql_list() {}                              /* Remove gcc warning */
 
30
  inline void empty()
 
31
  {
 
32
    elements=0;
 
33
    first=0;
 
34
    next= &first;
 
35
  }
 
36
  inline void link_in_list(uchar *element,uchar **next_ptr)
 
37
  {
 
38
    elements++;
 
39
    (*next)=element;
 
40
    next= next_ptr;
 
41
    *next=0;
 
42
  }
 
43
  inline void save_and_clear(struct st_sql_list *save)
 
44
  {
 
45
    *save= *this;
 
46
    empty();
 
47
  }
 
48
  inline void push_front(struct st_sql_list *save)
 
49
  {
 
50
    *save->next= first;                         /* link current list last */
 
51
    first= save->first;
 
52
    elements+= save->elements;
 
53
  }
 
54
  inline void push_back(struct st_sql_list *save)
 
55
  {
 
56
    if (save->first)
 
57
    {
 
58
      *next= save->first;
 
59
      next= save->next;
 
60
      elements+= save->elements;
 
61
    }
 
62
  }
 
63
} SQL_LIST;
22
64
 
23
65
/* mysql standard class memory allocator */
24
 
 
25
66
class Sql_alloc
26
67
{
27
68
public: