#include #include #include "fstor.hpp" #define SMART_POINTERS // используем умные указатели #include "oodbs.hpp" struct Record : File_Object { // каждый класс базы данных Ptr Next; // должен быть выведен из File_Object char Text[ 1 ]; }; Dbs_Channel DB_Vio ( 10 ) ; // создается пул каналов ввода/вывода Dbs_Pool DB_Cache ( 64 ) ; // создается пул страниц (размером 64 страницы) Dbs_File DB_File ( "test.dbs" ); // файл с которым работает база данных Dbs_F_Store DB_Store ( DB_File , DB_Cache ); // хранилище данного файла Dbs_Store* DB_List = &DB_Store; // список хранилищ исполззуемых базой данных Object_Database Db( 1, &DB_List ); // создание базы данных main () { Db.Open(); // открываем базы данных if( Db.Empty() ) { // если она пуста, то нужно создать корневой объект char Buf[ 256 ]; Tie Rec; while( fgets( Buf, sizeof Buf, stdin ) ) { Tie New = new (strlen(Buf)) Record; // создание новой записи if( !Nil(Rec) ) Rec->Next = New; strcpy( New->Text, Buf ); Rec = New; } if (!Nil(Rec)) { Rec->Next = NULL; } } else { // метод Start вернет виртуальный адрес корневого объекта for(Ptr Rec = Ptr::Root(); !Nil(Rec); Rec = Rec->Next) fputs( Rec->Text, stdout ); } Db.Close(); // надо не забыть закрыть базы return 0; }