volume_id : char* publisher_id : char* data_preparer_id : char* system_id : char* application_id : char* copyright_file_id : char* abstract_file_id : char* biblio_file_id : char* Volume 830.9681801982362 182.66718770734806 sort_weight : int File 342.4798473529561 272.1215741615781 name : char * attribs : struct stat hidden : enum TreeNode 451.0201548579207 110.85108878154536 add(XXX) remove(Node) children() Directory 643.4798473529561 270.1215741615781 dest : char* Symlink 142.01551207221596 273.3107812765808 block : uint32_t PrevImgFile 397.8382435490256 378.6685142175496 path : char * LocalFile 270.48382688356025 384.9929640225687 Special 463.75437818225294 273.6217087746859 «interface» Filter Filters 60.0 340.0 66.03818312655496 371.74183342137127 name : char* <<static>>new(id) <<static>>read(src, opts) create() grow() Image 829.5857864376269 417.33809511662446 «interface» DataSource 639.1500915071317 437.7684840063146 In addition to the dest as a path, it could be a good idea to have a ref to tree node. That way we can compute the dest on creation time, and thus links to files on image are also valid after moving or renaming those files 16.152744527534395 121.33809511662423 Image is a context for the creation of images. Its "static" methods, new() and read() are used to create a new image context, either from scratch or from an existing image (for example, a ms disc). The methods create() and grow() return an BurnSource suitable for libburn. create() writes a full image, grow() only add to the image the new files, thus it is suitable for a new session 988.5857864376269 547.3380951166246 Ecma119Source 1119.5058052462327 436.9433938860118 «interface» BurnSource Libburn 1120.0 270.0 1131.6773781214863 304.28653963651914 Class diagram for the public tree. Note that getters and setters are not shown, to improve readability. Note also that not all the attributes will have public getters or/and setters. El-Torito related information is shown in another diagram. We don't show the several functions in Dir to manage the tree. 433.2318447938257 11.635371637423802 Each file can have several filters, that are applied sequentially. 66.59559844015237 484.00729580610755 * children 1 root 1 parent 1 volume 0..1 src {create} *