CUBRID Engine  latest
load_driver.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2008 Search Solution Corporation
3  * Copyright 2016 CUBRID Corporation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 /*
20  * load_driver.cpp - interface for loader lexer and parser
21  */
22 
23 #include "load_driver.hpp"
24 
25 #include <cassert>
26 
27 namespace cubload
28 {
29 
31  : m_scanner (NULL)
32  , m_class_installer (NULL)
33  , m_object_loader (NULL)
34  , m_error_handler (NULL)
35  , m_semantic_helper ()
36  , m_start_line_no (0)
37  , m_is_initialized (false)
38  {
39  //
40  }
41 
42  void driver::clear ()
43  {
44  delete m_class_installer;
46 
47  delete m_object_loader;
49 
50  delete m_scanner;
51  m_scanner = NULL;
52 
53  delete m_error_handler;
55 
56  m_is_initialized = false;
57  }
58 
60  {
61  clear ();
62  }
63 
64  void
66  {
68 
69  m_object_loader = obj_loader;
70  m_class_installer = cls_installer;
71  m_error_handler = error_handler;
73  m_is_initialized = true;
74  }
75 
76  bool
78  {
79  return m_is_initialized;
80  }
81 
82  int
83  driver::parse (std::istream &iss, int line_offset)
84  {
85  m_scanner->switch_streams (&iss);
86  m_scanner->set_lineno (line_offset + 1);
88 
90  parser parser (*this);
91 
92  return parser.parse ();
93  }
94 
97  {
98  return *m_class_installer;
99  }
100 
101  object_loader &
103  {
104  return *m_object_loader;
105  }
106 
109  {
110  return m_semantic_helper;
111  }
112 
113  error_handler &
115  {
116  return *m_error_handler;
117  }
118 
119  scanner &
121  {
122  return *m_scanner;
123  }
124 
125  void
127  {
128  m_start_line_no = get_scanner ().lineno ();
129  }
130 
131  int
133  {
134  return m_start_line_no;
135  }
136 
137 } // namespace cubload
int parse(std::istream &iss, int line_offset=0)
Definition: load_driver.cpp:83
void set_lineno(int line_offset)
object_loader * m_object_loader
Definition: load_driver.hpp:97
error_handler * m_error_handler
Definition: load_driver.hpp:98
semantic_helper & get_semantic_helper()
scanner & get_scanner()
#define assert(x)
bool is_initialized()
Definition: load_driver.cpp:77
SP_PARSER_CTX * parser
#define NULL
Definition: freelistheap.h:34
semantic_helper m_semantic_helper
Definition: load_driver.hpp:99
class_installer & get_class_installer()
Definition: load_driver.cpp:96
object_loader & get_object_loader()
void initialize(class_installer *cls_installer, object_loader *obj_loader, error_handler *error_handler)
Definition: load_driver.cpp:65
scanner * m_scanner
Definition: load_driver.hpp:95
class_installer * m_class_installer
Definition: load_driver.hpp:96
error_handler & get_error_handler()
void update_start_line()