Revert "Split fit function initialization similar to expectations"
[openmx:openmx.git] / src / omxRowFitFunction.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 _OMX_ROW_FITFUNCTION_
18 #define _OMX_ROW_FITFUNCTION_ TRUE
19
20 #include <R.h>
21 #include <Rinternals.h>
22 #include <Rdefines.h>
23 #include <R_ext/Rdynload.h>
24 #include <R_ext/BLAS.h>
25 #include <R_ext/Lapack.h>
26 #include "omxDefines.h"
27 #include "omxAlgebraFunctions.h"
28 #include "omxSymbolTable.h"
29 #include "omxData.h"
30 #include "omxFIMLFitFunction.h"
31
32 typedef struct omxRowFitFunction {
33
34         /* Parts of the R  MxRowFitFunction Object */
35         omxMatrix* rowAlgebra;          // Row-by-row algebra
36         omxMatrix* rowResults;          // Aggregation of row algebra results
37         omxMatrix* reduceAlgebra;       // Algebra performed after row-by-row computation
38     omxMatrix* filteredDataRow; // Data row minus NAs
39     omxMatrix* existenceVector; // Set of NAs
40     omxMatrix* dataColumns;             // The order of columns in the data matrix
41
42     /* Contiguous data note for contiguity speedup */
43         omxContiguousData contiguous;           // Are the dataColumns contiguous within the data set
44
45         /* Structures determined from info in the MxRowFitFunction Object*/
46     double* oldDefs;            // The previous defVar vector.  To avoid recalculations where possible.         // NYI: This element currently unused.
47         omxDefinitionVar* defVars;      // A list of definition variables
48         int numDefs;                            // The length of the defVars list
49         omxMatrix* dataRow;         // One row of data, kept for aliasing only
50         omxData*   data;                        // The data
51
52         int numDataRowDeps;         // number of algebra/matrix dependencies
53         int *dataRowDeps;           // indices of algebra/matrix dependencies
54
55 } omxRowFitFunction;
56
57
58
59 void omxDestroyRowFitFunction(omxFitFunction *oo);
60
61 omxRListElement* omxSetFinalReturnsRowFitFunction(omxFitFunction *oo, int *numReturns);
62
63
64 void omxCopyMatrixToRow(omxMatrix* source, int row, omxMatrix* target);
65
66 void omxInitRowFitFunction(omxFitFunction* oo, SEXP rObj);
67
68
69
70
71
72 #endif /* _OMX_ROW_FITFUNCTION_ */