summaryrefslogtreecommitdiff
path: root/sql/gstream.cc
diff options
context:
space:
mode:
authorunknown <bar@gw.udmsearch.izhnet.ru>2002-02-22 15:24:42 +0400
committerunknown <bar@gw.udmsearch.izhnet.ru>2002-02-22 15:24:42 +0400
commit32a08516c974045bfc16fb30fcac18bb7ad8fbb8 (patch)
treea1157e118f45978188d5caf492b320d6302b1f93 /sql/gstream.cc
parent3d5dc65dfd72083ed159220d03bea942094e8662 (diff)
downloadmariadb-git-32a08516c974045bfc16fb30fcac18bb7ad8fbb8.tar.gz
Added GIS extension
BitKeeper/etc/ignore: Added myisam/rt_test myisam/sp_test to the ignore list
Diffstat (limited to 'sql/gstream.cc')
-rw-r--r--sql/gstream.cc137
1 files changed, 137 insertions, 0 deletions
diff --git a/sql/gstream.cc b/sql/gstream.cc
new file mode 100644
index 00000000000..5a58fef6744
--- /dev/null
+++ b/sql/gstream.cc
@@ -0,0 +1,137 @@
+#include "mysql_priv.h"
+
+int GTextReadStream::get_next_toc_type() const
+{
+ const char *cur = m_cur;
+ while((*cur)&&(strchr(" \t\r\n",*cur)))
+ {
+ cur++;
+ }
+ if(!(*cur))
+ {
+ return eostream;
+ }
+
+ if(((*cur>='a') && (*cur<='z')) || ((*cur>='A') && (*cur<='Z')) || (*cur=='_'))
+ {
+ return word;
+ }
+
+ if(((*cur>='0') && (*cur<='9')) || (*cur=='-') || (*cur=='+') || (*cur=='.'))
+ {
+ return numeric;
+ }
+
+ if(*cur == '(')
+ {
+ return l_bra;
+ }
+
+ if(*cur == ')')
+ {
+ return r_bra;
+ }
+
+ if(*cur == ',')
+ {
+ return comma;
+ }
+
+ return unknown;
+}
+
+const char *GTextReadStream::get_next_word(int *word_len)
+{
+ const char *cur = m_cur;
+ while((*cur)&&(strchr(" \t\r\n",*cur)))
+ {
+ cur++;
+ }
+ m_last_text_position = cur;
+
+ if(!(*cur))
+ {
+ return 0;
+ }
+
+ const char *wd_start = cur;
+
+ if(((*cur<'a') || (*cur>'z')) && ((*cur<'A') || (*cur>'Z')) && (*cur!='_'))
+ {
+ return NULL;
+ }
+
+ ++cur;
+
+ while(((*cur>='a') && (*cur<='z')) || ((*cur>='A') && (*cur<='Z')) || (*cur=='_') ||
+ ((*cur>='0') && (*cur<='9')))
+ {
+ ++cur;
+ }
+
+ *word_len = cur - wd_start;
+
+ m_cur = cur;
+
+ return wd_start;
+}
+
+int GTextReadStream::get_next_number(double *d)
+{
+ const char *cur = m_cur;
+ while((*cur)&&(strchr(" \t\r\n",*cur)))
+ {
+ cur++;
+ }
+
+ m_last_text_position = cur;
+ if(!(*cur))
+ {
+ set_error_msg("Numeric constant expected");
+ return 1;
+ }
+
+ if(((*cur<'0') || (*cur>'9')) && (*cur!='-') && (*cur!='+') && (*cur!='.'))
+ {
+ set_error_msg("Numeric constant expected");
+ return 1;
+ }
+
+ char *endptr;
+
+ *d = strtod(cur, &endptr);
+
+ if(endptr)
+ {
+ m_cur = endptr;
+ }
+
+ return 0;
+}
+
+char GTextReadStream::get_next_symbol()
+{
+ const char *cur = m_cur;
+ while((*cur)&&(strchr(" \t\r\n",*cur)))
+ {
+ cur++;
+ }
+ if(!(*cur))
+ {
+ return 0;
+ }
+
+ m_cur = cur + 1;
+ m_last_text_position = cur;
+
+ return *cur;
+}
+
+void GTextReadStream::set_error_msg(const char *msg)
+{
+ size_t len = strlen(msg);
+ m_err_msg = (char *)my_realloc(m_err_msg, len + 1, MYF(MY_ALLOW_ZERO_PTR));
+ memcpy(m_err_msg, msg, len + 1);
+}
+
+