#include #include #include "fstor.hpp" #include "oodbs.hpp" #include "dhash.hpp" struct Word : File_Object { // каждый класс базы данных должен быть выведен int Counter; Word() { Counter = 0; } }; struct Dictionary : Object_Database { // определение собственной СУБД Odb_File_Object( Dbs_Str_Hash_Table ); Odb_File_Object( Word ); Dictionary( int Number, Dbs_Store** Files ) : Object_Database( Number, Files ) {} }; Dbs_Channel DB_Vio ( 10 ); // создается пул каналов ввода/вывода Dbs_Pool DB_Cache ( 1024 ); // создается пул страниц (размером 64 страницы) Dbs_File DB_File ( "dic.dbs" ); // файл с которым работает база данных Dbs_F_Store DB_Store ( DB_File, DB_Cache ); // хранилище данного файла Dbs_Store* DB_List = &DB_Store;// список хранилищ исполззуемых базой данных Dictionary Db( 1, &DB_List ); // создание базы данных // первый параметр - количество хранилищ, 2-ой - массив указателей на хранилища, main () { Dbs_Str_Hash_Table* Tbl; Db.Open(); if( Db.Empty() ) Tbl = Fix(new Dbs_Str_Hash_Table); else Tbl = Fix(&Db((Dbs_Str_Hash_Table*)Db.Start())); char Buf[ 256 ]; int Total = 0, Add = 0; while( scanf( "%s", Buf ) == 1 ) { Word* Wrd = (Word*)Tbl->Search( Buf ); if( !Wrd ) Add += 1, Tbl->Put( Pos(new Word), Buf ); Total += 1; } printf( "Add %d new words from %d\n", Add, Total ); UnFix(Tbl); Db.Close(); return EXIT_SUCCESS; }