Skip to main content
U.S. flag

An official website of the United States government

Official websites use .gov
A .gov website belongs to an official government organization in the United States.

Secure .gov websites use HTTPS
A lock ( ) or https:// means you’ve safely connected to the .gov website. Share sensitive information only on official, secure websites.

Design of a C++ Software Library for Implementing EXPRESS: The NIST Step Class Library



David A. Sauder, Katherine C. Morris


The NIST STEP Class Library is a C++ software toolkit designed to provide software building blocks for developing STEP software applications. It has evolved over past years along with ISO 10303-23 Product Data Representation and Exchange: C++ Programming Language Binding to the Standard Data Access Interface (SDAI) Specification. Experience gained in implementing SCL has been important for providing feedback into the C++ binding and SDAI. This paper presents basic data structures used in the SCL to implement an EXPRESS data dictionary and to instantiate instances of entities. Design decisions with respect to EXPRESS inheritance mechanisms which are difficult to implement in C++ are discussed. These include multiple inheritance and complex inheritance via AND and ANDOR contructs in EXPRESS. Design decisions are discussed that also support of an early binding to an EXPRESS schema along with late binding style data access. Finally, implementation issues that have been overcome related to implementing EXPRESS agregates using C++ templates are discussed.
EXPRESS User Group


Data Dictionary, Entity Instantiation, EXPRESS, Part--23, SDAI, Software Toolkit, STEP, STEP Data Access Interface


Sauder, D. and Morris, K. (1995), Design of a C++ Software Library for Implementing EXPRESS: The NIST Step Class Library, EXPRESS User Group, [online], (Accessed May 20, 2024)


If you have any questions about this publication or are having problems accessing it, please contact

Created January 1, 1995, Updated February 17, 2017