Objective-C is a loose typing system while C++ is a strong typing language. Loose typing allows software designers to delay the design decisions and results in a flexible software system that is capable of adapting to various applications. Strong typed systems, on the other hand, result in a more efficient application by constraining the design decision ahead of time. Loose typing language usually also have the ability of query typing information at run-time. Objective-C provide a run- time library that enables a software system to query the meta information of objects at run-time, while C++ provide relatively weak run-time typing support. Message passing is one of the major benefits of the object oriented approach. C++ supports message passing through the virtual method mechanism. In order for this mechanism to work, a proper class inheritance tree is pre- requisite. Objective-C dynamically interprets messages by the run- time system and does not require a supporting class inheritance tree. The design flexibility and software adaptability was an objective of this project, therefore, Objective-C was chosen.
Both C++ and Objective C have the disadvantage that they are not in common use by crystallographic programmers.
The design of the library is currently being written up for publication.
Usage: Aca2Html filewhere: file is the name of an ACA dictionary compliant file.
Usage: StarHtml dir dic {dic {dic} ...} {file {file} ...}
where: dir = directory name that contains dictionaries & STAR files.
dic = dictionary name(s).
file = STAR file name(s).
Note: Two html files will be generated for every dictionary and
STAR file plus one master html file named SFBrowser.html which points to
the other two.
These files will be generated in the directory dir (the
current directory by default).
Usage: parser file
where: file is the name of a STAR file.
Usage: stargrep file blockname itemname
where: file = the name of a STAR compliant file.
blockname = the name of a block within the data file.
itemname = the dataname(s) for which the data value(s)
should be returned.
Example:
$> cat ex.3
data_Ex3
loop_
_display_id
_display_object
_display_symbol
_display_colour
_display_size
_display_coord_x
_display_coord_y
loop_
_display_conn_id
_display_conn_symbol
1 text BH blue 5 35 70 2 1b 7 1b 8 1b 12 1b stop_
2 text BH blue 5 10 60 3 1b 7 1b 8 1b 8 1b stop_
3 text BH blue 5 10 30 4 1b 8 1b 9 1b 10 1b stop_
4 text BH blue 5 35 20 5 1b 9 1b 10 1b 11 1b stop_
5 text BH blue 5 60 30 6 1b 10 1b 11 1b 12 1b stop_
6 text BH blue 5 60 30 1 1b 11 1b 12 1b 7 1b stop_
7 text BH blue 5 35 57 9 1b stop_
15 text Me black 5 80 50 stop_
16 text Me black 5 100 50 stop_
$> stargrep ex.3 data_Ex3 _display_conn_id
2
7
8
12
.
.
.
.
.
.
11
12
7
9
Usage: startuple file blockname itemname(s)
where: file = the name of a STAR compliant file.
blockname = the name of a block within the data file.
itemname = the dataname(s) for which the data value(s)
should be returned.
Example:
$> startuple ex.4 data_Ex3 _display_id _display_colour
_display_conn_id _display_conn_symbol
1 blue 2 1b
1 blue 7 1b
1 blue 8 1b
1 blue 12 1b
2 blue 3 1b
2 blue 7 1b
2 blue 8 1b
2 blue 8 1b
.
.
5 blue 6 1b
5 blue 10 1b
5 blue 11 1b
5 blue 12 1b
6 blue 1 1b
.
6 blue 7 1b
7 blue 9 1b
15 black (null) (null)
16 black (null) (null)