- Added support for wrapping derived type pointer function return values. An ownership API is also provided for flagging whether the caller owns the returned memory.
- Various updates and improvements to doxygen comment translation:
- Document function return values
- Remove previously added special comments "ARRAY" and "OPTIONAL"
- Add new command option
--document-all-params
- Improved whitespace handling
- Add special handling of comment ordering with
\par
command
- Minor improvements to FortranMatrix class
- Added
%init
keyword to configuration file for control over when destructors are called.
- Added support for wrapping
NOPASS
type bound procedures as static methods - Added support for wrapping
COMPLEX
data type - Require
INTENT(IN)
for procedure pointers - Support wrapping
TYPE(C_PTR)
- Support wrapping
VALUE
attribute for additional argument types - Add gfortran version-specific typedef for hidden character length argument
- Parsing fixes for type bound procedures with line continuation
- Fix for wrapping virtual methods wtih class arguments
- Fix for string output wrapping with multiple string arguments
- Minor improvements to argument parsing
- Proper dynamic allocation of character arrays in string wrapper code
- Added DLLEXPORT macro so that wrapper code can be compiled with MSC
- Changed convention for dtor wrapper code. Dtors are no longer included by default as separate C++ functions. They can be included separately by using %include. Previous configuration files that %ignore dtors to hide them from the API should be updated (%ignore will now cause the dtor to not be wrapped at all).
- Minor improvements for type bound procedure parsing
- Recognize arguments declared as PROCEDURE (without POINTER attribute) but do not wrap
- Fix use of ordered dictionaries causing problems on some newer versions of Python
- Added
%pattern
keyword to interface file to facilitate bulk renaming
- Minor fixes to command option names
- Upgraded code to be compatible with Python 2 and 3. Should work on Python 2 even if the "future" package is not available.
- Updated argument parsing to use argparse instead of getopt
- Minor fix for procedure pointer storage size on 64-bit platforms
- Minor fixes for wrapping CLASS data
- Experimental support for Fortran object oriented features:
- Wrapping of type bound procedures
- Fortran type extension translated into C++ classes with inheritance structure
- Support for abstract types and deferred procedures (translated into pure virtual methods in C++)
- Minor fixes:
- Fix to prevent argument clash when wrapping procedures that contain other procedure definitions with the same argument names
- Fix to not use case-sensitivity when matching names in the argument list to their type declarations
- Added option
--no-std-string
, which uses a wrapper class to manage character output argument conversions, instead ofstd::string
. This can eliminate C++ library conflicts in some cases. - Fix for renaming of derived types with the interface file
- Fix to make derived type name matching case insensitive
- Proper exclusion of ALLOCATABLE and POINTER arguments from wrapper code
- Fixing bug for optional assumed length strings
- Added support for assumed length strings (intent(in) and intent(out))
- Added support for
INTEGER(8)
- Added option to specify name of constants class
- Added support for enumerations
- Added option to disable wrapping non-method procedures
- Added option to suppress warnings for procedures not wrapped
- Added option to change name of main header file
- Added support for KIND spec's without KIND keyword (e.g. REAL(8)).
- Added support for
C_INT
,C_FLOAT
, andC_DOUBLE
KIND spec's - Added support for use of named PARAMETER in KIND spec
- Added capability to customize regular expressions used for identifying constructors and destructors
- Better handling of ABSTRACT INTERFACE
- Better handling of comments
- Minor fix for newline before
#include <stdlib.h>
- Changing
<stdlib.h>
to<cstdlib>
- New option
--array-as-ptr
for wrapping 1-D arrays with '*' instead of '[]' - Minor tweak to support re-wrapping with swig -includeall
- Fix for return codes
- Added support for higher dimensional (>2) arrays
- Added option to turn off use of FortranMatrix wrapper class
- Changed
--c-arrays
option to--no-vector
- Fixes for parsing lower case type definitions, such as 'real'
- Changed default compiler from g95 to gfortran
- Added support for integer kinds 1,2,4
- Added support for character length specification via '*':
CHARACTER*20
- Improved robustness for processing Fortran integer parameter declarations, which might be used in string length definitions
- Added capability to wrap non-module (top-level) procedures
- Added exception handler to gracefully handle FortWrap internal errors
- Improved error and warning messages
- Fixes to handle data statements with * and KIND; however, wrapper
generation is currently only supported for
REAL*8
,REAL(KIND=4)
, andREAL(KIND=8)
- Fixed bug parsing assumed shape arrays
- Added support for
DOUBLE PRECISION
statement - Added error handling for COMPLEX types (which are not supported)
- Fixed bug parsing functions with array return values
- Fixed bug handling DIMENSION when it is followed by INTENT
- Added support for string arguments that are optional
- Changed interface for intent(in) strings to use character arrays, which makes it easier to pass string literals
- Fixed bug using intent(out) strings with functions
- Made run_tests.py script more portable: should now work on Windows under msys and cygwin (and possibly cmd.exe)
- Added a brief walkthrough to the manual
- Added support for intent(in) strings
- Fixed issues parsing high-dimensional arrays and certain declarations with DIMENSION
- Fix for makefile (had CPPFLAGS and CXXFLAGS mixed up, and it was working with gcc 4.1 but not with 4.6)
- Tweaks to function_pointer and array tests for improved compatibility
- Correction to manual: FortWrap actually does support assumed size arrays
- Added support for a configuration file (-i command option), which allows more control over the wrapping process (renaming or ignoring objects/procedures, etc.)
- More additions to documentation
- Fixed bug for processing compiler specification with -c
- Added capability to list files to wrap on the command line
- Added option
--global
to wrap non-method procedures as global functions instead of static members of dummy class - Added option
--dummy-class
for specifying the name of the class used to wrap non-method procedures - Improved error checking for invalid source files
- Exit without generating any files if there is nothing to wrap
- Added option
--c-arrays
to generate C-style array wrappers instead of C++ vector containers
- Added proper handling for top-level procedures (print warning) and multi-module files
- Expanded documentation
- Added support for lowercase Fortran keywords
- Initial release