diff options
Diffstat (limited to 'storage/connect/tabcol.cpp')
-rw-r--r-- | storage/connect/tabcol.cpp | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/storage/connect/tabcol.cpp b/storage/connect/tabcol.cpp new file mode 100644 index 00000000..93de0598 --- /dev/null +++ b/storage/connect/tabcol.cpp @@ -0,0 +1,169 @@ +/************* TabCol C++ Functions Source Code File (.CPP) ************/ +/* Name: TABCOL.CPP Version 2.7 */ +/* */ +/* (C) Copyright to the author Olivier BERTRAND 1998-2015 */ +/* */ +/* This file contains the PlugDB++ XTAB, COLUMN and XORDER methods. */ +/***********************************************************************/ + +/***********************************************************************/ +/* Include relevant MariaDB header file. */ +/***********************************************************************/ +#include "my_global.h" + +/***********************************************************************/ +/* Include required application header files */ +/* global.h is header containing all global Plug declarations. */ +/* plgdbsem.h is header containing the DB applic. declarations. */ +/* tabcol.h is header containing XTAB, and XORDER declares. */ +/***********************************************************************/ +#include "global.h" +#include "plgdbsem.h" +#include "xtable.h" +#include "tabcol.h" + +/***********************************************************************/ +/* XTAB public constructor. */ +/***********************************************************************/ +XTAB::XTAB(LPCSTR name, LPCSTR srcdef) : Name(name) + { + Next = NULL; + To_Tdb = NULL; + Srcdef = srcdef; + Schema = NULL; + Qualifier = NULL; + + if (trace(1)) + htrc("XTAB: making new TABLE %s %s\n", Name, Srcdef); + + } // end of XTAB constructor + +/***********************************************************************/ +/* XTAB public constructor as a copy of another table. */ +/***********************************************************************/ +XTAB::XTAB(PTABLE tp) : Name(tp->Name) + { + Next = NULL; + To_Tdb = NULL; + Srcdef = tp->Srcdef; + Schema = tp->Schema; + Qualifier = tp->Qualifier; + + if (trace(1)) + htrc(" making copy TABLE %s %s\n", Name, SVP(Srcdef)); + + } // end of XTAB constructor + +/***********************************************************************/ +/* Link the tab2 tables to the tab1(this) table chain. */ +/***********************************************************************/ +PTABLE XTAB::Link(PTABLE tab2) + { + PTABLE tabp; + + if (trace(1)) + htrc("Linking tables %s... to %s\n", Name, tab2->Name); + + for (tabp = this; tabp->Next; tabp = tabp->Next) ; + + tabp->Next = tab2; + return (this); + } /* end of Link */ + +/***********************************************************************/ +/* Make file output of XTAB contents. */ +/***********************************************************************/ +void XTAB::Printf(PGLOBAL g, FILE *f, uint n) + { + char m[64]; + + memset(m, ' ', n); /* Make margin string */ + m[n] = '\0'; + + for (PTABLE tp = this; tp; tp = tp->Next) { + fprintf(f, "%sTABLE: %s.%s %s\n", + m, SVP(tp->Schema), tp->Name, SVP(tp->Srcdef)); + PlugPutOut(g, f, TYPE_TDB, tp->To_Tdb, n + 2); + } /* endfor tp */ + + } /* end of Printf */ + +/***********************************************************************/ +/* Make string output of XTAB contents. */ +/***********************************************************************/ +void XTAB::Prints(PGLOBAL, char *ps, uint z) + { + char buf[128]; + int i, n = (int)z - 1; + + *ps = '\0'; + + for (PTABLE tp = this; tp && n > 0; tp = tp->Next) { + i = sprintf(buf, "TABLE: %s.%s %s To_Tdb=%p ", + SVP(tp->Schema), tp->Name, SVP(tp->Srcdef), tp->To_Tdb); + strncat(ps, buf, n); + n -= i; + } // endif tp + + } /* end of Prints */ + + +/***********************************************************************/ +/* COLUMN public constructor. */ +/***********************************************************************/ +COLUMN::COLUMN(LPCSTR name) : Name(name) + { + To_Table = NULL; + To_Col = NULL; + Qualifier = NULL; + + if (trace(1)) + htrc(" making new COLUMN %s\n", Name); + + } // end of COLUMN constructor + +/***********************************************************************/ +/* COLUMN SetFormat: should never be called. */ +/***********************************************************************/ +bool COLUMN::SetFormat(PGLOBAL g, FORMAT&) + { + strcpy(g->Message, MSG(NO_FORMAT_COL)); + return true; + } // end of SetFormat + +/***********************************************************************/ +/* Make file output of COLUMN contents. */ +/***********************************************************************/ +void COLUMN::Printf(PGLOBAL g, FILE *f, uint n) + { + char m[64]; + + memset(m, ' ', n); // Make margin string + m[n] = '\0'; + + if (Name) + fprintf(f, "%sCOLUMN: %s.%s\n", m, + ((!Qualifier) ? (PSZ)"?" : Qualifier), Name); + else // LNA + fprintf(f, "%sC%d\n", m, (!Qualifier) ? 0 : *(int *)Qualifier); + + PlugPutOut(g, f, TYPE_TABLE, To_Table, n + 2); + PlugPutOut(g, f, TYPE_XOBJECT, To_Col, n + 2); + } /* end of Printf */ + +/***********************************************************************/ +/* Make string output of COLUMN contents. */ +/***********************************************************************/ +void COLUMN::Prints(PGLOBAL, char *ps, uint z) + { + char buf[80]; + + if (Name) + sprintf(buf, "COLUMN: %s.%s table=%p col=%p", + ((!Qualifier) ? (PSZ)"?" : Qualifier), Name, To_Table, To_Col); + else // LNA + sprintf(buf, "C%d", (!Qualifier) ? 0 : *(int *)Qualifier); + + strncpy(ps, buf, z); + ps[z - 1] = '\0'; + } /* end of Prints */ |