Rev 337 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download
фы Їрщыют ё яхЁхьхээ√ьш ьюцэю ёухэхЁшЄ№ include т ърцфюьэю эрфю чэрЄ№ ьюфхы№ ярь Єш (тфЁєу эрфю ЁрчфхышЄ№ ъюьрэф√ ш фрээ√х!)add(mul(px,px),add(mul(py,py),mul(pz,pz))) - ├╦▐╩ (яхЁт√щ add яюыєўрхЄ яхЁт√щ ярЁрьхЄЁ єцх чрЄ╕ЁЄ√ь), ш яЁш уыєсшээ√ї т√чютрї ЄюцхёфхырЄ№ тыюцхээ√х ёъюсъш т фхЇрщэрї, шэрўх эхы№ч ЄшяшчшЁютрээ√х -(a/b)#include "name.h"фюыцхэ т√фртрЄ№:include "name.dec"incobj "name.bin","name.rel" шыш яЁюёЄю incobj "name"¤Єю ьюцхЄ с√Є№ ы■сюх ьхёЄю шёїюфэшър (т ёЄрЁЄрях шэъы■ф√ т ъюэЎх)ўЄю хёыш чруюыютюўэ√щ Їрщы тъы■ўрхЄ фЁєующ чруюыютюўэ√щ Їрщы? эшўхую ёЄЁр°эюую, ъръ сєфЄю яюфЁ ф?ъръ шёяюы№чютрЄ№ юфшэ ш ЄюЄ цх чруюыютюўэ√щ Їрщы фы юс· тыхэшщ ш шёяюы№чютрэш ? т gcc Єръ эхы№ч ?extern!=export (т ёш эхЄ export)ъръ яхЁхфртрЄ№ эєьхЁрЎш■ ьюфєыхщ фы юсЁр∙хэшщ т юс·хъЄэшъх?ьюцэю ыш юЄэюёшЄхы№э√щ эюьхЁ яхЁхэєьхЁютрЄ№ т уыюсры№э√щ? (юфшэ ш ЄюЄ цх ьюфєы№ ьюцхЄ с√Є№ тъы■ўхэ т Ёрчэ√х!!!)эюьхЁ ьюцэю эрчэрўрЄ№ яю яюЁ фъє ъюьяшы Ўшш (фрцх хёыш яхЁхъюьяшышЁютрЄ№ эхшчьхэ╕ээ√щ эх эрфю)эрфю яхЁхъюьяшышЁютрЄ№ эхшчьхэ╕ээ√щ ьюфєы№, хёыш юэ шёяюы№чєхЄ шчьхэ╕ээ√щ ьюфєы№!!! (¤Єю яюЄюьє ўЄю юэ яЁшт ч√трхЄё ъ ёьх∙хэш ь т фхъырЁрЎш ї шёяюы№чєхьюую ьюфєы )фрцх хёыш яЁшт ч√трЄ№ё эх ъ ёьх∙хэш ь, р ъ эюьхЁрь ёшьтюыют, Єю тёЄртър ЇєэъЎшш яюЄЁхсєхЄ яхЁхъюьяшышЁютрЄ№ тёх ьюфєыш, ъюЄюЁ√х шёяюы№чє■Є хуюьюцэю юЄ яхЁтюую шчьхэшт°хуюё яхЁхъюьяшышЁютрЄ№ тёх яюёыхфє■∙шх ьюфєышх∙╕ эрфю яхЁхъюьяшышЁютрЄ№ тё╕ яЁш шчьхэхэшш ёЄЁєъЄєЁ√ ёт чхщ ьюфєыхщхёыш ¤Єю эх ёфхырЄ№, Єю т ышэъхЁх эрфю ЁрсюЄрЄ№ ё ёшьтюы№э√ьш ьхЄърьш, Єю хёЄ№ ышэъхЁ эх ьюцхЄ ёЄрЄ№ ыюрфхЁюь (эєцэр ярь Є№ яюф ьхЄъш)ъръющ ёшьтюы ёфхырЄ№ фы фхъырЁрЎшщ Єшяр metka=<symbol><эюьхЁьюфєы >+<ёьх∙хэшх>?шыш фЁєующ ЇюЁьрЄ фхъырЁрЎшщ?рёёхьсыхЁэ√щ Їрщы фюыцхэ чэрЄ№ ётющ эюьхЁ ьюфєы , ўЄюс√ яЁртшы№эю т√уЁєцрЄ№ фхъырЁрЎшш!эх ёЄЁр°эю, хёыш є рёёхьсыхЁр сєфхЄ ЄюЄ цх ёяшёюъ Їрщыют, ўЄю є ъюьяшы ЄюЁр?шыш ёяшёюъ Їрщыют ъюьяшы ЄюЁр эш эр ўЄю эх тыш хЄ?эх ёыхфєхЄ юс·хфшэ Є№ .asm ш .var т юфшэ Їрщы (Є.ъ. шї эрфю ъюьяшышЁютрЄ№ т Ёрчэ√х яЁюёЄЁрэёЄтр)р шэшЎшрышчшЁютрээ√х яхЁхьхээ√х - х∙╕ юфэю яЁюёЄЁрэёЄтю? ёхщўрё тэ√ї эхЄ, эю хёЄ№ ъюэёЄрэЄэ√х ьрёёшт√ ш ёЄЁєъЄєЁ√ьюцэю ёфхырЄ№ єЄшышЄє юўшёЄъш тЁхьхээ√ї Їрщыют - фы тёхї ЄЁ╕ї юёхщ Ёрчэє■єёъюЁхэшх ёсюЁъш:р) єяЁюёЄшЄ№ ъюьяшы ЄюЁс1) єёъюЁшЄ№ ЄюъхэшчрЄюЁс2) єсЁрЄ№ ЄюъхэшчрЄюЁт) ёфхырЄ№ юфэюяЁюїюфэ√щ рёь?у) єыєў°шЄ№ ъюфюухэхЁрЎш■? эх ЇръЄ, ўЄю ¤Єю єёъюЁшЄ ёсюЁъєф) єсЁрЄ№ ёяхЎшЇшўхёъшх яЁюЎхфєЁ√ т ёЄрЁЄря рёьюь (эряЁшьхЁ, rdtword, genautonum)х) фюсртшЄ№ REGISTER╕) ЄюъхэшчшЁютрЄ№ эхфюырэу (ъы■ўхт√х ёыютр ш фтющэ√х ёшьтюы√)ц) ухэхЁшЁютрЄ№ юсц яЁ ью шч эхфюырэур (ё ярЄўрьш)(Єюуфр эхы№ч рёьютёЄртъш ш рёьюяЁюЎхфєЁ√ - Єюы№ъю рёьюьюфєыш), ёфхырЄ№ ёяхЎшры№э√щ ышэъхЁ шыш ыюрфхЁяюёЄЁюхэшх яЁюхъЄр:т рёёхьсыхЁ яюярфрхЄ сюы№°х Їрщыют, ўхь т ъюьяшы ЄюЁ, Є.ъ. фюсрты ■Єё х∙╕ ёЄрэфрЁЄэ√х яЁюЎхфєЁ√ єьэюцхэш -фхыхэш ш Їрщы√ ё яхЁхьхээ√ьшшыш т рёёхьсыхЁ яюярф╕Є тёхую фтр Їрщыр - ёъыххээ√щ ъюф (ё яЁшъыхштрэшхь ёЄрэфрЁЄэ√ї яЁюЎхфєЁ) ш ёъыххээ√х яхЁхьхээ√х, шыш Єюы№ъю юфшэ ёъыххээ√щ ъюфхёыш яЁюёЄю тъыхшЄ№ ЄюъхэшчрЄюЁ т ъюьяшы ЄюЁ, Єю юэ сєфхЄ ёыш°ъюь цшЁэ√ь (юёюсхээю яю ьхЄърь)ьюцэю єсЁрЄ№ шэырщэ рёёхьсыхЁ ш чрёЄрты Є№ шэъы■фшЄ№ ЄюъхэшчшЁютрээ√х рёёхьсыхЁэ√х Їрщы√Єюуфр ъюьяшы ЄюЁ яЁюёЄю сєфхЄ т√тюфшЄ№ ЄюъхэшчшЁютрээ√щ рёь тьхёЄю ЄхъёЄрreader сєфхЄ юс∙шщ є ъюьяшы ЄюЁр ш ЄюъхэшчрЄюЁр (ш яюффхЁцштрхЄ ъюььхэЄ√)Єюуфр reader фюыцхэ яшёрЄ№ ъюььхэЄ т эхЄюъхэшчшЁютрээ√щ рёёхьсыхЁэ√щ ЄхъёЄ ш т ЄюъхэшчшЁютрээ√щ юфшэръютюшыш эхЄюъхэшчшЁютрээ√щ рёёхьсыхЁэ√щ ЄхъёЄ эх ёє∙хёЄтєхЄЄюуфр ъюььхэЄрЁшш/ю°шсъш Єюцх фюыцэ√ юс ¤Єюь чэрЄ№! ЄюъхэшчшЁютрЄ№ ъюььхэЄрЁшш/ю°шсъш эр єЁютэх emitter?(ъюьяшы ЄюЁ ьюцхЄ эх т√тюфшЄ№ ю°шсъш т ferr, р т√тюфшЄ№ яЁ ью т рёь)ЄшяэюёЄ№ ьюцэю єсЁрЄ№ т _istype (юсэєы Є№ яЁш ёЄрЁЄх ш яюёых ЄрщяърёЄр)Ёрэ№°х эх с√ыю чрЁхчхЁтшЁютрээ√ї ёыютёхщўрё чрЁхчхЁтшЁютрэ√ ёыютр:- default (ьюцэю ЁрчЁхчхЁтшЁютрЄ№, эю Єюуфр 1. эхы№ч яюыєўшЄ№ єърчрЄхы№ эр ьхЄъє (т gcc юёюср ъюьрэфр &&labelname?), [2. яюы№чютрЄхы№ёъшх ьхЄъш яхЁхёхъєЄё ё ртЄюьхЄърьш (эю ьюцэю фюсртшЄ№ эх юфэє Єюўъє, р фтх)])- TRUE, FALSE (хёыш сєфхЄ include, Єю ьюцэю юяЁхфхышЄ№, эю ёрь Єшя BOOL ыєў°х эх юяЁхфхы Є№ - юэ эєцхэ т if, while, repeat)- шьхэр срчют√ї Єшяют - р юэш эх ёююЄтхЄёЄтє■Є чрЁхчхЁтшЁютрээ√ь ёш°э√ь шьхэрь!(рёёхьсыхЁэ√х ъюьрэф√ тЁюфх ъръ эх чрЁхчхЁтшЁютрэ√, Є.ъ. шь ьхЄъш яЁютхЁ хЄё т эрўрых ёЄЁюъш)ўЄюс√ чряюыэшЄ№ ъюэёЄрэЄэє■ ёЄЁєъЄєЁє, эрфю уфх-Єю тч Є№ ёяшёюъ яюыхщшыш ърцфюх яюых сєфхЄ т√фхы Є№ё яю ЁрчьхЁє эряшёрээюую Єрь чэрўхэш (ўЁхтрЄю срурьш)чрЄю ьюцэю юс·хфшэшЄ№ ё ьрёёштюьэю ёхщўрё эхы№ч юяЁхфхышЄ№ °шЁшэє Єшяр яю tword - юэр юяЁхфхы хЄё яю Єшяє ьрёёштрtodo:т ёЄЁєъЄєЁх яюых Єшяр ьрёёштяхЁхфхырЄ№ &arr[] т &(arr[]) фы єяЁю∙хэш ?;фы Єръюую (call...=...define) эх їтрЄрхЄ фтєї яЁюїюфют, ш ю°шсър эх яш°хЄёclosewrite=fclosewriteclosewrite.A.=fclosewrite.A.EXPORT closewriteEXPORT closewrite.A....EXPORT PROC fclosewrite(PBYTE file){fclose(file);}т рёьх фюсртшЄ№ LIMIT addr, яЁш фюёЄшцхэшш ¤Єюую рфЁхёр т√тюфшЄ№ ю°шсъє limittodo яЁютхЁшЄ№ чэръютюх ёЁртэхэшхtodo яЁютхЁшЄ№ т ЄюъхэшчрЄюЁх, ёЄртшЄё ыш LF яхЁхф ю°шсъющ т эрўрых ёЄЁюъш (яЁш юЄырфъх Thumb т√ыхчыю)т ╤ш яюьхўр■Єё эх int, р uint (1U)т ╤ш яюьхўрхЄё эх export, р ыюъры№эюёЄ№ (const - фы ЇєэъЎшщ, яю ъЁрщэхщ ьхЁх)єърчрЄхыш FAR, NEAR, HUGE - уфх тч Є№ юсЁрчЎ√ шёїюфэшъют т Єръюь ёЄшых?т C++ юёюс√щ єърчрЄхы№ эр ЇєэъЎш■-ўыхэ ъырёёр, їЁрэшЄ Єръцх thisт ╤ш limits.h ёюфхЁцшЄ INT_MAX, CHAR_BIT шЄяa >> n, a << n, p + n (т ╤ш) - эх рыухсЁршўхёъшх юяхЁрЎшш, Є.ъ. шї юяхЁрэф√ Ёрчэюую Єшяр-a (т NedoLang), p - p (т ╤ш), ёЁртэхэш - эх рыухсЁршўхёъшх юяхЁрЎшш, Є.ъ. шї Ёхчєы№ЄрЄ фЁєуюую Єшяр15 nesting levels for #included files limit#include nestingCommentaryThis limit makes no distinction between system headers and developer-written header files. However, animplementation is required to support its own system headers whose contents are defined by the standard. Ifa particular implementation chooses to use nested #includes, then it is responsible for ensuring that thesedo not prevent a translator from meeting its obligations with regard to this limit.Use of nested #includes requires that the source file containing each of the #include directive be keptopen, while the included file is processed. Supporting 15 nesting levels invariably requires keeping at least17 (the top-level source file and the file holding the generated code also need to be counted) files opensimultaneously. Using the fsetpos library function to record the current file position, at the point the fsetposfunction#include occurs, and closing the current file before opening the nested include is possible; however, yourauthor has never heard of an implementation that uses it....C908 nesting levels for #included filescbook1_0bC90257 case labels for a switch statement (excluding those for any nested switch statements)The intent here was to support switch statements that included 256 unsigned character values plus EOF 1737 switchstatement(usually implemented as -1).cbook1_0bсру:////////////CONST PBYTE tasks;PROC importtasks(PBYTE tasks){}PROC main(){importtasks(tasks);}///////////nolbl main.tasksэрфю ЄрсышЎє рфЁхёют ъюЁюЄъшї ыюъры№э√ї ьхЄюъTODO т рёьх ыюъры№э√х ьхЄъш яЁюЎхфєЁ .label (ъюьяшы Єё ъръ title.label)эютр ьхЄър чруюыютър юяЁхфхы хЄё т ъюьрэфх PROC(ьюцэю яю єьюыўрэш■, эю ¤Єю чрьхфышЄ)TODO CY тьхёЄю CTODO яЁютхЁшЄ№ DB "string",'c',0x00фы ╬╬╧ эєцэю (фрцх схч is-a, Єюы№ъю ё has-a):- ъръ єчэрЄ№ ЁрчьхЁ юс·хъЄр, фрцх хёыш юэ Єюўэю шьххЄ эєцэ√щ шэЄхЁЇхщё????юЄфхы№э√щ шэЄхЁЇхщё size шыш фрцх copyable? шыш фрцх listable?шыш тёх юс·хъЄ√ ёяшёър юфэюую ЁрчьхЁр (ёюфхЁцрЄ Єюы№ъю шэЄхЁЇхщё√), р юёюср ўрёЄ№ ърцфюую ъырёёр сєфхЄ т юЄфхы№эюь сыюъх ярь Єш? (р ъръ Єюуфр ъыюэшЁютрЄ№ юс·хъЄ√? ўхЁхч шэЄхЁЇхщё copyable?)- ъръ юсЁрЄшЄ№ё ъ эєцэюьє шэЄхЁЇхщёє, хёыш юэ т юс·хъЄх ьюцхЄ ЁрёяюырурЄ№ё т Ёрчэ√ї ьхёЄрї? (р юэ ьюцхЄ - шэЄхЁЇхщёют ьюцхЄ с√Є№ Ёрчэюх ўшёыю). шч ёяшёър ь√ яюыєўрхь ъръющ-Єю ёЇхЁшўхёъшщ юс·хъЄ, т ъюЄюЁюь эрфю Єюы№ъю эрщЄш шэЄхЁЇхщё√, р шэЄхЁЇхщё√ єцх эрёЄЁюхэ√ т ¤Єюь ¤ъчхьяы Ёх эр эєцэє■ ЁхрышчрЎш■ (ъюэёЄЁєъЄюЁюь). ъръ эрщЄш т юс·хъЄх эєцэ√х шэЄхЁЇхщё√ яю шьхэш?яєёЄ№ фрцх эхы№ч сєфхЄ фюсрты Є№ шэЄхЁЇхщё√ т юс·хъЄ√ юфэюую ёяшёър - є тёхї юс·хъЄют ёяшёър сєфхЄ юфшэ ёяшёюъ шэЄхЁЇхщёют. Єюуфр эрфю, ўЄюс√ тёх шэЄхЁЇхщё√ (шыш ёё√ыъш эр эшї) с√ыш тъы■ўхэ√ т эрўрыю ёЄЁєъЄєЁ√.ъръ ¤Єю ъюэЄЁюышЁютрЄ№ ч√ъюь? ьюцэю ёфхырЄ№ юфшэ шэЄхЁЇхщё "Ёрёяшэютър", тъы■ўр■∙шщ тёх эєцэ√х шэЄхЁЇхщё√? Єшярobj1->visualobject->viewable->View(obj1->visualobject->viewable)шыш(VisualObject)obj1->viewable->View(obj1) - ъръ ¤Єю эр ═хфюырэух???шышCALL (VisualObject)obj1->viewable->view(obj1) - Єръ эхы№ч тхЁэєЄ№ чэрўхэшх!шышresult = Viewable_View(obj1->visualobject->viewable) //Viewable - яЁюёЄЁрэёЄтю шь╕эъръ ъюЁюўх???р ъЁюьх ¤Єюую т obj1 сєфхЄ Єюы№ъю obj1->data ё яЁюшчтюы№э√ь ёЄЁєъЄєЁэ√ь Єшяюь, ўЄюс√ эх ёўшЄрЄ№ ЁрчьхЁ?ъръ ъюэЄЁюышЁютрЄ№, ўЄю ь√ эрёЄЁюшыш тёх шэЄхЁЇхщё√ эр эєцэє■ ЁхрышчрЎш■ т ъюэёЄЁєъЄюЁх? (хёыш юэш яю єърчрЄхы■, Єю фы ¤Єюую эрфю х∙╕ шї ёючфрЄ№! шыш эх ёючфртрЄ№, хёыш ъюэёЄЁєъЄюЁ ё ярЁрьхЄЁюь-юс·хъЄюь) (╤++ эх ъюэЄЁюышЁєхЄ, эю тЁюфх ьюцхЄ ёрь т√чтрЄ№ тёх фхёЄЁєъЄюЁ√, ъ Єюьє цх ёрь эрчэрўрхЄ тшЁЄєры№э√х ЇєэъЎшш)- ъръ т√чтрЄ№ ъюэёЄЁєъЄюЁ ш фхёЄЁєъЄюЁ? шї єърчрЄхыш Єюцх фюыцэ√ с√Є№ т ЇшъёшЁютрээюь ьхёЄх ёЄЁєъЄєЁ√, эю эх ьюуєЄ с√Є№ т obj1->data, Є.ъ. data ёючфр╕Єё т ъюэёЄЁєъЄюЁх. юэш эх ьюуєЄ с√Є№ ш т obj1->visualobject яю Єющ цх яЁшўшэх. эю ьюуєЄ с√Є№ т obj1.visualobject (хёыш тыюцхээ√х ёЄЁєъЄєЁ√), эю Єюуфр тёх visualobject сєфєЄ юфшэръют√х, ўЄю ь√ эх їюЄшьт√ч√трЄ№ ъюэёЄЁєъЄюЁ ъръ яЁюёЄє■ ЇєэъЎш■, р эх ъръ ьхЄюф ъырёёр?- ъръ яхЁхфрЄ№ ярЁрьхЄЁ√ т ъюэёЄЁєъЄюЁ, хёыш юэ яю єърчрЄхы■?т√ч√трЄ№ ъюэёЄЁєъЄюЁ ъръ яЁюёЄє■ ЇєэъЎш■, р эх ъръ ьхЄюф ъырёёр?Єшярtypedef <ЇєэъЎш , тючтЁр∙р■∙р object*> Func;STRUCT IVisualObject{IViewable* viewable; //Єрь Proc ViewICopyable* copyable; //Єрь size ш Func CopyIListable* listable; //Єрь Func Prev ш Func Next???};STRUCT VisualObject{ //юсЁрчхЎ яюфъырёёр visualobject, шёяюы№чєхь√щ фы їЁрэхэш т ёяшёърї ш Є.я.IVisualObject* visualobject;};STRUCT Button{IVisualObject* visualobject;... //data for Button};VAR [STRUCT] Button* btOK = CreateButton(10,10,100,100,"OK",&OnClickOK);//ьюцэю Єшя VisualObject* тьхёЄю Button*...destroyButton(btOK);эрфю т√ч√трЄ№ шч ъюэёЄЁєъЄюЁр юс·хъЄр ъюэёЄЁєъЄюЁ "Ёрёяшэютъш" ё эєцэ√ьш ярЁрьхЄЁрьш - Єръ ьюцэю яЁютхЁшЄ№, ўЄю эх яЁюяєёЄшыш эш юфэющ шэшЎшрышчрЎшш шэЄхЁЇхщёют (їюЄ яюър ═хфюырэу эх яЁютхЁ хЄ ўшёыю ярЁрьхЄЁют). Єшяр Єръ:FUNC Button* createButton(...) //ьюцэю Єшя VisualObject* тьхёЄю Button*{VAR [STRUCT] Button* obj;obj = newStruct(+sizeof(Button));//obj->size = +sizeof(Button);obj->VisualObject = createVisualObject(..., obj/**фы copyable*/, +sizeof(Button)/**фы copyable*/, &ButtonView/**фы viewable*/);obj->... = ... //data for ButtonRETURN obj;}- ъръ яхЁхфртрЄ№ ярЁрьхЄЁ√ т тшЁЄєры№э√х ьхЄюф√?т ═хфюырэух эхЄ яхЁхфрўш яю ёЄхъєўшЄрЄ№ шч шьхэютрээ√ї ярЁрьхЄЁют яЁююсЁрчр тшЁЄєры№эющ ЇєэъЎшш? юэш эхфюёЄєяэ√ шч ч√ър! р ъръ шї яхЁхфрЄ№ т яЁююсЁрч, яЁш ¤Єюь т√чтрЄ№ тшЁЄєры№эє■ ЇєэъЎш■? ёрь яЁююсЁрч сєфхЄ т√ч√трЄ№?╩ыюэшЁютрэшх тшчєры№эюую юс·хъЄр (т Єюь ўшёых ъыюэшЁютрэшх фрээ√ї яю єърчрЄхы ь??? т Qt Єръ эхы№ч Ёрфш ЁхЇыхъёшш ш шхЁрЁїшш ¤ъчхьяы Ёют):obj2 = obj1->visualobject->copyable->Copy(obj1)???obj фюыцхэ с√Є№ яЁштхф╕э ъ Єшяє VisualObject*!!! ёЁрчє тё╕ їЁрэшЄ№ ъръ VisualObject*, р эх Button*?FUNC UINT Viewable_View(Viewable* viewable, UINT par1){_par1 = par1;CALL viewable->View(); //ўшЄрхЄ _par1, тючтЁр∙рхЄ _resRETURN _res;}ъръ с√ ёфхырЄ№ т ═хфюырэух, ўЄюс√ т√ч√трЄ№ ЇєэъЎш■ ё Ёхчєы№ЄрЄюь яю єърчрЄхы■?т ёш°эшъх рф: ((<Єшя>(*)(void))(pfunc))()+call(pfunc) эхы№ч , хёыш тючтЁр∙рхь єърчрЄхы№ъръ т ёш°эшъх юяЁхфхышЄ№ Єшя PROC? (¤Єю ъюуфр єсхЁ╕ь ёыютю PROC т яЁюЎхфєЁрї)шчсртшЄ№ё ёЁрчє юЄ чт╕чфюўхъ т Єшярї чр ёў╕Є фюяюыэшЄхы№эюую typedef?ъръ шчсртшЄ№ё юЄ тёЄртъш ->visualobject?ьюцэю эрёыхфютрЄ№ ёЄЁєъЄєЁє юЄ "Ёрёяшэютъш" IVisualObject (фы ¤Єюую эрфю сєфхЄ ёъюяшЁютрЄ№ тёх яюы IVisualObject т эр°є ёЄЁєъЄєЁє), Єюуфр "Ёрёяшэютър" сєфхЄ ыхцрЄ№ т эрўрыхьюцэю Єєяю:STRUCT VisualObject{ //юсЁрчхЎ яюфъырёёр visualobject, шёяюы№чєхь√щ фы їЁрэхэш т ёяшёърї ш Є.я.#include "visualobject.h" //эрўшэър ёЄЁєъЄєЁ√ "Ёрёяшэютъш" схч юс╕ЁЄъш};STRUCT Button{#include "visualobject.h" //эрўшэър ёЄЁєъЄєЁ√ "Ёрёяшэютъш" схч юс╕ЁЄъш... //data for Button};Єюы№ъю ═хфюырэу эх єьххЄ шэъы■ф√ тэєЄЁш ёЄЁєъЄєЁ√!!!ш эх єьххЄ ьръЁюё√ фхЇрщэрьш!!!???шёяюы№чєхь тхчфх яЁюЎхфєЁ√ VisualObject_...(object), уфх юс·хъЄ шьххЄ Єшя "юсЁрчЎр эрёыхфэшър шэЄхЁЇхщёр", Єюуфр ь√ эх єтшфшь Єръшї тёЄртюъ ->visualobject эшуфх эш т ЁхрышчрЎшш Button, эш т шёяюы№чютрэшшяЁюсыхьр ё Ёрёяшэютъющ:є ърцфюую тшчєры№эюую ъюьяюэхэЄр ётю Ёрёяшэютър!шыш ьюцэю фюсртшЄ№ ьхЄюф√ ш фрээ√х тэх Ёрёяшэютъш? яю Ёрёяшэютъх юсЁр∙рхЄё юё№, р яю юЄфхы№э√ь ьхЄюфрь - ЇюЁьрSTRUCT Button{IVisualObject* visualobject;//data for visibleBOOL visible;UINT left;UINT top;UINT width;UINT height;//data for listableList* head;Button* prev; //TODO ъръ listable сєфхЄ т эшї шёърЄ№ ётюш яюы ш ётющ шэЄхЁЇхщё?Button* next;//data for ButtonPBYTE onclick; //todo PROCPCHAR text; //todo STRING};PROC VisualObject_View([STRUCT] VisualObject* object) //¤ЄюЄ ярЁрьхЄЁ - эх шэЄхЁЇхщё, р юсЁрчхЎ яюфъырёёр{_this = object;CALL object->visualobject->viewable->view;}FUNC [STRUCT] VisualObject* VisualObject_Copy([STRUCT] VisualObject* object) //¤ЄюЄ ярЁрьхЄЁ - эх шэЄхЁЇхщё, р юсЁрчхЎ яюфъырёёр{_this = object;CALL object->visualobject->copyable->copy;}PROC Button_View(){... _this->left, _this->top, _this->width, _this->height ...... _this->text}FUNC [STRUCT] VisualObject* Button_Copy(){ //ъэюяър эшўхую эх ёючфр╕Є, яю¤Єюьє ъюяшЁєхЄё ыхуъю//TODO тъышэшЄ№ё т Ўхяюўъє prev,nextRETURN ([STRUCT] VisualObject*)getmem_copy(+sizeof(Button), _this);}//ёЄрЄшўхёъюх ёючфрэшх//TODO эєцэ√ ыш ...able? юэш ёрьш яю ёхсх эшўхую эх фхыр■Є ш эх чр∙ш∙р■Є//viewable ш clickable тэю юЄэюё Єё ъ visualobject//listable ьюцэю т√фхышЄ№, хёыш Єрь сєфєЄ ёьх∙хэш фю prev,next, р ЇєэъЎшш GetPrev, GetNext, GetHead, GetSize, IsEmpty, Add, Remove тёхуфр юфшэръют√х//copyable юярёэю, яюЄюьє ўЄю ёхьрэЄшър эх ёэр (ъюяшЁютрЄ№ ыш тыюцхээ√х юс·хъЄ√?). ўЄюс√ ъырёЄ№ т ъюэЄхщэхЁ, фюёЄрЄюўэю эрёыхфютрЄ№ шэЄхЁЇхщё listable ш Є.я. ьюцэю фрцх эхъюы№ъю Ёрч, хёыш фрээ√х яЁю°шЄ√ ьэюушьш ёё√ыърьшCONST [STRUCT] IViewable buttoniviewable{&Button_View};CONST [STRUCT] ICopyable buttoncopyable{&Button_Copy //фюыцэр чэрЄ№ +sizeof(Button) ш ўЄю ыш°эхую ёючфртрЄ№ (р эрфю ыш ъюуфр-эшсєф№ ёючфртрЄ№ ыш°эхх?)};CONST [STRUCT] IListable buttonlistable{&Button_Prev, //фюыцэр чэрЄ№, уфх ыхцшЄ prev (ЄєЄ эхы№ч , Ёрчтх ўЄю ёьх∙хэшх - Є.ъ. фы тёхї ъэюяюъ) //эю ёьх∙хэшх эхы№ч яюыєўшЄ№ т ъюэёЄрэЄэюх т√Ёрцхэшх???&Button_Next //фюыцэр чэрЄ№, уфх ыхцшЄ next (ЄєЄ эхы№ч , Ёрчтх ўЄю ёьх∙хэшх - Є.ъ. фы тёхї ъэюяюъ) //эю ёьх∙хэшх эхы№ч яюыєўшЄ№ т ъюэёЄрэЄэюх т√Ёрцхэшх???};CONST [STRUCT] IClickable buttonclickable{&Button_Click};CONST [STRUCT] IVisualObject buttonvisualobject{&buttonviewable, //Єрь Proc View&buttoncopyable, //Єрь Func Copy (юэр чэрхЄ +sizeof(Button)) //р эєцэр ыш?&buttonlistable, //Єрь Func Prev ш Func Next //шыш ёьх∙хэш фю head,prev,next???&buttonclickable};CONST [STRUCT] Button btOK{&buttonvisualobject, //эхы№ч Ёрёяшэютъє ъэюяъш (юэр юфшэръютр фы тёхї ъэюяюъ) тъы■ўрЄ№ т ёрьє юс∙є■ ёЄЁєъЄєЁє&onClickOK, //onclick&listhead, //head (Єрь size, ёё√ыър эр Ёхры№э√щ head ш ёё√ыър эр ЁюфшЄхы яЁюшчтюы№эюую Єшяр?)&btOK, //prev&btOK, //next10, //left10, //top100, //width100, //height"OK" //text};//фшэрьшўхёъюх ёючфрэшхVAR [STRUCT] VisualObject* btOK = Button_Create(10,10,100,100,"OK",&vbutton,&onClickOK);//TODO тЁєўэє■ яЁшт чрЄ№ prev, next, Є.ъ. эхы№ч яЁшт чрЄ№ шї тёх фЁєу ъ фЁєує т ъюэёЄЁєъЄюЁх (next єърч√трхЄ эр сєфє∙шщ юс·хъЄ!)...//VisualObject_View(btOK->ivisualobject, btOK); //тю тёхї эєцэ√ї шэЄхЁЇхщёрї єцх ёЄю Є єърчрЄхыш эр ЁхрышчрЎшш, р т эшї эєцэ√ єърчрЄхыш эр яюы Button!//CALL btOK->visualobject->viewable->view(btOK); //эх эрфю чэрЄ№, ўЄю ¤Єю ъэюяър, ¤Єю яЁюёЄю юсЁрчхЎ яюфъырёёр visualobjectVisualObject_View(btOK);...//CALL btOK->visualobject->clickable->click(btOK);VisualObject_Click(btOK);...Button_Destroy(btOK);ьюцэю яхЁхфртрЄ№ ярЁрьхЄЁ√ ўхЁхч срщЄ√ яхЁхф чруюыютърьш ЇєэъЎшщ(эхЁхъєЁёштэю, эхЁххэЄхЁрсхы№эю, эх фы ╧╟╙, эхёютьхёЄшью ё iofast ш фЁ.)