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/>