# sch-rnd native file formats

The native file format of sch-rnd is lihata based. Lihata is a generic markup language that describes how a tree can be serialized into a file format. What the tree contains and what each node means is up to the user (sch-rnd in this case). This document describes how the lihata trees are interpreted by sch-rnd.

This document is halfway in between the low level lihata document and the high level data model specification. It is assumed that the reader is familiar with both: the lihata interface plugin doesn't do anything on its own, it only takes the data model from the memory and the lihata document on disk and converts the syntax between the two.

The following table is a summary of the native file formats sch-rnd core plugins use. Note: sch-rnd does not try to recognize the purpose of the file by the file name, but by the root node name - files can be named anything, there's no "extension"; there are some files that are found by name (typically config files) - these are marked with bold.

typical filename | root node | purpose (and documentation)
--- | --- | ---
foo.rs (old: foo.sch) | ha:cschem-sheet-v* | Schematics sheet, self-contained (struct drawing) (sample file)
bar.ry (old: bar.sym) | li:cschem-group-v* | A group, usually a symbol, self-contained (struct drawing) (sample file)
baz.devmap | li:std_devmap.v | A devmap file, self-contained (struct drawing) (sample file)
buffer.lht | li:cschem-buffer-v | buffer content save; aside from the header, it's the same as a sheet (ha:cschem-sheet-v*) (struct drawing) (sample file)
project.lht | ha:geda-project-v1 or ha:coraleda-project-v1 | A project file (documented in pcb-rnd; sch-rnd specific tutorial)
menu-default.lht | ha: | The main menu system, including popup menus, all key and mouse bindings (documented in pcb-rnd)