1    	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2    	/*                                                                           */
3    	/*                  This file is part of the program and library             */
4    	/*         SCIP --- Solving Constraint Integer Programs                      */
5    	/*                                                                           */
6    	/*  Copyright (c) 2002-2023 Zuse Institute Berlin (ZIB)                      */
7    	/*                                                                           */
8    	/*  Licensed under the Apache License, Version 2.0 (the "License");          */
9    	/*  you may not use this file except in compliance with the License.         */
10   	/*  You may obtain a copy of the License at                                  */
11   	/*                                                                           */
12   	/*      http://www.apache.org/licenses/LICENSE-2.0                           */
13   	/*                                                                           */
14   	/*  Unless required by applicable law or agreed to in writing, software      */
15   	/*  distributed under the License is distributed on an "AS IS" BASIS,        */
16   	/*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
17   	/*  See the License for the specific language governing permissions and      */
18   	/*  limitations under the License.                                           */
19   	/*                                                                           */
20   	/*  You should have received a copy of the Apache-2.0 license                */
21   	/*  along with SCIP; see the file LICENSE. If not visit scipopt.org.         */
22   	/*                                                                           */
23   	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
24   	
25   	/**@file   struct_scip.h
26   	 * @ingroup INTERNALAPI
27   	 * @brief  SCIP main data structure
28   	 * @author Tobias Achterberg
29   	 */
30   	
31   	/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
32   	
33   	#ifndef __SCIP_STRUCT_SCIP_H__
34   	#define __SCIP_STRUCT_SCIP_H__
35   	
36   	
37   	#include "scip/def.h"
38   	#include "scip/type_set.h"
39   	#include "scip/type_stat.h"
40   	#include "scip/type_clock.h"
41   	#include "scip/type_dcmp.h"
42   	#include "scip/type_event.h"
43   	#include "scip/type_interrupt.h"
44   	#include "scip/type_mem.h"
45   	#include "scip/type_lp.h"
46   	#include "scip/type_nlp.h"
47   	#include "scip/type_implics.h"
48   	#include "scip/type_prob.h"
49   	#include "scip/type_primal.h"
50   	#include "scip/type_relax.h"
51   	#include "scip/type_tree.h"
52   	#include "scip/type_pricestore.h"
53   	#include "scip/type_sepastore.h"
54   	#include "scip/type_conflictstore.h"
55   	#include "scip/type_cutpool.h"
56   	#include "scip/type_branch.h"
57   	#include "scip/type_conflict.h"
58   	#include "scip/type_dialog.h"
59   	#include "scip/type_reopt.h"
60   	#include "scip/type_concurrent.h"
61   	#include "scip/type_syncstore.h"
62   	
63   	#ifdef __cplusplus
64   	extern "C" {
65   	#endif
66   	
67   	/** SCIP main data structure */
68   	struct Scip
69   	{
70   	   /* INIT */
71   	   SCIP_MEM*             mem;                /**< block memory buffers */
72   	   SCIP_SET*             set;                /**< global SCIP settings */
73   	   SCIP_INTERRUPT*       interrupt;          /**< CTRL-C interrupt data */
74   	   SCIP_DIALOGHDLR*      dialoghdlr;         /**< dialog handler for user interface */
75   	   SCIP_MESSAGEHDLR*     messagehdlr;        /**< message handler for output handling, or NULL */
76   	   SCIP_CLOCK*           totaltime;          /**< total SCIP running time */
77   	
78   	   /* PROBLEM */
79   	   SCIP_STAT*            stat;               /**< dynamic problem statistics */
80   	   SCIP_PROB*            origprob;           /**< original problem data */
81   	   SCIP_PRIMAL*          origprimal;         /**< primal data and solution storage for solution candidates */
82   	   SCIP_DECOMPSTORE*     decompstore;        /**< decomposition storage data structure */
83   	
84   	   /* REOPTIMIZATION */
85   	   SCIP_REOPT*           reopt;              /**< reoptimization data */
86   	
87   	   /* TRANSFORMED */
88   	   SCIP_EVENTFILTER*     eventfilter;        /**< event filter for global (not variable dependent) events */
89   	   SCIP_EVENTQUEUE*      eventqueue;         /**< event queue to cache events and process them later (bound change events) */
90   	   SCIP_BRANCHCAND*      branchcand;         /**< storage for branching candidates */
91   	   SCIP_LP*              lp;                 /**< LP data */
92   	   SCIP_NLP*             nlp;                /**< NLP data */
93   	   SCIP_RELAXATION*      relaxation;         /**< global relaxation data */
94   	   SCIP_PRIMAL*          primal;             /**< primal data and solution storage */
95   	   SCIP_TREE*            tree;               /**< branch and bound tree */
96   	   SCIP_CONFLICT*        conflict;           /**< conflict analysis data */
97   	   SCIP_CLIQUETABLE*     cliquetable;        /**< collection of cliques */
98   	   SCIP_PROB*            transprob;          /**< transformed problem after presolve */
99   	
100  	   /* SOLVING */
101  	   SCIP_PRICESTORE*      pricestore;         /**< storage for priced variables */
102  	   SCIP_SEPASTORE*       sepastore;          /**< storage for separated cuts */
103  	   SCIP_SEPASTORE*       sepastoreprobing;   /**< storage for separated cuts during probing mode */
104  	   SCIP_CONFLICTSTORE*   conflictstore;      /**< storage for conflicts */
105  	   SCIP_CUTPOOL*         cutpool;            /**< global cut pool */
106  	   SCIP_CUTPOOL*         delayedcutpool;     /**< global delayed cut pool */
107  	
108  	   /* PARALLEL */
109  	   SCIP_SYNCSTORE*       syncstore;          /**< the data structure for storing synchronization information */
110  	   SCIP_CONCURRENT*      concurrent;         /**< data required for concurrent solve */
111  	};
112  	
113  	#ifdef __cplusplus
114  	}
115  	#endif
116  	
117  	#endif
118