Warning, /frameworks/syntax-highlighting/autotests/reference/test.odin.ref is written in an unsupported language. File is not indexed.
0001 <Comment>// This is from Odin examples:</Comment><br/> 0002 <Comment>// https://github.com/odin-lang/examples/blob/master/by_example/dir_info/main.odin</Comment><br/> 0003 <Normal Text></Normal Text><br/> 0004 <Use>package</Use><Normal Text> main</Normal Text><br/> 0005 <Normal Text></Normal Text><br/> 0006 <Use>import</Use><Normal Text> </Normal Text><String>"core:fmt"</String><br/> 0007 <Use>import</Use><Normal Text> </Normal Text><String>"core:os"</String><br/> 0008 <Use>import</Use><Normal Text> </Normal Text><String>"core:path/filepath"</String><br/> 0009 <Use>import</Use><Normal Text> </Normal Text><String>"core:strings"</String><br/> 0010 <Normal Text></Normal Text><br/> 0011 <Function>print_file_info </Function><Operator>::</Operator><Function> </Function><Keyword>proc</Keyword><Operator>(</Operator><Normal Text>fi</Normal Text><Operator>:</Operator><Normal Text> os</Normal Text><Operator>.</Operator><Normal Text>File_Info</Normal Text><Operator>)</Operator><Normal Text> </Normal Text><Operator>{</Operator><br/> 0012 <Normal Text> </Normal Text><Comment>// Split the path into directory and filename</Comment><br/> 0013 <Variable> _, filename </Variable><Operator>:=</Operator><Normal Text> filepath</Normal Text><Operator>.</Operator><Normal Text>split</Normal Text><Operator>(</Operator><Normal Text>fi</Normal Text><Operator>.</Operator><Normal Text>fullpath</Normal Text><Operator>)</Operator><br/> 0014 <Normal Text></Normal Text><br/> 0015 <Normal Text> SIZE_WIDTH </Normal Text><Operator>::</Operator><Normal Text> </Normal Text><Float>12</Float><br/> 0016 <Variable> buf</Variable><Operator>:</Operator><Normal Text> </Normal Text><Operator>[</Operator><Normal Text>SIZE_WIDTH</Normal Text><Operator>]</Operator><Data Type>u8</Data Type><br/> 0017 <Normal Text></Normal Text><br/> 0018 <Normal Text> </Normal Text><Comment>// Print size to string backed by buf on stack, no need to free</Comment><br/> 0019 <Variable> _size </Variable><Operator>:=</Operator><Normal Text> </Normal Text><String>"-"</String><Normal Text> </Normal Text><Control Flow>if</Control Flow><Normal Text> fi</Normal Text><Operator>.</Operator><Normal Text>is_dir </Normal Text><Control Flow>else</Control Flow><Normal Text> fmt</Normal Text><Operator>.</Operator><Normal Text>bprintf</Normal Text><Operator>(</Operator><Normal Text>buf</Normal Text><Operator>[:],</Operator><Normal Text> </Normal Text><String>"%v"</String><Operator>,</Operator><Normal Text> fi</Normal Text><Operator>.</Operator><Normal Text>size</Normal Text><Operator>)</Operator><br/> 0020 <Normal Text></Normal Text><br/> 0021 <Normal Text> </Normal Text><Comment>// Right-justify size for display, heap allocated</Comment><br/> 0022 <Variable> size </Variable><Operator>:=</Operator><Normal Text> strings</Normal Text><Operator>.</Operator><Normal Text>right_justify</Normal Text><Operator>(</Operator><Normal Text>_size</Normal Text><Operator>,</Operator><Normal Text> SIZE_WIDTH</Normal Text><Operator>,</Operator><Normal Text> </Normal Text><String>" "</String><Operator>)</Operator><br/> 0023 <Normal Text> </Normal Text><Keyword>defer</Keyword><Normal Text> delete</Normal Text><Operator>(</Operator><Normal Text>size</Normal Text><Operator>)</Operator><br/> 0024 <Normal Text></Normal Text><br/> 0025 <Normal Text> </Normal Text><Control Flow>if</Control Flow><Normal Text> fi</Normal Text><Operator>.</Operator><Normal Text>is_dir </Normal Text><Operator>{</Operator><br/> 0026 <Normal Text> fmt</Normal Text><Operator>.</Operator><Normal Text>printf</Normal Text><Operator>(</Operator><String>"%v [%v]\n"</String><Operator>,</Operator><Normal Text> size</Normal Text><Operator>,</Operator><Normal Text> filename</Normal Text><Operator>)</Operator><br/> 0027 <Normal Text> </Normal Text><Operator>}</Operator><Normal Text> </Normal Text><Control Flow>else</Control Flow><Normal Text> </Normal Text><Operator>{</Operator><br/> 0028 <Normal Text> fmt</Normal Text><Operator>.</Operator><Normal Text>printf</Normal Text><Operator>(</Operator><String>"%v %v\n"</String><Operator>,</Operator><Normal Text> size</Normal Text><Operator>,</Operator><Normal Text> filename</Normal Text><Operator>)</Operator><br/> 0029 <Normal Text> </Normal Text><Operator>}</Operator><br/> 0030 <Operator>}</Operator><br/> 0031 <Normal Text></Normal Text><br/> 0032 <Function>main </Function><Operator>::</Operator><Function> </Function><Keyword>proc</Keyword><Operator>()</Operator><Normal Text> </Normal Text><Operator>{</Operator><br/> 0033 <Variable> cwd </Variable><Operator>:=</Operator><Normal Text> os</Normal Text><Operator>.</Operator><Normal Text>get_current_directory</Normal Text><Operator>()</Operator><br/> 0034 <Normal Text> fmt</Normal Text><Operator>.</Operator><Normal Text>println</Normal Text><Operator>(</Operator><String>"Current working directory:"</String><Operator>,</Operator><Normal Text> cwd</Normal Text><Operator>)</Operator><br/> 0035 <Normal Text></Normal Text><br/> 0036 <Variable> f, err </Variable><Operator>:=</Operator><Normal Text> os</Normal Text><Operator>.</Operator><Normal Text>open</Normal Text><Operator>(</Operator><Normal Text>cwd</Normal Text><Operator>)</Operator><br/> 0037 <Normal Text> </Normal Text><Keyword>defer</Keyword><Normal Text> os</Normal Text><Operator>.</Operator><Normal Text>close</Normal Text><Operator>(</Operator><Normal Text>f</Normal Text><Operator>)</Operator><br/> 0038 <Normal Text></Normal Text><br/> 0039 <Normal Text> </Normal Text><Control Flow>if</Control Flow><Normal Text> err </Normal Text><Operator>!=</Operator><Normal Text> os</Normal Text><Operator>.</Operator><Normal Text>ERROR_NONE </Normal Text><Operator>{</Operator><br/> 0040 <Normal Text> </Normal Text><Comment>// Print error to stderr and exit with errorcode</Comment><br/> 0041 <Normal Text> fmt</Normal Text><Operator>.</Operator><Normal Text>eprintln</Normal Text><Operator>(</Operator><String>"Could not open directory for reading"</String><Operator>,</Operator><Normal Text> err</Normal Text><Operator>)</Operator><br/> 0042 <Normal Text> os</Normal Text><Operator>.</Operator><Normal Text>exit</Normal Text><Operator>(</Operator><Float>1</Float><Operator>)</Operator><br/> 0043 <Normal Text> </Normal Text><Operator>}</Operator><br/> 0044 <Normal Text></Normal Text><br/> 0045 <Variable> fis</Variable><Operator>:</Operator><Normal Text> </Normal Text><Operator>[]</Operator><Normal Text>os</Normal Text><Operator>.</Operator><Normal Text>File_Info</Normal Text><br/> 0046 <Normal Text> </Normal Text><Keyword>defer</Keyword><Normal Text> os</Normal Text><Operator>.</Operator><Normal Text>file_info_slice_delete</Normal Text><Operator>(</Operator><Normal Text>fis</Normal Text><Operator>)</Operator><Normal Text> </Normal Text><Comment>// fis is a slice, we need to remember to free it</Comment><br/> 0047 <Normal Text></Normal Text><br/> 0048 <Normal Text> fis</Normal Text><Operator>,</Operator><Normal Text> err </Normal Text><Operator>=</Operator><Normal Text> os</Normal Text><Operator>.</Operator><Normal Text>read_dir</Normal Text><Operator>(</Operator><Normal Text>f</Normal Text><Operator>,</Operator><Normal Text> </Normal Text><Operator>-</Operator><Float>1</Float><Operator>)</Operator><Normal Text> </Normal Text><Comment>// -1 reads all file infos</Comment><br/> 0049 <Normal Text> </Normal Text><Control Flow>if</Control Flow><Normal Text> err </Normal Text><Operator>!=</Operator><Normal Text> os</Normal Text><Operator>.</Operator><Normal Text>ERROR_NONE </Normal Text><Operator>{</Operator><br/> 0050 <Normal Text> fmt</Normal Text><Operator>.</Operator><Normal Text>eprintln</Normal Text><Operator>(</Operator><String>"Could not read directory"</String><Operator>,</Operator><Normal Text> err</Normal Text><Operator>)</Operator><br/> 0051 <Normal Text> os</Normal Text><Operator>.</Operator><Normal Text>exit</Normal Text><Operator>(</Operator><Float>2</Float><Operator>)</Operator><br/> 0052 <Normal Text> </Normal Text><Operator>}</Operator><br/> 0053 <Normal Text></Normal Text><br/> 0054 <Normal Text> </Normal Text><Control Flow>for</Control Flow><Normal Text> fi </Normal Text><Control Flow>in</Control Flow><Normal Text> fis </Normal Text><Operator>{</Operator><br/> 0055 <Normal Text> print_file_info</Normal Text><Operator>(</Operator><Normal Text>fi</Normal Text><Operator>)</Operator><br/> 0056 <Normal Text> </Normal Text><Operator>}</Operator><br/> 0057 <Operator>}</Operator><br/>