The SCIP source code has different types of files, distinguished by their naming style. The following list gives an overview of the most important file types and their purpose.
<component>.c,h
and should not be included in the public API.SCIP*
parameter, but a pointer to the component as first argument and pointers to internal structures like SCIP_SET*
or SCIP_STAT*
, where necessary.SCIP<component><operation>...
, e.g., SCIPvarCreateOriginal()
or SCIPvarAddLocks()
.pub_<component>.h
declares the functions of the public API that do not need a SCIP pointer. Often, these are getter-functions. For example, pub_var.h contains public variable API functions.pub_<component>.h
follow the same naming style as those in <component>.h
and are used by the implementation of the internal API as well.scip_<component>.h
declares the functions of the public API that need a SCIP instance (SCIP*
), e.g., scip_var.h for public variable manipulation functions. Functions declared in scip_<component>.h
are often thin wrappers that call the internal API functions from <component>.h
. These functions should follow the naming style SCIP<operation><component>...
, e.g., SCIPcreateVarOriginal()
or SCIPaddVarLocks()
.SCIP_EXPORT
attribute.type_<component>.h
. Type names follow the style SCIP_<COMPONENT>...
.struct_<component>.h
. struct_<component>.h
is usually included only by <component>.c
and maybe scip_<component>.c
. Exceptions are due to manual inlining of functions via macros when compiling for optimized mode.<type>_<name>.c,h
, e.g., cons_knapsack.c implements the Knapsack constraint handler plugin and cons_knapsack.h declares its public API functions.<type>_<name>.h
.SCIP<operation>...<Name>
, e.g., SCIPincludeConshdlrAnd()
, SCIPcreateConsAnd()
, or SCIPgetNVarsAnd()
.src/scip/scipdefplugins.c
.