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 return &table_message.fk_constraint(foreign_keys_iterator++);
00053 }
00054
00055 } while ((table_ptr= all_tables_generator) && table_setup());
00056 }
00057
00058 return NULL;
00059 }
00060
00061 operator const ForeignKeyConstraintPair()
00062 {
00063 if (table_ptr)
00064 {
00065 do {
00066 if (foreign_keys_iterator != table_message.fk_constraint_size())
00067 {
00068 return std::make_pair(&table_message, foreign_keys_iterator++);
00069 }
00070 } while ((table_ptr= all_tables_generator) && table_setup());
00071 }
00072
00073 return ForeignKeyConstraintPair();
00074 }
00075 };
00076
00077 }
00078 }
00079