The OCaml module's exception handling code was poorly designed,
gave confusing exception messages, and was vulnerable to buffer
overflows.
The OCaml module's SWIG_exception_() was adding a useless newline to
the end of the exception message.
In some cases, the integer value of f.e. SWIG_TypeError was being added
to the exception message.
The unneeded else in the OCaml module's SWIG_contract_assert() macro
was causing -Wmisleading-indentation warnings.
The OCaml module's exception handling code now mirrors that of the
Java module.
Add Lib/ocaml/std_except.i.
Add multiple runtime tests.
If a class was given the director feature, it was not possible
to use ctors with multiple parameters.
Add director_default_runme.ml (it is based on
director_default_runme.java).
Add a directorin typemap for SWIGTYPE.
Add director_frob_runme.ml, director_pass_by_value_runme.ml, and
director_unroll_runme.ml.
This commit fixes most of the director-related warnings in the OCaml
test suite. Of the director tests that are currently included in the
OCaml test suite, director_basic and director_property are the only
ones which give warnings (due to issues with typecheck typemaps).
The result of caml_named_value() can be cached for (slightly)
improved performance.
This is mentioned in the OCaml reference manual.
https://caml.inria.fr/pub/docs/manual-ocaml/intfc.html#sec453
In addition, fix incorrect use of CAMLreturn() in
caml_ptr_val_internal().
* ZackerySpytz-OCaml-eliminate-wno-write-strings:
[OCaml] Remove support for OCaml versions < 3.12.0
[OCaml] Fix toplevel creation for ocamlmktop versions >= 4.04.0
[OCaml] Eliminate use of -Wno-write-strings
Add %typemap(in) (char *STRING, size_t LENGTH).
Fix warnings in char_binary.i.
./../char_binary.i:7: Warning 453: Can't apply (char *STRING,size_t LENGTH). No typemaps are defined.
./../char_binary.i:8: Warning 453: Can't apply (char *STRING,size_t LENGTH). No typemaps are defined.
Add a runtime test (it is based on the Python and Go char_binary
runtime tests).
When this macro is not defined, the caml/ headers will define
macros without the caml_ prefix as aliases for some functions in the
OCaml C API.
For example, caml/compatibility.h defines `invalid_argument` as an
alias for `caml_invalid_argument` when CAML_NAME_SPACE is not defined,
which breaks code that uses std::invalid_argument.
Rename some functions that were missed in
05589508a6.
Don't convert string literals to char * in the strings_test example.
In constantWrapper(), use SwigType_str() instead of SwigType_lstr()
in order to keep const qualifiers.
OCaml's variableWrapper() wasn't calling emit_action_code() for
in/out typemaps, which meant that %allowexception was being ignored.
In addition, remove all comments in the typemaps in Lib/ocaml. In the
case of the allowexcept test, one of the typemap comments caused
compilation to fail because it became nested within another comment
in an %exception block.
Re-enable the allowexcept test.
Add allowexcept_runme.ml.
Fix warnings in overload_numeric.i.
./../overload_numeric.i:36: Warning 509: Overloaded method Nums::over(short) effectively ignored,
./../overload_numeric.i:33: Warning 509: as it is shadowed by Nums::over(signed char).
./../overload_numeric.i:39: Warning 509: Overloaded method Nums::over(int) effectively ignored,
./../overload_numeric.i:33: Warning 509: as it is shadowed by Nums::over(signed char).
Add overload_numeric_runme.ml.
Use the SWIG_TYPECHECK_BOOL precedence level instead of
SWIG_TYPECHECK_INTEGER when checking for bools.
Add a runtime test in the form of overload_bool_runme.ml.
In OCaml 3.08.0, many functions in the OCaml C API were renamed to
include a caml_ prefix. Their previous names were retained as macros
in caml/compatibility.h and were (apparently) deprecated.
Rename occurrences of alloc_string, alloc_tuple, callback, callback2,
callback3, copy_double, copy_int64, copy_string, failwith, and modify
in the OCaml module.
The OCaml module requires OCaml >= 3.08.3, so this change is safe
for all supported OCaml versions.
copy_string() is a macro in the OCaml C API, so rename the function
to copy_str(). Add a runtime test.
The minherit runtime test was fixed by b64d685.
Use the proper syntax for accessing member variables in
unions_runme.ml
* ZackerySpytz-OCaml_int64_t:
Add changes entry for fixing OCaml int64_t compile problem
Fix OCaml version detection if caml/version.h is not available
[OCaml] Use int64_t instead of int64 for OCaml versions >= 4.03.0
Conflicts:
CHANGES.current
Add `membervariableHandler()` to the `OCAML` class in ocaml.cxx (it is
partly based on the code in python.cxx and octave.cxx).
In Lib/ocaml/class.swg, wrapped classes/structs were not being added
to `class_master_list`. This is fixed by adding a call to
`register_class_byname`.
Add a unit test in the form of struct_value_runme.ml.
Use SWIGINTERN to silence unused function warnings.
In addition, remove the declarations for SWIG_MustGetPtr(),
wrap_delete_void(), enum_to_int(), and int_to_enum() -- these
lacked definitions and caused compiler warnings.