The KCMS framework uses external entry points to load your derivative as an executable. The mandatory and optional entry points are described.
When you derive from a KcsXform class, the mandatory external entry points are:
extern long KcsDLOpenXfrmCount; KcsXform * KcsCreateXfrm(KcsStatus *aStat, KcsChunkSet *aChunkSet, KcsChunkId aChunkId, KcsAttributeSet *aAttrSet);
KcsCreateXfrm() creates an instance of a KcsXform derivative.
When you derive from a KcsXform class, the optional entry points are:
KcsStatus KcsInitXfrm(); KcsStatus KcsCleanupXfrm();
The following example shows you how to use the entry points when creating a KcsXform derivative.
extern long KcsDLOpenXfrmCount = 0; /* Global initialization */ KcsStatus KcsInitXfrm(long libMajor, long libMinor, long *myMajor, long *myMinor) { // Set up the return values *myMajor = KCS_MAJOR_VERSION; *myMinor = KCS_MINOR_VERSION; //Check the major version if (libMajor != KCS_MAJOR_VERSION) return (KCS_CMM_MAJOR_VERSION_MISMATCH); //Currently, if minor version of library is less than the KCMS // minor version, return < an error. if (libMinor KCS_MINOR_VERSION) return (KCS_CMM_MINOR_VERSION_MISMATCH); //Library guarantees if your minor version number is greater than //KCMS minor version number, it will handle it. No more init. return(KCS_SUCCESS); } KcsXform * KcsCreateXfrm(KcsStatus *aStat, KcsChunkSet *aCS, KcsChunkId aChunkId, KcsAttributeSet *aAttrSet) { //Create the new derivative return(new KcsTechUCP(aStat, KcsLoadAllow, aCS, aChunkId, aAttrSet)); } /* Global clean up */ KcsStatus KcsCleanupXfrm() { KcsStatus sStat; return(KCS_SUCCESS); }