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
1160.4799402311673
240.649943764645
sort_weight : int block : uint32_t
File
687.5479565719912
269.2931470368318
name : char * attribs : struct stat hidden : enum
TreeNode
706.83671056434
108.4726745515399
add(XXX) remove(Node) children()
Directory
986.1687535943008
267.29314703683184
dest : char*
Symlink
571.9364350336367
273.31078127658077
Special
813.0651280884073
272.20749521231266
name : char*
<<static>>new(id) <<static>>read(src, opts) create() grow()
Image
1149.1980515339465
455.5218613006981
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
322.02220861890066
362.2044136147912
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
1212.7956394939486
697.0920982847697
Ecma119Source
1423.5617211564486
483.61244144432396
«interface» BurnSource
Libburn
1420.0
280.0
1431.4906533445824
311.35760744838467
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.
290.59037712396525
9.859316379054544
«interface» DataSource
1192.781692587207
608.8954677283948
«interface» Filters
filters
260.0
710.0
265.45434264405947
743.9994422711634
TransformStream
486.9335577265969
640.636302316303
CutOutStream
555.9916340674516
750.220757440409
get_size() read() open() close() is_repeatable()
«interface» Stream
688.5487814157467
437.25152600545294
FdStream
680.6673668471356
637.245696021424
FileStream
828.9404615480411
642.40096597045
FilteredStream
428.449880813367
747.5389646099015
«interface» SourceFile
1000.6667341519202
639.0812755928229
For files, we need to know whethe they come from a previous session. That's the purpose of the block field
818.829652614022
414.36457377531684
1 volume
{create}
0..1
* children
1 root
1 parent
1
1 src