/*******************************************************************/ // "Меркурий"-"Правда" - open source переводчик // распространяется в соответсвии с лицензией GNU v 2.0 // // Последовательный выбор вариантов перевода // Анисимов Д.В. сегодня /*******************************************************************/ # ifndef PATH_H # define PATH_H # include <core.h> # include <window.h> # include <edit2.h> struct t_Meaning { char *Meaning ; // смыслы t_aWord->meaning long j_Meaning, l_Meaning ; t_Meaning(); ~t_Meaning(); long set( char *str ); char *get( long z ); }; struct t_pVariant { short index ; // сортировочный индекс short i_down ; // из какого потомка порожден t_aWordList aWord ; long word_to_aword( long i_word ); }; struct t_Path ; // --------- элемент дерева поиска ------------------------ struct t_pTree { long up,down,n_down ; long first,last ; // индекс первой и последней (включительно) Record, // входящих в это поддерево short i_struct ; // (пока не формируется!!!) short i_aword ; // номер aWord в искомой структуре short i_last_aword ; short i_slowo1 ; short n_slowo ; char ende ; char fselect2 ; t_Path *Down ; // дерево (для накопителя) } ; struct t_Path : public t_Win { t_Path *Up ; // ссылка на вышестоящее дерево t_pVariant *Variant ; // список вариантов перевода long n_Variant ; t_pTree *Tree ; // дерево вариантов перевода long n_Tree ; long z_Tree,i_down ; // текущая вершина и "курсор потомка" t_aWord *aWord ; t_Meaning Meaning ; // смыслы t_aWord->meaning char StrUp [LFRASA] ; char Antwort[LFRASA] ; public: t_Path( void ); t_Path( t_Path *Up, long z_Tree ); ~t_Path(); void del(); void make_tree( void ); long n_variant_calc( t_Path *Up, long z_Tree ); void make_variant1( void ); void make_variant2( t_Path *Up, long z_Tree ); void sort_variant(); void paint( ); void print1( char *Str1, long i_Node ); void print2( char *Str1, long i_Node, long i_down, long i_slowo1 ); long print3( char *Str1, long i_Node, long i_down, long i_slowo1 ); char *print_serv( t_aWord *W, short i_slowo1 ); e_WinMsg universe( ); e_WinMsg loop( void ); void split_down( long z_Tree, long i_down, long *i1, long *i2 ); void split_final( long z_Tree, long *i1, long *i2 ); long merge_down( long z_Tree, long i_down ); void print_variant( char *File ); void print_tree( char *Name ); void print_all( ); long sou_length1( ); long sou_length( long i_word ); }; # endif