Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d68ec0b19 | ||
|
|
69e0813cf7 | ||
|
|
d0e2c156a1 | ||
|
|
b84921e9d8 | ||
|
|
d3418ed48c | ||
|
|
96f5f28058 | ||
|
|
ca155ce50d | ||
|
|
1bbbc219ba | ||
|
|
59cf7ec1ed | ||
|
|
f053df82db | ||
|
|
8cad6ec2aa | ||
|
|
5f345c700e | ||
|
|
37594fc4a2 | ||
|
|
d6da97ec30 | ||
|
|
5f88f509b2 | ||
|
|
d87d07a26c | ||
|
|
50b9032d32 | ||
|
|
d56795946c | ||
|
|
117ba3972f | ||
|
|
8595a291cb | ||
|
|
ee78ba9c52 | ||
|
|
575c77dda9 | ||
|
|
bd9942dc36 | ||
|
|
10999e7a48 | ||
|
|
becb8405ba | ||
|
|
dca5e0c843 | ||
|
|
47ecd2088f | ||
|
|
1cc2774b52 | ||
|
|
f12e16b3a7 | ||
|
|
ee689a10e1 | ||
|
|
3fd222218f | ||
|
|
212c11453e | ||
|
|
92d83ef14a | ||
|
|
950407a067 | ||
|
|
fb79eb2183 | ||
|
|
572e9adc0b | ||
|
|
ac702af7f3 | ||
|
|
c316f21fe6 | ||
|
|
14926414c3 | ||
|
|
260fd55f10 | ||
|
|
d94a44944b | ||
|
|
2be1cc40be | ||
|
|
809e1dd495 | ||
|
|
3aee5f353c | ||
|
|
6e6fb8197c | ||
|
|
235b1e6ca3 | ||
|
|
e99240a780 | ||
|
|
ca0824dd0d | ||
|
|
5dc04396ad | ||
|
|
3e8c11661d | ||
|
|
a63ac738af | ||
|
|
7a6ba24f81 | ||
|
|
1481950409 | ||
|
|
0073b386ef | ||
|
|
2d7ed17697 | ||
|
|
ffdeac2552 | ||
|
|
8dcfec46c9 | ||
|
|
14985062f7 | ||
|
|
e9e576e4f8 | ||
|
|
fad0cf4b3d | ||
|
|
4cd7e7c806 | ||
|
|
22cbb3efcf | ||
|
|
c415e49894 | ||
|
|
064a2b41b5 | ||
|
|
fffaba61f2 | ||
|
|
4ab01a7773 | ||
|
|
873a86de8b | ||
|
|
3a9fa997b3 | ||
|
|
2d26da7d24 | ||
|
|
c0c423c625 | ||
|
|
555a574eef | ||
|
|
82898d74a4 | ||
|
|
09f347234b | ||
|
|
3ce06bce27 | ||
|
|
e7d3c2a075 | ||
|
|
e1b374a7d6 | ||
|
|
33c66b0954 | ||
|
|
eb61193bcf | ||
|
|
2535a4f8b2 | ||
|
|
ed76f0b625 | ||
|
|
f3a82debec | ||
|
|
1da31f6501 | ||
|
|
67f8897429 | ||
|
|
81b82cdd24 | ||
|
|
28a988854f | ||
|
|
e36a1a69bd | ||
|
|
defd675944 | ||
|
|
ec97362602 | ||
|
|
586b8f8996 | ||
|
|
c1b57435b2 | ||
|
|
2b0da3fd41 | ||
|
|
15f9c40c54 | ||
|
|
0aa9b5dd97 | ||
|
|
97ef6d97ed | ||
|
|
d0293fd0c7 | ||
|
|
355f08f50e | ||
|
|
f688f2a0c9 | ||
|
|
07ed8f6968 | ||
|
|
993167ede1 | ||
|
|
870edbffa8 | ||
|
|
0f3b6262cd | ||
|
|
03fd892382 | ||
|
|
7712b9bb23 | ||
|
|
dcdd77a49d | ||
|
|
166425a9b8 | ||
|
|
ca4940e6e9 | ||
|
|
3156ea7fb6 | ||
|
|
2179c8a83b | ||
|
|
80208dcdd6 | ||
|
|
737c53ef28 | ||
|
|
ae9dbbd70e | ||
|
|
4ddce869b2 | ||
|
|
3bff65bc9b | ||
|
|
81dc369b03 | ||
|
|
388901d20c | ||
|
|
90dc1d6592 | ||
|
|
d0a425f403 | ||
|
|
2647e16a53 | ||
|
|
0869e41b28 | ||
|
|
5e9dfd7e94 | ||
|
|
dc302ea085 | ||
|
|
c771b270f3 | ||
|
|
5c8c5aaca6 | ||
|
|
2e01a01bf5 | ||
|
|
0705c500a5 | ||
|
|
c409145b25 | ||
|
|
457d51e303 | ||
|
|
69acdf329d | ||
|
|
c3f9ff563f | ||
|
|
d6b1570894 | ||
|
|
f853b997d7 | ||
|
|
ba12196a88 | ||
|
|
879f5092b7 | ||
|
|
6226717d18 | ||
|
|
784285605e | ||
|
|
71bd7b235a | ||
|
|
13204e4027 | ||
|
|
48dff49299 | ||
|
|
3ed8797097 | ||
|
|
a13ba2152a | ||
|
|
ed8474e132 | ||
|
|
da0a395c2d | ||
|
|
0bb182b4e7 | ||
|
|
1cfb41d6b3 | ||
|
|
65791a2812 | ||
|
|
ca50d5352f | ||
|
|
cb35164af7 | ||
|
|
88e9634541 | ||
|
|
e54780743a | ||
|
|
6aa4695322 | ||
|
|
deb55618fe | ||
|
|
c4dd81a0bc | ||
|
|
402225e3e8 | ||
|
|
73cc97f8ff | ||
|
|
86b9f12098 | ||
|
|
d6aa13f4b2 | ||
|
|
93678232d8 | ||
|
|
04d29c0bfb | ||
|
|
4dc08910c6 | ||
|
|
4c5a8e038d | ||
|
|
d06753403c | ||
|
|
d35f73f87f | ||
|
|
d190a1e042 | ||
|
|
dc30ee21fd | ||
|
|
fa615a1786 | ||
|
|
59349657da | ||
|
|
dbdf7a99f1 | ||
|
|
ee908d69ed | ||
|
|
d2e40ddf91 | ||
|
|
c6bc7ec185 | ||
|
|
f491d500a6 | ||
|
|
3ed94ababd | ||
|
|
96fdcf9e54 | ||
|
|
dd4538ce50 | ||
|
|
373d415a07 | ||
|
|
de3495d03f | ||
|
|
6871bc4eca | ||
|
|
6b95067732 | ||
|
|
99abb18825 | ||
|
|
c4971681e5 | ||
|
|
b277759f58 | ||
|
|
88a1229a23 | ||
|
|
c987ad03d2 | ||
|
|
6418c44e30 | ||
|
|
d4517fbe64 | ||
|
|
6d84278f86 | ||
|
|
5eeba5b34b | ||
|
|
f2cafe04ff | ||
|
|
d08ffa5eb4 | ||
|
|
89055ea452 | ||
|
|
d0c9541679 | ||
|
|
392dfc6352 | ||
|
|
157c747d18 | ||
|
|
f5a130a3b7 | ||
|
|
79e77ff65c | ||
|
|
dba8c3fd9d | ||
|
|
1faaf698fd | ||
|
|
27ce5604c2 | ||
|
|
1ad14e1334 | ||
|
|
fffd710005 | ||
|
|
770e4a885e | ||
|
|
254b5a3dfb | ||
|
|
b12562a639 | ||
|
|
db00ec914f | ||
|
|
73b69e2df6 | ||
|
|
bbaed49beb | ||
|
|
d6d7c48230 | ||
|
|
995c19d6da | ||
|
|
aef6e73a60 | ||
|
|
b8fc557543 | ||
|
|
be58f09ec0 | ||
|
|
e72ca29407 | ||
|
|
da7639aa2f | ||
|
|
e23b344824 | ||
|
|
b7b2a53851 | ||
|
|
cdd9d150c1 | ||
|
|
1d4b2a66fa | ||
|
|
c48972c4be | ||
|
|
ebe490b5e0 | ||
|
|
bddcd1d063 | ||
|
|
5ab1344819 | ||
|
|
ec7e8ac2d1 | ||
|
|
227fffd37e | ||
|
|
4858af2500 | ||
|
|
d1cd32b37c | ||
|
|
00dc10bcf7 | ||
|
|
fb5ce3e79d | ||
|
|
0e572b4272 | ||
|
|
b79be4daaa | ||
|
|
70912a29be | ||
|
|
01783dd2e4 | ||
|
|
3ddc5e0530 | ||
|
|
f008245c02 | ||
|
|
3d17af437f | ||
|
|
ec9470ebeb | ||
|
|
b0cc9fc900 | ||
|
|
a7629631d5 | ||
|
|
fcb715009f | ||
|
|
be07c062ff | ||
|
|
f30d7f952c | ||
|
|
aba478ed12 | ||
|
|
e944d1e4b5 | ||
|
|
7f864b037a | ||
|
|
c32a681e13 | ||
|
|
34761e4b0f | ||
|
|
51ca6adf54 | ||
|
|
b2ec929fb0 | ||
|
|
680bb353d3 | ||
|
|
f0cadc97d2 |
+59
-19
@@ -48,7 +48,7 @@ ENDIF(COMMAND CMAKE_POLICY)
|
||||
PROJECT(SCL)
|
||||
|
||||
if( CMAKE_BUILD_TYPE STREQUAL "" )
|
||||
message( "Debug build - to override, rerun cmake with '-DCMAKE_BUILD_TYPE=Release'." )
|
||||
message( "-- Debug build - to override, rerun cmake with '-DCMAKE_BUILD_TYPE=Release'." )
|
||||
set( CMAKE_BUILD_TYPE Debug )
|
||||
endif()
|
||||
|
||||
@@ -58,6 +58,9 @@ OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON)
|
||||
# build static libs by default
|
||||
OPTION(BUILD_STATIC_LIBS "Build static libraries" OFF)
|
||||
|
||||
OPTION(PYTHON_GENERATOR "Compile fedex_plus_python" ON)
|
||||
OPTION(CPP_GENERATOR "Compile fedex_plus" ON)
|
||||
|
||||
# Set version
|
||||
SET(SCL_VERSION_MAJOR "3")
|
||||
SET(SCL_VERSION_MINOR "2")
|
||||
@@ -95,6 +98,19 @@ IF(NOT WIN32)
|
||||
ENDIF(NOT UMASK)
|
||||
ENDIF(NOT WIN32)
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
# Testing option
|
||||
OPTION( ENABLE_TESTING "Enable unittesting framework" OFF )
|
||||
IF(ENABLE_TESTING)
|
||||
set( CMAKE_EXE_LINKER_FLAGS "-fprofile-arcs -ftest-coverage" ) #for code coverage
|
||||
set( CMAKE_SHARED_LINKER_FLAGS "-fprofile-arcs -ftest-coverage" )
|
||||
if( NOT DEFINED BUILD_SCHEMAS )
|
||||
set( BUILD_SCHEMAS "ALL" ) #test all schemas, unless otherwise specified
|
||||
endif()
|
||||
INCLUDE(CTest)
|
||||
ENABLE_TESTING()
|
||||
ENDIF(ENABLE_TESTING)
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
# The following logic is what allows binaries to run successfully in
|
||||
# the build directory AND install directory. Thanks to plplot for
|
||||
@@ -163,8 +179,8 @@ IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
IF ("${CMAKE_BUILD_TYPE}" MATCHES "Release")
|
||||
SET(CMAKE_INSTALL_PREFIX "/usr")
|
||||
ELSEIF ("${CMAKE_BUILD_TYPE}" MATCHES "Debug")
|
||||
MESSAGE("setting debug output dir")
|
||||
SET(CMAKE_INSTALL_PREFIX "${SCL_SOURCE_DIR}/../scl-install")
|
||||
MESSAGE("--- Setting debug install dir to ${CMAKE_INSTALL_PREFIX}")
|
||||
ELSE("${CMAKE_BUILD_TYPE}" MATCHES "Release")
|
||||
SET(CMAKE_INSTALL_PREFIX "/usr/local")
|
||||
ENDIF ("${CMAKE_BUILD_TYPE}" MATCHES "Release")
|
||||
@@ -191,35 +207,51 @@ INCLUDE(${SCL_CMAKE_DIR}/FindYACC.cmake)
|
||||
CHECK_INCLUDE_FILE(ndir.h HAVE_NDIR_H)
|
||||
CHECK_INCLUDE_FILE(stdarg.h HAVE_STDARG_H)
|
||||
CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H)
|
||||
CHECK_INCLUDE_FILE(sys/param.h HAVE_SYS_PARAM_H)
|
||||
CHECK_INCLUDE_FILE(sysent.h HAVE_SYSENT_H)
|
||||
CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
|
||||
CHECK_INCLUDE_FILE(dirent.h HAVE_DIRENT_H)
|
||||
CHECK_INCLUDE_FILE(stdbool.h HAVE_STDBOOL_H)
|
||||
CHECK_INCLUDE_FILE(process.h HAVE_PROCESS_H)
|
||||
CHECK_INCLUDE_FILE(io.h HAVE_IO_H)
|
||||
|
||||
CHECK_FUNCTION_EXISTS(abs HAVE_ABS)
|
||||
CHECK_FUNCTION_EXISTS(memcpy HAVE_MEMCPY)
|
||||
CHECK_FUNCTION_EXISTS(memmove HAVE_MEMMOVE)
|
||||
CHECK_FUNCTION_EXISTS(getopt HAVE_GETOPT)
|
||||
|
||||
CHECK_TYPE_SIZE("ssize_t" SSIZE_T)
|
||||
|
||||
#set GIT_COMMIT_ID to the output of `git describe`
|
||||
find_package(Git)
|
||||
if(GIT_FOUND)
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags RESULT_VARIABLE res_var OUTPUT_VARIABLE GIT_COM_ID )
|
||||
if( NOT ${res_var} EQUAL 0 )
|
||||
set( GIT_COMMIT_ID "unknown (git failed!)")
|
||||
message( WARNING "Git failed (not a repo?). Build will not contain git revision info." )
|
||||
endif()
|
||||
string( REPLACE "\n" "" GIT_COMMIT_ID ${GIT_COM_ID} )
|
||||
else()
|
||||
set( GIT_COMMIT_ID "unknown (git not found!)")
|
||||
message( WARNING "Git not found. Build will not contain git revision info." )
|
||||
endif()
|
||||
|
||||
# Now that all the tests are done, configure the scl_cf.h file:
|
||||
configure_file(${SCL_BINARY_DIR}/include/scl_cf.h.in ${SCL_BINARY_DIR}/include/scl_cf.h)
|
||||
|
||||
add_definitions(
|
||||
-DHAVE_CONFIG_H -Wall
|
||||
)
|
||||
################ create scl_version_string.h, http://stackoverflow.com/questions/3780667
|
||||
# Using 'ver_string' instead of 'scl_version_string.h' is a trick to force the
|
||||
# command to always execute when the custom target is built. It works because
|
||||
# a file by that name never exists.
|
||||
add_custom_target(version_string ALL
|
||||
DEPENDS ver_string )
|
||||
# creates scl_version_string.h using cmake script
|
||||
add_custom_command(OUTPUT ver_string ${CMAKE_CURRENT_BINARY_DIR}/include/scl_version_string.h
|
||||
COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${SCL_SOURCE_DIR}
|
||||
-DBINARY_DIR=${SCL_BINARY_DIR}
|
||||
-P ${SCL_CMAKE_DIR}/scl_version_string.cmake)
|
||||
# scl_version_string.h is a generated file
|
||||
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/include/scl_version_string.h
|
||||
PROPERTIES GENERATED TRUE
|
||||
HEADER_FILE_ONLY TRUE )
|
||||
################
|
||||
|
||||
if(MSVC)
|
||||
# add_definitions( -Wall )
|
||||
add_definitions( -D__MSVC__ -D__WIN32__ )
|
||||
# Disable warning for preferred usage of secure functions (example strcpy should be strcpy_s, ...)
|
||||
add_definitions( -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS )
|
||||
elseif(BORLAND)
|
||||
add_definitions( -D__BORLAND__ -D__WIN32__ )
|
||||
else()
|
||||
add_definitions( -pedantic -W -Wall -Wundef -Wfloat-equal -Wshadow -Winline -Wno-long-long )
|
||||
endif()
|
||||
|
||||
include_directories(
|
||||
${SCL_SOURCE_DIR}/include
|
||||
@@ -229,10 +261,18 @@ include_directories(
|
||||
ADD_SUBDIRECTORY(src/express)
|
||||
ADD_SUBDIRECTORY(src/exppp)
|
||||
ADD_SUBDIRECTORY(src/fedex_plus)
|
||||
ADD_SUBDIRECTORY(src/fedex_python)
|
||||
ADD_SUBDIRECTORY(src/clstepcore)
|
||||
ADD_SUBDIRECTORY(src/cleditor)
|
||||
ADD_SUBDIRECTORY(src/cldai)
|
||||
ADD_SUBDIRECTORY(src/clutils)
|
||||
ADD_SUBDIRECTORY(include)
|
||||
ADD_SUBDIRECTORY(data)
|
||||
IF(ENABLE_TESTING)
|
||||
ADD_SUBDIRECTORY( test )
|
||||
ENDIF(ENABLE_TESTING)
|
||||
ADD_SUBDIRECTORY(doc)
|
||||
|
||||
# this is for testing - 'make core' builds everything that isn't generated
|
||||
add_custom_target( core )
|
||||
add_dependencies( core stepdai check-express stepeditor fedex_plus )
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
set(CTEST_CUSTOM_WARNING_MATCH ${CTEST_CUSTOM_WARNING_MATCH} "{standard input}:[0-9][0-9]*: WARNING: ")
|
||||
set(CTEST_CUSTOM_ERROR_MATCH ${CTEST_CUSTOM_ERROR_MATCH} "{standard input}:[0-9][0-9]*: ERROR : ")
|
||||
|
||||
set(CTEST_PROJECT_NAME "StepClassLibrary")
|
||||
set(CTEST_NIGHTLY_START_TIME "00:00:00 EST")
|
||||
|
||||
set(CTEST_DROP_METHOD "http")
|
||||
set(CTEST_DROP_SITE "my.cdash.org")
|
||||
set(CTEST_DROP_LOCATION "/submit.php?project=StepClassLibrary")
|
||||
set(CTEST_DROP_SITE_CDASH TRUE)
|
||||
@@ -6,7 +6,7 @@ STEP Class Library.
|
||||
These installation requires that you have the following software
|
||||
available:
|
||||
|
||||
- C and C++ compilers (only gcc has been tested recently)
|
||||
- C and C++ compilers (Tested with GCC, MSVC, Embarcadero)
|
||||
- bison, byacc, or yacc (only bison has been tested recently)
|
||||
- flex or lex (only flex has been tested recently)
|
||||
- CMake
|
||||
@@ -21,12 +21,22 @@ Installation
|
||||
* Build system uses CMake now: configure, Makefile, and all
|
||||
autotools files have been removed, as has mkProbe.
|
||||
|
||||
* To build:
|
||||
cd scl
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
make
|
||||
* Building SCL from the command prompt:
|
||||
- cd scl
|
||||
- mkdir build
|
||||
- cd build
|
||||
- cmake ..
|
||||
- make
|
||||
- make install # optional
|
||||
|
||||
* Building SCL from the GUI:
|
||||
- Run cmake-gui, set it to build in scl/build
|
||||
- Select the correct build file generator
|
||||
- Press Configure
|
||||
- Change options as necessary, configuring again afterwards
|
||||
- If there are errors, some options may not be visible until the error is resolved
|
||||
- Press Generate
|
||||
- Open the main build file using your preferred build tool
|
||||
|
||||
* Build options (append to the 'cmake ..' line):
|
||||
-DBUILD_SCHEMAS="path/to/schema.exp;path/to/schema2.exp"
|
||||
@@ -39,8 +49,22 @@ Installation
|
||||
otherwise, the input and output files should be identical. If
|
||||
they are not identical, either the file does not match the
|
||||
schema, or SCL generated incorrect source code.
|
||||
-DDISABLE_P21READ=TRUE
|
||||
- disable p21read. probably not a useful option.
|
||||
-DBUILD_SCHEMAS=ALL
|
||||
- Added to make use of ctest easier. If BUILD_SCHEMAS == ALL,
|
||||
then CMake adds each *.exp file found in data/.
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
- this causes binaries to be built without debugging information
|
||||
- without this, cmake defaults to a Debug build
|
||||
|
||||
* Using CTest to test SCL:
|
||||
- Read the comments in run_ctest.cmake
|
||||
- (OPTIONAL) Create scl/../.SCL_CTEST_PREFS.cmake, and set variables
|
||||
in it (this file is required for CDash submission to be enabled)
|
||||
- Run tests with `ctest -S run_ctest.cmake`
|
||||
|
||||
* Using CTest to regenerate the schema matrix on the github SCL wiki:
|
||||
- Requires:
|
||||
- git
|
||||
- python
|
||||
- a clone of the git repo for the wiki at scl/../wiki-scl
|
||||
- run `ctest -S ctest_matrix.cmake`
|
||||
|
||||
@@ -1,5 +1,48 @@
|
||||
STEP Class Library ------ https://github.com/mpictor/StepClassLibrary
|
||||
STEP Class Library ------ http://github.com/mpictor/StepClassLibrary
|
||||
************************************************************************
|
||||
Release 0.5 (Feb 23, 2012)
|
||||
|
||||
New since v0.4:
|
||||
* MSVC and Embarcadero support, along with many warning fixes
|
||||
* Experimental Python support
|
||||
* Now handles most features of EXPRESS - all included schemas,
|
||||
with the exception of AP209 CD, are parsed without error. Enums are
|
||||
now in their own dictionary. Allow indexing on aggregates, generics,
|
||||
and binaries.
|
||||
* Changes to fedex_plus that improve the generated c++ - use a
|
||||
namespace, break up large static strings, make EXPRESS multiple
|
||||
inheritance work by not printing multiple copies of inherited members.
|
||||
All schemas now compile without error, but there are numerous warnings.
|
||||
* Exchange files: handle all comments, fill in some missing attributes.
|
||||
* More cleanup of source code, more documentation in scl/doc
|
||||
* Special thanks to @davyw and @tpaviot for their large contributions
|
||||
(MSVC and Python, respectively)
|
||||
************************************************************************
|
||||
Release 0.4 (Nov 13, 2011)
|
||||
|
||||
New since v0.3:
|
||||
* Improve p21read performance by ~30%
|
||||
* Improve fedex_plus performance by ~4300% (!)
|
||||
* A variable defined in a LOCAL is not required to have a type label
|
||||
(affected ap242,210e3,209)
|
||||
* Enums and entities are allowed to have the same names
|
||||
(affected ap242,210e3,209)
|
||||
* Remove the SCLP23 macro
|
||||
http://github.com/mpictor/StepClassLibrary/wiki/changelog-v0.4
|
||||
************************************************************************
|
||||
|
||||
Release 0.3 (Oct 29, 2011)
|
||||
|
||||
What's new since v0.2?
|
||||
|
||||
* Start using CTest
|
||||
* Add a number of schemas, update IFC2X4 to RC3, update AP235 to TC
|
||||
* Update the exchange file header schema to edition two; drop support
|
||||
for N279 files
|
||||
* In p21read, check that the schema name for the file and library match
|
||||
* Fix bug with exchange files that contain strings ending in 'S'
|
||||
************************************************************************
|
||||
|
||||
Release 0.2 (Oct 1, 2011)
|
||||
|
||||
What's new since v0.1?
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
***********************************************************************
|
||||
Step Class Library v0.1 -- https://github.com/mpictor/StepClassLibrary
|
||||
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. SCL could also work with ObjectStore, CORBA IDL,
|
||||
and C - but to my knowledge, that code has not been exercised in
|
||||
a very long time. Some of the ObjectStore code has been removed,
|
||||
and CORBA may follow it if there is no interest.
|
||||
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
|
||||
@@ -21,29 +19,7 @@ Step Class Library v0.1 -- https://github.com/mpictor/StepClassLibrary
|
||||
* Build system uses only CMake now: configure, Makefile, and all
|
||||
autotools files have been removed, as has mkProbe.
|
||||
|
||||
* To build:
|
||||
cd scl
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
make
|
||||
|
||||
* Build options (append to the 'cmake ..' line):
|
||||
-DBUILD_SCHEMAS="path/to/schema.exp;path/to/schema2.exp"
|
||||
- this generates c++ for the schema, and compiles it into a
|
||||
library. Also works with directories, as long as each dir only
|
||||
has one express file.
|
||||
- multiple files/directories are separated by semicolons
|
||||
- this also builds a 'p21read' program, which reads one step file
|
||||
and writes another. It may change whitespace or remove comments;
|
||||
otherwise, the input and output files should be identical. If
|
||||
they are not identical, either the file does not match the
|
||||
schema, or SCL generated incorrect source code.
|
||||
-DDISABLE_P21READ=TRUE
|
||||
- disable p21read. probably not a useful option.
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
- this causes binaries to be built without debugging information
|
||||
- without this, cmake defaults to a Debug build
|
||||
* Building and testing SCL - see the INSTALL file
|
||||
|
||||
***********************************************************************
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
0.5
|
||||
@@ -0,0 +1,48 @@
|
||||
#use git for a pretty commit id
|
||||
#uses 'git describe --tags', so tags are required in the repo
|
||||
#create a tag with 'git tag <name>' and 'git push --tags'
|
||||
|
||||
# http://stackoverflow.com/questions/3780667
|
||||
# http://www.cmake.org/pipermail/cmake/2009-February/027014.html
|
||||
|
||||
#scl_version_string.h defines scl_version() which returns a pretty commit description and a build timestamp.
|
||||
|
||||
set(VERS_FILE ${SOURCE_DIR}/SCL_VERSION.txt )
|
||||
if( EXISTS ${SOURCE_DIR}/.git )
|
||||
find_package(Git QUIET)
|
||||
if(GIT_FOUND)
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags RESULT_VARIABLE res_var OUTPUT_VARIABLE GIT_COMMIT_ID )
|
||||
if( NOT ${res_var} EQUAL 0 )
|
||||
file( READ ${VERS_FILE} GIT_COMMIT_ID LIMIT 255 )
|
||||
message( WARNING "Git failed (probably no tags in repo). Build will contain revision info from ${VERS_FILE}." )
|
||||
endif()
|
||||
else(GIT_FOUND)
|
||||
file( READ ${VERS_FILE} GIT_COMMIT_ID LIMIT 255 )
|
||||
message( WARNING "Git not found. Build will contain revision info from ${VERS_FILE}." )
|
||||
endif(GIT_FOUND)
|
||||
else()
|
||||
file( READ ${VERS_FILE} GIT_COMMIT_ID LIMIT 255 )
|
||||
message( WARNING "Git failed ('.git' not found). Build will contain revision info from ${VERS_FILE}." )
|
||||
endif()
|
||||
|
||||
string( REPLACE "\n" "" GIT_COMMIT_ID ${GIT_COMMIT_ID} )
|
||||
|
||||
set( vstring "//scl_version_string.h - written by cmake. Changes will be lost!\n"
|
||||
"#ifndef SCL_VERSION_STRING\n"
|
||||
"#define SCL_VERSION_STRING\n\n"
|
||||
"/*\n** Returns a string like \"test-1-g5e1fb47, built on <timestamp>\", where test is the\n"
|
||||
"** name of the last tagged git revision, 1 is the number of commits since that tag,\n"
|
||||
"** 'g' is unknown, 5e1fb47 is the first 7 chars of the git sha1 commit id, and\n"
|
||||
"** <timestamp> is the output of your system's 'date' command.\n*/\n\n"
|
||||
"const char* scl_version() {\n"
|
||||
" return \"git commit id ${GIT_COMMIT_ID}, built at \"__TIME__\" on \"__DATE__\;\n"
|
||||
"}\n\n"
|
||||
"#endif\n"
|
||||
)
|
||||
|
||||
file(WRITE scl_version_string.h.txt ${vstring} )
|
||||
# copy the file to the final header only if the version changes
|
||||
# reduces needless rebuilds
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
scl_version_string.h.txt ${BINARY_DIR}/include/scl_version_string.h)
|
||||
message("-- scl_version_string.h is up-to-date.")
|
||||
@@ -0,0 +1,57 @@
|
||||
# run_ctest.cmake
|
||||
# `ctest -S run_ctest.cmake`
|
||||
|
||||
set( CTEST_SOURCE_DIRECTORY . )
|
||||
set( CTEST_BINARY_DIRECTORY build_matrix )
|
||||
set( CTEST_CMAKE_GENERATOR "Unix Makefiles" )
|
||||
set( CTEST_MEMORYCHECK_COMMAND /usr/bin/valgrind )
|
||||
set( CTEST_INITIAL_CACHE "
|
||||
SITE:STRING=${CTEST_SITE}
|
||||
BUILDNAME:STRING=${CTEST_BUILD_NAME}
|
||||
ENABLE_TESTING:BOOL=ON
|
||||
CMAKE_BUILD_TYPE:STRING=Debug
|
||||
")
|
||||
|
||||
# find number of processors, for faster builds
|
||||
# from http://www.kitware.com/blog/home/post/63
|
||||
if(NOT DEFINED PROCESSOR_COUNT)
|
||||
# Unknown:
|
||||
set(PROCESSOR_COUNT 0)
|
||||
|
||||
# Linux:
|
||||
set(cpuinfo_file "/proc/cpuinfo")
|
||||
if(EXISTS "${cpuinfo_file}")
|
||||
file(STRINGS "${cpuinfo_file}" procs REGEX "^processor.: [0-9]+$")
|
||||
list(LENGTH procs PROCESSOR_COUNT)
|
||||
endif()
|
||||
|
||||
# Mac:
|
||||
if(APPLE)
|
||||
find_program(cmd_sys_pro "system_profiler")
|
||||
if(cmd_sys_pro)
|
||||
execute_process(COMMAND ${cmd_sys_pro} OUTPUT_VARIABLE info)
|
||||
string(REGEX REPLACE "^.*Total Number Of Cores: ([0-9]+).*$" "\\1"
|
||||
PROCESSOR_COUNT "${info}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Windows:
|
||||
if(WIN32)
|
||||
set(PROCESSOR_COUNT "$ENV{NUMBER_OF_PROCESSORS}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(CTEST_BUILD_FLAGS "-j${PROCESSOR_COUNT}")
|
||||
|
||||
|
||||
ctest_start(matrix)
|
||||
ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
|
||||
ctest_configure( BUILD "${CTEST_BINARY_DIRECTORY}" OPTIONS -DENABLE_TESTING=ON )
|
||||
ctest_build( BUILD "${CTEST_BINARY_DIRECTORY}" )
|
||||
message("running tests")
|
||||
ctest_test( BUILD "${CTEST_BINARY_DIRECTORY}" PARALLEL_LEVEL ${PROCESSOR_COUNT}
|
||||
INCLUDE_LABEL "cpp_schema_....*" )
|
||||
|
||||
message("running python script")
|
||||
execute_process( COMMAND python ../misc/wiki-scripts/update-matrix.py
|
||||
WORKING_DIRECTORY ${CTEST_BINARY_DIRECTORY} )
|
||||
+84
-61
@@ -1,44 +1,18 @@
|
||||
SET(ap203_data
|
||||
ap203/203wseds.exp
|
||||
ap203/cube1.p21
|
||||
ap203/cube2.p21
|
||||
ap203/g_r_assembly1.p21
|
||||
ap203/gasket1.p21
|
||||
ap203/gasket2.p21
|
||||
ap203/gasket3.p21
|
||||
ap203/hex_prism1.p21
|
||||
ap203/rod_aspect1.p21
|
||||
ap203/star1.p21
|
||||
)
|
||||
INSTALL(FILES ${ap203_data} DESTINATION ${DATA_DIR}/data/ap203)
|
||||
|
||||
SET(ap227_data
|
||||
ap227/ap227.exp
|
||||
ap227/mitre.p21
|
||||
ap227/mitre.step.txt
|
||||
)
|
||||
INSTALL(FILES ${ap227_data} DESTINATION ${DATA_DIR}/data/ap227)
|
||||
|
||||
SET(step_example_data
|
||||
example/example.exp
|
||||
)
|
||||
INSTALL(FILES ${step_example_data} DESTINATION ${DATA_DIR}/data/example)
|
||||
|
||||
|
||||
|
||||
SET(step_datafiles
|
||||
pdmnet.exp
|
||||
select.exp
|
||||
)
|
||||
INSTALL(FILES ${step_datafiles} DESTINATION ${DATA_DIR}/data)
|
||||
#this sets a property so that the target doesn't get built by 'make' or 'make all'
|
||||
#useful when testing generation of schema code/compiling schem libs/etc
|
||||
FUNCTION( TESTABLE_TARGET target )
|
||||
if(ENABLE_TESTING)
|
||||
set_target_properties( ${target} PROPERTIES EXCLUDE_FROM_ALL ON )
|
||||
endif()
|
||||
ENDFUNCTION( TESTABLE_TARGET )
|
||||
|
||||
# To build one or more schemas, configure with
|
||||
# 'cmake -DBUILD_SCHEMAS="path/to/schema.exp;path/to/schema2.exp"
|
||||
|
||||
# This function runs fedex on one express file. The generated source goes in a dir
|
||||
# in the build dir, and it is compiled into a library. A p21read executable is
|
||||
# compiled and linked to the lib, unless DISABLE_P21READ is true. p21read is used
|
||||
# to test the lib.
|
||||
# compiled and linked to the lib. p21read is used to test the lib.
|
||||
FUNCTION(BUILD_A_SCHEMA SCHEMA_FILE)
|
||||
if( EXISTS "${CMAKE_BINARY_DIR}/${SCHEMA_FILE}" ) #try absolute path. if that fails, must already be absolute.
|
||||
set( SCHEMA_FILE "${CMAKE_BINARY_DIR}/${SCHEMA_FILE}" )
|
||||
@@ -57,51 +31,100 @@ FUNCTION(BUILD_A_SCHEMA SCHEMA_FILE)
|
||||
endif()
|
||||
|
||||
# read the schema name from a line like 'SCHEMA AUTOMOTIVE_DESIGN;'
|
||||
file(STRINGS ${SCHEMA_FILE} SCHEMA_STATEMENT LIMIT_COUNT 1 REGEX "SCHEMA .*")
|
||||
file(STRINGS ${SCHEMA_FILE} SCHEMA_STATEMENT LIMIT_COUNT 1 REGEX "^SCHEMA .*")
|
||||
string(REGEX REPLACE "^SCHEMA \(.*\)\;$" "\\1" SCHEMA_N ${SCHEMA_STATEMENT} )
|
||||
string(TOUPPER ${SCHEMA_N} SCHEMA_NAME) #fedex_plus always uses upper case for file names
|
||||
string(TOUPPER ${SCHEMA_N} SCHEMA_LONG_NAME) #fedex_plus always uses upper case for file names
|
||||
get_filename_component( SCHEMA_SN ${SCHEMA_FILE} NAME )
|
||||
string( REGEX REPLACE "\(.*\).[Ee][Xx][Pp]" "\\1" SCHEMA_SHORT_NAME ${SCHEMA_SN} )
|
||||
|
||||
project( sdai_${SCHEMA_NAME} )
|
||||
message( STATUS "Generating code for ${SCHEMA_NAME}.")
|
||||
set( SCHEMA_DIR ${CMAKE_BINARY_DIR}/${SCHEMA_NAME} )
|
||||
project( sdai_${SCHEMA_SHORT_NAME} )
|
||||
message( STATUS "Generating code for ${SCHEMA_SHORT_NAME}.")
|
||||
set( SCHEMA_OUTPUT_DIR ${CMAKE_BINARY_DIR}/${SCHEMA_SHORT_NAME} )
|
||||
|
||||
#the names of the files that will be generated
|
||||
set( FEDEX_OUT ${SCHEMA_DIR}/compstructs.cc ${SCHEMA_DIR}/Sdaiclasses.h
|
||||
${SCHEMA_DIR}/schema.cc ${SCHEMA_DIR}/Sdai${SCHEMA_NAME}.cc
|
||||
${SCHEMA_DIR}/schema.h ${SCHEMA_DIR}/Sdai${SCHEMA_NAME}.h
|
||||
${SCHEMA_DIR}/SdaiAll.cc ${SCHEMA_DIR}/Sdai${SCHEMA_NAME}.init.cc )
|
||||
set( FEDEX_OUT ${SCHEMA_OUTPUT_DIR}/compstructs.cc ${SCHEMA_OUTPUT_DIR}/Sdaiclasses.h
|
||||
${SCHEMA_OUTPUT_DIR}/schema.cc ${SCHEMA_OUTPUT_DIR}/Sdai${SCHEMA_LONG_NAME}.cc
|
||||
${SCHEMA_OUTPUT_DIR}/schema.h ${SCHEMA_OUTPUT_DIR}/Sdai${SCHEMA_LONG_NAME}.h
|
||||
${SCHEMA_OUTPUT_DIR}/SdaiAll.cc ${SCHEMA_OUTPUT_DIR}/Sdai${SCHEMA_LONG_NAME}.init.cc )
|
||||
|
||||
# *cannot* use include_directories() because the includes keep piling up - if building
|
||||
# multiple schemas, each one will use the include dirs from all previous schemas. Since
|
||||
# one header (schema.h) is always named the same, this will not work. only workaround
|
||||
# seems to be set_target_properties( <target> PROPERTIES COMPILE_FLAGS <flags> )
|
||||
set( ${PROJECT_NAME}_COMPILE_FLAGS "-I${CMAKE_CURRENT_SOURCE_DIR} -I${SCL_SOURCE_DIR}/src/cldai -I${SCL_SOURCE_DIR}/src/cleditor -I${SCL_SOURCE_DIR}/src/clutils -I${SCHEMA_DIR} -I${SCL_SOURCE_DIR}/src/clstepcore -DHAVE_CONFIG_H" )
|
||||
set( ${PROJECT_NAME}_COMPILE_FLAGS "-I${CMAKE_CURRENT_SOURCE_DIR} -I${SCL_SOURCE_DIR}/src/cldai -I${SCL_SOURCE_DIR}/src/cleditor -I${SCL_SOURCE_DIR}/src/clutils -I${SCHEMA_OUTPUT_DIR} -I${SCL_SOURCE_DIR}/src/clstepcore" )
|
||||
|
||||
add_custom_command( OUTPUT ${SCHEMA_DIR}
|
||||
COMMAND cmake ARGS -E make_directory ${SCHEMA_DIR}
|
||||
COMMENT "Creating ${SCHEMA_DIR} for schema ${SCHEMA_NAME}")
|
||||
add_custom_target( generate_cpp_${SCHEMA_SHORT_NAME} SOURCES ${FEDEX_OUT} )
|
||||
add_custom_command( OUTPUT ${SCHEMA_OUTPUT_DIR}
|
||||
COMMAND cmake ARGS -E make_directory ${SCHEMA_OUTPUT_DIR}
|
||||
COMMENT "Creating ${SCHEMA_OUTPUT_DIR} for schema ${SCHEMA_SHORT_NAME}")
|
||||
add_custom_command( OUTPUT ${FEDEX_OUT}
|
||||
COMMAND fedex_plus ARGS ${SCHEMA_FILE}
|
||||
DEPENDS ${SCHEMA_FILE} ${SCHEMA_DIR}
|
||||
WORKING_DIRECTORY ${SCHEMA_DIR}
|
||||
COMMENT "Running fedex_plus for ${SCHEMA_NAME}..."
|
||||
DEPENDS ${SCHEMA_FILE} ${SCHEMA_OUTPUT_DIR}
|
||||
WORKING_DIRECTORY ${SCHEMA_OUTPUT_DIR}
|
||||
COMMENT "Running fedex_plus for ${SCHEMA_SHORT_NAME}..."
|
||||
VERBATIM )
|
||||
if(MSVC OR BORLAND)
|
||||
add_definitions( -DSCL_SCHEMA_DLL_EXPORTS )
|
||||
add_definitions( -DSCL_EXPRESS_DLL_IMPORTS )
|
||||
add_definitions( -DSCL_UTILS_DLL_IMPORTS )
|
||||
add_definitions( -DSCL_DAI_DLL_IMPORTS )
|
||||
add_definitions( -DSCL_CORE_DLL_IMPORTS )
|
||||
add_definitions( -DSCL_EDITOR_DLL_IMPORTS )
|
||||
endif()
|
||||
add_library( ${PROJECT_NAME} SHARED ${FEDEX_OUT} )
|
||||
target_link_libraries(${PROJECT_NAME} stepdai stepcore express stepeditor )
|
||||
target_link_libraries(${PROJECT_NAME} stepdai stepcore express stepeditor steputils )
|
||||
add_dependencies( ${PROJECT_NAME} generate_cpp_${SCHEMA_SHORT_NAME} )
|
||||
set_target_properties( ${PROJECT_NAME} PROPERTIES COMPILE_FLAGS
|
||||
${${PROJECT_NAME}_COMPILE_FLAGS} )
|
||||
|
||||
if( NOT DEFINED ${DISABLE_P21READ} )
|
||||
add_executable( "p21read_${PROJECT_NAME}" ${SCL_SOURCE_DIR}/src/test/p21read/p21read.cc )
|
||||
target_link_libraries( p21read_${PROJECT_NAME} ${PROJECT_NAME} )
|
||||
set_target_properties( "p21read_${PROJECT_NAME}" PROPERTIES COMPILE_FLAGS
|
||||
${${PROJECT_NAME}_COMPILE_FLAGS} )
|
||||
if(APPLE)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "-flat_namespace -undefined suppress")
|
||||
endif(APPLE)
|
||||
TESTABLE_TARGET( ${PROJECT_NAME} )
|
||||
|
||||
add_test( NAME generate_cpp_${SCHEMA_SHORT_NAME}
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
COMMAND ${CMAKE_COMMAND} --build .
|
||||
--target generate_cpp_${SCHEMA_SHORT_NAME}
|
||||
--config $<CONFIGURATION> )
|
||||
add_test( NAME build_cpp_${PROJECT_NAME}
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
COMMAND ${CMAKE_COMMAND} --build .
|
||||
--target p21read_${PROJECT_NAME}
|
||||
--config $<CONFIGURATION> )
|
||||
|
||||
# label the tests and set dependencies
|
||||
set_tests_properties( generate_cpp_${SCHEMA_SHORT_NAME} PROPERTIES LABELS cpp_schema_gen )
|
||||
set_tests_properties( build_cpp_${PROJECT_NAME} PROPERTIES DEPENDS generate_cpp_${SCHEMA_SHORT_NAME} LABELS cpp_schema_build )
|
||||
|
||||
if(MSVC OR BORLAND)
|
||||
add_executable( p21read_${PROJECT_NAME} ${SCL_SOURCE_DIR}/src/test/p21read/p21read.cc ${SCL_SOURCE_DIR}/src/fedex_plus/xgetopt.cc )
|
||||
else()
|
||||
add_executable( p21read_${PROJECT_NAME} ${SCL_SOURCE_DIR}/src/test/p21read/p21read.cc )
|
||||
endif()
|
||||
add_dependencies( p21read_${PROJECT_NAME} version_string )
|
||||
target_link_libraries( p21read_${PROJECT_NAME} ${PROJECT_NAME} )
|
||||
set_target_properties( p21read_${PROJECT_NAME} PROPERTIES COMPILE_FLAGS
|
||||
${${PROJECT_NAME}_COMPILE_FLAGS} )
|
||||
TESTABLE_TARGET( p21read_${PROJECT_NAME} )
|
||||
|
||||
#find all part 21 files in schema dir, add a test for each one
|
||||
get_filename_component( SCHEMA_DIR ${SCHEMA_FILE} PATH )
|
||||
file( GLOB_RECURSE P21_FILES ${SCHEMA_DIR}/*.stp ${SCHEMA_DIR}/*.step ${SCHEMA_DIR}/*.p21 )
|
||||
foreach( TEST_FILE ${P21_FILES} )
|
||||
get_filename_component( FNAME ${TEST_FILE} NAME_WE )
|
||||
add_test( NAME read_write_cpp_${SCHEMA_SHORT_NAME}_${FNAME}
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
COMMAND p21read_${PROJECT_NAME} ${TEST_FILE} )
|
||||
set_tests_properties( read_write_cpp_${SCHEMA_SHORT_NAME}_${FNAME} PROPERTIES DEPENDS build_cpp_${PROJECT_NAME} LABELS cpp_schema_rw )
|
||||
endforeach()
|
||||
|
||||
ENDFUNCTION(BUILD_A_SCHEMA)
|
||||
|
||||
if(NOT BUILD_SCHEMAS STREQUAL "" )
|
||||
foreach( ap ${BUILD_SCHEMAS} )
|
||||
BUILD_A_SCHEMA( ${ap} )
|
||||
endforeach()
|
||||
if( DEFINED BUILD_SCHEMAS )
|
||||
if( BUILD_SCHEMAS STREQUAL "ALL" )
|
||||
file( GLOB_RECURSE BUILD_SCHEMAS ${SCL_SOURCE_DIR}/data/*.exp )
|
||||
endif()
|
||||
foreach( ap ${BUILD_SCHEMAS} )
|
||||
BUILD_A_SCHEMA( ${ap} )
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+13
@@ -0,0 +1,13 @@
|
||||
data/ directory README
|
||||
|
||||
Layout
|
||||
------
|
||||
Each directory
|
||||
- must contain exactly one EXPRESS schema
|
||||
-- this schema must be useful to end users - i.e. not a schema crafted to test SCL
|
||||
- must be named after the numeric designation of the schema *if and only if*
|
||||
it is an IS STEP schema
|
||||
-- examples: ap214e3, AP235, etc (case insensitive)
|
||||
-- directories for schemas that are not STEP IS must be named differently
|
||||
- may contain part 21 files
|
||||
-- these files must be compatible with the schema
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Executable
+4856
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
Executable → Regular
+12200
-11881
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -0,0 +1,253 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- run doxyassist from scl root dir:
|
||||
../doxyassist/doxyassist.py doc/doxyassist.xml -->
|
||||
|
||||
<!-- The main tag provides the version (1.0 only for now). The type attribute
|
||||
is not required, and defaults to "generic". To use a different project handler,
|
||||
change its type. The "name" attribute defines the name of your configuration.
|
||||
Note: you must define and use the "http://simply-life.net/doxyassist/project.xsd"
|
||||
namespace for the XML file to be processed properly. -->
|
||||
<DoxyAssist xmlns="http://simply-life.net/doxyassist/doxyassist.xsd"
|
||||
xmlns:da="http://simply-life.net/doxyassist/doxyassist.xsd"
|
||||
version="1.0" type="generic" name="My DoxyAssist Project">
|
||||
<!-- You can set global settings here. The doxyfile attribute defines the
|
||||
Doxyfile to load by default. If none is given, or the template cannot be
|
||||
loaded, the default Doxygen settings are used as base.
|
||||
|
||||
You can include any setting here, and it will be passed to Doxygen
|
||||
(even if it is not a recognized setting). You can add as many as you like,
|
||||
overriding the template or default Doxyfile.
|
||||
|
||||
The given template file will never be overwritten by Doxygen Assistant.
|
||||
Instead the project specific version will be kept in memory and written
|
||||
to Doxygen over a pipe.
|
||||
|
||||
Note that some settings are always overridden due to project definitions.
|
||||
See the information near the projects for more information. Changing these
|
||||
settings here will have no effect when using the Doxygen Assistant to
|
||||
run Doxygen. -->
|
||||
<doxygen doxyfile="./doc/Doxyfile">
|
||||
<!-- A boolean setting is defined like this. This will write "YES" or "NO" for
|
||||
the specific setting in the Doxyfile passed to Doxygen. -->
|
||||
<bool name="CREATE_SUBDIRS">false</bool>
|
||||
<!-- A numeric setting is written like this. It will be written to the Doxyfile
|
||||
without quotes. -->
|
||||
<int name="TAB_SIZE">8</int>
|
||||
<!-- This is a single string setting. When writing this out to the doxyfile,
|
||||
it will be quoted and treated as a whole. -->
|
||||
<string name="OUTPUT_LANGUAGE">English</string>
|
||||
<!-- A list setting contains multiple elements, seperated by whitespace. Each
|
||||
individual item will be quoted and treated as a whole for Doxygen. By
|
||||
default a list replaces the existing setting. If the append attribute is
|
||||
set to true, then the items will be added to the existing set. -->
|
||||
<string name="HTML_HEADER">./doc/doxygen_custom_header.html</string>
|
||||
<list name="FILE_PATTERNS" append="false">
|
||||
<item>*.h</item>
|
||||
<item>*.c</item>
|
||||
<item>*.hh</item>
|
||||
<item>*.cc</item>
|
||||
<item>README</item>
|
||||
</list>
|
||||
</doxygen>
|
||||
|
||||
<!-- Settings for the Qt Help Collection to create. If not present, no
|
||||
help collection will be created. See
|
||||
http://doc.trolltech.com/assistant-custom-help-viewer.html for a
|
||||
description of all settings; the inner configuration is copied directly
|
||||
into the <assistant> section of the project file.
|
||||
|
||||
The collectionFile attribute contains the path to the collection file to
|
||||
create (this file must be writable). Additionally provide the name for the
|
||||
project file in the projectFile attribute. By default this is the same
|
||||
as the collection file, with an extension of "qhcp" instead of "qhc"
|
||||
|
||||
The storage attribute defines the subdirectory to place copies of Qt
|
||||
Compressed Help files in. The copyAction attribute defaults to making
|
||||
actual copies; this attribute can be set to "copy", "move" and "symlink".
|
||||
-->
|
||||
<qtHelp collectionFile="./doc/helpcollection.qhc"
|
||||
projectFile="./doc/helpcollection.qhcp"
|
||||
storage="./doc/qch" copyAction="copy">
|
||||
<title>StepClassLibrary</title>
|
||||
<startPage>qthelp://com.github.mpictor/doc/index.html</startPage>
|
||||
<!-- See http://doc.trolltech.com/assistant-custom-help-viewer.html for more
|
||||
settings in the <assistant> section. -->
|
||||
</qtHelp>
|
||||
<!-- Start a list of projects -->
|
||||
<projects>
|
||||
<!-- A project contains information about one Doxygen run, as well as
|
||||
as well as subprojects. It can have its completely own Doxygen
|
||||
configuration.
|
||||
|
||||
Various settings are determined by the Doxygen Assistant; they will
|
||||
always override the Doxyfile settings. All values are by default inherited
|
||||
from the parent project, or empty if there is nothing to inherit from,
|
||||
unless noted otherwise. Note that even if a value is empty, this will
|
||||
override the Doxyfile settings. The following Doxyfile settings are
|
||||
overridden:
|
||||
- PROJECT_NAME
|
||||
- PROJECT_VERSION
|
||||
- INPUT
|
||||
- EXCLUDE
|
||||
- OUTPUT_DIRECTORY
|
||||
- WARN_LOGFILE
|
||||
- DOCSET_BUNDLE_ID
|
||||
- QCH_FILE
|
||||
- QHP_NAMESPACE
|
||||
- QHP_CUST_FILTER_NAME
|
||||
- QHP_CUST_FILTER_ATTRS
|
||||
- QHP_SECT_FILTER_ATTRS
|
||||
-->
|
||||
<project>
|
||||
<!-- The name of the project -->
|
||||
<name>StepClassLibrary</name>
|
||||
<!-- The version number of the documentation -->
|
||||
<version>0.2</version>
|
||||
<!-- Whether to build version specific documentation for the projects or not.
|
||||
Note that if this is set, Qt Help filters may become invalid when newer
|
||||
versions of the documentation are built. Due to user-specific settings,
|
||||
it may be necessary to remove the user specific cache files to reset
|
||||
the filters. It does however allow you to keep documentation of multiple
|
||||
versions next to each other. Default value is false.
|
||||
|
||||
Note that regardless of this setting, the version is still used in the
|
||||
PROJECT_NUMBER setting, as well as the PROJECT_NAME of subprojects -->
|
||||
<versionSpecific>false</versionSpecific>
|
||||
<!-- Full path to the directory with documented source code. You can add
|
||||
multiple input lines if you need to add multiple locations.
|
||||
|
||||
If you want documentation of subprojects to be explicitly included as well,
|
||||
you must list the EXACT same input directories in the parent; this
|
||||
will prevent the directories from being excluded. -->
|
||||
<input>./src</input>
|
||||
<input>./include</input>
|
||||
<exclude>./include/exppp</exclude>
|
||||
<exclude>./include/express</exclude>
|
||||
<!-- <input>./include/exppp</input>
|
||||
<input>./include/express</input>
|
||||
<input>./src/cldai</input>
|
||||
<input>./src/cleditor</input>
|
||||
<input>./src/clprobe-ui</input>
|
||||
<input>./src/clstepcore</input>
|
||||
<input>./src/clutils</input>
|
||||
<input>./src/exppp</input>
|
||||
<input>./src/express</input>
|
||||
<input>./src/fedex_plus</input>
|
||||
<input>./src/test</input>-->
|
||||
<!-- A list of files/paths to exclude. Add one <exclude> tag per path to
|
||||
exclude. This will automatically be expanded to exclude input directories
|
||||
of subprojects, and prevent mangled documentation. -->
|
||||
<!-- <exclude>/path/to/my-application/src/excluded</exclude> -->
|
||||
<!-- Directory to store Doxygen output for this project. Note that within
|
||||
this directory, a subdirectory is created based on the project name.
|
||||
Additionally, if the <versionspecific> setting has a value of true,
|
||||
another subdirectory based on the version number will be created (e.g.
|
||||
"/path/to/my-application/out/my-application/1.0". -->
|
||||
<output>./doc/doxygen</output>
|
||||
<!-- The directory where error and log files will be stored. Log and error
|
||||
files will be named "my-application.1-0.log" and
|
||||
"my-application.1-0-error.log" respectively. -->
|
||||
<logDirectory>./doc/doxygen/log</logDirectory>
|
||||
<!-- Optional base namespace for this application. This is prefixed to the
|
||||
normalized project name and version number (if version specific is set).
|
||||
The full namespace would now become "com.mycompany.my-application.1-0"
|
||||
in this example. -->
|
||||
<namespace>doc</namespace>
|
||||
<!-- You can define a <doxygen> block, in which you set project specific
|
||||
settings. This will hold for this and all subprojects. See also the
|
||||
<doxygen> block above. If you provide a doxyfile attribute, that
|
||||
file will be used as template instead; this also implies all settings
|
||||
in parent projects including the main doxygen settings will be
|
||||
discarded. -->
|
||||
<!-- <doxygen>
|
||||
<list name="FILE_PATTERNS" append="true">
|
||||
<item>*.module</item>
|
||||
<item>*.inc</item>
|
||||
<item>*.html</item>
|
||||
</list>
|
||||
</doxygen>-->
|
||||
|
||||
<!-- You can define subprojects here. Input directories of subprojects are
|
||||
automatically excluded from parent projects. As such, documentation will
|
||||
not be mixed.
|
||||
|
||||
Note that by default _all_ settings will be inherited from the parent.
|
||||
-->
|
||||
<project>
|
||||
<!-- The name of the subproject -->
|
||||
<name>CLStepCore</name>
|
||||
<version> </version>
|
||||
<!-- And its version -->
|
||||
<!-- <version>1.1</version> -->
|
||||
<!-- Whether to build version specific documentation for this subproject.
|
||||
If the parent is version specific, that setting will still be
|
||||
adhered to. If this is left out, the parent setting is inherited. -->
|
||||
<!-- <versionSpecific>false</versionSpecific> -->
|
||||
<!-- Full path to the directory with documented source code -->
|
||||
<input>./src/clstepcore</input>
|
||||
<!-- Subproject excluded directories -->
|
||||
<!-- <exclude>/path/to/my-application/src/mymodule/excluded</exclude> -->
|
||||
<!-- Optional output directory. If omitted, the parent project's output
|
||||
directory is inherited. The actual output is written to the same
|
||||
subdirectory of the parent project, in an extra subdirectory with a
|
||||
name based on the project name and optionally version. -->
|
||||
<!-- <output>/path/to/my-application/out</output> -->
|
||||
<!-- The optional log directory. If omitted, the parent project's log
|
||||
directory is inherited. Files will be named using project name and
|
||||
version number (if versionSpecific is true), including the parent
|
||||
project's information. Log and error files will, in this example,
|
||||
be named "my-application.1-0.my-module.log" and
|
||||
"my-application.1-0.my-module.err" respectively. -->
|
||||
<!-- <logDirectory>/path/to/my-application/doc/log</logDirectory> -->
|
||||
<!-- Additional part to prefix the project's subnamespace with. In this
|
||||
example, the namespace would become
|
||||
"com.mycompany.my-application.1-0.modules.my-module". -->
|
||||
<!-- <namespace>modules</namespace> -->
|
||||
<!-- You can add subprojects to subprojects as well, if you like -->
|
||||
</project>
|
||||
<project>
|
||||
<name>CLDAI</name>
|
||||
<version> </version>
|
||||
<input>./src/cldai</input>
|
||||
</project>
|
||||
<project>
|
||||
<name>CLEditor</name>
|
||||
<version> </version>
|
||||
<input>./src/cleditor</input>
|
||||
</project>
|
||||
<project>
|
||||
<name>CLProbe-ui</name>
|
||||
<version> </version>
|
||||
<input>./src/clprobe-ui</input>
|
||||
</project>
|
||||
<project>
|
||||
<name>CLUtils</name>
|
||||
<version> </version>
|
||||
<input>./src/clutils</input>
|
||||
</project>
|
||||
<project>
|
||||
<name>ExPPP</name>
|
||||
<version> </version>
|
||||
<input>./src/exppp</input>
|
||||
<input>./include/exppp</input>
|
||||
</project>
|
||||
<project>
|
||||
<name>Express</name>
|
||||
<version> </version>
|
||||
<input>./src/express</input>
|
||||
<input>./include/express</input>
|
||||
</project>
|
||||
<project>
|
||||
<name>Fedex Plus</name>
|
||||
<version> </version>
|
||||
<input>./src/fedex_plus</input>
|
||||
</project>
|
||||
<project>
|
||||
<name>Tests</name>
|
||||
<version> </version>
|
||||
<input>./src/test</input>
|
||||
</project>
|
||||
</project>
|
||||
<!-- And you can even add more top level projects to collect. -->
|
||||
</projects>
|
||||
</DoxyAssist>
|
||||
@@ -0,0 +1,62 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>$title</title>
|
||||
<link href="$relpath$tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="$relpath$doxygen.css" rel="stylesheet" type="text/css" />
|
||||
$treeview
|
||||
$search
|
||||
$mathjax
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div! -->
|
||||
<!--BEGIN TITLEAREA-->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<!--BEGIN PROJECT_LOGO-->
|
||||
<td id="projectlogo"><img alt="Logo" src="$relpath$$projectlogo"></td>
|
||||
<!--END PROJECT_LOGO-->
|
||||
<!--BEGIN PROJECT_NAME-->
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">$projectname
|
||||
<!--BEGIN PROJECT_NUMBER--> <span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER-->
|
||||
</div>
|
||||
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
|
||||
</td>
|
||||
<!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME-->
|
||||
<!--BEGIN PROJECT_BRIEF-->
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectbrief">$projectbrief</div>
|
||||
</td>
|
||||
<!--END PROJECT_BRIEF-->
|
||||
<!--END !PROJECT_NAME-->
|
||||
<!--BEGIN DISABLE_INDEX-->
|
||||
<!--BEGIN SEARCHENGINE-->
|
||||
<td>$searchbox</td>
|
||||
<!--END SEARCHENGINE-->
|
||||
<!--END DISABLE_INDEX-->
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!--END TITLEAREA-->
|
||||
<!-- add module list -->
|
||||
<div id="navrow0" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="../../doc.StepClassLibrary/doxygen-html/index.html"><span>Main</span></a></li>
|
||||
<li><a href="../../doc.StepClassLibrary.CLDAI/doxygen-html/index.html"><span>CLDAI</span></a></li>
|
||||
<li><a href="../../doc.StepClassLibrary.CLEditor/doxygen-html/index.html"><span>CLEditor</span></a></li>
|
||||
<li><a href="../../doc.StepClassLibrary.CLProbe-ui/doxygen-html/index.html"><span>CLProbe-ui</span></a></li>
|
||||
<li><a href="../../doc.StepClassLibrary.CLStepCore/doxygen-html/index.html"><span>CLStepCore</span></a></li>
|
||||
<li><a href="../../doc.StepClassLibrary.CLUtils/doxygen-html/index.html"><span>CLUtils</span></a></li>
|
||||
<li><a href="../../doc.StepClassLibrary.ExPPP/doxygen-html/index.html"><span>ExPPP</span></a></li>
|
||||
<li><a href="../../doc.StepClassLibrary.Express/doxygen-html/index.html"><span>Express</span></a></li>
|
||||
<li><a href="../../doc.StepClassLibrary.Fedex-Plus/doxygen-html/index.html"><span>Fedex-Plus</span></a></li>
|
||||
<li><a href="../../doc.StepClassLibrary.Tests/doxygen-html/index.html"><span>Tests</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- end module list -->
|
||||
+6105
File diff suppressed because it is too large
Load Diff
+49
-48
@@ -1,57 +1,58 @@
|
||||
extern int exppp_nesting_indent; /* default nesting indent */
|
||||
extern int exppp_continuation_indent; /* default nesting indent for */
|
||||
#include <scl_export.h>
|
||||
|
||||
extern SCL_EXPPP_EXPORT int exppp_nesting_indent; /* default nesting indent */
|
||||
extern SCL_EXPPP_EXPORT int exppp_continuation_indent; /* default nesting indent for */
|
||||
/* continuation lines */
|
||||
extern int exppp_linelength; /* leave some slop for closing */
|
||||
extern SCL_EXPPP_EXPORT int exppp_linelength; /* leave some slop for closing */
|
||||
/* parens. \n is not included in */
|
||||
/* this count either */
|
||||
extern bool exppp_rmpp; /* if true, create rmpp */
|
||||
extern bool exppp_alphabetize; /* if true, alphabetize */
|
||||
extern bool exppp_terse; /* don't describe action to stdout */
|
||||
extern bool exppp_reference_info; /* if true, add commentary */
|
||||
extern SCL_EXPPP_EXPORT bool exppp_rmpp; /* if true, create rmpp */
|
||||
extern SCL_EXPPP_EXPORT bool exppp_alphabetize; /* if true, alphabetize */
|
||||
extern SCL_EXPPP_EXPORT bool exppp_terse; /* don't describe action to stdout */
|
||||
extern SCL_EXPPP_EXPORT bool exppp_reference_info; /* if true, add commentary */
|
||||
/* about where things came from */
|
||||
extern bool exppp_preserve_comments; /* if true, preserve comments where */
|
||||
extern SCL_EXPPP_EXPORT bool exppp_preserve_comments; /* if true, preserve comments where */
|
||||
/* possible */
|
||||
extern char * exppp_output_filename; /* force output filename */
|
||||
extern bool exppp_output_filename_reset; /* if true, force output filename */
|
||||
extern SCL_EXPPP_EXPORT char * exppp_output_filename; /* force output filename */
|
||||
|
||||
void EXPRESSout( Express e );
|
||||
SCL_EXPPP_EXPORT void EXPRESSout( Express e );
|
||||
|
||||
void ENTITYout( Entity e );
|
||||
void EXPRout( Expression expr );
|
||||
void FUNCout( Function f );
|
||||
void PROCout( Procedure p );
|
||||
void RULEout( Rule r );
|
||||
char * SCHEMAout( Schema s );
|
||||
void SCHEMAref_out( Schema s );
|
||||
void STMTout( Statement s );
|
||||
void TYPEout( Type t );
|
||||
void TYPEhead_out( Type t );
|
||||
void TYPEbody_out( Type t );
|
||||
void WHEREout( Linked_List w );
|
||||
SCL_EXPPP_EXPORT void ENTITYout( Entity e );
|
||||
SCL_EXPPP_EXPORT void EXPRout( Expression expr );
|
||||
SCL_EXPPP_EXPORT void FUNCout( Function f );
|
||||
SCL_EXPPP_EXPORT void PROCout( Procedure p );
|
||||
SCL_EXPPP_EXPORT void RULEout( Rule r );
|
||||
SCL_EXPPP_EXPORT char * SCHEMAout( Schema s );
|
||||
SCL_EXPPP_EXPORT void SCHEMAref_out( Schema s );
|
||||
SCL_EXPPP_EXPORT void STMTout( Statement s );
|
||||
SCL_EXPPP_EXPORT void TYPEout( Type t );
|
||||
SCL_EXPPP_EXPORT void TYPEhead_out( Type t );
|
||||
SCL_EXPPP_EXPORT void TYPEbody_out( Type t );
|
||||
SCL_EXPPP_EXPORT void WHEREout( Linked_List w );
|
||||
|
||||
char * REFto_string( Dictionary refdict, Linked_List reflist, char * type, int level );
|
||||
char * ENTITYto_string( Entity e );
|
||||
char * SUBTYPEto_string( Expression e );
|
||||
char * EXPRto_string( Expression expr );
|
||||
char * FUNCto_string( Function f );
|
||||
char * PROCto_string( Procedure p );
|
||||
char * RULEto_string( Rule r );
|
||||
char * SCHEMAref_to_string( Schema s );
|
||||
char * STMTto_string( Statement s );
|
||||
char * TYPEto_string( Type t );
|
||||
char * TYPEhead_to_string( Type t );
|
||||
char * TYPEbody_to_string( Type t );
|
||||
char * WHEREto_string( Linked_List w );
|
||||
SCL_EXPPP_EXPORT char * REFto_string( Dictionary refdict, Linked_List reflist, char * type, int level );
|
||||
SCL_EXPPP_EXPORT char * ENTITYto_string( Entity e );
|
||||
SCL_EXPPP_EXPORT char * SUBTYPEto_string( Expression e );
|
||||
SCL_EXPPP_EXPORT char * EXPRto_string( Expression expr );
|
||||
SCL_EXPPP_EXPORT char * FUNCto_string( Function f );
|
||||
SCL_EXPPP_EXPORT char * PROCto_string( Procedure p );
|
||||
SCL_EXPPP_EXPORT char * RULEto_string( Rule r );
|
||||
SCL_EXPPP_EXPORT char * SCHEMAref_to_string( Schema s );
|
||||
SCL_EXPPP_EXPORT char * STMTto_string( Statement s );
|
||||
SCL_EXPPP_EXPORT char * TYPEto_string( Type t );
|
||||
SCL_EXPPP_EXPORT char * TYPEhead_to_string( Type t );
|
||||
SCL_EXPPP_EXPORT char * TYPEbody_to_string( Type t );
|
||||
SCL_EXPPP_EXPORT char * WHEREto_string( Linked_List w );
|
||||
|
||||
int REFto_buffer( Dictionary refdict, Linked_List reflist, char * type, int level, char * buffer, int length );
|
||||
int ENTITYto_buffer( Entity e, char * buffer, int length );
|
||||
int EXPRto_buffer( Expression e, char * buffer, int length );
|
||||
int FUNCto_buffer( Function e, char * buffer, int length );
|
||||
int PROCto_buffer( Procedure e, char * buffer, int length );
|
||||
int RULEto_buffer( Rule e, char * buffer, int length );
|
||||
int SCHEMAref_to_buffer( Schema s, char * buffer, int length );
|
||||
int STMTto_buffer( Statement s, char * buffer, int length );
|
||||
int TYPEto_buffer( Type t, char * buffer, int length );
|
||||
int TYPEhead_to_buffer( Type t, char * buffer, int length );
|
||||
int TYPEbody_to_buffer( Type t, char * buffer, int length );
|
||||
int WHEREto_buffer( Linked_List w, char * buffer, int length );
|
||||
SCL_EXPPP_EXPORT int REFto_buffer( Dictionary refdict, Linked_List reflist, char * type, int level, char * buffer, int length );
|
||||
SCL_EXPPP_EXPORT int ENTITYto_buffer( Entity e, char * buffer, int length );
|
||||
SCL_EXPPP_EXPORT int EXPRto_buffer( Expression e, char * buffer, int length );
|
||||
SCL_EXPPP_EXPORT int FUNCto_buffer( Function e, char * buffer, int length );
|
||||
SCL_EXPPP_EXPORT int PROCto_buffer( Procedure e, char * buffer, int length );
|
||||
SCL_EXPPP_EXPORT int RULEto_buffer( Rule e, char * buffer, int length );
|
||||
SCL_EXPPP_EXPORT int SCHEMAref_to_buffer( Schema s, char * buffer, int length );
|
||||
SCL_EXPPP_EXPORT int STMTto_buffer( Statement s, char * buffer, int length );
|
||||
SCL_EXPPP_EXPORT int TYPEto_buffer( Type t, char * buffer, int length );
|
||||
SCL_EXPPP_EXPORT int TYPEhead_to_buffer( Type t, char * buffer, int length );
|
||||
SCL_EXPPP_EXPORT int TYPEbody_to_buffer( Type t, char * buffer, int length );
|
||||
SCL_EXPPP_EXPORT int WHEREto_buffer( Linked_List w, char * buffer, int length );
|
||||
|
||||
+22
-43
@@ -1,10 +1,8 @@
|
||||
#ifndef ALGORITHM_H
|
||||
#define ALGORITHM_H
|
||||
|
||||
/* $Id: alg.h,v 1.4 1997/01/21 19:17:11 dar Exp $ */
|
||||
|
||||
/************************************************************************
|
||||
** Module: Algorithm
|
||||
/** **********************************************************************
|
||||
** Module: Algorithm \file alg.h
|
||||
** Description: This module implements the Algorithm abstraction. An
|
||||
** algorithm can be a procedure, a function, or a rule. It consists
|
||||
** of a name, a return type (for functions and rules), a list of
|
||||
@@ -69,50 +67,47 @@ typedef struct Where_ * Where;
|
||||
/* hidden type definitions */
|
||||
/***************************/
|
||||
|
||||
/* each formal tag has one of these structs allocated to it */
|
||||
/* As each (real) call is resolved, the tag->type is temporarily borrowed */
|
||||
/** each formal tag has one of these structs allocated to it
|
||||
* As each (real) call is resolved, the tag->type is temporarily borrowed
|
||||
*/
|
||||
struct tag {
|
||||
char * name;
|
||||
Type type;
|
||||
};
|
||||
|
||||
/* location of fulltext of algorithm in source file */
|
||||
/** location of fulltext of algorithm in source file */
|
||||
struct FullText {
|
||||
char * filename;
|
||||
unsigned int start, end;
|
||||
};
|
||||
|
||||
/* 'parameters' are lists of lists of (type) expressions */
|
||||
/** 'parameters' are lists of lists of (type) expressions */
|
||||
struct Procedure_ {
|
||||
int pcount; /* # of parameters */
|
||||
int tag_count; /* # of different parameter tags */
|
||||
int pcount; /**< # of parameters */
|
||||
int tag_count; /**< # of different parameter tags */
|
||||
Linked_List parameters;
|
||||
Linked_List body;
|
||||
struct FullText text;
|
||||
int builtin; /* builtin if true */
|
||||
int builtin; /**< builtin if true */
|
||||
};
|
||||
|
||||
struct Function_ {
|
||||
int pcount; /* # of parameters */
|
||||
int tag_count; /* # of different parameter/return value tags */
|
||||
int pcount; /**< # of parameters */
|
||||
int tag_count; /**< # of different parameter/return value tags */
|
||||
Linked_List parameters;
|
||||
Linked_List body;
|
||||
Type return_type;
|
||||
struct FullText text;
|
||||
int builtin; /* builtin if true */
|
||||
int builtin; /**< builtin if true */
|
||||
};
|
||||
|
||||
struct Rule_ {
|
||||
Linked_List parameters;
|
||||
Linked_List body;
|
||||
struct FullText text;
|
||||
/*
|
||||
Linked_List where;
|
||||
moved to Scope - DEL 22-Jul-1993
|
||||
*/
|
||||
};
|
||||
|
||||
/* define a where clause */
|
||||
/** define a where clause */
|
||||
struct Where_ {
|
||||
Symbol * label;
|
||||
Expression expr;
|
||||
@@ -128,11 +123,11 @@ struct Where_ {
|
||||
#include "decstart.h"
|
||||
#endif /* ALGORITHM_C */
|
||||
|
||||
GLOBAL struct freelist_head ALG_fl;
|
||||
GLOBAL struct freelist_head FUNC_fl;
|
||||
GLOBAL struct freelist_head RULE_fl;
|
||||
GLOBAL struct freelist_head PROC_fl;
|
||||
GLOBAL struct freelist_head WHERE_fl;
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct freelist_head ALG_fl;
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct freelist_head FUNC_fl;
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct freelist_head RULE_fl;
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct freelist_head PROC_fl;
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct freelist_head WHERE_fl;
|
||||
|
||||
#include "de_end.h"
|
||||
|
||||
@@ -175,32 +170,16 @@ GLOBAL struct freelist_head WHERE_fl;
|
||||
#define FUNCget_return_type(f) ((f)->u.func->return_type)
|
||||
#define RULEget_where(r) ((r)->where)
|
||||
#define RULEput_where(r,w) ((r)->where = (w))
|
||||
/*
|
||||
#define RULEget_where_clause(r) ((r)->u.rule->where)
|
||||
*/
|
||||
#define WHEREget_label(w) ((w)->label)
|
||||
#define WHEREget_expression(w) ((w)->expr)
|
||||
|
||||
#if 0
|
||||
extern void ALGput_parameters PROTO( ( Algorithm, Linked_List ) );
|
||||
extern void ALGput_body PROTO( ( Algorithm, Linked_List ) );
|
||||
extern void FUNCput_return_type PROTO( ( Algorithm, Type ) );
|
||||
extern void RULEput_where_clause PROTO( ( Algorithm, Linked_List ) );
|
||||
#endif
|
||||
|
||||
/***********************/
|
||||
/* function prototypes */
|
||||
/***********************/
|
||||
|
||||
extern Scope ALGcreate PROTO( ( char ) );
|
||||
extern void ALGinitialize PROTO( ( void ) );
|
||||
extern void ALGput_full_text PROTO( ( Scope, int, int ) );
|
||||
extern SCL_EXPRESS_EXPORT Scope ALGcreate PROTO( ( char ) );
|
||||
extern SCL_EXPRESS_EXPORT void ALGinitialize PROTO( ( void ) );
|
||||
extern SCL_EXPRESS_EXPORT void ALGput_full_text PROTO( ( Scope, int, int ) );
|
||||
|
||||
/********************/
|
||||
/* inline functions */
|
||||
/********************/
|
||||
|
||||
#if supports_inline_functions || defined(ALGORITHM_C)
|
||||
#endif /* supports_inline_functions || defined(ALGORITHM_C) */
|
||||
|
||||
#endif /* ALGORITHM_H */
|
||||
|
||||
+9
-16
@@ -1,7 +1,6 @@
|
||||
#ifndef BASIC_H
|
||||
#define BASIC_H
|
||||
|
||||
/* $Id: basic.h,v 1.8 1997/10/22 16:06:28 sauderd Exp $ */
|
||||
|
||||
/*
|
||||
* This work was supported by the United States Government, and is
|
||||
@@ -72,14 +71,19 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <scl_cf.h>
|
||||
#include <scl_export.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/******************************/
|
||||
/* type Boolean and constants */
|
||||
/******************************/
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#ifdef HAVE_STDBOOL_H
|
||||
# include <stdbool.h>
|
||||
#else
|
||||
# include <scl_stdbool.h>
|
||||
#endif
|
||||
|
||||
/************************/
|
||||
/* Generic pointer type */
|
||||
@@ -107,7 +111,7 @@ typedef int ( *intFuncptr )();
|
||||
/******************************/
|
||||
|
||||
#if !defined(static_inline)
|
||||
#if !defined(__GNUC__) || defined(__STRICT_ANSI)
|
||||
#if (!defined(__GNUC__) && !defined(__MSVC__)) || defined(__STRICT_ANSI)
|
||||
#define static_inline
|
||||
#undef supports_inline_functions
|
||||
#else
|
||||
@@ -132,7 +136,7 @@ typedef int ( *intFuncptr )();
|
||||
# define PROTO(x) x
|
||||
# else
|
||||
|
||||
# ifdef __CLCC__
|
||||
# if defined(__CLCC__) || defined(__MSVC__) || defined(__BORLAND__)
|
||||
# define PROTO(x) x
|
||||
#else
|
||||
# define PROTO(x) ()
|
||||
@@ -141,17 +145,6 @@ typedef int ( *intFuncptr )();
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
/* pacify IBM's c89 */
|
||||
#if !defined(_POSIX_SOURCE)
|
||||
#define _POSIX_SOURCE
|
||||
#endif
|
||||
|
||||
/* backward compatibility */
|
||||
typedef char * String;
|
||||
#define STRINGequal(x,y) (0 == strcmp((x),(y)))
|
||||
|
||||
|
||||
#endif /* */
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
#ifndef CASE_ITEM_H
|
||||
#define CASE_ITEM_H
|
||||
|
||||
/* $Id: caseitem.h,v 1.3 1997/01/21 19:17:11 dar Exp $ */
|
||||
|
||||
/************************************************************************
|
||||
** Module: Case_Item
|
||||
/** **********************************************************************
|
||||
** Module: Case_Item \file caseitem.h
|
||||
** Description: This module implements the Case_Item abstraction. A
|
||||
** case item represents a single branch in a case statement; it
|
||||
** thus consists of a list of labels and a statement to execute
|
||||
@@ -78,7 +76,7 @@ struct Case_Item_ {
|
||||
#include "decstart.h"
|
||||
#endif /*CASE_ITEM_C*/
|
||||
|
||||
GLOBAL struct freelist_head CASE_IT_fl;
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct freelist_head CASE_IT_fl;
|
||||
|
||||
#include "de_end.h"
|
||||
|
||||
@@ -96,14 +94,7 @@ GLOBAL struct freelist_head CASE_IT_fl;
|
||||
#define CASE_IT_new() (struct Case_Item_ *)MEM_new(&CASE_IT_fl)
|
||||
#define CASE_IT_destroy(x) MEM_destroy(&CASE_IT_fl,(Freelist *)(Generic)x)
|
||||
|
||||
extern Case_Item CASE_ITcreate PROTO( ( Linked_List, struct Statement_ * ) );
|
||||
extern void CASE_ITinitialize PROTO( ( void ) );
|
||||
|
||||
/********************/
|
||||
/* inline functions */
|
||||
/********************/
|
||||
|
||||
#if supports_inline_functions || defined(CASE_ITEM_C)
|
||||
#endif /* supports_inline_functions || defined(CASE_ITEM_C) */
|
||||
extern SCL_EXPRESS_EXPORT Case_Item CASE_ITcreate PROTO( ( Linked_List, struct Statement_ * ) );
|
||||
extern SCL_EXPRESS_EXPORT void CASE_ITinitialize PROTO( ( void ) );
|
||||
|
||||
#endif /*CASE_ITEM_H*/
|
||||
|
||||
+13
-24
@@ -1,10 +1,8 @@
|
||||
#ifndef DICTIONARY_H
|
||||
#define DICTIONARY_H
|
||||
|
||||
/* $Id: dict.h,v 1.4 1997/01/21 19:17:11 dar Exp $ */
|
||||
|
||||
/************************************************************************
|
||||
** Module: Dictionary
|
||||
/** **********************************************************************
|
||||
** Module: Dictionary \file dict.h
|
||||
** Description: This module implements the dictionary abstraction. A
|
||||
** dictionary is a repository for a number of objects, all of which
|
||||
** can be named using the same function. A dictionary is limited to
|
||||
@@ -52,7 +50,6 @@
|
||||
|
||||
#include "hash.h"
|
||||
#include "error.h"
|
||||
#include "dict.h"
|
||||
|
||||
/************/
|
||||
/* typedefs */
|
||||
@@ -81,8 +78,7 @@ typedef HashEntry DictionaryEntry;
|
||||
#include "decstart.h"
|
||||
#endif /*DICTIONARY_C*/
|
||||
|
||||
GLOBAL char DICT_type; /* set as a side-effect of DICT lookup routines */
|
||||
/* to type of object found */
|
||||
GLOBAL SCL_EXPRESS_EXPORT char DICT_type; /**< set as a side-effect of DICT lookup routines to type of object found */
|
||||
|
||||
#include "de_end.h"
|
||||
|
||||
@@ -91,12 +87,12 @@ GLOBAL char DICT_type; /* set as a side-effect of DICT lookup routines */
|
||||
/*******************************/
|
||||
|
||||
#define DICTcreate(estimated_max_size) HASHcreate(estimated_max_size)
|
||||
/* should really can DICTdo_init and rename do_type_init to do_init! */
|
||||
/** should really can DICTdo_init and rename do_type_init to do_init! */
|
||||
#define DICTdo_init(dict,de) HASHlistinit((dict),(de))
|
||||
#define DICTdo_type_init(dict,de,t) HASHlistinit_by_type((dict),(de),(t))
|
||||
#define DICTdo_end(hash_entry) HASHlistend(hash_entry)
|
||||
|
||||
/* modify dictionary entry in-place */
|
||||
/** modify dictionary entry in-place */
|
||||
#define DICTchange(e,obj,sym,typ) { \
|
||||
(e)->data = (obj); \
|
||||
(e)->symbol = (sym); \
|
||||
@@ -109,20 +105,13 @@ GLOBAL char DICT_type; /* set as a side-effect of DICT lookup routines */
|
||||
/* function prototypes */
|
||||
/***********************/
|
||||
|
||||
extern void DICTinitialize PROTO( ( void ) );
|
||||
extern int DICTdefine PROTO( ( Dictionary, char *, Generic, Symbol *, char ) );
|
||||
extern int DICT_define PROTO( ( Dictionary, char *, Generic, Symbol *, char ) );
|
||||
extern void DICTundefine PROTO( ( Dictionary, char * ) );
|
||||
extern Generic DICTlookup PROTO( ( Dictionary, char * ) );
|
||||
extern Generic DICTlookup_symbol PROTO( ( Dictionary, char *, Symbol ** ) );
|
||||
extern Generic DICTdo PROTO( ( DictionaryEntry * ) );
|
||||
extern void DICTprint PROTO( ( Dictionary ) );
|
||||
|
||||
/********************/
|
||||
/* inline functions */
|
||||
/********************/
|
||||
|
||||
#if supports_inline_functions || defined(DICTIONARY_C)
|
||||
#endif /*supports_inline_functions || defined(DICTIONARY_C)*/
|
||||
extern SCL_EXPRESS_EXPORT void DICTinitialize PROTO( ( void ) );
|
||||
extern SCL_EXPRESS_EXPORT int DICTdefine PROTO( ( Dictionary, char *, Generic, Symbol *, char ) );
|
||||
extern SCL_EXPRESS_EXPORT int DICT_define PROTO( ( Dictionary, char *, Generic, Symbol *, char ) );
|
||||
extern SCL_EXPRESS_EXPORT void DICTundefine PROTO( ( Dictionary, char * ) );
|
||||
extern SCL_EXPRESS_EXPORT Generic DICTlookup PROTO( ( Dictionary, char * ) );
|
||||
extern SCL_EXPRESS_EXPORT Generic DICTlookup_symbol PROTO( ( Dictionary, char *, Symbol ** ) );
|
||||
extern SCL_EXPRESS_EXPORT Generic DICTdo PROTO( ( DictionaryEntry * ) );
|
||||
extern SCL_EXPRESS_EXPORT void DICTprint PROTO( ( Dictionary ) );
|
||||
|
||||
#endif /*DICTIONARY_H*/
|
||||
|
||||
+31
-60
@@ -1,10 +1,8 @@
|
||||
#ifndef ENTITY_H
|
||||
#define ENTITY_H
|
||||
|
||||
/* $Id: entity.h,v 1.12 1997/01/21 19:17:11 dar Exp $ */
|
||||
|
||||
/************************************************************************
|
||||
** Module: Entity
|
||||
/** **********************************************************************
|
||||
** Module: Entity \file entity.h
|
||||
** Description: This module represents Express entity definitions. An
|
||||
** entity definition consists of a name, a list of attributes, a
|
||||
** collection of uniqueness sets, a specification of the entity's
|
||||
@@ -62,6 +60,7 @@
|
||||
/* packages used */
|
||||
/*****************/
|
||||
|
||||
#include <scl_export.h>
|
||||
#include "expbasic.h" /* get basic definitions */
|
||||
#include "symbol.h"
|
||||
#include "scope.h"
|
||||
@@ -85,25 +84,18 @@ typedef struct Scope_ * Entity;
|
||||
/***************************/
|
||||
|
||||
struct Entity_ {
|
||||
Linked_List supertype_symbols; /* linked list of original symbols*/
|
||||
/* as generated by parser */
|
||||
Linked_List supertypes; /* linked list of supertypes (as entities) */
|
||||
Linked_List subtypes; /* simple list of subtypes */
|
||||
/* useful for simple lookups */
|
||||
Expression subtype_expression; /* DAG of subtypes, with complete */
|
||||
/* information including, OR, AND, and ONEOF */
|
||||
Linked_List attributes; /* explicit attributes */
|
||||
int inheritance; /* total number of attributes */
|
||||
/* inherited from supertypes */
|
||||
int attribute_count;
|
||||
Linked_List unique; /* list of identifiers that are unique */
|
||||
Linked_List instances; /* hook for applications */
|
||||
int mark; /* usual hack - prevent traversing sub/super */
|
||||
/* graph twice */
|
||||
bool abstract;/* is this an abstract supertype? */
|
||||
Type type; /* type pointing back to ourself */
|
||||
/* Useful to have when evaluating */
|
||||
/* expressions involving entities */
|
||||
Linked_List supertype_symbols; /**< linked list of original symbols as generated by parser */
|
||||
Linked_List supertypes; /**< linked list of supertypes (as entities) */
|
||||
Linked_List subtypes; /**< simple list of subtypes useful for simple lookups */
|
||||
Expression subtype_expression; /**< DAG of subtypes, with complete information including, OR, AND, and ONEOF */
|
||||
Linked_List attributes; /**< explicit attributes */
|
||||
int inheritance; /**< total number of attributes inherited from supertypes */
|
||||
int attribute_count;
|
||||
Linked_List unique; /**< list of identifiers that are unique */
|
||||
Linked_List instances; /**< hook for applications */
|
||||
int mark; /**< usual hack - prevent traversing sub/super graph twice */
|
||||
bool abstract; /**< is this an abstract supertype? */
|
||||
Type type; /**< type pointing back to ourself, useful to have when evaluating expressions involving entities */
|
||||
};
|
||||
|
||||
/********************/
|
||||
@@ -116,9 +108,9 @@ struct Entity_ {
|
||||
#include "decstart.h"
|
||||
#endif /* ENTITY_C */
|
||||
|
||||
GLOBAL struct freelist_head ENTITY_fl;
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct freelist_head ENTITY_fl;
|
||||
|
||||
GLOBAL int ENTITY_MARK INITIALLY( 0 );
|
||||
GLOBAL SCL_EXPRESS_EXPORT int ENTITY_MARK INITIALLY( 0 );
|
||||
|
||||
#include "de_end.h"
|
||||
|
||||
@@ -157,40 +149,19 @@ GLOBAL int ENTITY_MARK INITIALLY( 0 );
|
||||
/* function prototypes */
|
||||
/***********************/
|
||||
|
||||
extern struct Scope_ * ENTITYcreate PROTO( ( struct Symbol_ * ) );
|
||||
extern void ENTITYinitialize PROTO( ( void ) );
|
||||
extern void ENTITYadd_attribute PROTO( ( struct Scope_ *, struct Variable_ * ) );
|
||||
extern struct Scope_ * ENTITYcopy PROTO( ( struct Scope_ * ) );
|
||||
extern Entity ENTITYfind_inherited_entity PROTO( ( struct Scope_ *, char *, int ) );
|
||||
extern Variable ENTITYfind_inherited_attribute PROTO( ( struct Scope_ *, char *, struct Symbol_ ** ) );
|
||||
extern Variable ENTITYresolve_attr_ref PROTO( ( Entity, Symbol *, Symbol * ) );
|
||||
extern bool ENTITYhas_immediate_supertype PROTO( ( Entity, Entity ) );
|
||||
extern Variable ENTITYget_named_attribute PROTO( ( Entity, char * ) );
|
||||
extern Linked_List ENTITYget_all_attributes PROTO( ( Entity ) );
|
||||
extern bool ENTITYhas_supertype PROTO( ( Entity, Entity ) );
|
||||
extern void ENTITYadd_instance PROTO( ( Entity, Generic ) );
|
||||
extern int ENTITYget_initial_offset PROTO( ( Entity ) );
|
||||
extern bool ENTITYdeclares_variable PROTO( ( Entity, struct Variable_ * ) );
|
||||
|
||||
#if 0
|
||||
extern void ENTITYdelete_instance PROTO( ( Entity, Generic ) );
|
||||
extern bool ENTITYhas_subtype PROTO( ( Entity, Entity ) );
|
||||
extern Entity ENTITYget_supertype PROTO( ( Entity, String ) );
|
||||
extern Entity ENTITYget_subtype PROTO( ( Entity, String ) );
|
||||
extern bool ENTITYhas_immediate_subtype PROTO( ( Entity, Entity ) );
|
||||
extern Expression ENTITYget_subtype_expression PROTO( ( Entity ) );
|
||||
extern int ENTITYget_attribute_offset PROTO( ( Entity, Variable ) );
|
||||
extern int ENTITYget_named_attribute_offset PROTO( ( Entity, String ) );
|
||||
extern Linked_List ENTITYget_uniqueness_list PROTO( ( Entity ) );
|
||||
extern Linked_List ENTITYget_constraints PROTO( ( Entity ) );
|
||||
extern Linked_List ENTITYget_instances PROTO( ( Entity ) );
|
||||
#endif /*0*/
|
||||
|
||||
/********************/
|
||||
/* inline functions */
|
||||
/********************/
|
||||
|
||||
#if supports_inline_functions || defined(ENTITY_C)
|
||||
#endif /* supports_inline_functions || defined(ENTITY_C) */
|
||||
extern SCL_EXPRESS_EXPORT struct Scope_ * ENTITYcreate PROTO( ( struct Symbol_ * ) );
|
||||
extern SCL_EXPRESS_EXPORT void ENTITYinitialize PROTO( ( void ) );
|
||||
extern SCL_EXPRESS_EXPORT void ENTITYadd_attribute PROTO( ( struct Scope_ *, struct Variable_ * ) );
|
||||
extern SCL_EXPRESS_EXPORT struct Scope_ * ENTITYcopy PROTO( ( struct Scope_ * ) );
|
||||
extern SCL_EXPRESS_EXPORT Entity ENTITYfind_inherited_entity PROTO( ( struct Scope_ *, char *, int ) );
|
||||
extern SCL_EXPRESS_EXPORT Variable ENTITYfind_inherited_attribute PROTO( ( struct Scope_ *, char *, struct Symbol_ ** ) );
|
||||
extern SCL_EXPRESS_EXPORT Variable ENTITYresolve_attr_ref PROTO( ( Entity, Symbol *, Symbol * ) );
|
||||
extern SCL_EXPRESS_EXPORT bool ENTITYhas_immediate_supertype PROTO( ( Entity, Entity ) );
|
||||
extern SCL_EXPRESS_EXPORT Variable ENTITYget_named_attribute PROTO( ( Entity, char * ) );
|
||||
extern SCL_EXPRESS_EXPORT Linked_List ENTITYget_all_attributes PROTO( ( Entity ) );
|
||||
extern SCL_EXPRESS_EXPORT bool ENTITYhas_supertype PROTO( ( Entity, Entity ) );
|
||||
extern SCL_EXPRESS_EXPORT void ENTITYadd_instance PROTO( ( Entity, Generic ) );
|
||||
extern SCL_EXPRESS_EXPORT int ENTITYget_initial_offset PROTO( ( Entity ) );
|
||||
extern SCL_EXPRESS_EXPORT bool ENTITYdeclares_variable PROTO( ( Entity, struct Variable_ * ) );
|
||||
|
||||
#endif /* ENTITY_H */
|
||||
|
||||
+56
-59
@@ -1,10 +1,8 @@
|
||||
#ifndef ERROR_H
|
||||
#define ERROR_H
|
||||
|
||||
/* $Id: error.h,v 1.8 1997/01/21 19:16:55 dar Exp $ */
|
||||
|
||||
/************************************************************************
|
||||
** Module: Error
|
||||
/** **********************************************************************
|
||||
** Module: Error \file error.h
|
||||
** Description: This module implements the ERROR abstraction.
|
||||
************************************************************************/
|
||||
|
||||
@@ -30,8 +28,9 @@
|
||||
* prettied up interface to print_objects_when_running
|
||||
*/
|
||||
|
||||
#include <scl_export.h>
|
||||
#include "basic.h" /* get basic definitions */
|
||||
#include "setjmp.h"
|
||||
#include <setjmp.h>
|
||||
|
||||
/*************/
|
||||
/* constants */
|
||||
@@ -88,29 +87,29 @@ typedef struct Error_Warning_ {
|
||||
#include "decstart.h"
|
||||
#endif /* ERROR_C */
|
||||
|
||||
GLOBAL bool __ERROR_buffer_errors INITIALLY( false );
|
||||
GLOBAL char * current_filename INITIALLY( "stdin" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT bool __ERROR_buffer_errors INITIALLY( false );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * current_filename INITIALLY( "stdin" );
|
||||
|
||||
/* flag to remember whether non-warning errors have occurred */
|
||||
GLOBAL bool ERRORoccurred INITIALLY( false );
|
||||
GLOBAL SCL_EXPRESS_EXPORT bool ERRORoccurred INITIALLY( false );
|
||||
|
||||
|
||||
GLOBAL Error experrc INITIALLY( ERROR_none );
|
||||
GLOBAL Error ERROR_subordinate_failed INITIALLY( ERROR_none );
|
||||
GLOBAL Error ERROR_syntax_expecting INITIALLY( ERROR_none );
|
||||
GLOBAL SCL_EXPRESS_EXPORT Error experrc INITIALLY( ERROR_none );
|
||||
GLOBAL SCL_EXPRESS_EXPORT Error ERROR_subordinate_failed INITIALLY( ERROR_none );
|
||||
GLOBAL SCL_EXPRESS_EXPORT Error ERROR_syntax_expecting INITIALLY( ERROR_none );
|
||||
|
||||
/* all of these are 1 if true, 0 if false switches */
|
||||
/* for debugging fedex */
|
||||
GLOBAL int ERRORdebugging INITIALLY( 0 );
|
||||
GLOBAL SCL_EXPRESS_EXPORT int ERRORdebugging INITIALLY( 0 );
|
||||
/* for debugging malloc during resolution */
|
||||
GLOBAL int malloc_debug_resolve INITIALLY( 0 );
|
||||
GLOBAL SCL_EXPRESS_EXPORT int malloc_debug_resolve INITIALLY( 0 );
|
||||
/* for debugging yacc/lex */
|
||||
GLOBAL int debug INITIALLY( 0 );
|
||||
GLOBAL SCL_EXPRESS_EXPORT int debug INITIALLY( 0 );
|
||||
|
||||
GLOBAL struct Linked_List_ * ERRORwarnings;
|
||||
GLOBAL struct freelist_head ERROR_OPT_fl;
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct Linked_List_ * ERRORwarnings;
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct freelist_head ERROR_OPT_fl;
|
||||
|
||||
GLOBAL void ( *ERRORusage_function ) PROTO( ( void ) );
|
||||
GLOBAL SCL_EXPRESS_EXPORT void ( *ERRORusage_function ) PROTO( ( void ) );
|
||||
|
||||
#include "de_end.h"
|
||||
|
||||
@@ -121,6 +120,14 @@ GLOBAL void ( *ERRORusage_function ) PROTO( ( void ) );
|
||||
#define ERROR_OPT_new() (struct Error_Warning_ *)MEM_new(&ERROR_OPT_fl)
|
||||
#define ERROR_OPT_destroy(x) MEM_destroy(&ERROR_OPT_fl,(Freelist *)(Generic)x)
|
||||
|
||||
/***********************/
|
||||
/* function prototypes */
|
||||
/***********************/
|
||||
|
||||
#if defined(__MSVC__) || defined(__BORLAND__)
|
||||
extern SCL_EXPRESS_EXPORT void ERROR_start_message_buffer PROTO( ( void ) );
|
||||
extern SCL_EXPRESS_EXPORT void ERROR_flush_message_buffer PROTO( ( void ) );
|
||||
#endif
|
||||
|
||||
/********************/
|
||||
/* Inline functions */
|
||||
@@ -128,34 +135,27 @@ GLOBAL void ( *ERRORusage_function ) PROTO( ( void ) );
|
||||
|
||||
#if supports_inline_functions || defined(ERROR_C)
|
||||
|
||||
static_inline
|
||||
void
|
||||
ERRORdisable( Error error ) {
|
||||
static_inline void ERRORdisable( Error error ) {
|
||||
if( error != ERROR_none ) {
|
||||
error->enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
static_inline
|
||||
void
|
||||
ERRORenable( Error error ) {
|
||||
static_inline void ERRORenable( Error error ) {
|
||||
if( error != ERROR_none ) {
|
||||
error->enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
static_inline
|
||||
bool
|
||||
ERRORis_enabled( Error error ) {
|
||||
static_inline bool ERRORis_enabled( Error error ) {
|
||||
return error->enabled;
|
||||
}
|
||||
|
||||
static_inline
|
||||
void
|
||||
ERRORbuffer_messages( bool flag ) {
|
||||
static_inline void ERRORbuffer_messages( bool flag ) {
|
||||
#if !defined(__MSVC__) && !defined(__BORLAND__)
|
||||
extern void ERROR_start_message_buffer( void ),
|
||||
ERROR_flush_message_buffer( void );
|
||||
|
||||
#endif
|
||||
__ERROR_buffer_errors = flag;
|
||||
if( __ERROR_buffer_errors ) {
|
||||
ERROR_start_message_buffer();
|
||||
@@ -164,11 +164,11 @@ ERRORbuffer_messages( bool flag ) {
|
||||
}
|
||||
}
|
||||
|
||||
static_inline
|
||||
void
|
||||
ERRORflush_messages( void ) {
|
||||
static_inline void ERRORflush_messages( void ) {
|
||||
#if !defined(__MSVC__) && !defined(__BORLAND__)
|
||||
extern void ERROR_start_message_buffer( void ),
|
||||
ERROR_flush_message_buffer( void );
|
||||
#endif
|
||||
|
||||
if( __ERROR_buffer_errors ) {
|
||||
ERROR_flush_message_buffer();
|
||||
@@ -182,33 +182,30 @@ ERRORflush_messages( void ) {
|
||||
/* function prototypes */
|
||||
/***********************/
|
||||
|
||||
extern void ERRORinitialize PROTO( ( void ) );
|
||||
extern void ERRORinitialize_after_LIST PROTO( ( void ) );
|
||||
extern void ERRORnospace PROTO( ( void ) );
|
||||
extern void ERRORabort PROTO( ( int ) );
|
||||
extern Error ERRORcreate PROTO( ( char *, Severity ) );
|
||||
extern void ERRORreport PROTO( ( Error, ... ) );
|
||||
/*SUPPRESS 652*/ /* 1.? */
|
||||
/*SUPPRESS 842*/ /* 4.0.2 */
|
||||
extern SCL_EXPRESS_EXPORT void ERRORinitialize PROTO( ( void ) );
|
||||
extern SCL_EXPRESS_EXPORT void ERRORinitialize_after_LIST PROTO( ( void ) );
|
||||
extern SCL_EXPRESS_EXPORT void ERRORnospace PROTO( ( void ) );
|
||||
extern SCL_EXPRESS_EXPORT void ERRORabort PROTO( ( int ) );
|
||||
extern SCL_EXPRESS_EXPORT Error ERRORcreate PROTO( ( char *, Severity ) );
|
||||
extern SCL_EXPRESS_EXPORT void ERRORreport PROTO( ( Error, ... ) );
|
||||
|
||||
struct Symbol_; /* mention Symbol to avoid warning on following line */
|
||||
extern void ERRORreport_with_symbol PROTO( ( Error, struct Symbol_ *, ... ) );
|
||||
extern void ERRORreport_with_line PROTO( ( Error, int, ... ) );
|
||||
extern void ERRORbuffer_messages PROTO( ( bool ) );
|
||||
extern void ERRORflush_messages PROTO( ( void ) );
|
||||
|
||||
extern void ERROR_start_message_buffer PROTO( ( void ) );
|
||||
extern void ERROR_flush_message_buffer PROTO( ( void ) );
|
||||
|
||||
extern void ERRORcreate_warning PROTO( ( char *, Error ) );
|
||||
extern void ERRORset_warning PROTO( ( char *, int ) );
|
||||
extern void ERRORset_all_warnings PROTO( ( int ) );
|
||||
extern void ERRORsafe PROTO( ( jmp_buf env ) );
|
||||
extern void ERRORunsafe PROTO( ( void ) );
|
||||
|
||||
#if deprecated
|
||||
extern void ERRORdisable PROTO( ( Error ) );
|
||||
extern void ERRORenable PROTO( ( Error ) );
|
||||
extern Boolean ERRORis_enabled PROTO( ( Error ) );
|
||||
extern SCL_EXPRESS_EXPORT void ERRORreport_with_symbol PROTO( ( Error, struct Symbol_ *, ... ) );
|
||||
extern SCL_EXPRESS_EXPORT void ERRORreport_with_line PROTO( ( Error, int, ... ) );
|
||||
#if !supports_inline_functions
|
||||
extern SCL_EXPRESS_EXPORT void ERRORbuffer_messages PROTO( ( bool ) );
|
||||
extern SCL_EXPRESS_EXPORT void ERRORflush_messages PROTO( ( void ) );
|
||||
#endif
|
||||
|
||||
#if !defined(__MSVC__) && !defined(__BORLAND__)
|
||||
extern SCL_EXPRESS_EXPORT void ERROR_start_message_buffer PROTO( ( void ) );
|
||||
extern SCL_EXPRESS_EXPORT void ERROR_flush_message_buffer PROTO( ( void ) );
|
||||
#endif
|
||||
|
||||
extern SCL_EXPRESS_EXPORT void ERRORcreate_warning PROTO( ( char *, Error ) );
|
||||
extern SCL_EXPRESS_EXPORT void ERRORset_warning PROTO( ( char *, int ) );
|
||||
extern SCL_EXPRESS_EXPORT void ERRORset_all_warnings PROTO( ( int ) );
|
||||
extern SCL_EXPRESS_EXPORT void ERRORsafe PROTO( ( jmp_buf env ) );
|
||||
extern SCL_EXPRESS_EXPORT void ERRORunsafe PROTO( ( void ) );
|
||||
|
||||
#endif /* ERROR_H */
|
||||
|
||||
+29
-33
@@ -1,4 +1,3 @@
|
||||
/* $Id: expbasic.h,v 1.7 1997/01/21 19:17:11 dar Exp $ */
|
||||
|
||||
/*
|
||||
* This software was developed by U.S. Government employees as part of
|
||||
@@ -72,84 +71,81 @@ typedef char * Binary;
|
||||
#define UNRESOLVED 0x0
|
||||
#define RESOLVED 0x1
|
||||
#define RESOLVE_FAILED 0x2
|
||||
#define RESOLVE_IN_PROGRESS 0x4 /* only if actively being resolved */
|
||||
/* not if it's just between passes */
|
||||
#define RESOLVE_IN_PROGRESS 0x4 /**< only if actively being resolved not if it's just between passes */
|
||||
|
||||
/* used during rename resolution to catch recursive USE/REFs */
|
||||
/** used during rename resolution to catch recursive USE/REFs */
|
||||
#define is_resolve_in_progress_raw(x) ((x)->resolved & RESOLVE_IN_PROGRESS)
|
||||
#define resolve_in_progress_raw(x) (x)->resolved |= RESOLVE_IN_PROGRESS
|
||||
#define resolve_not_in_progress_raw(x) (x)->resolved &= ~RESOLVE_IN_PROGRESS
|
||||
|
||||
/* and type resolution to catch recursive types (A = B and B = A) */
|
||||
/** and type resolution to catch recursive types (A = B and B = A) */
|
||||
#define resolve_in_progress(x) (x)->symbol.resolved |= RESOLVE_IN_PROGRESS
|
||||
|
||||
/* test/set whether anything has failed resolution */
|
||||
/** test/set whether anything has failed resolution */
|
||||
#define is_resolve_failed(x) ((x)->symbol.resolved & RESOLVE_FAILED)
|
||||
#define is_resolve_failed_raw(x) ((x)->resolved & RESOLVE_FAILED)
|
||||
#define resolve_failed(x) (x)->symbol.resolved |= RESOLVE_FAILED
|
||||
#define resolve_failed_raw(x) (x)->resolved |= RESOLVE_FAILED
|
||||
|
||||
/* test/set whether anything has succeeded resolution */
|
||||
/** test/set whether anything has succeeded resolution */
|
||||
#define is_resolved(x) ((x)->symbol.resolved & RESOLVED)
|
||||
|
||||
/* test possibility of future resolution */
|
||||
/** test possibility of future resolution */
|
||||
#define is_resolvable(x) (!is_not_resolvable(x))
|
||||
#define is_not_resolvable(x) ((x)->symbol.resolved & (RESOLVE_FAILED|RESOLVED|RESOLVE_IN_PROGRESS))
|
||||
|
||||
/* mark something resolved */
|
||||
/** mark something resolved */
|
||||
#define resolved_all(x) x->symbol.resolved = RESOLVED
|
||||
|
||||
|
||||
/* define the object types that can appear in a symbol table */
|
||||
/* basically anything that is usefully named, but that cannot be */
|
||||
/* differentiated from another type when handed a generic pointer */
|
||||
/* Entity, schema and alg can be differentiated but it is just very */
|
||||
/* useful to be able to differentiate this way. */
|
||||
#define OBJ_ANY '*' /* Matches anything - special to DICT funcs */
|
||||
#define OBJ_EXPRESS '!' /* I can't figure out the mnemonic either! */
|
||||
/** define the object types that can appear in a symbol table
|
||||
* basically anything that is usefully named, but that cannot be
|
||||
* differentiated from another type when handed a generic pointer
|
||||
* Entity, schema and alg can be differentiated but it is just very
|
||||
* useful to be able to differentiate this way. */
|
||||
#define OBJ_ANY '*' /**< Matches anything - special to DICT funcs */
|
||||
#define OBJ_EXPRESS '!' /**< I can't figure out the mnemonic either! */
|
||||
#define OBJ_PASS '#'
|
||||
|
||||
/* The following are all odd-ball scopes, that aren't ever looked up by */
|
||||
/* type - but the data structures might as well be descriptive */
|
||||
/** The following are all odd-ball scopes, that aren't ever looked up by
|
||||
* type - but the data structures might as well be descriptive */
|
||||
#define OBJ_INCREMENT '+'
|
||||
#define OBJ_ALIAS 'a'
|
||||
#define OBJ_QUERY 'q' /* isn't even stored anywhere! */
|
||||
#define OBJ_QUERY 'q' /**< isn't even stored anywhere! */
|
||||
|
||||
#define OBJ_PROCEDURE 'p'
|
||||
#define OBJ_RENAME 'n'
|
||||
#define OBJ_RULE 'r'
|
||||
#define OBJ_FUNCTION 'f'
|
||||
#define OBJ_TAG 'g' /* a type, but only when used as a type tag */
|
||||
#define OBJ_TAG 'g' /**< a type, but only when used as a type tag */
|
||||
#define OBJ_ENTITY 'e'
|
||||
#define OBJ_SCHEMA 's'
|
||||
#define OBJ_TYPE 't'
|
||||
#define OBJ_UNKNOWN 'u' /*things that won't ever be looked up by type*/
|
||||
#define OBJ_UNKNOWN 'u' /**< things that won't ever be looked up by type*/
|
||||
#define OBJ_VARIABLE 'v'
|
||||
#define OBJ_WHERE 'w'
|
||||
#define OBJ_EXPRESSION 'x' /* so far only enums get looked up by name & */
|
||||
#define OBJ_ENUM 'x' /* appear this way, perhaps they should be */
|
||||
/* variables? */
|
||||
#define OBJ_AMBIG_ENUM 'z' /* enumerations of the same name which are */
|
||||
/* visible in the same scope when qualified */
|
||||
/* z is of no mnemonic significance (so far) */
|
||||
#define OBJ_EXPRESSION 'x' /**< so far only enums get looked up by name & */
|
||||
#define OBJ_ENUM 'x' /**< appear this way, perhaps they should be variables? */
|
||||
#define OBJ_AMBIG_ENUM 'z' /**< enumerations of the same name which are
|
||||
* visible in the same scope when qualified
|
||||
* z is of no mnemonic significance (so far) */
|
||||
#define IS_ENUM(x) (((x) == OBJ_ENUM) || ((x) == OBJ_AMBIG_ENUM))
|
||||
|
||||
/* these represent a different way of selecting classes of objects */
|
||||
/* these are particularly useful when looking for multiple types concurrently */
|
||||
/** these represent a different way of selecting classes of objects
|
||||
* these are particularly useful when looking for multiple types concurrently */
|
||||
#define OBJ_TYPE_BITS 0x1
|
||||
#define OBJ_ENTITY_BITS 0x2
|
||||
#define OBJ_FUNCTION_BITS 0x4
|
||||
#define OBJ_PROCEDURE_BITS 0x8
|
||||
#define OBJ_PASS_BITS 0x10 /* i.e., EXPRESSpass */
|
||||
#define OBJ_PASS_BITS 0x10 /**< i.e., EXPRESSpass */
|
||||
#define OBJ_RULE_BITS 0x20
|
||||
#define OBJ_EXPRESSION_BITS 0x40 /* as above, only used for */
|
||||
/* finding enums */
|
||||
#define OBJ_EXPRESSION_BITS 0x40 /**< as above, only used for finding enums */
|
||||
#define OBJ_SCHEMA_BITS 0x80
|
||||
#define OBJ_VARIABLE_BITS 0x100
|
||||
#define OBJ_WHERE_BITS 0x200
|
||||
|
||||
#define OBJ_ANYTHING_BITS 0x0fffffff
|
||||
#define OBJ_UNFINDABLE_BITS 0x10000000 /* should never be found */
|
||||
#define OBJ_UNFINDABLE_BITS 0x10000000 /**< should never be found */
|
||||
#define OBJ_ALGORITHM_BITS (OBJ_FUNCTION_BITS | OBJ_PROCEDURE_BITS | \
|
||||
OBJ_RULE_BITS)
|
||||
#define OBJ_SCOPE_BITS (OBJ_ALGORITHM_BITS | OBJ_ENTITY_BITS | \
|
||||
|
||||
+50
-57
@@ -1,10 +1,8 @@
|
||||
#ifndef EXPRESSION_H
|
||||
#define EXPRESSION_H
|
||||
|
||||
/* $Id: expr.h,v 1.4 1997/01/21 19:17:11 dar Exp $ */
|
||||
|
||||
/************************************************************************
|
||||
** Module: Expression
|
||||
/** **********************************************************************
|
||||
** Module: Expression \file expr.h
|
||||
** Description: This module implements the Expression abstraction.
|
||||
** Several types of expressions are supported: identifiers,
|
||||
** literals, operations (arithmetic, logical, array indexing,
|
||||
@@ -62,6 +60,7 @@
|
||||
/* packages used */
|
||||
/*****************/
|
||||
|
||||
#include <scl_export.h>
|
||||
#include <math.h>
|
||||
#include "expbasic.h" /* get basic definitions */
|
||||
|
||||
@@ -85,7 +84,7 @@ typedef enum {
|
||||
OP_NOT, OP_NOT_EQUAL, OP_OR,
|
||||
OP_PLUS, OP_REAL_DIV, OP_SUBCOMPONENT,
|
||||
OP_TIMES, OP_XOR, OP_UNKNOWN,
|
||||
OP_LAST /* must be last - used only to size tables */
|
||||
OP_LAST /**< must be last - used only to size tables */
|
||||
} Op_Code;
|
||||
|
||||
typedef struct Qualified_Attr Qualified_Attr;
|
||||
@@ -117,7 +116,7 @@ typedef Literal Aggregate_Literal, Integer_Literal,
|
||||
/* expression types */
|
||||
|
||||
struct Qualified_Attr {
|
||||
struct Expression_ * complex; /* complex entity instance */
|
||||
struct Expression_ * complex; /**< complex entity instance */
|
||||
Symbol * entity;
|
||||
Symbol * attribute;
|
||||
};
|
||||
@@ -131,22 +130,20 @@ struct Op_Subexpression {
|
||||
|
||||
struct Query_ {
|
||||
Variable local;
|
||||
Expression aggregate; /* set from which to test */
|
||||
Expression expression; /* logical expression */
|
||||
Expression aggregate; /**< set from which to test */
|
||||
Expression expression; /**< logical expression */
|
||||
struct Scope_ * scope;
|
||||
};
|
||||
|
||||
struct Funcall {
|
||||
struct Scope_ * function; /* can also be an entity because entities */
|
||||
/* can be called as functions */
|
||||
struct Scope_ * function; /**< can also be an entity because entities can be called as functions */
|
||||
Linked_List list;
|
||||
};
|
||||
|
||||
union expr_union {
|
||||
int integer;
|
||||
float real;
|
||||
/* char *string; find string name in symbol in Expression */
|
||||
char * attribute; /* inverse .... for 'attr' */
|
||||
char * attribute; /**< inverse .... for 'attr' */
|
||||
char * binary;
|
||||
int logical;
|
||||
bool boolean;
|
||||
@@ -156,35 +153,31 @@ union expr_union {
|
||||
/* if etype == aggregate, list of expressions */
|
||||
/* if etype == funcall, 1st element of list is funcall or entity */
|
||||
/* remaining elements are parameters */
|
||||
Linked_List list; /* aggregates (bags, lists, sets, arrays) */
|
||||
/* or lists for oneof expressions */
|
||||
Expression expression; /* derived value in derive attrs, or*/
|
||||
/* initializer in local vars, or */
|
||||
/* enumeration tags */
|
||||
/* or oneof value */
|
||||
struct Scope_ * entity; /* used by subtype exp, group expr */
|
||||
/* and self expr, some funcall's and any */
|
||||
/* expr that results in an entity */
|
||||
Variable variable; /* attribute reference */
|
||||
Linked_List list; /**< aggregates (bags, lists, sets, arrays) or lists for oneof expressions */
|
||||
Expression expression; /**< derived value in derive attrs, or
|
||||
* initializer in local vars, or
|
||||
* enumeration tags
|
||||
* or oneof value */
|
||||
struct Scope_ * entity; /**< used by subtype exp, group expr
|
||||
* and self expr, some funcall's and any
|
||||
* expr that results in an entity */
|
||||
Variable variable; /**< attribute reference */
|
||||
};
|
||||
|
||||
/** The difference between 'type' and 'return_type' is illustrated
|
||||
* by "func(a)". Here, 'type' is Type_Function while 'return_type'
|
||||
* might be Type_Integer (assuming func returns an integer). */
|
||||
struct Expression_ {
|
||||
Symbol symbol; /* contains things like funcall names */
|
||||
/* string names, binary values, */
|
||||
/* enumeration names */
|
||||
Symbol symbol; /**< contains things like funcall names, string names, binary values, enumeration names */
|
||||
Type type;
|
||||
Type return_type; /* type of value returned by expression */
|
||||
/* The difference between 'type' and 'return_type' is */
|
||||
/* illustrated by "func(a)". Here, 'type' is Type_Function */
|
||||
/* while 'return_type' might be Type_Integer (assuming func */
|
||||
/* returns an integer). */
|
||||
Type return_type; /**< type of value returned by expression */
|
||||
struct Op_Subexpression e;
|
||||
union expr_union u;
|
||||
};
|
||||
|
||||
/* indexed by the op enumeration values */
|
||||
/** indexed by the op enumeration values */
|
||||
struct EXPop_entry {
|
||||
char * token; /* literal token, e.g., "<>" */
|
||||
char * token; /**< literal token, e.g., "<>" */
|
||||
Type( *resolve ) PROTO( ( Expression, struct Scope_ * ) );
|
||||
};
|
||||
|
||||
@@ -198,23 +191,23 @@ struct EXPop_entry {
|
||||
#include "decstart.h"
|
||||
#endif /*EXPRESSION_C*/
|
||||
|
||||
GLOBAL struct EXPop_entry EXPop_table[OP_LAST];
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct EXPop_entry EXPop_table[OP_LAST];
|
||||
|
||||
GLOBAL Expression LITERAL_E INITIALLY( EXPRESSION_NULL );
|
||||
GLOBAL Expression LITERAL_INFINITY INITIALLY( EXPRESSION_NULL );
|
||||
GLOBAL Expression LITERAL_PI INITIALLY( EXPRESSION_NULL );
|
||||
GLOBAL Expression LITERAL_ZERO INITIALLY( EXPRESSION_NULL );
|
||||
GLOBAL Expression LITERAL_ONE;
|
||||
GLOBAL SCL_EXPRESS_EXPORT Expression LITERAL_E INITIALLY( EXPRESSION_NULL );
|
||||
GLOBAL SCL_EXPRESS_EXPORT Expression LITERAL_INFINITY INITIALLY( EXPRESSION_NULL );
|
||||
GLOBAL SCL_EXPRESS_EXPORT Expression LITERAL_PI INITIALLY( EXPRESSION_NULL );
|
||||
GLOBAL SCL_EXPRESS_EXPORT Expression LITERAL_ZERO INITIALLY( EXPRESSION_NULL );
|
||||
GLOBAL SCL_EXPRESS_EXPORT Expression LITERAL_ONE;
|
||||
|
||||
GLOBAL Error ERROR_bad_qualification INITIALLY( ERROR_none );
|
||||
GLOBAL Error ERROR_integer_expression_expected INITIALLY( ERROR_none );
|
||||
GLOBAL Error ERROR_implicit_downcast INITIALLY( ERROR_none );
|
||||
GLOBAL Error ERROR_ambig_implicit_downcast INITIALLY( ERROR_none );
|
||||
GLOBAL SCL_EXPRESS_EXPORT Error ERROR_bad_qualification INITIALLY( ERROR_none );
|
||||
GLOBAL SCL_EXPRESS_EXPORT Error ERROR_integer_expression_expected INITIALLY( ERROR_none );
|
||||
GLOBAL SCL_EXPRESS_EXPORT Error ERROR_implicit_downcast INITIALLY( ERROR_none );
|
||||
GLOBAL SCL_EXPRESS_EXPORT Error ERROR_ambig_implicit_downcast INITIALLY( ERROR_none );
|
||||
|
||||
GLOBAL struct freelist_head EXP_fl;
|
||||
GLOBAL struct freelist_head OP_fl;
|
||||
GLOBAL struct freelist_head QUERY_fl;
|
||||
GLOBAL struct freelist_head QUAL_ATTR_fl;
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct freelist_head EXP_fl;
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct freelist_head OP_fl;
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct freelist_head QUERY_fl;
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct freelist_head QUAL_ATTR_fl;
|
||||
|
||||
#include "de_end.h"
|
||||
|
||||
@@ -244,7 +237,7 @@ GLOBAL struct freelist_head QUAL_ATTR_fl;
|
||||
#define FCALLget_parameters(e) ((e)->u.funcall.list)
|
||||
#define FCALLput_function(expr,func) ((e)->u.funcall.function = (func))
|
||||
#define FCALLget_function(e) ((e)->u.funcall.function)
|
||||
/* assumes the function is not an entity-function! */
|
||||
/** assumes the function is not an entity-function! */
|
||||
#define FCALLget_algorithm(e) ((e)->u.funcall.function->u.function->body)
|
||||
|
||||
#define INT_LITget_value(e) ((e)->u.integer)
|
||||
@@ -269,16 +262,16 @@ GLOBAL struct freelist_head QUAL_ATTR_fl;
|
||||
/* function prototypes */
|
||||
/***********************/
|
||||
|
||||
extern Expression EXPcreate PROTO( ( Type ) );
|
||||
extern Expression EXPcreate_simple PROTO( ( Type ) );
|
||||
extern Expression EXPcreate_from_symbol PROTO( ( Type, Symbol * ) );
|
||||
extern Expression UN_EXPcreate PROTO( ( Op_Code, Expression ) );
|
||||
extern Expression BIN_EXPcreate PROTO( ( Op_Code, Expression, Expression ) );
|
||||
extern Expression TERN_EXPcreate PROTO( ( Op_Code, Expression, Expression, Expression ) );
|
||||
extern Expression QUERYcreate PROTO( ( Symbol *, Expression ) );
|
||||
extern void EXPinitialize PROTO( ( void ) );
|
||||
extern Type EXPtype PROTO( ( Expression, struct Scope_ * ) );
|
||||
extern int EXPget_integer_value PROTO( ( Expression ) );
|
||||
extern SCL_EXPRESS_EXPORT Expression EXPcreate PROTO( ( Type ) );
|
||||
extern SCL_EXPRESS_EXPORT Expression EXPcreate_simple PROTO( ( Type ) );
|
||||
extern SCL_EXPRESS_EXPORT Expression EXPcreate_from_symbol PROTO( ( Type, Symbol * ) );
|
||||
extern SCL_EXPRESS_EXPORT Expression UN_EXPcreate PROTO( ( Op_Code, Expression ) );
|
||||
extern SCL_EXPRESS_EXPORT Expression BIN_EXPcreate PROTO( ( Op_Code, Expression, Expression ) );
|
||||
extern SCL_EXPRESS_EXPORT Expression TERN_EXPcreate PROTO( ( Op_Code, Expression, Expression, Expression ) );
|
||||
extern SCL_EXPRESS_EXPORT Expression QUERYcreate PROTO( ( Symbol *, Expression ) );
|
||||
extern SCL_EXPRESS_EXPORT void EXPinitialize PROTO( ( void ) );
|
||||
extern SCL_EXPRESS_EXPORT Type EXPtype PROTO( ( Expression, struct Scope_ * ) );
|
||||
extern SCL_EXPRESS_EXPORT int EXPget_integer_value PROTO( ( Expression ) );
|
||||
|
||||
/********************/
|
||||
/* inline functions */
|
||||
|
||||
+156
-161
@@ -1,8 +1,6 @@
|
||||
#ifndef EXPRESS_H
|
||||
#define EXPRESS_H
|
||||
|
||||
/* $Id: express.h,v 1.13 1997/01/21 19:16:42 dar Exp $ */
|
||||
|
||||
/*
|
||||
* Express package manager.
|
||||
*
|
||||
@@ -83,7 +81,7 @@ typedef struct Scope_ * Express;
|
||||
struct Express_ {
|
||||
FILE * file;
|
||||
char * filename;
|
||||
char * basename; /* name of file but without directory or .exp suffix */
|
||||
char * basename; /**< name of file but without directory or .exp suffix */
|
||||
};
|
||||
|
||||
/********************/
|
||||
@@ -98,150 +96,158 @@ struct Express_ {
|
||||
# define INITIALLY(value)
|
||||
#endif /*EXPRESS_C*/
|
||||
|
||||
GLOBAL Linked_List EXPRESS_path;
|
||||
GLOBAL int EXPRESSpass;
|
||||
#ifdef YYDEBUG
|
||||
extern SCL_EXPRESS_EXPORT int yydebug;
|
||||
extern SCL_EXPRESS_EXPORT int yydbg_upper_limit;
|
||||
extern SCL_EXPRESS_EXPORT int yydbg_lower_limit;
|
||||
extern SCL_EXPRESS_EXPORT int yydbg_verbose;
|
||||
#endif
|
||||
|
||||
GLOBAL void ( *EXPRESSinit_args ) PROTO( ( int, char ** ) ) INITIALLY( 0 );
|
||||
GLOBAL void ( *EXPRESSinit_parse ) PROTO( ( void ) ) INITIALLY( 0 );
|
||||
GLOBAL int ( *EXPRESSfail ) PROTO( ( Express ) ) INITIALLY( 0 );
|
||||
GLOBAL int ( *EXPRESSsucceed ) PROTO( ( Express ) ) INITIALLY( 0 );
|
||||
GLOBAL void ( *EXPRESSbackend ) PROTO( ( Express ) ) INITIALLY( 0 );
|
||||
GLOBAL char * EXPRESSprogram_name;
|
||||
extern char EXPRESSgetopt_options[]; /* initialized elsewhere */
|
||||
GLOBAL int ( *EXPRESSgetopt ) PROTO( ( int, char * ) ) INITIALLY( 0 );
|
||||
GLOBAL bool EXPRESSignore_duplicate_schemas INITIALLY( false );
|
||||
GLOBAL SCL_EXPRESS_EXPORT Linked_List EXPRESS_path;
|
||||
GLOBAL SCL_EXPRESS_EXPORT int EXPRESSpass;
|
||||
|
||||
GLOBAL Dictionary EXPRESSbuiltins; /* procedures/functions */
|
||||
GLOBAL SCL_EXPRESS_EXPORT void ( *EXPRESSinit_args ) PROTO( ( int, char ** ) ) INITIALLY( 0 );
|
||||
GLOBAL SCL_EXPRESS_EXPORT void ( *EXPRESSinit_parse ) PROTO( ( void ) ) INITIALLY( 0 );
|
||||
GLOBAL SCL_EXPRESS_EXPORT int ( *EXPRESSfail ) PROTO( ( Express ) ) INITIALLY( 0 );
|
||||
GLOBAL SCL_EXPRESS_EXPORT int ( *EXPRESSsucceed ) PROTO( ( Express ) ) INITIALLY( 0 );
|
||||
GLOBAL SCL_EXPRESS_EXPORT void ( *EXPRESSbackend ) PROTO( ( Express ) ) INITIALLY( 0 );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * EXPRESSprogram_name;
|
||||
extern char EXPRESSgetopt_options[256]; /**< initialized elsewhere */
|
||||
GLOBAL SCL_EXPRESS_EXPORT int ( *EXPRESSgetopt ) PROTO( ( int, char * ) ) INITIALLY( 0 );
|
||||
GLOBAL SCL_EXPRESS_EXPORT bool EXPRESSignore_duplicate_schemas INITIALLY( false );
|
||||
|
||||
GLOBAL Error ERROR_bail_out INITIALLY( ERROR_none );
|
||||
GLOBAL Error ERROR_syntax INITIALLY( ERROR_none );
|
||||
GLOBAL Error ERROR_unlabelled_param_type INITIALLY( ERROR_none );
|
||||
GLOBAL Error ERROR_file_unreadable;
|
||||
GLOBAL Error ERROR_file_unwriteable;
|
||||
GLOBAL SCL_EXPRESS_EXPORT Dictionary EXPRESSbuiltins; /**< procedures/functions */
|
||||
|
||||
GLOBAL struct Scope_ * FUNC_NVL;
|
||||
GLOBAL struct Scope_ * FUNC_USEDIN;
|
||||
GLOBAL SCL_EXPRESS_EXPORT Error ERROR_bail_out INITIALLY( ERROR_none );
|
||||
GLOBAL SCL_EXPRESS_EXPORT Error ERROR_syntax INITIALLY( ERROR_none );
|
||||
GLOBAL SCL_EXPRESS_EXPORT Error ERROR_unlabelled_param_type INITIALLY( ERROR_none );
|
||||
GLOBAL SCL_EXPRESS_EXPORT Error ERROR_file_unreadable;
|
||||
GLOBAL SCL_EXPRESS_EXPORT Error ERROR_file_unwriteable;
|
||||
GLOBAL SCL_EXPRESS_EXPORT Error ERROR_warn_unsupported_lang_feat;
|
||||
|
||||
GLOBAL char * KW_ABS INITIALLY( "ABS" );
|
||||
GLOBAL char * KW_ABSTRACT INITIALLY( "ABSTRACT" );
|
||||
GLOBAL char * KW_ACOS INITIALLY( "ACOS" );
|
||||
GLOBAL char * KW_AGGREGATE INITIALLY( "AGGREGATE" );
|
||||
GLOBAL char * KW_ALIAS INITIALLY( "ALIAS" );
|
||||
GLOBAL char * KW_AND INITIALLY( "AND" );
|
||||
GLOBAL char * KW_ANDOR INITIALLY( "ANDOR" );
|
||||
GLOBAL char * KW_ARRAY INITIALLY( "ARRAY" );
|
||||
GLOBAL char * KW_AS INITIALLY( "AS" );
|
||||
GLOBAL char * KW_ASIN INITIALLY( "ASIN" );
|
||||
GLOBAL char * KW_ATAN INITIALLY( "ATAN" );
|
||||
GLOBAL char * KW_BAG INITIALLY( "BAG" );
|
||||
GLOBAL char * KW_BEGIN INITIALLY( "BEGIN" );
|
||||
GLOBAL char * KW_BINARY INITIALLY( "BINARY" );
|
||||
GLOBAL char * KW_BLENGTH INITIALLY( "BLENGTH" );
|
||||
GLOBAL char * KW_BOOLEAN INITIALLY( "BOOLEAN" );
|
||||
GLOBAL char * KW_BY INITIALLY( "BY" );
|
||||
GLOBAL char * KW_CASE INITIALLY( "CASE" );
|
||||
GLOBAL char * KW_CONST_E INITIALLY( "CONST_E" );
|
||||
GLOBAL char * KW_CONSTANT INITIALLY( "CONSTANT" );
|
||||
GLOBAL char * KW_CONTEXT INITIALLY( "CONTEXT" );
|
||||
GLOBAL char * KW_COS INITIALLY( "COS" );
|
||||
GLOBAL char * KW_DERIVE INITIALLY( "DERIVE" );
|
||||
GLOBAL char * KW_DIV INITIALLY( "DIV" );
|
||||
GLOBAL char * KW_ELSE INITIALLY( "ELSE" );
|
||||
GLOBAL char * KW_END INITIALLY( "END" );
|
||||
GLOBAL char * KW_END_ALIAS INITIALLY( "END_ALIAS" );
|
||||
GLOBAL char * KW_END_CASE INITIALLY( "END_CASE" );
|
||||
GLOBAL char * KW_END_CONSTANT INITIALLY( "END_CONSTANT" );
|
||||
GLOBAL char * KW_END_CONTEXT INITIALLY( "END_CONTEXT" );
|
||||
GLOBAL char * KW_END_ENTITY INITIALLY( "END_ENTITY" );
|
||||
GLOBAL char * KW_END_FUNCTION INITIALLY( "END_FUNCTION" );
|
||||
GLOBAL char * KW_END_IF INITIALLY( "END_IF" );
|
||||
GLOBAL char * KW_END_LOCAL INITIALLY( "END_LOCAL" );
|
||||
GLOBAL char * KW_END_MODEL INITIALLY( "END_MODEL" );
|
||||
GLOBAL char * KW_END_PROCEDURE INITIALLY( "END_PROCEDURE" );
|
||||
GLOBAL char * KW_END_REPEAT INITIALLY( "END_REPEAT" );
|
||||
GLOBAL char * KW_END_RULE INITIALLY( "END_RULE" );
|
||||
GLOBAL char * KW_END_SCHEMA INITIALLY( "END_SCHEMA" );
|
||||
GLOBAL char * KW_END_TYPE INITIALLY( "END_TYPE" );
|
||||
GLOBAL char * KW_ENTITY INITIALLY( "ENTITY" );
|
||||
GLOBAL char * KW_ENUMERATION INITIALLY( "ENUMERATION" );
|
||||
GLOBAL char * KW_ESCAPE INITIALLY( "ESCAPE" );
|
||||
GLOBAL char * KW_EXISTS INITIALLY( "EXISTS" );
|
||||
GLOBAL char * KW_EXP INITIALLY( "EXP" );
|
||||
GLOBAL char * KW_FALSE INITIALLY( "FALSE" );
|
||||
GLOBAL char * KW_FIXED INITIALLY( "FIXED" );
|
||||
GLOBAL char * KW_FOR INITIALLY( "FOR" );
|
||||
GLOBAL char * KW_FORMAT INITIALLY( "FORMAT" );
|
||||
GLOBAL char * KW_FROM INITIALLY( "FROM" );
|
||||
GLOBAL char * KW_FUNCTION INITIALLY( "FUNCTION" );
|
||||
GLOBAL char * KW_GENERIC INITIALLY( "GENERIC" );
|
||||
GLOBAL char * KW_HIBOUND INITIALLY( "HIBOUND" );
|
||||
GLOBAL char * KW_HIINDEX INITIALLY( "HIINDEX" );
|
||||
GLOBAL char * KW_IF INITIALLY( "IF" );
|
||||
GLOBAL char * KW_IN INITIALLY( "IN" );
|
||||
GLOBAL char * KW_INCLUDE INITIALLY( "INCLUDE" );
|
||||
GLOBAL char * KW_INSERT INITIALLY( "INSERT" );
|
||||
GLOBAL char * KW_INTEGER INITIALLY( "INTEGER" );
|
||||
GLOBAL char * KW_INVERSE INITIALLY( "INVERSE" );
|
||||
GLOBAL char * KW_LENGTH INITIALLY( "LENGTH" );
|
||||
GLOBAL char * KW_LIKE INITIALLY( "LIKE" );
|
||||
GLOBAL char * KW_LIST INITIALLY( "LIST" );
|
||||
GLOBAL char * KW_LOBOUND INITIALLY( "LOBOUND" );
|
||||
GLOBAL char * KW_LOCAL INITIALLY( "LOCAL" );
|
||||
GLOBAL char * KW_LOG INITIALLY( "LOG" );
|
||||
GLOBAL char * KW_LOG10 INITIALLY( "LOG10" );
|
||||
GLOBAL char * KW_LOG2 INITIALLY( "LOG2" );
|
||||
GLOBAL char * KW_LOGICAL INITIALLY( "LOGICAL" );
|
||||
GLOBAL char * KW_LOINDEX INITIALLY( "LOINDEX" );
|
||||
GLOBAL char * KW_MOD INITIALLY( "MOD" );
|
||||
GLOBAL char * KW_MODEL INITIALLY( "MODEL" );
|
||||
GLOBAL char * KW_NOT INITIALLY( "NOT" );
|
||||
GLOBAL char * KW_NUMBER INITIALLY( "NUMBER" );
|
||||
GLOBAL char * KW_NVL INITIALLY( "NVL" );
|
||||
GLOBAL char * KW_ODD INITIALLY( "ODD" );
|
||||
GLOBAL char * KW_OF INITIALLY( "OF" );
|
||||
GLOBAL char * KW_ONEOF INITIALLY( "ONEOF" );
|
||||
GLOBAL char * KW_OPTIONAL INITIALLY( "OPTIONAL" );
|
||||
GLOBAL char * KW_OR INITIALLY( "OR" );
|
||||
GLOBAL char * KW_OTHERWISE INITIALLY( "OTHERWISE" );
|
||||
GLOBAL char * KW_PI INITIALLY( "PI" );
|
||||
GLOBAL char * KW_PROCEDURE INITIALLY( "PROCEDURE" );
|
||||
GLOBAL char * KW_QUERY INITIALLY( "QUERY" );
|
||||
GLOBAL char * KW_REAL INITIALLY( "REAL" );
|
||||
GLOBAL char * KW_REFERENCE INITIALLY( "REFERENCE" );
|
||||
GLOBAL char * KW_REMOVE INITIALLY( "REMOVE" );
|
||||
GLOBAL char * KW_REPEAT INITIALLY( "REPEAT" );
|
||||
GLOBAL char * KW_RETURN INITIALLY( "RETURN" );
|
||||
GLOBAL char * KW_ROLESOF INITIALLY( "ROLESOF" );
|
||||
GLOBAL char * KW_RULE INITIALLY( "RULE" );
|
||||
GLOBAL char * KW_SCHEMA INITIALLY( "SCHEMA" );
|
||||
GLOBAL char * KW_SELECT INITIALLY( "SELECT" );
|
||||
GLOBAL char * KW_SELF INITIALLY( "SELF" );
|
||||
GLOBAL char * KW_SET INITIALLY( "SET" );
|
||||
GLOBAL char * KW_SIN INITIALLY( "SIN" );
|
||||
GLOBAL char * KW_SIZEOF INITIALLY( "SIZEOF" );
|
||||
GLOBAL char * KW_SKIP INITIALLY( "SKIP" );
|
||||
GLOBAL char * KW_SQRT INITIALLY( "SQRT" );
|
||||
GLOBAL char * KW_STRING INITIALLY( "STRING" );
|
||||
GLOBAL char * KW_SUBTYPE INITIALLY( "SUBTYPE" );
|
||||
GLOBAL char * KW_SUPERTYPE INITIALLY( "SUPERTYPE" );
|
||||
GLOBAL char * KW_TAN INITIALLY( "TAN" );
|
||||
GLOBAL char * KW_THEN INITIALLY( "THEN" );
|
||||
GLOBAL char * KW_TO INITIALLY( "TO" );
|
||||
GLOBAL char * KW_TRUE INITIALLY( "TRUE" );
|
||||
GLOBAL char * KW_TYPE INITIALLY( "TYPE" );
|
||||
GLOBAL char * KW_TYPEOF INITIALLY( "TYPEOF" );
|
||||
GLOBAL char * KW_UNIQUE INITIALLY( "UNIQUE" );
|
||||
GLOBAL char * KW_UNKNOWN INITIALLY( "UNKNOWN" );
|
||||
GLOBAL char * KW_UNTIL INITIALLY( "UNTIL" );
|
||||
GLOBAL char * KW_USE INITIALLY( "USE" );
|
||||
GLOBAL char * KW_USEDIN INITIALLY( "USEDIN" );
|
||||
GLOBAL char * KW_VALUE INITIALLY( "VALUE" );
|
||||
GLOBAL char * KW_VALUE_IN INITIALLY( "VALUE_IN" );
|
||||
GLOBAL char * KW_VALUE_UNIQUE INITIALLY( "VALUE_UNIQUE" );
|
||||
GLOBAL char * KW_VAR INITIALLY( "VAR" );
|
||||
GLOBAL char * KW_WHERE INITIALLY( "WHERE" );
|
||||
GLOBAL char * KW_WHILE INITIALLY( "WHILE" );
|
||||
GLOBAL char * KW_XOR INITIALLY( "XOR" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct Scope_ * FUNC_NVL;
|
||||
GLOBAL SCL_EXPRESS_EXPORT struct Scope_ * FUNC_USEDIN;
|
||||
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_ABS INITIALLY( "ABS" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_ABSTRACT INITIALLY( "ABSTRACT" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_ACOS INITIALLY( "ACOS" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_AGGREGATE INITIALLY( "AGGREGATE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_ALIAS INITIALLY( "ALIAS" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_AND INITIALLY( "AND" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_ANDOR INITIALLY( "ANDOR" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_ARRAY INITIALLY( "ARRAY" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_AS INITIALLY( "AS" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_ASIN INITIALLY( "ASIN" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_ATAN INITIALLY( "ATAN" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_BAG INITIALLY( "BAG" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_BEGIN INITIALLY( "BEGIN" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_BINARY INITIALLY( "BINARY" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_BLENGTH INITIALLY( "BLENGTH" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_BOOLEAN INITIALLY( "BOOLEAN" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_BY INITIALLY( "BY" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_CASE INITIALLY( "CASE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_CONST_E INITIALLY( "CONST_E" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_CONSTANT INITIALLY( "CONSTANT" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_CONTEXT INITIALLY( "CONTEXT" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_COS INITIALLY( "COS" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_DERIVE INITIALLY( "DERIVE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_DIV INITIALLY( "DIV" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_ELSE INITIALLY( "ELSE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_END INITIALLY( "END" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_END_ALIAS INITIALLY( "END_ALIAS" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_END_CASE INITIALLY( "END_CASE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_END_CONSTANT INITIALLY( "END_CONSTANT" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_END_CONTEXT INITIALLY( "END_CONTEXT" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_END_ENTITY INITIALLY( "END_ENTITY" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_END_FUNCTION INITIALLY( "END_FUNCTION" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_END_IF INITIALLY( "END_IF" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_END_LOCAL INITIALLY( "END_LOCAL" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_END_MODEL INITIALLY( "END_MODEL" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_END_PROCEDURE INITIALLY( "END_PROCEDURE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_END_REPEAT INITIALLY( "END_REPEAT" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_END_RULE INITIALLY( "END_RULE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_END_SCHEMA INITIALLY( "END_SCHEMA" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_END_TYPE INITIALLY( "END_TYPE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_ENTITY INITIALLY( "ENTITY" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_ENUMERATION INITIALLY( "ENUMERATION" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_ESCAPE INITIALLY( "ESCAPE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_EXISTS INITIALLY( "EXISTS" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_EXP INITIALLY( "EXP" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_FALSE INITIALLY( "FALSE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_FIXED INITIALLY( "FIXED" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_FOR INITIALLY( "FOR" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_FORMAT INITIALLY( "FORMAT" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_FROM INITIALLY( "FROM" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_FUNCTION INITIALLY( "FUNCTION" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_GENERIC INITIALLY( "GENERIC" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_HIBOUND INITIALLY( "HIBOUND" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_HIINDEX INITIALLY( "HIINDEX" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_IF INITIALLY( "IF" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_IN INITIALLY( "IN" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_INCLUDE INITIALLY( "INCLUDE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_INSERT INITIALLY( "INSERT" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_INTEGER INITIALLY( "INTEGER" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_INVERSE INITIALLY( "INVERSE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_LENGTH INITIALLY( "LENGTH" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_LIKE INITIALLY( "LIKE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_LIST INITIALLY( "LIST" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_LOBOUND INITIALLY( "LOBOUND" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_LOCAL INITIALLY( "LOCAL" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_LOG INITIALLY( "LOG" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_LOG10 INITIALLY( "LOG10" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_LOG2 INITIALLY( "LOG2" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_LOGICAL INITIALLY( "LOGICAL" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_LOINDEX INITIALLY( "LOINDEX" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_MOD INITIALLY( "MOD" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_MODEL INITIALLY( "MODEL" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_NOT INITIALLY( "NOT" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_NUMBER INITIALLY( "NUMBER" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_NVL INITIALLY( "NVL" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_ODD INITIALLY( "ODD" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_OF INITIALLY( "OF" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_ONEOF INITIALLY( "ONEOF" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_OPTIONAL INITIALLY( "OPTIONAL" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_OR INITIALLY( "OR" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_OTHERWISE INITIALLY( "OTHERWISE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_PI INITIALLY( "PI" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_PROCEDURE INITIALLY( "PROCEDURE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_QUERY INITIALLY( "QUERY" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_REAL INITIALLY( "REAL" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_REFERENCE INITIALLY( "REFERENCE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_REMOVE INITIALLY( "REMOVE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_REPEAT INITIALLY( "REPEAT" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_RETURN INITIALLY( "RETURN" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_ROLESOF INITIALLY( "ROLESOF" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_RULE INITIALLY( "RULE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_SCHEMA INITIALLY( "SCHEMA" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_SELECT INITIALLY( "SELECT" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_SELF INITIALLY( "SELF" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_SET INITIALLY( "SET" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_SIN INITIALLY( "SIN" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_SIZEOF INITIALLY( "SIZEOF" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_SKIP INITIALLY( "SKIP" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_SQRT INITIALLY( "SQRT" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_STRING INITIALLY( "STRING" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_SUBTYPE INITIALLY( "SUBTYPE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_SUPERTYPE INITIALLY( "SUPERTYPE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_TAN INITIALLY( "TAN" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_THEN INITIALLY( "THEN" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_TO INITIALLY( "TO" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_TRUE INITIALLY( "TRUE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_TYPE INITIALLY( "TYPE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_TYPEOF INITIALLY( "TYPEOF" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_UNIQUE INITIALLY( "UNIQUE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_UNKNOWN INITIALLY( "UNKNOWN" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_UNTIL INITIALLY( "UNTIL" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_USE INITIALLY( "USE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_USEDIN INITIALLY( "USEDIN" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_VALUE INITIALLY( "VALUE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_VALUE_IN INITIALLY( "VALUE_IN" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_VALUE_UNIQUE INITIALLY( "VALUE_UNIQUE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_VAR INITIALLY( "VAR" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_WHERE INITIALLY( "WHERE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_WHILE INITIALLY( "WHILE" );
|
||||
GLOBAL SCL_EXPRESS_EXPORT char * KW_XOR INITIALLY( "XOR" );
|
||||
|
||||
#undef GLOBAL
|
||||
#undef INITIALLY
|
||||
@@ -255,29 +261,18 @@ GLOBAL char * KW_XOR INITIALLY( "XOR" );
|
||||
#define EXPRESSput_basename(e,n) ((e)->u.express->basename = (n))
|
||||
#define EXPRESSput_filename(e,n) ((e)->u.express->filename = (n))
|
||||
|
||||
/********************/
|
||||
/* Inline functions */
|
||||
/********************/
|
||||
|
||||
#if supports_inline_functions || defined(EXPRESS_C)
|
||||
|
||||
#endif /*supports_inline_functions || defined(EXPRESS_C)*/
|
||||
|
||||
/***********************/
|
||||
/* function prototypes */
|
||||
/***********************/
|
||||
|
||||
extern Express EXPRESScreate PROTO( ( void ) );
|
||||
extern void EXPRESSparse PROTO( ( Express, FILE *, char * ) );
|
||||
extern void EXPRESSinitialize PROTO( ( void ) );
|
||||
extern void EXPRESSresolve PROTO( ( Express ) );
|
||||
extern char * EXPRESSversion PROTO( ( void ) );
|
||||
extern int EXPRESS_fail PROTO( ( Express ) );
|
||||
extern int EXPRESS_succeed PROTO( ( Express ) );
|
||||
extern SCL_EXPRESS_EXPORT Express EXPRESScreate PROTO( ( void ) );
|
||||
extern SCL_EXPRESS_EXPORT void EXPRESSparse PROTO( ( Express, FILE *, char * ) );
|
||||
extern SCL_EXPRESS_EXPORT void EXPRESSinitialize PROTO( ( void ) );
|
||||
extern SCL_EXPRESS_EXPORT void EXPRESSresolve PROTO( ( Express ) );
|
||||
extern SCL_EXPRESS_EXPORT char * EXPRESSversion PROTO( ( void ) );
|
||||
extern SCL_EXPRESS_EXPORT int EXPRESS_fail PROTO( ( Express ) );
|
||||
extern SCL_EXPRESS_EXPORT int EXPRESS_succeed PROTO( ( Express ) );
|
||||
extern void EXPRESSinit_init PROTO( ( void ) );
|
||||
#if 0
|
||||
extern void EXPRESSdump_model PROTO( ( Express ) );
|
||||
#endif /*0*/
|
||||
extern void build_complex( Express );
|
||||
extern SCL_EXPRESS_EXPORT void build_complex( Express );
|
||||
|
||||
#endif /*EXPRESS_H*/
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user