497
495
> са својим потпуним садржајем. Употреба овог формата за дељење дефиниција структура омогућава њихово инсталирање у Октети без ручних захвата.</para>
503
>Стварање дефиниција структура</title>
505
>Дефиниције структура могу се стварати на два начина. Први је писање дефиниције у ИксМЛ‑у, а други употребом јаваскрипта. Приступ јаваскриптом омогућава вам да израдите сложеније структуре, са могућностима попут, рецимо, оверавања структуре. ИксМЛ пружа мање могућности, али може бити најлакши приступ ако је статичка структура све што вам треба. Ако желите динамичку структуру, нпр. где дужине низова зависе од других вредности из структуре, или се распоред структуре мења са променом вредности неких чланова, мораћете да напишете дефиницију структуре на јаваскрипту. Овоме има један изузетак: ако дужина низа треба да буде <emphasis role="bold"
507
> једнака некој другој вредности из структуре, то се може задати и ИксМЛ‑ом; али ако је нешто попут <emphasis
508
>дужина - 1</emphasis
509
>, тада мора јаваскрипт.</para>
515
>ИксМЛ формат фајла за дефинисање структура</title>
517
><literal role="extension"
519
> ИксМЛ фајл има један корени елемент: <emphasis
520
><data></emphasis
521
>, без атрибута. Унутар овог елемента мора стојати један од следећих:</para>
522
<!-- TODO markup, though better than nothing this way-->
526
><emphasis role="bold"
528
><primitive></emphasis
533
>За стварање примитивних типова података, попут <emphasis
537
>. Овај елемент нема поделемената, а може имати следеће атрибуте:</para>
541
><emphasis role="bold"
546
>Тип овог примитивног типа. Мора бити један од следећих:</para>
552
> за 8‑битни аски знак</para
557
>int8, int16, int32, int64</emphasis
558
> за означени целобројни те величине</para
563
>uint8, uint16, uint32, uint64</emphasis
564
> за неозначени целобројни те величине</para
569
>bool8, bool16, bool32, bool64</emphasis
570
> за неозначени логички (0 = нетачно, било шта друго = тачно) те величине</para
576
> за 32‑битни број у покретном зарезу (ИЕЕЕ 754)</para
582
> за 64‑битни број у покретном зарезу (ИЕЕЕ 754)</para
593
><emphasis role="bold"
595
><bitfield></emphasis
600
>За стварање битског поља. Овај елемент нема поделемената, а може имати следеће атрибуте:</para>
604
><emphasis role="bold"
609
>Број битова у овом битском пољу. Мора бити између 1 и 64.</para
614
><emphasis role="bold"
619
>Тип овог битског поља. Мора бити један од следећих:</para>
625
> за битско поље где вредност треба тумачити као неозначену (опсег 0 до 2<superscript
633
> за битско поље где вредност треба тумачити као означену (опсег -2<superscript
634
>width - 1</superscript
636
>width - 1</superscript
643
> за битско поље где вредност треба тумачити као логичку</para
648
>Не заборавите да додате испуну после <emphasis
649
><bitfield></emphasis
650
>, пошто ће у супротном наредни елемент почети усред бајта (осим код ниски и низова, који аутоматски додају испуну). Наравно, испуна није потребна ако желите ово понашање.</para
660
><emphasis role="bold"
662
><enum></emphasis
667
>За стварање примитивног типа, али где су вредности приказане као чланови набрајања, ако је могуће. Овај елемент нема поделемената (али ће вам требати ознака <emphasis
668
><enumDef></emphasis
669
> у фајлу раду упућивања). Има следеће атрибуте:</para>
673
><emphasis role="bold"
678
>Подложно набрајање за ову вредност. Мора одговарати атрибуту <emphasis
680
> једне од ознака <emphasis
681
><enumDef></emphasis
682
> у овом фајлу.</para
687
><emphasis role="bold"
692
>Тип овог набрајања. Погледајте истоимени атрибут уз <emphasis
693
><primitive></emphasis
694
>. Једина разлика је то што овде <emphasis
698
> немају смисла.</para>
708
><emphasis role="bold"
710
><flags></emphasis
715
>Исто као и <emphasis
716
><enum></emphasis
717
>, само што се вредности представљају као резултат <emphasis
718
>битског или</emphasis
719
> над свим вредностима набрајања.</para
725
><emphasis role="bold"
727
><struct></emphasis
732
>За стварање структуре. Сви други елементи(укључујући и <emphasis
733
><struct></emphasis
734
>) могу бити деца овога, и тада ће бити део резултујуће структуре.</para
740
><emphasis role="bold"
742
><union></emphasis
747
>За стварање уније. У суштини исто што и <emphasis
748
><struct></emphasis
749
>, осим што ће сви дечји елементи почињати од истог помака. Корисно за тумачење истог низа бајтова на различите начине.</para
755
><emphasis role="bold"
757
><array></emphasis
762
>За стварање низа. Овај елемент прихвата тачно једно дете (подложни тип низа), које може бити било који од елемената, чак и сам <emphasis
763
><array></emphasis
764
>. Има следеће атрибуте:</para>
768
><emphasis role="bold"
773
>Број елемената у овом низу, као декадни број. Алтернативно може бити ниска једнака атрибуту <emphasis
775
> неког од претходно дефинисаних елемената <emphasis
776
><primitive></emphasis
778
><enum></emphasis
780
><flags></emphasis
781
>; тада ће дужина бити вредност тог елемента. Дужина је тренутно ограничена на 10000, јер би већи низови трошили превише меморије и превише успоравали програм. </para
790
><emphasis role="bold"
792
><string></emphasis
797
>За стварање ниске са одређеним кодирањем. Подразумевано се добија ниска окончана нулом, у стилу Ц‑а. За стварање различитих типова ниски могу се употребити следећи атрибути:</para>
801
><emphasis role="bold"
802
>terminatedBy</emphasis
806
>Овај атрибут одређује којом ће се уникодском кодном тачком ниска окончавати. Мора бити хексадекадни број (опционо са водећим <emphasis
808
>); ако је кодирање аски, смислене су само вредности до 0x7f. Ако није задато ни ово ни <emphasis
809
>maxCharCount</emphasis
811
>maxByteCount</emphasis
812
>, претпоставља се 0 (ниска Ц стила). </para
817
><emphasis role="bold"
818
>maxCharCount</emphasis
822
>Највећи број знакова који ниска може да има. Ако је задато и <emphasis
823
>terminatedBy</emphasis
824
>, прво што наиђе окончава ниску. Међусобно искључиво са <emphasis
825
>maxByteCount</emphasis
831
><emphasis role="bold"
832
>maxByteCount</emphasis
836
>Колико највише бајтова ниска може бити дугачка. Ако је задато и <emphasis
837
>terminatedBy</emphasis
838
>, прво што наиђе окончава ниску. Међусобно искључиво са <emphasis
839
>maxCharCount</emphasis
840
>. За кодирања попут аскија, ово је исто као <emphasis
841
>maxCharCount</emphasis
847
><emphasis role="bold"
852
>Кодирање ове ниске. Може бити једно од следећих:</para>
878
>. Ако се не зада ни суфикс <emphasis
882
>, претпоставља се мала крајност. </para
890
>. Ако се не зада ни суфикс <emphasis
894
>, претпоставља се мала крајност. </para
904
>Сваки елемент такође прихвата атрибут <emphasis
906
>, који се после види у приказу структура. </para>
911
>Пример исте структуре у ИксМЛ‑у и јаваскрипту</title>
500
>Стварање сопствених дефиниција структура</title>
502
>Дефиниције структура можете правити на два начина. Први је писањем дефиниције у ИксМЛ‑у, а други употребом јаваскрипта. Приступ преко јаваскрипта омогућава стварање сложенијих структура, са могућностима попут оверавања структуре. Приступ преко ИксМЛ‑а пружа мање могућности и вероватно неће бити прошириван у будућности. Односно, подршка за ИксМЛ структуре ће постојати и даље, али је препоручено користити јаваскрипт. </para>
914
506
>Заједнички кораци за оба приступа</title>
916
>Наш фајл са метаподацима изгледа овако: <screen>
508
>За сваку дефиницију структуре морају се направити два фајла. Један је <literal role="extension"
510
> фајл за метаподатке. Пример: <screen>
919
513
Icon=arrow-up<co id="icon" />