forked from stepcode/stepcode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
593 lines (430 loc) · 21.4 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
***********************************************************************
Step Class Library v0.5 -- http://github.com/mpictor/StepClassLibrary
* What is SCL? SCL reads ISO10303-11 EXPRESS schemas and generates
C++ source code that can read and write Part 21 files conforming
to that schema. In addition to C++, v0.5 includes experimental
support for Python.
* SCL is packaged along with some other tools. See
"THE NIST STEP TOOLSET", below. In particular, Data Probe
requires InterViews, an obsolete UI toolkit. I (mpictor) have not
had luck building the data probe with it. It may be more productive
to replace InterViews with a modern toolkit such as Qt. I
expect that this would be non-trivial.
* Much of the work to update SCL has been done by the developers of
BRL-CAD, and SCL was originally created at NIST in the 90's.
* Build system uses only CMake now: configure, Makefile, and all
autotools files have been removed, as has mkProbe.
* Building and testing SCL - see the INSTALL file
***********************************************************************
***********************************************************************
CODING STANDARDS
SCL's source has been reformatted with astyle. When making changes, try
to match the current formatting. The main points are:
- compact (java-style) brackets:
if( a == 3 ) {
c = 5;
function( a, b );
} else {
somefunc( );
}
- indents are 4 spaces
- no tab characters
- line endings are LF (linux), not CRLF (windows)
- brackets around single-line conditionals
- spaces inside parentheses and around operators
- return type on the same line as the function name, unless that's
too long
- doxygen-style comments
(see http://www.stack.nl/~dimitri/doxygen/docblocks.html)
If in doubt about a large patch, run astyle with the config file
misc/astyle.cfg.
Download astyle from http://sourceforge.net/projects/astyle/files/astyle/
***********************************************************************
***********************************************************************
Notes/TODO items specific to the STEP libraries as included in BRL-CAD:
* Original build system has been replaced with Makefile.am and
configure.ac files in the style of BRL-CAD's autotools build
system.
* Changes have been made to src/express to get it compiling with
the output of different versions of lex/flex/bison. These
changes are not yet tested in terms of impact on functionality
and should be a starting point for any debugging of EXPRESS
parsing issues.
* Of the original test code, only p21read has been incorporated into
the new build system, but they are still present in src/test
* Express and exppp header files have been relocated to subdirectories
in include. The names of the library files being built have been
altered, and clstepcore and cleditor now build as separate libraries.
* Numerous minor changes have been made, mostly including stdlib
and other required files.
***********************************************************************
=====================================================
Much has changed since README.scl was written.
However, it is reproduced in its entirety below.
=====================================================
README.scl (top level README) February 1998
THE NIST STEP TOOLSET
=====================
Included in this release of the NIST STEP Toolset are
STEP Class Library (SCL)
fedex_plus
fedex_idl
fedex_os
Data Probe application
Part 21 Reader application
mkProbe script
NIST EXPRESS Toolkit
NIST EXPRESS Pretty Printing Toolkit
The focus of our work since our last release has been on developing a
reference implementation of the binding of EXPRESS to C++ and IDL as
specified by STEP's Parts 23 and 26 respectively. To this we have
added a persistence capability (based on the ObjectStore OODB from
Object Design, Inc) and a distribution capability (based on Orbix by
Iona Technologies, Ltd). We also experimented with the Open OODB from
Texas Instruments and with DSOM from IBM.
The STEP Class Library (SCL) and fedex_plus are used to build
STEP-related applications in C++. They support STEP Parts 21 (the
exchange file format), 22 (the functional specification of STEP's
Standard Data Access Interface, SDAI), 23 (the C++ binding to SDAI),
and 26 (the IDL interface to SDAI). fedex_plus is an application of
the NIST EXPRESS Toolkit (based on STEP Part 11) which generates a C++
class library representation of an EXPRESS schema based on STEP's Part
23. The generated classes work with the STEP Class Library. The NIST
EXPRESS Pretty Printing Toolkit is used to format and output EXPRESS.
fedex_os is used to generate software (in addition to fedex_plus)
needed to use SCL with the ObjectStore OODB. fedex_idl translates
EXPRESS to the Interface Definition Language (according to Part 26)
for use with Orbix.
The Data Probe software and mkProbe script are used to generate
schema-specific class libraries (a.k.a. "Schema Class Library"), Data
Probe editors, and Part 21 file readers. mkProbe generates a C++
library representing a schema (using fedex_plus) and links the schema
library with other libraries of the SCL and Data Probe to create a
schema specific editor, known as a Data Probe. The Data Probe is a
graphical editor for STEP data; it is used to browse and edit data
instances of the objects in an EXPRESS model. It may also be used to
visually browse the objects contained in the EXPRESS schema itself.
Data Probes are X Windows-based and use the InterViews Toolkit from
Stanford University.
The Data Probe source code was designed with reusability in mind. The
runtime-code uses three class libraries: the STEP Class Library
(developed at NIST), the InterViews Toolkit (user interface
developer's toolkit from Stanford), and a standard C++ Class Library.
The NIST STEP Class Library is divided into component libraries
including STEP Core, Editor, Utilities, Data Access Interface,
Interviews extensions, and Probe. The STEP Core, Editor, and Utils
libraries can be used without the user interface libraries (Interviews
extensions and Probe) for applications needing to represent the
EXPRESS data structures. At this point the Data Access Interface is a
partial implementation of SDAI's Session schema.
Dependencies between these modules have been minimized so that an
executable program, the Data Probe, can be easily reconfigured to
support different conceptual schemas.
We have experimented with replacing the Interviews-based interface
with a tcl interface with good success; however, it is not in our work
plan to complete. If anyone is interested in extending the toolkit
with a more modern interface, we would be glad to discuss it with you.
The Part 21 Reader was originally developed to test whether a Schema
Class built and linked without problems. It is also useful for
checking Part 21 files. It displays the error messages from the STEP
Class Library as a file is read.
SYSTEM REQUIREMENTS
===================
Depending on how you want to use the toolkit, additional pieces of
software will need to be available on your local system:
- UNIX SunOS 4.1.x or Solaris 5.x operating system.
At NIST, the SCL including the Data Probe has been built on
SunOS workstations. The SCL without the Data Probe has been
built on Solaris. (We did not build the InterViews Library
on Solaris.) NOTE: earlier versions of the SCL 2.1 without
the Data Probe had been ported to AIX, HP, linux, and Windows NT.
- a C++ compiler -- cfront version 2.1 or higher
NOTE: The current SCL release has been built with SUN C/C++,
and GNU's gcc/g++ compilers. Earlier versions of the SCL were
built using CenterLine on SunOS and CSet++ on AIX.
If you successfully port the current version to other
compilers and/or operating systems (and are willing to share)
please contact us (stepcl@cme.nist.gov) so that we can point
others to it.
- The NIST EXPRESS Toolkit -- available from NIST
Included in this release; also available as:
ftp.cme.nist.gov:pub/step/npttools/exptk.tar.Z
- The NIST EXPRESS Pretty Printer -- available from NIST
Included in this release; also available as:
ftp.cme.nist.gov:pub/step/npttools/exppp.tar.Z
The following components are optional:
- Version 3.1 of the InterViews Toolkit from Stanford.
ftp://interviews.stanford.edu:pub/3.1.tar.Z
NOTE: InterViews is only needed for the Data Probe portion of
the toolkit. The STEP Class Library without the Data Probe
and InterViews has been built on more platforms than with these
components.
- Orbix version 2.0. Available from Iona Technologies:
http://www.iona.com
- Object Store version 4. Available from Object Design Inc.:
http://www.odi.com.
INSTALLATION INSTRUCTIONS
=========================
Refer to the file INSTALL.
In the instructions below, you will see references to the directory
<ARCH_DIR>. This directory name should be interpreted as the directory
which is named to reflect your compiler and/or system architecture
when installing the SCL using configure: i.e. "arch.centerline" or
"arch-gnu.solaris"
CREATING A NEW SCHEMA CLASS LIBRARY AND/OR DATA PROBE
=====================================================
The <ARCH_DIR>/bin/mkProbe script automates the process of building
new Schema Class Libraries and Data Probe executables. When run with
the -l option only the Schema Class Library will be created. See man
page in ~scl/man.
Examples
Input command line output (name and location)
----------------------------------------------------
mkProbe part41.exp pt41 ./pt41/dp_pt41
mkProbe -i part101.exp dp ~scl/<ARCH_DIR>/Probes/dp/dp_dp
mkProbe -l example.exp example ./example/libCexample.a
mkProbe -p example.exp example ./example/p21read_example
CONTENTS
========
This directory contains the following files and subdirectories.
This software release includes all the NIST software needed for
creating new versions of the Data Probe program. Two example schemas
are included in the data directory.
INSTALL - File discussing installation of SCL.
README.scl - This file.
src/test/README - README discussing SCL coding examples under src/test/
disclaim.txt - NIST disclaimer for this distribution.
build-apps.txt - Discusses how to build applications using the STEP
Class Library.
whatsnew.3-1.txt- Discusses new features in the STEP Class Library and
Data Probe 3.1 release.
whatsnew.2-1.txt- This was the `whatsnew' file released with SCL 2.1.
Most of the information is still relevant.
configure - Script used to install the SCL.
configure.in - File used to create the configure script using gnu's
autoconf software.
configure.files_notes.txt - Discusses various files used by the
configure script.
Makefile - Contains a default rule to build SCL using the
configure installation script.
<ARCH_DIR>/bin/mkProbe - Script used to generate a new Schema Class Library
and/or Data Probe executable.
(see CREATING A NEW SCHEMA CLASS LIBRARY AND/OR DATA PROBE)
config/ - Directory containing various templates needed by the
configure installation script.
config/examples/ - Directory containing examples of using configure to
install SCL.
arch_template/ - Directory containing templates used by configure to
create an architecture specific SCL installation.
src/ - Source code files for the C++ libraries included in this
release.
src/cl* - Directories containing the source code for the C++
libraries in the STEP Class Library. These
libraries are documented in the VTS Design document
(see DOCUMENTATION below). They are as follows:
src/clutils - utilities needed by the other libraries.
src/clstepcore - "core" classes representing EXPRESS types
and dictionary info.
src/cldai - classes for a partial implementation of the
Session schema of STEP's Standard Data
Access Interface (STEP Part 23).
src/cleditor - classes for managing data instances and
exchange files.
src/clivfasd - customizations to the Interviews class
library.
src/clprobe-ui - user interface classes for the Data Probe.
src/clSchemas - Contain subdirectories with schema specific source
code generated by the mkProbe script.
src/express - Directory containing the EXPRESS Toolkit.
src/exppp - Directory containing EXPRESS Pretty Printer Toolkit.
src/test - Directory containing example STEP Class Library
applications.
src/fedex_plus - Directory containing source code and makefile for
fedex_plus, fedex_idl, fedex_os
<ARCH_DIR>
- <ARCH_DIR> is the installer-supplied name of the
directory which is created when you run configure to
install SCL. (See the file INSTALL for more
information.) This directory contains computer
architecture-specific files. Additional arch dirs
may be created to support multiple platforms or C++
compilers which all refer to the same source
code under src/. The arch dir contains the subdirectories
ofiles, bin, lib, and Probes.
<ARCH_DIR>/ofiles/ - Directory containing object (.o) files for SCL.
<ARCH_DIR>/ofiles/sdaiOrbix - Directory containing IDL files and
Makefile needed to build and use SCL with Orbix.
<ARCH_DIR>/lib/ - Directory containing library (.a) files for SCL.
<ARCH_DIR>/Probes/ - The <ARCH_DIR>/Probes directory will contain
directories for versions of the Schema Class Library
and Data Probe generated using the mkProbe script
with the -i option.
<ARCH_DIR>/bin/ - The fedex, fedex_plus, fedex_idl, and fedex_os,
exppp, and symlink executables and mkProbe,
sclbuild, and setup-arch scripts are placed in this
directory during installation.
data/ - Directory containing sample EXPRESS files to use to
create SCL applications such as the Data Probe or
Part 21 Reader. Also contains data for some of the
examples.
bin/ - Directory containing various scripts.
man/ - Directory containing man pages for the software in
the release. You may look at the man page by
issuing the command: nroff -man <manpagefile> or by
adding this directory to your MANPATH.
EXAMPLES
========
Example of creating a Data Probe
--------------------------------
To create a new version of the Data Probe run the script mkProbe. For
example, to create a Data Probe based on the "example_schema" EXPRESS
schema included in this release, issue the following command in a
directory from which you would like a subdirectory containing the new
Data Probe to be created:
% mkProbe ~scl/data/example/example.exp example
This command creates a new version of the Data Probe in the file:
% ./example/dp_example
(It also creates subdirectory example/ if it does not exist already.)
Examples of using the STEP Class Library
----------------------------------------
To use the Schema Class Library source code (without the Data Probe
software) refer to the examples in the directory src/test.
Example of a Part 21 file reader
--------------------------------
To create a file reader based on STEP's Part 21 format use the mkProbe
script with the -p option.
% mkProbe -p ~scl/data/example/example.exp example
The executable p21read_example is created. Run it as follows:
% p21read_example your_part_21_file
This program reads a file the name of which is supplied as an
argument to the program. Any errors encountered when reading the file
are reported to standard output. A summary of the file is also
reported. The file is then written back out to a file the name of
which may be supplied as the second argument to the program. If no
name is given, "file.out" is used.
FOR MORE INFORMATION
====================
SCL HOME PAGE
-------------
The SCL home page is located on the world wide web at,
http://www.nist.gov/scl
The SCL home page will provide important, up-to-date information on
the status of the SCL, new developments and fixes, links to related
software and projects, and may eventually contain an FAQ sheet.
SCL DOCUMENTATION
-----------------
Documentation can be accessed from the SCL world wide web home page
located at http://www.nist.gov/scl
The following files (in postscript format) are particularly relevant:
Design of a C++ Software Library for Implementing EXPRESS: The NIST
STEP Class Library
Data Probe User's Guide
Data Probe: A Tool for EXPRESS-based Data
Architecture for the Validation Testing System Software
Validation Testing System Software Reusable Software Component Design
Diagrams of basic SCL data structures
ISO DOCUMENTATION
-----------------
Copies of the International Standard documents (including STEP Part 11
the EXPRESS Language Reference Manual, Part 21 the STEP Exchange File
Format, Part 22 STEP's Standard Data Access Interface, and Part 23 the
C++ language binding to SDAI) can be ordered from the ISO
International Organization of Standardization or your national
body. The United States distribution is managed by the US Product Data
Exchange Association at:
U.S. Product Data Association (USPro)
Trident Research Center, Suite 204
5300 International Blvd.
N. Charleston, SC 29418
http://www.uspro.scra.org
uspro@scra.org
Ph: 803-760-3327
FAX: 803-760-3349
MAILING LIST
------------
Announcements of new releases or bug fixes will also be sent to the
mailing list scl@cme.nist.gov. To be added to the scl mailing list
send a request to majordomo@cme.nist.gov. Include in the body of the
message:
subscribe scl
For additional help, include in the body of the message:
help
If you use a signature within your email, end your majordomo
command sequence with the word "end". For example,
subscribe scl
end
REPORTING PROBLEMS AND SUGGESTIONS
==================================
We would like feedback on all parts of the software. Please let us
know if you
- have problems following the instructions in the README file,
- have problems installing the software,
- have problems compiling your own valid EXPRESS schema, or
- have suggestions for improvements to the software.
- really like the software :)
Send your comments to
stepcl@cme.nist.gov
(For users of version 2, note the new mailing address of "stepcl...".)
Questions about availability or accessing the software should be
directed to the SOLIS administrator
Gaylen Rinaudot
npt-info@cme.nist.gov
301-975-3386
ACKNOWLEDGMENTS
===============
The STEP Class Library (SCL) was developed by the Manufacturing
Systems Integration Division at the National Institute of Standards
and Technology (http://www.mel/nist.gov/msid) to support testing of
the Standard for the Exchange of Product Model Data (a.k.a STEP) and
validation of STEP's emerging implementation specifications. Funding
for the project has come from the U.S. Department of Commerce, and the
Department of Defense agencies including the Office of the Defense
CALS (Continuous Acquisition and Life-Cycle Support) Executive and the
Defense Advanced Research Projects Agency (DARPA). Recent
enhancements were sponsored by the National Industrial Information
Infrastructure Consortium (NIIIP) (http://www.niiip.org) and the NAMT
Framework project
(http://www.mel.nist.gov/msid/projs/97projs/framewrk.htm) of NIST's
Systems Integration for Manufacturing Applications (SIMA) program
(http://www.mel.nist.gov/msid/sima/sima.htm).
LICENSING RESTRICTIONS and DISCLAIMERS
======================================
This software was produced by the National Institute of Standards and
Technology (NIST), an agency of the U.S. government, and by statute
is not subject to copyright in the United States. Recipients of this
software assume all responsibility associated with its operation,
modification, maintenance, and subsequent re-distribution.
There is no warranty for the NIST STEP Toolkit.
If the NIST STEP Toolkit is modified by someone else and passed on,
NIST wants the Toolkit's recipients to know that what they have is not
what NIST originally distributed.
Distribution Rights
1. Anyone may copy and distribute verbatim copies of the NIST STEP Toolkit
source code as received in any medium.
2. Anyone may modify their copy or copies of the NIST STEP Toolkit source
code or any portion of it, and copy and distribute such modifications
provided that all modifications are clearly associated with the entity
that performs the modifications.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!DISCLAIMERS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Names of companies and products are provided in order to adequately
specify procedures and equipment used. In no case does such
identification imply recommendation or endorsement by the National
Institute of Standards and Technology, nor does it imply that the
products are necessarily the best available for the purpose.
NO WARRANTY
===========
NIST PROVIDES ABSOLUTELY NO WARRANTY. THE NIST STEP TOOLKIT
IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS
WITH YOU. SHOULD ANY PORTION OF THE NIST STEP TOOLKIT PROVE DEFECTIVE,
YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR CORRECTION.
IN NO EVENT WILL NIST BE LIABLE FOR DAMAGES, INCLUDING ANY LOST
PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL
DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE (INCLUDING BUT NOT
LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE, OR LOSSES
SUSTAINED BY THIRD PARTIES, OR A FAILURE OF THE PROGRAM TO OPERATE
WITH PROGRAMS NOT DISTRIBUTED BY NIST) THE PROGRAMS, EVEN IF YOU HAVE
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY
ANY OTHER PARTY.