Copyright (C) Kevin Larke 2009-2020
This file is part of libcm.
libcm is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
libcm is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
See the GNU General Public License distributed with the libcm
package or look here:
cmCtx_t is used to hold application supplied cmRpt_t, cmErr_t and other global values for easy distribution throughtout a cm based application.
Most the libcm components need at least an application supplied cmRpt_t function to initialize their own internal cmErr_t error class. Likewise classes which use a cmLHeapH_t based internal heap manager require application wide memory manager configuration information. The cmCtx_t packages this information and allows it to be easily distributed. The applicaton and its constituent objects then need only maintain and pass pointers to a single cmCtx_t object to have access to all the global program information.
// cmCtx_t data type. typedef struct { cmRpt_t rpt; // Application supplied global reporter. This reporter is also use by \ref err. cmErr_t err; // Application error reporter which can be used to report errors prior to the client object being initialized to the point where it can use it's own cmErr_t. unsigned guardByteCnt; // Guard byte count in use by \ref cmMallocDebug.h . unsigned alignByteCnt; // Align byte count used by the \ref cmMallocDebug.h unsigned mmFlags; // Initialization flags used by \ref cmMallocDebug.h. void* userDefPtr; // Application defined pointer. } cmCtx_t; // cmCtx_t initialization function. void cmCtxSetup( cmCtx_t* ctx, // The cmCtx_t to initialize. const cmChar_t* title, // The cmCtx_t error label. See cmErrSetup(). cmRptPrintFunc_t prtFunc, // The printFunc() to assign to the cmCtx_t.rpt. cmRptPrintFunc_t errFunc, // The errFunc() to assign to cmCtx_t.rpt. void* cbPtr, // Callback data to use with prtFunc() and errFunc(). unsigned guardByteCnt, // Guard byte count used to configure \ref cmMallocDebug.h unsigned alignByteCnt, // Align byte count used to configure \ref cmMallocDebug.h unsigned mmFlags // Initialization flags used to configure \ref cmMallocDebug.h );