ifa: Fixup
[openmx:openmx.git] / src / npsolWrap.h
1 /*
2  *  Copyright 2007-2013 The OpenMx Project
3  *
4  *  Licensed under the Apache License, Version 2.0 (the "License");
5  *  you may not use this file except in compliance with the License.
6  *  You may obtain a copy of the License at
7  *
8  *       http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *   Unless required by applicable law or agreed to in writing, software
11  *   distributed under the License is distributed on an "AS IS" BASIS,
12  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *  See the License for the specific language governing permissions and
14  *  limitations under the License.
15  */
16
17 #ifndef _NPSOLWRAP_H
18 #define _NPSOLWRAP_H
19
20 #include <exception>
21 #include <string>
22
23 #include "omxState.h"
24 #include "omxOpenmpWrap.h"
25
26 /* Functions for Export */
27 SEXP omxBackend(SEXP fitfunction, SEXP startVals, SEXP constraints,
28                 SEXP matList, SEXP varList, SEXP algList, SEXP expList, SEXP computeList,
29                 SEXP data, SEXP intervalList, SEXP checkpointList, SEXP options);
30
31 SEXP omxCallAlgebra(SEXP matList, SEXP algNum, SEXP options);
32 SEXP findIdenticalRowsData(SEXP data, SEXP missing, SEXP defvars,
33         SEXP skipMissingness, SEXP skipDefvars);
34
35 class omxManageProtectInsanity {
36         PROTECT_INDEX initialpix;
37  public:
38         omxManageProtectInsanity() {
39                 PROTECT_WITH_INDEX(R_NilValue, &initialpix);
40                 UNPROTECT(1);
41         }
42         ~omxManageProtectInsanity() {
43                 PROTECT_INDEX pix;
44                 PROTECT_WITH_INDEX(R_NilValue, &pix);
45                 PROTECT_INDEX diff = pix - initialpix;
46                 UNPROTECT(1 + diff);
47         }
48 };
49
50 void string_to_try_error( const std::string& str) __attribute__ ((noreturn));
51
52 void exception_to_try_error( const std::exception& ex ) __attribute__ ((noreturn));
53
54 #endif // #define _NPSOLWRAP_H