printing all types through same system
parent
1c513033cd
commit
4a415a83ac
236
4coder_API.html
236
4coder_API.html
|
@ -101,17 +101,14 @@ Coming Soon</i><div>
|
|||
<li><a href='#Buffer_ID_doc'>Buffer_ID</a></li>
|
||||
<li><a href='#View_ID_doc'>View_ID</a></li>
|
||||
<li><a href='#Key_Modifier_doc'>Key_Modifier</a></li>
|
||||
<li><a href='#Key_Modifier_Flag_doc'>Key_Modifier_Flag</a></li>
|
||||
<li><a href='#Command_ID_doc'>Command_ID</a></li>
|
||||
<li><a href='#Memory_Protect_Flags_doc'>Memory_Protect_Flags</a></li>
|
||||
<li><a href='#User_Input_Type_ID_doc'>User_Input_Type_ID</a></li>
|
||||
<li><a href='#Event_Message_Type_ID_doc'>Event_Message_Type_ID</a></li>
|
||||
<li><a href='#Buffer_Batch_Edit_Type_doc'>Buffer_Batch_Edit_Type</a></li>
|
||||
<li><a href='#Buffer_Setting_ID_doc'>Buffer_Setting_ID</a></li>
|
||||
<li><a href='#View_Setting_ID_doc'>View_Setting_ID</a></li>
|
||||
<li><a href='#Mouse_Cursor_Show_Type_doc'>Mouse_Cursor_Show_Type</a></li>
|
||||
<li><a href='#Buffer_Seek_Type_doc'>Buffer_Seek_Type</a></li>
|
||||
<li><a href='#View_Split_Position_doc'>View_Split_Position</a></li>
|
||||
<li><a href='#Key_Modifier_Flag_doc'>Key_Modifier_Flag</a></li>
|
||||
<li><a href='#Memory_Protect_Flags_doc'>Memory_Protect_Flags</a></li>
|
||||
<li><a href='#Buffer_Create_Flag_doc'>Buffer_Create_Flag</a></li>
|
||||
<li><a href='#Buffer_Kill_Flag_doc'>Buffer_Kill_Flag</a></li>
|
||||
<li><a href='#Access_Flag_doc'>Access_Flag</a></li>
|
||||
|
@ -120,6 +117,9 @@ Coming Soon</i><div>
|
|||
<li><a href='#Auto_Indent_Flag_doc'>Auto_Indent_Flag</a></li>
|
||||
<li><a href='#Set_Buffer_Flag_doc'>Set_Buffer_Flag</a></li>
|
||||
<li><a href='#Input_Type_Flag_doc'>Input_Type_Flag</a></li>
|
||||
<li><a href='#Mouse_Cursor_Show_Type_doc'>Mouse_Cursor_Show_Type</a></li>
|
||||
<li><a href='#Buffer_Seek_Type_doc'>Buffer_Seek_Type</a></li>
|
||||
<li><a href='#View_Split_Position_doc'>View_Split_Position</a></li>
|
||||
<li><a href='#Generic_Command_doc'>Generic_Command</a></li>
|
||||
<li><a href='#Key_Event_Data_doc'>Key_Event_Data</a></li>
|
||||
<li><a href='#Mouse_State_doc'>Mouse_State</a></li>
|
||||
|
@ -1218,8 +1218,29 @@ the interval [1,16].</div></div><hr>
|
|||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>MDFR_INDEX_COUNT is used to specify the number of modifiers supported.</div></div>
|
||||
</div>
|
||||
</div><hr>
|
||||
<div id='Key_Modifier_Flag_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.7: Key_Modifier_Flag</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Key_Modifier_Flag;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Key_Modifier_Flag field is used to specify a specific state of modifiers.
|
||||
Flags can be combined with bit or to specify a state with multiple modifiers.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MDFR_NONE</span> = 0x0</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>MDFR_NONE specifies that no modifiers are pressed.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MDFR_CTRL</span> = 0x1</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'></div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MDFR_ALT</span> = 0x2</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'></div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MDFR_SHIFT</span> = 0x4</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'></div></div>
|
||||
</div>
|
||||
</div><hr>
|
||||
<div id='Command_ID_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.7: Command_ID</h4>
|
||||
<h4>§3.4.8: Command_ID</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Command_ID;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Command_ID is used as a name for commands implemented internally in 4coder.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>cmdid_null</span></span></div>
|
||||
|
@ -1294,8 +1315,24 @@ the interval [1,16].</div></div><hr>
|
|||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'></div></div>
|
||||
</div>
|
||||
</div><hr>
|
||||
<div id='Memory_Protect_Flags_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.9: Memory_Protect_Flags</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Memory_Protect_Flags;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>TODO</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MemProtect_Read</span> = 0x1</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>TODO</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MemProtect_Write</span> = 0x2</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>TODO</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MemProtect_Execute</span> = 0x4</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>TODO</div></div>
|
||||
</div>
|
||||
</div><hr>
|
||||
<div id='User_Input_Type_ID_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.8: User_Input_Type_ID</h4>
|
||||
<h4>§3.4.10: User_Input_Type_ID</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum User_Input_Type_ID;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>User_Input_Type_ID specifies a type of user input event.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>UserInputNone</span></span></div>
|
||||
|
@ -1311,7 +1348,7 @@ the interval [1,16].</div></div><hr>
|
|||
</div>
|
||||
</div><hr>
|
||||
<div id='Event_Message_Type_ID_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.9: Event_Message_Type_ID</h4>
|
||||
<h4>§3.4.11: Event_Message_Type_ID</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Event_Message_Type_ID;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>Event_Message_Type_ID is a part of an unfinished feature.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>EventMessage_NoMessage</span></span></div>
|
||||
|
@ -1331,7 +1368,7 @@ the interval [1,16].</div></div><hr>
|
|||
</div>
|
||||
</div><hr>
|
||||
<div id='Buffer_Batch_Edit_Type_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.10: Buffer_Batch_Edit_Type</h4>
|
||||
<h4>§3.4.12: Buffer_Batch_Edit_Type</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Buffer_Batch_Edit_Type;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Buffer_Batch_Edit_Type is a type of batch operation.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>BatchEdit_Normal</span></span></div>
|
||||
|
@ -1344,7 +1381,7 @@ the interval [1,16].</div></div><hr>
|
|||
</div>
|
||||
</div><hr>
|
||||
<div id='Buffer_Setting_ID_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.11: Buffer_Setting_ID</h4>
|
||||
<h4>§3.4.13: Buffer_Setting_ID</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Buffer_Setting_ID;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Buffer_Setting_ID names a setting in a buffer.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>BufferSetting_Null</span></span></div>
|
||||
|
@ -1384,7 +1421,7 @@ the interval [1,16].</div></div><hr>
|
|||
</div>
|
||||
</div><hr>
|
||||
<div id='View_Setting_ID_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.12: View_Setting_ID</h4>
|
||||
<h4>§3.4.14: View_Setting_ID</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum View_Setting_ID;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A View_Setting_ID names a setting in a view.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>ViewSetting_Null</span></span></div>
|
||||
|
@ -1407,101 +1444,10 @@ the interval [1,16].</div></div><hr>
|
|||
attached to a view in it's scrollable section.</div></div>
|
||||
</div>
|
||||
</div><hr>
|
||||
<div id='Mouse_Cursor_Show_Type_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.13: Mouse_Cursor_Show_Type</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Mouse_Cursor_Show_Type;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Mouse_Cursor_Show_Type value specifes a mode for 4coder to handle the mouse cursor.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MouseCursorShow_Never</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The MouseCursorShow_Never mode never shows the cursor.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MouseCursorShow_Always</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The MouseCursorShow_Never mode always shows the cursor.</div></div>
|
||||
</div>
|
||||
</div><hr>
|
||||
<div id='Buffer_Seek_Type_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.14: Buffer_Seek_Type</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Buffer_Seek_Type;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>The Buffer_Seek_Type is is used in a Buffer_Seek to identify which
|
||||
coordinates are suppose to be used for the seek.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_pos</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates absolute positioning where positions are measured as the number of bytes from the start of the file.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_wrapped_xy</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates xy positioning with wrapped lines where the x and y values are in pixels.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_unwrapped_xy</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates xy positioning with unwrapped lines where the x and y values are in pixels.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_line_char</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates line-character, or line-column positioning. These coordinates are 1 based to match standard line numbering.</div></div>
|
||||
</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>See Also</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'><a href='#Buffer_Seek_doc'>Buffer_Seek</a></div><div style='margin-left: 5mm; margin-right: 5mm;'><a href='#4coder_Buffer_Positioning_System_doc'>4coder_Buffer_Positioning_System</a></div></div><hr>
|
||||
<div id='View_Split_Position_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.15: View_Split_Position</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum View_Split_Position;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A View_Split_Position specifies where a new view should be placed as a result of
|
||||
a view split operation.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>ViewSplit_Top</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates that the new view should be above the existing view.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>ViewSplit_Bottom</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates that the new view should be below the existing view.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>ViewSplit_Left</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates that the new view should be left of the existing view.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>ViewSplit_Right</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates that the new view should be right of the existing view.</div></div>
|
||||
</div>
|
||||
</div><hr>
|
||||
<div id='Key_Modifier_Flag_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.16: Key_Modifier_Flag</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Key_Modifier_Flag;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Key_Modifier_Flag field is used to specify a specific state of modifiers.
|
||||
Flags can be combined with bit or to specify a state with multiple modifiers.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Flags</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MDFR_NONE</span> = 0x0</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>MDFR_NONE specifies that no modifiers are pressed.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MDFR_CTRL</span> = 0x1</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'></div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MDFR_ALT</span> = 0x2</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'></div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MDFR_SHIFT</span> = 0x4</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'></div></div>
|
||||
</div>
|
||||
</div><hr>
|
||||
<div id='Memory_Protect_Flags_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.17: Memory_Protect_Flags</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Memory_Protect_Flags;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>TODO</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Flags</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MemProtect_Read</span> = 0x1</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>TODO</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MemProtect_Write</span> = 0x2</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>TODO</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MemProtect_Execute</span> = 0x4</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>TODO</div></div>
|
||||
</div>
|
||||
</div><hr>
|
||||
<div id='Buffer_Create_Flag_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.18: Buffer_Create_Flag</h4>
|
||||
<h4>§3.4.15: Buffer_Create_Flag</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Buffer_Create_Flag;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Buffer_Create_Flag field specifies how a buffer should be created.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Flags</i></b></div><div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Buffer_Create_Flag field specifies how a buffer should be created.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>BufferCreate_Background</span> = 0x1</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>BufferCreate_Background is not currently implemented.</div></div>
|
||||
</div>
|
||||
|
@ -1517,9 +1463,9 @@ Flags can be combined with bit or to specify a state with multiple modifiers.</d
|
|||
</div>
|
||||
</div><hr>
|
||||
<div id='Buffer_Kill_Flag_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.19: Buffer_Kill_Flag</h4>
|
||||
<h4>§3.4.16: Buffer_Kill_Flag</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Buffer_Kill_Flag;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Buffer_Kill_Flag field specifies how a buffer should be killed.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Flags</i></b></div><div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Buffer_Kill_Flag field specifies how a buffer should be killed.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>BufferKill_Background</span> = 0x1</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>BufferKill_Background is not currently implemented.</div></div>
|
||||
</div>
|
||||
|
@ -1530,14 +1476,14 @@ Flags can be combined with bit or to specify a state with multiple modifiers.</d
|
|||
</div>
|
||||
</div><hr>
|
||||
<div id='Access_Flag_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.20: Access_Flag</h4>
|
||||
<h4>§3.4.17: Access_Flag</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Access_Flag;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>An Access_Flag field specifies what sort of permission you grant to an
|
||||
access call. An access call is usually one the returns a summary struct. If a
|
||||
4coder object has a particular protection flag set and the corresponding bit is
|
||||
not set in the access field, that 4coder object is hidden. On the other hand if
|
||||
a protection flag is set in the access parameter and the object does not have
|
||||
that protection flag, the object is still returned from the access call.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Flags</i></b></div><div>
|
||||
that protection flag, the object is still returned from the access call.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>AccessOpen</span> = 0x0</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>AccessOpen does not include any bits, it indicates that the access should
|
||||
only return objects that have no protection flags set.</div></div>
|
||||
|
@ -1560,10 +1506,10 @@ that protection flag, the object is still returned from the access call.</div><d
|
|||
</div>
|
||||
</div><hr>
|
||||
<div id='Seek_Boundary_Flag_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.21: Seek_Boundary_Flag</h4>
|
||||
<h4>§3.4.18: Seek_Boundary_Flag</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Seek_Boundary_Flag;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Seek_Boundary_Flag field specifies a set of "boundary" types used in seeks for the
|
||||
beginning or end of different types of words.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Flags</i></b></div><div>
|
||||
beginning or end of different types of words.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>BoundaryWhitespace</span> = 0x1</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'></div></div>
|
||||
</div>
|
||||
|
@ -1581,9 +1527,9 @@ beginning or end of different types of words.</div><div style='margin-top: 3mm;
|
|||
</div>
|
||||
</div><hr>
|
||||
<div id='Command_Line_Input_Flag_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.22: Command_Line_Input_Flag</h4>
|
||||
<h4>§3.4.19: Command_Line_Input_Flag</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Command_Line_Input_Flag;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Command_Line_Input_Flag field specifies the behavior of a call to a command line interface.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Flags</i></b></div><div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Command_Line_Input_Flag field specifies the behavior of a call to a command line interface.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>CLI_OverlapWithConflict</span> = 0x1</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>If CLI_OverlapWithConflict is set if output buffer of the new command is already
|
||||
in use by another command which is still executing, the older command relinquishes control
|
||||
|
@ -1602,9 +1548,9 @@ beginning or end of different types of words.</div><div style='margin-top: 3mm;
|
|||
</div>
|
||||
</div><hr>
|
||||
<div id='Auto_Indent_Flag_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.23: Auto_Indent_Flag</h4>
|
||||
<h4>§3.4.20: Auto_Indent_Flag</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Auto_Indent_Flag;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>An Auto_Indent_Flag field specifies the behavior of an auto indentation operation.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Flags</i></b></div><div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>An Auto_Indent_Flag field specifies the behavior of an auto indentation operation.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>AutoIndent_ClearLine</span> = 0x1</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>If AutoIndent_ClearLine is set, then any line that is only whitespace will
|
||||
be cleared to contain nothing at all. otherwise the line is filled with whitespace
|
||||
|
@ -1618,9 +1564,9 @@ beginning or end of different types of words.</div><div style='margin-top: 3mm;
|
|||
</div>
|
||||
</div><hr>
|
||||
<div id='Set_Buffer_Flag_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.24: Set_Buffer_Flag</h4>
|
||||
<h4>§3.4.21: Set_Buffer_Flag</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Set_Buffer_Flag;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Set_Buffer_Flag field specifies the behavior of an operation that sets the buffer of a view.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Flags</i></b></div><div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Set_Buffer_Flag field specifies the behavior of an operation that sets the buffer of a view.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>SetBuffer_KeepOriginalGUI</span> = 0x1</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>If SetBuffer_KeepOriginalGUI then when the file is set, the view will not switch to it
|
||||
if some other GUI was currently up, otherwise any GUI that is up is closed and the view
|
||||
|
@ -1628,9 +1574,9 @@ beginning or end of different types of words.</div><div style='margin-top: 3mm;
|
|||
</div>
|
||||
</div><hr>
|
||||
<div id='Input_Type_Flag_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.25: Input_Type_Flag</h4>
|
||||
<h4>§3.4.22: Input_Type_Flag</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Input_Type_Flag;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Input_Type_Flag field specifies a set of input event types.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Flags</i></b></div><div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Input_Type_Flag field specifies a set of input event types.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>EventOnAnyKey</span> = 0x1</span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>If EventOnAnyKey is set, all keyboard events are included in the set.</div></div>
|
||||
</div>
|
||||
|
@ -1667,6 +1613,60 @@ beginning or end of different types of words.</div><div style='margin-top: 3mm;
|
|||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>EventAll is a catch all name for including all possible events in the set.</div></div>
|
||||
</div>
|
||||
</div><hr>
|
||||
<div id='Mouse_Cursor_Show_Type_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.23: Mouse_Cursor_Show_Type</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Mouse_Cursor_Show_Type;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A Mouse_Cursor_Show_Type value specifes a mode for 4coder to handle the mouse cursor.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MouseCursorShow_Never</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The MouseCursorShow_Never mode never shows the cursor.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>MouseCursorShow_Always</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The MouseCursorShow_Never mode always shows the cursor.</div></div>
|
||||
</div>
|
||||
</div><hr>
|
||||
<div id='Buffer_Seek_Type_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.24: Buffer_Seek_Type</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Buffer_Seek_Type;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>The Buffer_Seek_Type is is used in a Buffer_Seek to identify which
|
||||
coordinates are suppose to be used for the seek.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_pos</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates absolute positioning where positions are measured as the number of bytes from the start of the file.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_wrapped_xy</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates xy positioning with wrapped lines where the x and y values are in pixels.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_unwrapped_xy</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates xy positioning with unwrapped lines where the x and y values are in pixels.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_line_char</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates line-character, or line-column positioning. These coordinates are 1 based to match standard line numbering.</div></div>
|
||||
</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>See Also</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'><a href='#Buffer_Seek_doc'>Buffer_Seek</a></div><div style='margin-left: 5mm; margin-right: 5mm;'><a href='#4coder_Buffer_Positioning_System_doc'>4coder_Buffer_Positioning_System</a></div></div><hr>
|
||||
<div id='View_Split_Position_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.25: View_Split_Position</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum View_Split_Position;</div>
|
||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>A View_Split_Position specifies where a new view should be placed as a result of
|
||||
a view split operation.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>ViewSplit_Top</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates that the new view should be above the existing view.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>ViewSplit_Bottom</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates that the new view should be below the existing view.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>ViewSplit_Left</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates that the new view should be left of the existing view.</div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>ViewSplit_Right</span></span></div>
|
||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates that the new view should be right of the existing view.</div></div>
|
||||
</div>
|
||||
</div><hr>
|
||||
<div id='Generic_Command_doc' style='margin-bottom: 1cm;'>
|
||||
<h4>§3.4.26: Generic_Command</h4>
|
||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>union Generic_Command {<br>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
|
||||
|
||||
#define ENUM(type,name) typedef type name; enum name##_
|
||||
#define FLAGENUM(name) typedef uint32_t name; enum name##_
|
||||
|
||||
/* DOC(bool32 is an alias name to signal that an integer parameter or field is for
|
||||
true/false vales.) */
|
||||
|
@ -37,7 +36,7 @@ ENUM(int32_t, Key_Modifier){
|
|||
|
||||
/* DOC(A Key_Modifier_Flag field is used to specify a specific state of modifiers.
|
||||
Flags can be combined with bit or to specify a state with multiple modifiers.) */
|
||||
FLAGENUM(Key_Modifier_Flag){
|
||||
ENUM(uint32_t, Key_Modifier_Flag){
|
||||
/* DOC(MDFR_NONE specifies that no modifiers are pressed.) */
|
||||
MDFR_NONE = 0x0,
|
||||
MDFR_CTRL = 0x1,
|
||||
|
@ -91,7 +90,7 @@ ENUM(uint64_t, Command_ID){
|
|||
};
|
||||
|
||||
/* DOC(TODO) */
|
||||
FLAGENUM(Memory_Protect_Flags){
|
||||
ENUM(uint32_t, Memory_Protect_Flags){
|
||||
/* DOC(TODO) */
|
||||
MemProtect_Read = 0x1,
|
||||
/* DOC(TODO) */
|
||||
|
@ -183,7 +182,7 @@ ENUM(int32_t, View_Setting_ID){
|
|||
};
|
||||
|
||||
/* DOC(A Buffer_Create_Flag field specifies how a buffer should be created.) */
|
||||
FLAGENUM(Buffer_Create_Flag){
|
||||
ENUM(uint32_t, Buffer_Create_Flag){
|
||||
/* DOC(BufferCreate_Background is not currently implemented.) */
|
||||
BufferCreate_Background = 0x1,
|
||||
/* DOC(When BufferCreate_AlwaysNew is set it indicates the buffer should be
|
||||
|
@ -195,7 +194,7 @@ FLAGENUM(Buffer_Create_Flag){
|
|||
};
|
||||
|
||||
/* DOC(A Buffer_Kill_Flag field specifies how a buffer should be killed.) */
|
||||
FLAGENUM(Buffer_Kill_Flag){
|
||||
ENUM(uint32_t, Buffer_Kill_Flag){
|
||||
/* DOC(BufferKill_Background is not currently implemented.) */
|
||||
BufferKill_Background = 0x1,
|
||||
/* DOC(When BufferKill_AlwaysKill is set it indicates the buffer should be killed
|
||||
|
@ -209,7 +208,7 @@ access call. An access call is usually one the returns a summary struct. If a
|
|||
not set in the access field, that 4coder object is hidden. On the other hand if
|
||||
a protection flag is set in the access parameter and the object does not have
|
||||
that protection flag, the object is still returned from the access call.) TODO */
|
||||
FLAGENUM(Access_Flag){
|
||||
ENUM(uint32_t, Access_Flag){
|
||||
/* DOC(AccessOpen does not include any bits, it indicates that the access should
|
||||
only return objects that have no protection flags set.) */
|
||||
AccessOpen = 0x0,
|
||||
|
@ -227,7 +226,7 @@ FLAGENUM(Access_Flag){
|
|||
|
||||
/* DOC(A Seek_Boundary_Flag field specifies a set of "boundary" types used in seeks for the
|
||||
beginning or end of different types of words.) */
|
||||
FLAGENUM(Seek_Boundary_Flag){
|
||||
ENUM(uint32_t, Seek_Boundary_Flag){
|
||||
BoundaryWhitespace = 0x1,
|
||||
BoundaryToken = 0x2,
|
||||
BoundaryAlphanumeric = 0x4,
|
||||
|
@ -235,7 +234,7 @@ FLAGENUM(Seek_Boundary_Flag){
|
|||
};
|
||||
|
||||
/* DOC(A Command_Line_Input_Flag field specifies the behavior of a call to a command line interface.) */
|
||||
FLAGENUM(Command_Line_Input_Flag){
|
||||
ENUM(uint32_t, Command_Line_Input_Flag){
|
||||
/* DOC(If CLI_OverlapWithConflict is set if output buffer of the new command is already
|
||||
in use by another command which is still executing, the older command relinquishes control
|
||||
of the buffer and both operate simultaneously with only the newer command outputting to
|
||||
|
@ -250,7 +249,7 @@ FLAGENUM(Command_Line_Input_Flag){
|
|||
};
|
||||
|
||||
/* DOC(An Auto_Indent_Flag field specifies the behavior of an auto indentation operation.) */
|
||||
FLAGENUM(Auto_Indent_Flag){
|
||||
ENUM(uint32_t, Auto_Indent_Flag){
|
||||
/* DOC(If AutoIndent_ClearLine is set, then any line that is only whitespace will
|
||||
be cleared to contain nothing at all. otherwise the line is filled with whitespace
|
||||
to match the nearby indentation.) */
|
||||
|
@ -262,7 +261,7 @@ FLAGENUM(Auto_Indent_Flag){
|
|||
};
|
||||
|
||||
/* DOC(A Set_Buffer_Flag field specifies the behavior of an operation that sets the buffer of a view.) */
|
||||
FLAGENUM(Set_Buffer_Flag){
|
||||
ENUM(uint32_t, Set_Buffer_Flag){
|
||||
/* DOC(If SetBuffer_KeepOriginalGUI then when the file is set, the view will not switch to it
|
||||
if some other GUI was currently up, otherwise any GUI that is up is closed and the view
|
||||
switches to the file.) */
|
||||
|
@ -270,7 +269,7 @@ FLAGENUM(Set_Buffer_Flag){
|
|||
};
|
||||
|
||||
/* DOC(A Input_Type_Flag field specifies a set of input event types.) */
|
||||
FLAGENUM(Input_Type_Flag){
|
||||
ENUM(uint32_t, Input_Type_Flag){
|
||||
/* DOC(If EventOnAnyKey is set, all keyboard events are included in the set.) */
|
||||
EventOnAnyKey = 0x1,
|
||||
/* DOC(If EventOnEsc is set, any press of the escape key is included in the set.) */
|
||||
|
|
447
4ed_metagen.cpp
447
4ed_metagen.cpp
|
@ -789,6 +789,11 @@ get_doc_string_from_prev(Parse_Context *context, String *doc_string){
|
|||
return(result);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Meta Parse Rules
|
||||
//
|
||||
|
||||
static int32_t
|
||||
struct_parse(Partition *part, int32_t is_struct,
|
||||
Parse_Context *context, Item_Node *top_member);
|
||||
|
@ -896,6 +901,7 @@ struct_parse_next_member(Partition *part, Parse_Context *context){
|
|||
assert(!"unhandled error");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (token->type == CPP_TOKEN_BRACE_CLOSE){
|
||||
break;
|
||||
|
@ -989,7 +995,7 @@ struct_parse(Partition *part, int32_t is_struct,
|
|||
}
|
||||
|
||||
static int32_t
|
||||
typedef_parse(Parse_Context *context, Item_Set item_set, int32_t item_index){
|
||||
typedef_parse(Parse_Context *context, Item_Node *item){
|
||||
int32_t result = false;
|
||||
|
||||
Cpp_Token *token = get_token(context);
|
||||
|
@ -1019,10 +1025,10 @@ typedef_parse(Parse_Context *context, Item_Set item_set, int32_t item_index){
|
|||
get_string(context->data, start_token->start + start_token->size, token_j->start)
|
||||
);
|
||||
|
||||
item_set.items[item_index].t = Item_Typedef;
|
||||
item_set.items[item_index].type = type;
|
||||
item_set.items[item_index].name = name;
|
||||
item_set.items[item_index].doc_string = doc_string;
|
||||
item->t = Item_Typedef;
|
||||
item->type = type;
|
||||
item->name = name;
|
||||
item->doc_string = doc_string;
|
||||
result = true;
|
||||
}
|
||||
|
||||
|
@ -1032,8 +1038,7 @@ typedef_parse(Parse_Context *context, Item_Set item_set, int32_t item_index){
|
|||
}
|
||||
|
||||
static int32_t
|
||||
enum_parse(Partition *part, Parse_Context *context,
|
||||
Item_Set item_set, int32_t item_index){
|
||||
enum_parse(Partition *part, Parse_Context *context, Item_Node *item){
|
||||
|
||||
int32_t result = false;
|
||||
|
||||
|
@ -1133,10 +1138,10 @@ enum_parse(Partition *part, Parse_Context *context,
|
|||
}
|
||||
get_next_token(context);
|
||||
|
||||
item_set.items[item_index].t = Item_Enum;
|
||||
item_set.items[item_index].name = name;
|
||||
item_set.items[item_index].doc_string = doc_string;
|
||||
item_set.items[item_index].first_child = first_member;
|
||||
item->t = Item_Enum;
|
||||
item->name = name;
|
||||
item->doc_string = doc_string;
|
||||
item->first_child = first_member;
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
|
@ -1408,7 +1413,7 @@ Moves the context in the following way:
|
|||
*/
|
||||
static int32_t
|
||||
macro_parse(Partition *part, Parse_Context *context,
|
||||
char *data, Item_Set macro_set, int32_t sig_count){
|
||||
char *data, Item_Set item_set, int32_t sig_count){
|
||||
int32_t result = false;
|
||||
|
||||
Cpp_Token *token = 0;
|
||||
|
@ -1425,7 +1430,7 @@ macro_parse(Partition *part, Parse_Context *context,
|
|||
doc_string = get_lexeme(*doc_token, data);
|
||||
|
||||
if (check_and_fix_docs(&doc_string)){
|
||||
macro_set.items[sig_count].doc_string = doc_string;
|
||||
item_set.items[sig_count].doc_string = doc_string;
|
||||
|
||||
for (; (token = get_token(context)) != 0; get_next_token(context)){
|
||||
if (token->type == CPP_TOKEN_IDENTIFIER){
|
||||
|
@ -1434,7 +1439,7 @@ macro_parse(Partition *part, Parse_Context *context,
|
|||
}
|
||||
|
||||
if (get_token(context) && (token->flags & CPP_TFLAG_PP_BODY)){
|
||||
macro_set.items[sig_count].name = get_lexeme(*token, data);
|
||||
item_set.items[sig_count].name = get_lexeme(*token, data);
|
||||
|
||||
if ((token = get_next_token(context)) != 0){
|
||||
args_start_token = token;
|
||||
|
@ -1447,9 +1452,9 @@ macro_parse(Partition *part, Parse_Context *context,
|
|||
if (token){
|
||||
int32_t start = args_start_token->start;
|
||||
int32_t end = token->start + token->size;
|
||||
macro_set.items[sig_count].args = make_string(data + start, end - start);
|
||||
item_set.items[sig_count].args = make_string(data + start, end - start);
|
||||
|
||||
macro_set.items[sig_count].breakdown =
|
||||
item_set.items[sig_count].breakdown =
|
||||
parameter_parse(part, data, args_start_token, token);
|
||||
|
||||
if ((token = get_next_token(context)) != 0){
|
||||
|
@ -1466,11 +1471,11 @@ macro_parse(Partition *part, Parse_Context *context,
|
|||
|
||||
start = body_start->start;
|
||||
end = token->start + token->size;
|
||||
macro_set.items[sig_count].body = make_string(data + start, end - start);
|
||||
item_set.items[sig_count].body = make_string(data + start, end - start);
|
||||
}
|
||||
}
|
||||
|
||||
macro_set.items[sig_count].t = Item_Macro;
|
||||
item_set.items[sig_count].t = Item_Macro;
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
|
@ -1797,6 +1802,166 @@ print_function_docs(FILE *file, Partition *part, String name, String doc_string)
|
|||
print_see_also(file, doc);
|
||||
}
|
||||
|
||||
static void
|
||||
print_item(Partition *part, FILE *file, Item_Node *item, char *section, int32_t I){
|
||||
String name = item->name;
|
||||
/* NOTE(allen):
|
||||
Open a div for the whole item.
|
||||
Put a heading in it with the name and section.
|
||||
Open a "descriptive" box for the display of the code interface.
|
||||
*/
|
||||
fprintf(file,
|
||||
"<div id='%.*s_doc' style='margin-bottom: 1cm;'>\n"
|
||||
"<h4>§%s.%d: %.*s</h4>\n"
|
||||
"<div style='"CODE_STYLE" "DESCRIPT_SECTION_STYLE"'>",
|
||||
name.size, name.str, section, I, name.size, name.str);
|
||||
|
||||
Temp_Memory temp = begin_temp_memory(part);
|
||||
|
||||
switch (item->t){
|
||||
case Item_Typedef:
|
||||
{
|
||||
String type = item->type;
|
||||
|
||||
// NOTE(allen): Code box
|
||||
{
|
||||
fprintf(file,
|
||||
"typedef %.*s %.*s;",
|
||||
type.size, type.str,
|
||||
name.size, name.str
|
||||
);
|
||||
}
|
||||
|
||||
// NOTE(allen): Close the descriptive box
|
||||
fprintf(file, "</div>\n");
|
||||
|
||||
// NOTE(allen): Descriptive section
|
||||
{
|
||||
String doc_string = item->doc_string;
|
||||
Documentation doc = {0};
|
||||
perform_doc_parse(part, doc_string, &doc);
|
||||
|
||||
String main_doc = doc.main_doc;
|
||||
if (main_doc.size != 0){
|
||||
fprintf(file, DOC_HEAD_OPEN"Description"DOC_HEAD_CLOSE);
|
||||
fprintf(file,
|
||||
DOC_ITEM_OPEN"%.*s"DOC_ITEM_CLOSE,
|
||||
main_doc.size, main_doc.str
|
||||
);
|
||||
}
|
||||
|
||||
print_see_also(file, &doc);
|
||||
}
|
||||
}break;
|
||||
|
||||
case Item_Enum:
|
||||
{
|
||||
// NOTE(allen): Code box
|
||||
{
|
||||
fprintf(file,
|
||||
"enum %.*s;",
|
||||
name.size, name.str);
|
||||
}
|
||||
|
||||
// NOTE(allen): Close the descriptive box
|
||||
fprintf(file, "</div>\n");
|
||||
|
||||
// NOTE(allen): Descriptive section
|
||||
{
|
||||
String doc_string = item->doc_string;
|
||||
Documentation doc = {0};
|
||||
perform_doc_parse(part, doc_string, &doc);
|
||||
|
||||
String main_doc = doc.main_doc;
|
||||
if (main_doc.size != 0){
|
||||
fprintf(file, DOC_HEAD_OPEN"Description"DOC_HEAD_CLOSE);
|
||||
fprintf(file,
|
||||
DOC_ITEM_OPEN"%.*s"DOC_ITEM_CLOSE,
|
||||
main_doc.size, main_doc.str
|
||||
);
|
||||
}
|
||||
|
||||
if (item->first_child){
|
||||
fprintf(file, DOC_HEAD_OPEN"Values"DOC_HEAD_CLOSE);
|
||||
for (Item_Node *member = item->first_child;
|
||||
member;
|
||||
member = member->next_sibling){
|
||||
Documentation doc = {0};
|
||||
perform_doc_parse(part, member->doc_string, &doc);
|
||||
|
||||
if (member->value.str){
|
||||
fprintf(file,
|
||||
"<div>\n"
|
||||
"<div><span style='"CODE_STYLE"'>"DOC_ITEM_HEAD_INL_OPEN
|
||||
"%.*s"DOC_ITEM_HEAD_INL_CLOSE" = %.*s</span></div>\n"
|
||||
"<div style='margin-bottom: 6mm;'>"DOC_ITEM_OPEN"%.*s"DOC_ITEM_CLOSE"</div>\n"
|
||||
"</div>\n",
|
||||
member->name.size, member->name.str,
|
||||
member->value.size, member->value.str,
|
||||
doc.main_doc.size, doc.main_doc.str
|
||||
);
|
||||
}
|
||||
else{
|
||||
fprintf(file,
|
||||
"<div>\n"
|
||||
"<div><span style='"CODE_STYLE"'>"DOC_ITEM_HEAD_INL_OPEN
|
||||
"%.*s"DOC_ITEM_HEAD_INL_CLOSE"</span></div>\n"
|
||||
"<div style='margin-bottom: 6mm;'>"DOC_ITEM_OPEN"%.*s"DOC_ITEM_CLOSE"</div>\n"
|
||||
"</div>\n",
|
||||
member->name.size, member->name.str,
|
||||
doc.main_doc.size, doc.main_doc.str
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print_see_also(file, &doc);
|
||||
}
|
||||
}break;
|
||||
|
||||
case Item_Struct: case Item_Union:
|
||||
{
|
||||
Item_Node *member = item;
|
||||
|
||||
// NOTE(allen): Code box
|
||||
{
|
||||
print_struct_html(file, member);
|
||||
}
|
||||
|
||||
// NOTE(allen): Close the descriptive box
|
||||
fprintf(file, "</div>\n");
|
||||
|
||||
// NOTE(allen): Descriptive section
|
||||
{
|
||||
String doc_string = member->doc_string;
|
||||
Documentation doc = {0};
|
||||
perform_doc_parse(part, doc_string, &doc);
|
||||
|
||||
String main_doc = doc.main_doc;
|
||||
if (main_doc.size != 0){
|
||||
fprintf(file, DOC_HEAD_OPEN"Description"DOC_HEAD_CLOSE);
|
||||
fprintf(file,
|
||||
DOC_ITEM_OPEN"%.*s"DOC_ITEM_CLOSE,
|
||||
main_doc.size, main_doc.str
|
||||
);
|
||||
}
|
||||
|
||||
if (member->first_child){
|
||||
fprintf(file, DOC_HEAD_OPEN"Fields"DOC_HEAD_CLOSE);
|
||||
print_struct_docs(file, part, member);
|
||||
}
|
||||
|
||||
print_see_also(file, &doc);
|
||||
}
|
||||
}break;
|
||||
}
|
||||
|
||||
// NOTE(allen): Close the item box
|
||||
fprintf(file, "</div><hr>\n");
|
||||
|
||||
end_temp_memory(temp);
|
||||
}
|
||||
|
||||
typedef struct App_API_Name{
|
||||
String macro;
|
||||
String public_name;
|
||||
|
@ -2095,7 +2260,6 @@ generate_custom_headers(){
|
|||
{
|
||||
Item_Set typedef_set = {0};
|
||||
Item_Set struct_set = {0};
|
||||
Item_Set flag_set = {0};
|
||||
Item_Set enum_set = {0};
|
||||
|
||||
Parse type_parse[1];
|
||||
|
@ -2105,15 +2269,13 @@ generate_custom_headers(){
|
|||
|
||||
int32_t typedef_count = 0;
|
||||
int32_t struct_count = 0;
|
||||
int32_t flag_count = 0;
|
||||
int32_t enum_count = 0;
|
||||
|
||||
static String type_spec_keys[] = {
|
||||
make_lit_string("typedef"),
|
||||
make_lit_string("struct"),
|
||||
make_lit_string("union"),
|
||||
make_lit_string("ENUM"),
|
||||
make_lit_string("FLAGENUM"),
|
||||
make_lit_string("ENUM")
|
||||
};
|
||||
|
||||
for (int32_t J = 0; J < file_count; ++J){
|
||||
|
@ -2141,9 +2303,6 @@ generate_custom_headers(){
|
|||
|
||||
case 3: //ENUM
|
||||
++enum_count; break;
|
||||
|
||||
case 4: //FLAGENUM
|
||||
++flag_count; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2162,13 +2321,8 @@ generate_custom_headers(){
|
|||
enum_set = allocate_item_set(part, enum_count);
|
||||
}
|
||||
|
||||
if (flag_count > 0){
|
||||
flag_set = allocate_item_set(part, flag_count);
|
||||
}
|
||||
|
||||
int32_t typedef_index = 0;
|
||||
int32_t struct_index = 0;
|
||||
int32_t flag_index = 0;
|
||||
int32_t enum_index = 0;
|
||||
|
||||
for (int32_t J = 0; J < file_count; ++J){
|
||||
|
@ -2193,7 +2347,8 @@ generate_custom_headers(){
|
|||
case 0: //typedef
|
||||
{
|
||||
set_token(context, token);
|
||||
if (typedef_parse(context, typedef_set, typedef_index)){
|
||||
if (typedef_parse(context, typedef_set.items + typedef_index)){
|
||||
Assert(typedef_set.items[typedef_index].t == Item_Typedef);
|
||||
++typedef_index;
|
||||
}
|
||||
}break;
|
||||
|
@ -2203,6 +2358,8 @@ generate_custom_headers(){
|
|||
set_token(context, token);
|
||||
if (struct_parse(part, (match_index == 1),
|
||||
context, struct_set.items + struct_index)){
|
||||
Assert(struct_set.items[struct_index].t == Item_Struct ||
|
||||
struct_set.items[struct_index].t == Item_Union);
|
||||
++struct_index;
|
||||
}
|
||||
}break;
|
||||
|
@ -2210,18 +2367,11 @@ generate_custom_headers(){
|
|||
case 3: //ENUM
|
||||
{
|
||||
set_token(context, token);
|
||||
if (enum_parse(part, context, enum_set, enum_index)){
|
||||
if (enum_parse(part, context, enum_set.items + enum_index)){
|
||||
Assert(enum_set.items[enum_index].t == Item_Enum);
|
||||
++enum_index;
|
||||
}
|
||||
}break;
|
||||
|
||||
case 4: //FLAGENUM
|
||||
{
|
||||
set_token(context, token);
|
||||
if (enum_parse(part, context, flag_set, flag_index)){
|
||||
++flag_index;
|
||||
}
|
||||
}break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2230,7 +2380,6 @@ generate_custom_headers(){
|
|||
typedef_count = typedef_index;
|
||||
struct_count = struct_index;
|
||||
enum_count = enum_index;
|
||||
flag_count = flag_index;
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -2691,17 +2840,6 @@ generate_custom_headers(){
|
|||
);
|
||||
}
|
||||
|
||||
for (int32_t i = 0; i < flag_count; ++i){
|
||||
String name = flag_set.items[i].name;
|
||||
fprintf(file,
|
||||
"<li>"
|
||||
"<a href='#%.*s_doc'>%.*s</a>"
|
||||
"</li>\n",
|
||||
name.size, name.str,
|
||||
name.size, name.str
|
||||
);
|
||||
}
|
||||
|
||||
for (int32_t i = 0; i < struct_count; ++i){
|
||||
String name = struct_set.items[i].name;
|
||||
fprintf(file,
|
||||
|
@ -2744,214 +2882,15 @@ generate_custom_headers(){
|
|||
fprintf(file, "<h3>§"SECTION" Type Descriptions</h3>\n");
|
||||
int32_t I = 1;
|
||||
for (int32_t i = 0; i < typedef_count; ++i, ++I){
|
||||
String name = typedef_set.items[i].name;
|
||||
String type = typedef_set.items[i].type;
|
||||
|
||||
fprintf(file,
|
||||
"<div id='%.*s_doc' style='margin-bottom: 1cm;'>\n"
|
||||
"<h4>§"SECTION".%d: %.*s</h4>\n"
|
||||
"<div style='"CODE_STYLE" "DESCRIPT_SECTION_STYLE"'>",
|
||||
name.size, name.str, I,
|
||||
name.size, name.str
|
||||
);
|
||||
|
||||
// NOTE(allen): Code box
|
||||
{
|
||||
fprintf(file,
|
||||
"typedef %.*s %.*s;",
|
||||
type.size, type.str,
|
||||
name.size, name.str
|
||||
);
|
||||
}
|
||||
|
||||
fprintf(file, "</div>\n");
|
||||
|
||||
// NOTE(allen): Descriptive section
|
||||
{
|
||||
String doc_string = typedef_set.items[i].doc_string;
|
||||
Documentation doc = {0};
|
||||
perform_doc_parse(part, doc_string, &doc);
|
||||
|
||||
String main_doc = doc.main_doc;
|
||||
if (main_doc.size != 0){
|
||||
fprintf(file, DOC_HEAD_OPEN"Description"DOC_HEAD_CLOSE);
|
||||
fprintf(file,
|
||||
DOC_ITEM_OPEN"%.*s"DOC_ITEM_CLOSE,
|
||||
main_doc.size, main_doc.str
|
||||
);
|
||||
}
|
||||
|
||||
print_see_also(file, &doc);
|
||||
}
|
||||
|
||||
fprintf(file, "</div><hr>\n");
|
||||
print_item(part, file, typedef_set.items + i, SECTION, I);
|
||||
}
|
||||
|
||||
for (int32_t i = 0; i < enum_count; ++i, ++I){
|
||||
String name = enum_set.items[i].name;
|
||||
|
||||
fprintf(file,
|
||||
"<div id='%.*s_doc' style='margin-bottom: 1cm;'>\n"
|
||||
"<h4>§"SECTION".%d: %.*s</h4>\n"
|
||||
"<div style='"CODE_STYLE" "DESCRIPT_SECTION_STYLE"'>",
|
||||
name.size, name.str, I,
|
||||
name.size, name.str
|
||||
);
|
||||
|
||||
// NOTE(allen): Code box
|
||||
{
|
||||
fprintf(file,
|
||||
"enum %.*s;",
|
||||
name.size, name.str);
|
||||
}
|
||||
|
||||
fprintf(file, "</div>\n");
|
||||
|
||||
// NOTE(allen): Descriptive section
|
||||
{
|
||||
String doc_string = enum_set.items[i].doc_string;
|
||||
Documentation doc = {0};
|
||||
perform_doc_parse(part, doc_string, &doc);
|
||||
|
||||
String main_doc = doc.main_doc;
|
||||
if (main_doc.size != 0){
|
||||
fprintf(file, DOC_HEAD_OPEN"Description"DOC_HEAD_CLOSE);
|
||||
fprintf(file,
|
||||
DOC_ITEM_OPEN"%.*s"DOC_ITEM_CLOSE,
|
||||
main_doc.size, main_doc.str
|
||||
);
|
||||
}
|
||||
|
||||
if (enum_set.items[i].first_child){
|
||||
fprintf(file, DOC_HEAD_OPEN"Values"DOC_HEAD_CLOSE);
|
||||
for (Item_Node *member = enum_set.items[i].first_child;
|
||||
member;
|
||||
member = member->next_sibling){
|
||||
Documentation doc = {0};
|
||||
perform_doc_parse(part, member->doc_string, &doc);
|
||||
|
||||
fprintf(file,
|
||||
"<div>\n"
|
||||
"<div><span style='"CODE_STYLE"'>"DOC_ITEM_HEAD_INL_OPEN
|
||||
"%.*s"DOC_ITEM_HEAD_INL_CLOSE"</span></div>\n"
|
||||
"<div style='margin-bottom: 6mm;'>"DOC_ITEM_OPEN"%.*s"DOC_ITEM_CLOSE"</div>\n"
|
||||
"</div>\n",
|
||||
member->name.size, member->name.str,
|
||||
doc.main_doc.size, doc.main_doc.str
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
print_see_also(file, &doc);
|
||||
}
|
||||
|
||||
fprintf(file, "</div><hr>\n");
|
||||
}
|
||||
|
||||
for (int32_t i = 0; i < flag_count; ++i, ++I){
|
||||
String name = flag_set.items[i].name;
|
||||
|
||||
fprintf(file,
|
||||
"<div id='%.*s_doc' style='margin-bottom: 1cm;'>\n"
|
||||
"<h4>§"SECTION".%d: %.*s</h4>\n"
|
||||
"<div style='"CODE_STYLE" "DESCRIPT_SECTION_STYLE"'>",
|
||||
name.size, name.str, I,
|
||||
name.size, name.str
|
||||
);
|
||||
|
||||
// NOTE(allen): Code box
|
||||
{
|
||||
fprintf(file,
|
||||
"enum %.*s;",
|
||||
name.size, name.str);
|
||||
}
|
||||
|
||||
fprintf(file, "</div>\n");
|
||||
|
||||
// NOTE(allen): Descriptive section
|
||||
{
|
||||
String doc_string = flag_set.items[i].doc_string;
|
||||
Documentation doc = {0};
|
||||
perform_doc_parse(part, doc_string, &doc);
|
||||
|
||||
String main_doc = doc.main_doc;
|
||||
if (main_doc.size != 0){
|
||||
fprintf(file, DOC_HEAD_OPEN"Description"DOC_HEAD_CLOSE);
|
||||
fprintf(file,
|
||||
DOC_ITEM_OPEN"%.*s"DOC_ITEM_CLOSE,
|
||||
main_doc.size, main_doc.str
|
||||
);
|
||||
}
|
||||
|
||||
if (flag_set.items[i].first_child){
|
||||
fprintf(file, DOC_HEAD_OPEN"Flags"DOC_HEAD_CLOSE);
|
||||
for (Item_Node *member = flag_set.items[i].first_child;
|
||||
member;
|
||||
member = member->next_sibling){
|
||||
Documentation doc = {0};
|
||||
perform_doc_parse(part, member->doc_string, &doc);
|
||||
|
||||
fprintf(file,
|
||||
"<div>\n"
|
||||
"<div><span style='"CODE_STYLE"'>"DOC_ITEM_HEAD_INL_OPEN
|
||||
"%.*s"DOC_ITEM_HEAD_INL_CLOSE" = %.*s</span></div>\n"
|
||||
"<div style='margin-bottom: 6mm;'>"DOC_ITEM_OPEN"%.*s"DOC_ITEM_CLOSE"</div>\n"
|
||||
"</div>\n",
|
||||
member->name.size, member->name.str,
|
||||
member->value.size, member->value.str,
|
||||
doc.main_doc.size, doc.main_doc.str
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
print_see_also(file, &doc);
|
||||
}
|
||||
|
||||
fprintf(file, "</div><hr>\n");
|
||||
print_item(part, file, enum_set.items + i, SECTION, I);
|
||||
}
|
||||
|
||||
for (int32_t i = 0; i < struct_count; ++i, ++I){
|
||||
Item_Node *member = &struct_set.items[i];
|
||||
String name = member->name;
|
||||
fprintf(file,
|
||||
"<div id='%.*s_doc' style='margin-bottom: 1cm;'>\n"
|
||||
"<h4>§"SECTION".%d: %.*s</h4>\n"
|
||||
"<div style='"CODE_STYLE" "DESCRIPT_SECTION_STYLE"'>",
|
||||
name.size, name.str, I,
|
||||
name.size, name.str
|
||||
);
|
||||
|
||||
// NOTE(allen): Code box
|
||||
{
|
||||
print_struct_html(file, member);
|
||||
}
|
||||
|
||||
fprintf(file, "</div>\n");
|
||||
|
||||
// NOTE(allen): Descriptive section
|
||||
{
|
||||
String doc_string = member->doc_string;
|
||||
Documentation doc = {0};
|
||||
perform_doc_parse(part, doc_string, &doc);
|
||||
|
||||
String main_doc = doc.main_doc;
|
||||
if (main_doc.size != 0){
|
||||
fprintf(file, DOC_HEAD_OPEN"Description"DOC_HEAD_CLOSE);
|
||||
fprintf(file,
|
||||
DOC_ITEM_OPEN"%.*s"DOC_ITEM_CLOSE,
|
||||
main_doc.size, main_doc.str
|
||||
);
|
||||
}
|
||||
|
||||
if (member->first_child){
|
||||
fprintf(file, DOC_HEAD_OPEN"Fields"DOC_HEAD_CLOSE);
|
||||
print_struct_docs(file, part, member);
|
||||
}
|
||||
|
||||
print_see_also(file, &doc);
|
||||
}
|
||||
|
||||
fprintf(file, "</div><hr>\n");
|
||||
print_item(part, file, struct_set.items + i, SECTION, I);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue