/* //paragraph [1] Title: [{\Large \bf \begin{center}] [\end{center}}] //paragraph [10] Footnote: [{\footnote{] [}}] //[TOC] [\tableofcontents] [1] Database generator for RTrees [TOC] 0 Overview */ #include #include #include #include using namespace std; int main() { // number of tuples for each relation const int size_intRel = 100; const int size_realRel = 100; const int size_boolRel = 100; const int size_stringRel = 100; const int size_pointRel = 100; const int size_pointsRel = 100; const int size_lineRel = 100; const int size_regionRel = 100; const int size_slineRel = 100; const int size_ipointRel = 100; const int size_upointRel = 100; const int size_mpointRel = 100; const int size_rect2Rel = 100; const int size_rect3Rel = 100; const int size_rect4Rel = 100; const int size_rect8Rel = 10; // general modulo const const int n = 10; // offset for right/top, outercircle/holecircle, etc. const int offset = 10; ofstream output("DB_RTreeTest"); output << "(DATABASE RTREETEST (TYPES)(OBJECTS" << endl; // integer relation output << "(OBJECT intRel()(rel(tuple((I int))))("; for (int i = 1; i <= size_intRel; i++) { output << endl; output << "( " << (int)rand() << " )"; } output << "))" << endl; // floating point relation output << "(OBJECT realRel()(rel(tuple((R real))))("; for (int i = 1; i <= size_realRel; i++) { output << endl; output << "( " << (float)rand() << " )"; } output << "))" << endl; // boolean relation output << "(OBJECT boolRel()(rel(tuple((B bool))))("; string boolValue; for (int i = 1; i <= size_boolRel; i++) { if ((int)rand()%2 == 1) boolValue = "TRUE"; else boolValue = "FALSE"; output << endl; output << "( " << boolValue << " )"; } output << "))" << endl; // string relation output << "(OBJECT stringRel()(rel(tuple((S string))))("; for (int i = 1; i <= size_stringRel; i++) { output << endl; output << "( \"" << (char)(65+(int)rand()%26) << (char)(65+(int)rand()%26); output << (char)(65+(int)rand()%26) << (char)(65+(int)rand()%26); output << (char)(65+(int)rand()%26) << (char)(65+(int)rand()%26); output << (char)(65+(int)rand()%26) << (char)(65+(int)rand()%26); output << (char)(65+(int)rand()%26) << (char)(65+(int)rand()%26); output << "\" )"; } output << "))" << endl; // point relation output << "(OBJECT pointRel()(rel(tuple((P point))))("; for (int i = 1; i <= size_pointRel; i++) { output << endl; output << "(( " << (int)rand()%n << "." << (int)rand()%n << " "; output << (int)rand()%n << "." << (int)rand()%n << " ))"; } output << "))" << endl; // points relation output << "(OBJECT pointsRel()(rel(tuple((Ps points))))("; for (int i = 1; i <= size_pointsRel; i++) { output << endl << "(( "; for (int k = 1; k <= 5; k++) { output << endl; output << " ( " << (int)rand()%n << "." << (int)rand()%n << " "; output << (int)rand()%n << "." << (int)rand()%n << " )"; } output << " ))"; } output << "))" << endl; // line relation output << "(OBJECT lineRel()(rel(tuple((L line))))("; for (int i = 1; i <= size_lineRel; i++) { output << endl; output << "((( " << (int)rand()%n << "." << (int)rand()%n << " "; output << (int)rand()%n << "." << (int)rand()%n << " "; output << (int)rand()%n << "." << (int)rand()%n << " "; output << (int)rand()%n << "." << (int)rand()%n << " )))"; } output << "))" << endl; // region relation output << "(OBJECT regionRel()(rel(tuple((Rg region))))("; for (int i = 1; i <= size_regionRel; i++) { output << endl; output << "(((( "; output << "(" << offset+(int)rand()%offset << "." << (int)rand()%n; output << " " << (int)rand()%offset << "." << (int)rand()%n << ") "; output << "(" << offset+(int)rand()%offset << "." << (int)rand()%n; output << " " << (int)rand()%offset << "." << (int)rand()%n << ") "; output << "(" << offset+(int)rand()%offset << "." << (int)rand()%n; output << " " << (int)rand()%offset << "." << (int)rand()%n << ") "; output << "(" << offset+(int)rand()%offset << "." << (int)rand()%n; output << " " << (int)rand()%offset << "." << (int)rand()%n << ") "; output << "))))"; } output << "))" << endl; // sline relation output << "(OBJECT slineRel()(rel(tuple((Sl sline))))("; for (int i = 1; i <= size_slineRel; i++) { output << endl; output << "((( "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << ")))"; } output << "))" << endl; // ipoint relation output << "(OBJECT ipointRel()(rel(tuple((Ip ipoint))))("; for (int i = 1; i <= size_ipointRel; i++) { output << endl; output << "(( "; output << "\"2010-02-13\"" ; output << "(" << (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << ")"; output << "))"; } output << "))" << endl; // upoint relation output << "(OBJECT upointRel()(rel(tuple((Up upoint))))("; for (int i = 1; i <= size_upointRel; i++) { output << endl; output << "(( "; output << "(\"2010-01-01\" \"2010-02-15\" TRUE TRUE)" ; output << "(" << (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << ")"; output << "))"; } output << "))" << endl; // mpoint relation output << "(OBJECT mpointRel()(rel(tuple((Mp mpoint))))("; for (int i = 1; i <= size_mpointRel; i++) { output << endl; output << "(( "; output << "((\"2010-01-01\" \"2010-02-15\" TRUE TRUE)"; output << "(" << (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << "))" << endl; output << "))"; } output << "))" << endl; // rectangle(2D) relation output << "(OBJECT rect2Rel()(rel(tuple((R2 rect))))("; for (int i = 1; i <= size_rect2Rel; i++) { output << endl; output << "(( " << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " ))"; } output << "))" << endl; // rectangle(3D) relation output << "(OBJECT rect3Rel()(rel(tuple((R3 rect3))))("; for (int i = 1; i <= size_rect3Rel; i++) { output << endl; output << "(( " << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " ))"; } output << "))" << endl; // rectangle(4D) relation output << "(OBJECT rect4Rel()(rel(tuple((R4 rect4))))("; for (int i = 1; i <= size_rect4Rel; i++) { output << endl; output << "(( " << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " ))"; } output << "))" << endl; // rectangle(8D) relation output << "(OBJECT rect8Rel()(rel(tuple((R8 rect8))))("; for (int i = 1; i <= size_rect8Rel; i++) { output << endl; output << "(( " << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " "; output << (int)rand()%offset << "." << (int)rand()%n << " "; output << offset + (int)rand()%offset << "." << (int)rand()%n << " ))"; } output << "))" << endl; // RTrees ------------------------------------------------------------------- output << "(OBJECT SEC_DERIVED_OBJ()"<< endl; output << "(rel(tuple((Name string)(Value text)(UsedObjs text))))("; // RTree point output << endl << "(\"rtreePoint\" (creatertree pointRel P)"; output << " ( pointRel ))"; // RTree points output << endl << "(\"rtreePoints\" (creatertree pointsRel Ps)"; output << " ( pointsRel ))"; // RTree line output << endl << "(\"rtreeLine\" (creatertree lineRel L)"; output << " ( lineRel ))"; // RTree region output << endl << "(\"rtreeRegion\" (creatertree regionRel Rg)"; output << " ( regionRel ))"; // RTree sline output << endl << "(\"rtreeSLine\" (creatertree slineRel Sl)"; output << " ( slineRel ))"; // RTree upoint output << endl << "(\"rtreeUPoint\" (creatertree upointRel Up)"; output << " ( upointRel ))"; // RTree rect 2D output << endl << "(\"rtreeRect2\" (creatertree rect2Rel R2)"; output << " ( rect2Rel ))"; // RTree rect 3D output << endl << "(\"rtreeRect3\" (creatertree rect3Rel R3)"; output << " ( rect3Rel ))"; // RTree rect 4D output << endl << "(\"rtreeRect4\" (creatertree rect4Rel R4)"; output << " ( rect4Rel ))"; // RTree rect 8D output << endl << "(\"rtreeRect8\" (creatertree rect8Rel R8)"; output << " ( rect8Rel ))"; output << "))" << endl; // End of database output << "))" << endl; }