~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/execute/context.h

  • Committer: Mark Atwood
  • Date: 2011-06-08 19:56:57 UTC
  • mfrom: (2324.1.1 drizzle)
  • Revision ID: me@mark.atwood.name-20110608195657-vkwvn8bgd020e2nt
mergeĀ lp:~fallenpegasus/drizzle/vjsamuel-final-execute-parserĀ 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
 
2
 * 
 
3
 *  Drizzle Execute Parser
 
4
 *
 
5
 *  Copyright (C) 2011 Data Differential, http://datadifferential.com/
 
6
 *  All rights reserved.
 
7
 *
 
8
 *  Redistribution and use in source and binary forms, with or without
 
9
 *  modification, are permitted provided that the following conditions are
 
10
 *  met:
 
11
 *
 
12
 *      * Redistributions of source code must retain the above copyright
 
13
 *  notice, this list of conditions and the following disclaimer.
 
14
 *
 
15
 *      * Redistributions in binary form must reproduce the above
 
16
 *  copyright notice, this list of conditions and the following disclaimer
 
17
 *  in the documentation and/or other materials provided with the
 
18
 *  distribution.
 
19
 *
 
20
 *      * The names of its contributors may not be used to endorse or
 
21
 *  promote products derived from this software without specific prior
 
22
 *  written permission.
 
23
 *
 
24
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 
25
 *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 
26
 *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 
27
 *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 
28
 *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 
29
 *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 
30
 *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 
31
 *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 
32
 *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
33
 *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 
34
 *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
35
 *
 
36
 */
 
37
 
 
38
#pragma once
 
39
 
 
40
#include <config.h>
 
41
#include <cstdlib>
 
42
#include <vector>
 
43
#include <string>
 
44
#include <drizzled/error_t.h>
 
45
 
 
46
 
 
47
namespace drizzled {
 
48
namespace execute {
 
49
 
 
50
class Context
 
51
{
 
52
public:
 
53
  Context(const char *option_string, size_t option_string_length, drizzled::error_t &rc_arg) :
 
54
    scanner(NULL),
 
55
    begin(NULL),
 
56
    pos(0),
 
57
    rc(rc_arg),
 
58
    _is_server(false),
 
59
    _end(false)
 
60
  {
 
61
    buf= option_string;
 
62
    length= option_string_length;
 
63
    init_scanner();
 
64
    rc= EE_OK;
 
65
  }
 
66
 
 
67
  bool end()
 
68
  {
 
69
    return _end;
 
70
  }
 
71
 
 
72
  std::vector<std::string> start();
 
73
 
 
74
  void set_end()
 
75
  {
 
76
    rc= EE_OK;
 
77
    _end= true;
 
78
  }
 
79
 
 
80
  ~Context()
 
81
  {
 
82
    destroy_scanner();
 
83
  }
 
84
 
 
85
  void *scanner;
 
86
  const char *buf;
 
87
  const char *begin;
 
88
  size_t pos;
 
89
  size_t length;
 
90
  drizzled::error_t &rc;
 
91
  bool _is_server;
 
92
 
 
93
protected:
 
94
  void init_scanner();   
 
95
  void destroy_scanner();
 
96
 
 
97
private:
 
98
  bool _end;
 
99
}; 
 
100
 
 
101
} // namespace execute
 
102
} // namespace drizzled