00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #pragma once
00022
00023 #include <drizzled/plugin/table_function.h>
00024 #include <drizzled/field.h>
00025
00026 class Recorder {
00027 std::vector<std::string> string_list;
00028 std::vector<std::string>::iterator iterator;
00029 public:
00030
00031 void start()
00032 {
00033 iterator= string_list.begin();
00034 }
00035
00036 void push(const char *arg)
00037 {
00038 string_list.push_back(arg);
00039 }
00040
00041 bool next(std::string &arg)
00042 {
00043 if (iterator == string_list.end())
00044 return false;
00045
00046 arg= *iterator;
00047
00048 iterator++;
00049
00050 return true;
00051 }
00052
00053 };
00054
00055 class InnodbInternalTables : public drizzled::plugin::TableFunction
00056 {
00057 public:
00058 InnodbInternalTables();
00059
00060 class Generator : public drizzled::plugin::TableFunction::Generator
00061 {
00062 Recorder recorder;
00063
00064 public:
00065 Generator(drizzled::Field **arg);
00066
00067 bool populate();
00068 private:
00069 };
00070
00071 Generator *generator(drizzled::Field **arg)
00072 {
00073 return new Generator(arg);
00074 }
00075 };
00076