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 namespace drizzled {
00024 namespace generator {
00025
00026 typedef std::pair<const drizzled::message::Table *, int32_t> ForeignKeyConstraintPair;
00027
00028 class AllForeignKeys
00029 {
00030 Session &session;
00031 message::Table table_message;
00032 drizzled::message::table::shared_ptr table_ptr;
00033 int32_t foreign_keys_iterator;
00034
00035 drizzled::generator::AllTables all_tables_generator;
00036
00037 bool table_setup();
00038
00039 public:
00040
00041 AllForeignKeys(Session &arg);
00042
00043 void reset();
00044
00045 operator const drizzled::message::Table::ForeignKeyConstraint*()
00046 {
00047 if (table_ptr)
00048 {
00049 do {
00050 if (foreign_keys_iterator != table_message.fk_constraint_size())
00051 {
00052 const message::Table::ForeignKeyConstraint &fk_constraint(table_message.fk_constraint(foreign_keys_iterator++));
00053 return &fk_constraint;
00054 }
00055
00056 } while ((table_ptr= all_tables_generator) && table_setup());
00057 }
00058
00059 return NULL;
00060 }
00061
00062 operator const ForeignKeyConstraintPair()
00063 {
00064 if (table_ptr)
00065 {
00066 do {
00067 if (foreign_keys_iterator != table_message.fk_constraint_size())
00068 {
00069 return std::make_pair(&table_message, foreign_keys_iterator++);
00070 }
00071 } while ((table_ptr= all_tables_generator) && table_setup());
00072 }
00073
00074 ForeignKeyConstraintPair null_pair;
00075 return null_pair;
00076 }
00077 };
00078
00079 }
00080 }
00081