/*______________________________ opJTAPI.c _______________________________*/ /* */ /* 1 2 3 4 5 6 7 */ /*3456789012345678901234567890123456789012345678901234567890123456789012345678*/ /**************************************|***************************************/ /* */ /* Copyright (c) 2007 Glen Petrie All rights reserved. */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ /* "Software"), to deal in the Software without restriction, including */ /* without limitation the rights to use, copy, modify, merge, publish, */ /* distribute, and/or sell copies of the Software, and to permit persons */ /* to whom the Software is furnished to do so, subject to the following */ /* conditions: */ /* */ /* The rights to use, copy, modify, merge, publish, distribute, and/or */ /* sell copies of this Software or any material modification thereof */ /* shall not be further restricted by any means, including, but not */ /* limited to, the GNU General Public License. */ /* */ /* The above copyright notice and this permission notice shall be */ /* included in all copies or substantial portions of the Software. */ /* */ /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* */ /* */ /**************************************|***************************************/ /* */ /* Open-Printing Embedded Print */ /* */ /* Core OPEP Job Ticket (source) File */ /* */ /* API-150010 void opjtInitLib() */ /* */ /* API-150020 void opjtSuspendLib() */ /* */ /* API-150030 void opjtReleaseLib() */ /* */ /* API-150040 void opjtNewPrintJobTicket(jobTktId) */ /* */ /* API-150050 void opjtNewObject(jobTktId, objectType) */ /* */ /* API-150060 void opjtFreeObject(jobTktId,objectType,object) */ /* */ /* NOT SUPPORTED API-150070 void opjtNewAttribute(...) */ /* */ /* NOT SUPPORTED API-150080 void opjtFreeAttribute(...) */ /* */ /* API-150090 void opjtSetValue(jobTktId, attributeId, */ /* attribute, value) */ /* API-150100 void opjtReplaceValue(jobTktId, attributeId, */ /* attribute, value) */ /* API-150110 void opjtAddValue(jobTktId, attributeId, */ /* attribute, value) */ /* API-150120 void opjtGetNextValue(jobTktId, attributeId, */ /* attribute, value, moreValues) */ /* API-150130 void opjtSetIterator(jobTktId, attributeId, */ /* attribute, iterator) */ /* API-150140 void opjtGetNumOfValues(jobTktId, attributeId, */ /* attribute, numValues) */ /* NOT SUPPORTED API-150150 void opjtGetValueType(...) */ /* */ /* API-150160 void opjtFreeValue(jobTktId, attributeId, */ /* attribute) */ /* */ /**************************************|***************************************/ /* */ /* Contributors: */ /* Glen W. Petrie / The World of Graphics */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.07.30 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ /* */ /* Special Software and/or Usage Information */ /* */ /* # All exposed API's in this file utilize the OPEP global link-list error */ /* structure with the global variable name of op_error. */ /* */ /**************************************|***************************************/ /*-------------------------------- Includes -------------------------------*/ /**************************************|***************************************/ #include "opGeneric.h" #include "opJobStructs.h" #include "opJTAPI.h" /*------------------------------- Definitions -----------------------------*/ /**************************************|***************************************/ /*--------------------------- Macro Definitions ----------------------------*/ /**************************************|***************************************/ #define CHECK_JOB_TKT(j,a) if (FindAjobTktId((j)) == NULL) { \ OP_SET_ERR(OPJT_INVALID_JOB_TICKET); \ opDebugFlowOut(a); return; } /*--------------------------- Struct Definitions ---------------------------*/ /**************************************|***************************************/ /*---------------------- Application Global Variables ---------------------*/ /**************************************|***************************************/ /*------------------------- Local Global Variables ------------------------*/ /**************************************|***************************************/ /*** The Default Job Info */ /*** -------------------------------------------------------------------- */ OP_JOB theJob; OP_JOB_ID theJobId = &theJob; OP_JOB_TKT theJobTkt; OP_JOB_TKT_ID theJobTktId = &theJobTkt; /*---------------------------- Local Functions ----------------------------*/ /**************************************|***************************************/ static OP_JOB_TKT_ID FindAjobTktId (OP_JOB_TKT_ID); /**************************************|***************************************/ /* API-150010 */ /* Module : opjtInitLib */ /* Description: Initializes the JTAPI library and return context structure */ /* used by this JTAPI library instance. */ /* param >>: none */ /* << param : none. */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ void opjtInitLib( void ) { /*** Declaration of Local Routine Variables */ /*** API Identifier Information for this Routine */ OP_API_REG(150010, "opjtInitLib"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtInitLib"); /*** Initialization of Local Routine Variables */ /*** Initialize Application global variables */ memset( &theJob, 0, sizeof(OP_JOB )); memset(&theJobTkt, 0, sizeof(OP_JOB_TKT)); theJobTkt.jobId = theJobId; /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtInitLib"); return; } /**************************************|***************************************/ /* API-150020 */ /* Module : opjtSuspendLib */ /* Description: Releases all objects and dynamic memory and closes any I/O */ /* channels that are associated with this JTAPI library instance.*/ /* param >>: none */ /* << param : none. */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ void opjtSuspendLib( void ) { /*** Declaration of Local Routine Variables */ /*** API Identifier Information for this Routine */ OP_API_REG(150020, "opjtSuspendLib"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtSuspendLib"); /*** Initialization of Local Routine Variables */ /*** Clean up */ while (theJobTktId->next != NULL) { opjtFreeObject(theJobTktId->next, OP_JOB_TICKET_INFO_OBJECT, theJobTktId->next); } /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtSuspendLib"); return; } /**************************************|***************************************/ /* API-150030 */ /* Module : opjtReleaseLib */ /* Description: Releases this JTAPI library instance. */ /* param >>: none */ /* << param : none. */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ void opjtReleaseLib( void ) { /*** Declaration of Local Routine Variables */ /*** API Identifier Information for this Routine */ OP_API_REG(150030, "opjtReleaseLib"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtReleaseLib"); /*** Initialization of Local Routine Variables */ /*** Clean up */ while (theJobTktId->next != NULL) { opjtFreeObject(theJobTktId->next, OP_JOB_TICKET_INFO_OBJECT, theJobTktId->next); } /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtReleaseLib"); return; } /**************************************|***************************************/ /* API-150040 */ /* Module : opjtNewPrintJobTicket */ /* Description: Instantiate a Printing Job Ticket. */ /* param >>: Pointer for instantiated job ticket record */ /* << param : none. */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ void opjtNewPrintJobTicket( OP_JOB_TKT_ID* jobTktId ) { /*** Declaration of Local Routine Variables */ OP_JOB_TKT_ID newJTID; OP_JOB_TKT_ID lastJTID; /*** API Identifier Information for this Routine */ OP_API_REG(150040, "opjtNewPrintJobTicket"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtNewPrintJobTicket"); /*** Initialization of Local Routine Variables */ /*** Create and Initialize a new job ticket object (struct)(record) */ /*** Create a New Job Ticket (Info) Object (Struct) */ newJTID = (OP_JOB_TKT_ID)malloc(sizeof(OP_JOB_TKT)); if (newJTID == NULL) { OP_SET_ERR(OP_ERROR_MEMORY_ALLOCATION); opDebugFlowOut("CreateInitJobTkt"); return; } memset(newJTID, 0, sizeof(OP_JOB_TKT)); /*** Create a New Job Object (Struct) */ newJTID->jobId = (OP_JOB_ID)malloc(sizeof(OP_JOB_ID)); if (newJTID->jobId == NULL) { free(newJTID); OP_SET_ERR(OP_ERROR_MEMORY_ALLOCATION); opDebugFlowOut("CreateInitJobTkt"); return; } memset(newJTID->jobId, 0, sizeof(OP_JOB)); /*** Step through link list to last entry */ /*** Put new Job Ticket in link-list */ lastJTID = theJobTktId; while(lastJTID->next != NULL) lastJTID = lastJTID->next; lastJTID->next = (void*)newJTID; /*** Set return Job Ticket Id */ *jobTktId = (void*)newJTID; /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtNewPrintJobTicket"); return; } /**************************************|***************************************/ /* API-150050 */ /* Module : opjtNewObject */ /* Description: Creates a JTAPI object. */ /* */ /* Object Hierarchy */ /* -------------------------------------------------------------------------- */ /* */ /* OP_JOB_OBJECT */ /* OP_CONTACT_INFO_OBJECT */ /* OP_DESTINATION_OBJECT */ /* OP_DOCUMENT_OBJECT */ /* OP_FOLDING_OBJECT */ /* OP_FORCE_PAGE_OBJECT */ /* OP_HOLE_MAKING_OBJECT */ /* OP_INCLUDE_PAGES_OBJECT --> OP_PAGE_RANGE_OBJECT */ /* OP_INSERT_SHEET_OBJECT */ /* OP_JOB_MEDIA_OBJECT --> OP_MEDIA_OBJECT */ /* OP_OUTPUT_PAGES_OBJECT --> OP_PAGE_RANGE_OBJECT */ /* OP_SEPARATOR_SHEET_OBJECT */ /* OP_STITCHING_OBJECT */ /* OP_SUBSCRIPTION_OBJECT */ /* */ /* OP_JOB_TICKET_INFO_OBJECT */ /* OP_JOB_OBJECT */ /* */ /* OP_DOCUMENT_OBJECT */ /* OP_DOC_PAGE_RANGE_OBJECT --> OP_PAGE_RANGE_OBJECT */ /* OP_DOC_FORCE_PAGE_OBJECT --> OP_PAGE_RANGE_OBJECT */ /* OP_DOC_INSERT_SHEET_OBJECT --> OP_PAGE_RANGE_OBJECT */ /* */ /* OP_PAGE_RANGE_OBJECT */ /* <----> */ /* */ /* OP_DESTINATION_OBJECT */ /* <----> */ /* */ /* OP_CONTACT_INFO_OBJECT */ /* <----> */ /* */ /* OP_SUBSCRIPTION_OBJECT */ /* <----> */ /* */ /* OP_SEPARATOR_SHEET_OBJECT */ /* OP_SEP_SHEET_MEDIA_OBJECT --> OP_MEDIA_OBJECT */ /* */ /* OP_MEDIA_OBJECT */ /* <----> */ /* */ /* OP_FORCE_PAGE_OBJECT */ /* <----> */ /* */ /* OP_INSERT_SHEET_OBJECT */ /* OP_INSERT_SHEET_MEDIA_OBJECT --> OP_MEDIA_OBJECT */ /* OP_INSERT_SHEET_PAGE_RANGE_OBJECT --> OP_PAGE_RANGE_OBJECT */ /* */ /* OP_HOLE_MAKING_OBJECT */ /* <----> */ /* */ /* OP_FOLDING_OBJECT */ /* <----> */ /* */ /* OP_STITCHING_OBJECT */ /* <----> */ /* */ /* -------------------------------------------------------------------------- */ /* */ /* param >>: jobTktId - Pointer to instantiated job ticket record */ /* param >>: objectType - Object Identifier (Enum) for new object */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ #define NEW_OP_OBJECT(a,b,c) aPtr = (void*)(a); if (aPtr != NULL) { \ while (((b)aPtr)->next != NULL) \ aPtr = ((b)aPtr)->next; } \ aPtr=(b)malloc(sizeof(c)); \ if (aPtr == NULL) { \ OP_SET_ERR(OP_ERROR_MEMORY_ALLOCATION); \ opDebugFlowOut("opjtNewObject"); \ return; } \ memset(aPtr, 0, sizeof(c)); /**************************************|***************************************/ void opjtNewObject( OP_JOB_TKT_ID jobTktId, OP_INT32 objectType ) { /*** Declaration of Local Routine Variables */ void* aPtr; /*** API Identifier Information for this Routine */ OP_API_REG(150050, "opjtNewObject"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtNewObject"); /*** Is there an active Job */ CHECK_JOB_TKT(jobTktId, "opjtNewObject"); /*** Initialization of Local Routine Variables */ /*** If the Binding Object does not exist then create if first */ /*** Note that the Job Object is always created when job ticket info is */ switch (objectType) { case OP_DOC_PAGE_RANGE_OBJECT: case OP_DOC_FORCE_PAGE_OBJECT: case OP_DOC_INSERT_SHEET_OBJECT: if (jobTktId->jobId->docId == NULL) opjtNewObject(jobTktId, OP_DOCUMENT_OBJECT); break; case OP_INSERT_SHEET_MEDIA_OBJECT: case OP_INSERT_SHEET_PAGE_RANGE_OBJECT: if (jobTktId->jobId->insertSheetId == NULL) opjtNewObject(jobTktId, OP_INSERT_SHEET_OBJECT); break; } /*** Determine what object to create and allocate memory for the object */ /*** Default values will be set for each newly created object */ switch (objectType) { case OP_JOB_TICKET_INFO_OBJECT: case OP_JOB_OBJECT: /* Use the opjtNewPrintJobTicket */ /* Use the opjtNewPrintJobTicket */ break; case OP_INCLUDE_PAGES_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->includePagesId, OP_PAG_RNG_ID, OP_PAG_RNG); break; case OP_OUTPUT_PAGES_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->outputPagesId, OP_PAG_RNG_ID, OP_PAG_RNG); break; case OP_JOB_MEDIA_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->mediaId, OP_MEDIA_ID, OP_MEDIA); break; case OP_DESTINATION_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->destinationId, OP_DEST_ID, OP_DEST); break; case OP_CONTACT_INFO_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->contactInfoId, OP_CONT_INFO_ID, OP_CONT_INFO); break; case OP_SUBSCRIPTION_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->subscrId, OP_SUBSCR_ID, OP_SUBSCR); break; case OP_FORCE_PAGE_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->forcePageId, OP_FRC_PAGE_ID, OP_FRC_PAGE); break; case OP_HOLE_MAKING_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->holeMkId, OP_HOLE_MK_ID, OP_HOLE_MK); break; case OP_FOLDING_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->foldingId, OP_FOLDING_ID, OP_FOLDING); break; case OP_STITCHING_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->stitchId, OP_STITCH_ID, OP_STITCH); break; case OP_SEPARATOR_SHEET_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->sepShtId, OP_SEP_SHEET_ID, OP_SEP_SHEET); break; case OP_SEP_SHEET_MEDIA_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->sepShtId->media, OP_MEDIA_ID, OP_MEDIA); break; case OP_INSERT_SHEET_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->insertSheetId, OP_INS_SHEET_ID, OP_INS_SHEET); break; case OP_INSERT_SHEET_MEDIA_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->insertSheetId->media, OP_MEDIA_ID, OP_MEDIA); break; case OP_INSERT_SHEET_PAGE_RANGE_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->insertSheetId->insertPageRange, OP_PAG_RNG_ID, OP_PAG_RNG); break; case OP_DOCUMENT_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->docId, OP_DOC_ID, OP_DOC); break; case OP_DOC_PAGE_RANGE_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->docId->docPageRange, OP_PAG_RNG_ID, OP_PAG_RNG); break; case OP_DOC_FORCE_PAGE_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->docId->docForcePageId, OP_PAG_RNG_ID, OP_PAG_RNG); break; case OP_DOC_INSERT_SHEET_OBJECT: NEW_OP_OBJECT(jobTktId->jobId->docId->docInsertSheetId, OP_PAG_RNG_ID, OP_PAG_RNG); break; default: OP_SET_ERR(OPJT_INVALID_PARAM); opDebugFlowOut("opjtNewObject"); return; break; } /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtNewObject"); return; } /**************************************|***************************************/ /* API-150060 */ /* Module : opjtFreeObject (was opjtDestroyObject) */ /* Description: Free a JTAPI object. Will free internal objects */ /* param >>: object - Free the memory used by the provided object. */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ #define FIND_OP_OBJECT(a,b) aPtr = (void*)(a); lstPtr = (void*)aPtr; \ nxtPtr = ((b)aPtr)->next; \ while (aPtr != object) { \ lstPtr = aPtr; aPtr = nxtPtr; \ if (aPtr == NULL) { \ OP_SET_ERR(OPJT_INVALID_PARAM); \ opDebugFlowOut("opjtFreeObject"); \ return; } \ nxtPtr = ((b)aPtr)->next; } #define FREE_OP_ATT(a) if ((a) != NULL) { free((a)); (a) = NULL; } /**************************************|***************************************/ void opjtFreeObject( OP_JOB_TKT_ID jobTktId, OP_INT32 objectType, void* object ) { /*** Declaration of Local Routine Variables */ void* aPtr; void* lstPtr; void* nxtPtr; OP_INT32 idx; /*** API Identifier Information for this Routine */ OP_API_REG(150060, "opjtFreeObject"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtFreeObject"); /*** Is there an active Job */ CHECK_JOB_TKT(jobTktId, "opjtFreeObject"); /*** Initialization of Local Routine Variables */ /*** Is this a valid object */ if (object == NULL) { OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtFreeObject"); return; } /*** Delete the Object and any associated allocated entities */ switch (objectType) { case OP_JOB_TICKET_INFO_OBJECT: FIND_OP_OBJECT(jobTktId, OP_JBTK_INFO_ID); if (jobTktId->jobId) { opjtFreeObject(jobTktId, OP_JOB_OBJECT, jobTktId->jobId); } FREE_OP_ATT(jobTktId->author); FREE_OP_ATT(jobTktId->charSet); FREE_OP_ATT(jobTktId->comment) FREE_OP_ATT(jobTktId->apiCharSet); FREE_OP_ATT(jobTktId->company); FREE_OP_ATT(jobTktId->contactUri); FREE_OP_ATT(jobTktId->details); FREE_OP_ATT(jobTktId->name); for (idx = 0; idx < 20; idx++) { FREE_OP_ATT(jobTktId->roles[idx]); } free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_JBTK_INFO_ID)lstPtr)->next = nxtPtr; break; case OP_JOB_OBJECT: while (jobTktId->jobId->docId != NULL) { opjtFreeObject(jobTktId, OP_DOCUMENT_OBJECT, jobTktId->jobId->docId); } while (jobTktId->jobId->includePagesId != NULL) { opjtFreeObject(jobTktId, OP_INCLUDE_PAGES_OBJECT, jobTktId->jobId->includePagesId); } while (jobTktId->jobId->outputPagesId != NULL) { opjtFreeObject(jobTktId, OP_OUTPUT_PAGES_OBJECT, jobTktId->jobId->outputPagesId); } while (jobTktId->jobId->destinationId != NULL) { opjtFreeObject(jobTktId, OP_DESTINATION_OBJECT, jobTktId->jobId->destinationId); } while (jobTktId->jobId->contactInfoId != NULL) { opjtFreeObject(jobTktId, OP_CONTACT_INFO_OBJECT, jobTktId->jobId->contactInfoId); } while (jobTktId->jobId->subscrId != NULL) { opjtFreeObject(jobTktId, OP_SUBSCRIPTION_OBJECT, jobTktId->jobId->subscrId); } while (jobTktId->jobId->sepShtId != NULL) { opjtFreeObject(jobTktId, OP_SEPARATOR_SHEET_OBJECT, jobTktId->jobId->sepShtId); } while (jobTktId->jobId->forcePageId != NULL) { opjtFreeObject(jobTktId, OP_FORCE_PAGE_OBJECT, jobTktId->jobId->forcePageId); } while (jobTktId->jobId->insertSheetId != NULL) { opjtFreeObject(jobTktId, OP_INSERT_SHEET_OBJECT, jobTktId->jobId->insertSheetId); } while (jobTktId->jobId->holeMkId != NULL) { opjtFreeObject(jobTktId, OP_HOLE_MAKING_OBJECT, jobTktId->jobId->holeMkId); } while (jobTktId->jobId->mediaId != NULL) { opjtFreeObject(jobTktId, OP_JOB_MEDIA_OBJECT, jobTktId->jobId->mediaId); } while (jobTktId->jobId->foldingId != NULL) { opjtFreeObject(jobTktId, OP_FOLDING_OBJECT, jobTktId->jobId->foldingId); } while (jobTktId->jobId->stitchId != NULL) { opjtFreeObject(jobTktId, OP_STITCHING_OBJECT, jobTktId->jobId->stitchId); } FREE_OP_ATT(jobTktId->jobId->author); FREE_OP_ATT(jobTktId->jobId->name); FREE_OP_ATT(jobTktId->jobId->comment); FREE_OP_ATT(jobTktId->jobId->operMessage); FREE_OP_ATT(jobTktId->jobId->format); FREE_OP_ATT(jobTktId->jobId->language); FREE_OP_ATT(jobTktId->jobId->billingCode); FREE_OP_ATT(jobTktId->jobId->client); free(jobTktId->jobId); jobTktId->jobId = NULL; break; case OP_INCLUDE_PAGES_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->outputPagesId, OP_PAG_RNG_ID) free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_PAG_RNG_ID)lstPtr)->next = nxtPtr; break; case OP_OUTPUT_PAGES_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->outputPagesId, OP_PAG_RNG_ID); free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_PAG_RNG_ID)lstPtr)->next = nxtPtr; break; case OP_JOB_MEDIA_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->mediaId, OP_MEDIA_ID); FREE_OP_ATT(jobTktId->jobId->mediaId->name); FREE_OP_ATT(jobTktId->jobId->mediaId->description); FREE_OP_ATT(jobTktId->jobId->mediaId->sizeName); FREE_OP_ATT(jobTktId->jobId->mediaId->colorName); free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_MEDIA_ID)lstPtr)->next = nxtPtr; break; case OP_DESTINATION_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->destinationId, OP_DEST_ID); FREE_OP_ATT(jobTktId->jobId->destinationId->uri); free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_DEST_ID)lstPtr)->next = nxtPtr; break; case OP_CONTACT_INFO_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->contactInfoId, OP_CONT_INFO_ID); FREE_OP_ATT(jobTktId->jobId->contactInfoId->address); FREE_OP_ATT(jobTktId->jobId->contactInfoId->company); FREE_OP_ATT(jobTktId->jobId->contactInfoId->contactUri); FREE_OP_ATT(jobTktId->jobId->contactInfoId->details); FREE_OP_ATT(jobTktId->jobId->contactInfoId->name); free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_CONT_INFO_ID)lstPtr)->next = nxtPtr; break; case OP_SUBSCRIPTION_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->subscrId, OP_SUBSCR_ID); FREE_OP_ATT(jobTktId->jobId->subscrId->charSet); FREE_OP_ATT(jobTktId->jobId->subscrId->comment); for(idx = 0; idx < OP_SUB_JATT_LIST_SIZE; idx++) { FREE_OP_ATT(jobTktId->jobId->subscrId->jobAttr[idx]); } FREE_OP_ATT(jobTktId->jobId->subscrId->naturalLang); FREE_OP_ATT(jobTktId->jobId->subscrId->sendToUri); free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_SUBSCR_ID)lstPtr)->next = nxtPtr; break; case OP_FORCE_PAGE_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->forcePageId, OP_FRC_PAGE_ID); free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_FRC_PAGE_ID)lstPtr)->next = nxtPtr; break; case OP_HOLE_MAKING_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->holeMkId, OP_HOLE_MK_ID); free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_HOLE_MK_ID)lstPtr)->next = nxtPtr; break; case OP_FOLDING_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->foldingId, OP_FOLDING_ID); free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_FOLDING_ID)lstPtr)->next = nxtPtr; break; case OP_STITCHING_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->stitchId, OP_STITCH_ID); free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_STITCH_ID)lstPtr)->next = nxtPtr; break; case OP_SEPARATOR_SHEET_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->sepShtId, OP_SEP_SHEET_ID); FREE_OP_ATT(jobTktId->jobId->sepShtId->message); while (jobTktId->jobId->sepShtId->media != NULL) { opjtFreeObject(jobTktId, OP_SEP_SHEET_MEDIA_OBJECT, jobTktId->jobId->sepShtId->media); } free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_SEP_SHEET_ID)lstPtr)->next = nxtPtr; break; case OP_SEP_SHEET_MEDIA_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->sepShtId->media, OP_MEDIA_ID); FREE_OP_ATT(jobTktId->jobId->sepShtId->media->name); FREE_OP_ATT(jobTktId->jobId->sepShtId->media->description); FREE_OP_ATT(jobTktId->jobId->sepShtId->media->sizeName); FREE_OP_ATT(jobTktId->jobId->sepShtId->media->colorName); free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_MEDIA_ID)lstPtr)->next = nxtPtr; break; case OP_INSERT_SHEET_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->insertSheetId, OP_INS_SHEET_ID); while (jobTktId->jobId->insertSheetId->media != NULL) { opjtFreeObject(jobTktId, OP_INSERT_SHEET_MEDIA_OBJECT, jobTktId->jobId->insertSheetId->media); } while (jobTktId->jobId->insertSheetId->insertPageRange != NULL) { opjtFreeObject(jobTktId, OP_INSERT_SHEET_PAGE_RANGE_OBJECT, jobTktId->jobId->insertSheetId->insertPageRange); } free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_INS_SHEET_ID)lstPtr)->next = nxtPtr; break; case OP_INSERT_SHEET_MEDIA_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->insertSheetId->media, OP_MEDIA_ID); FREE_OP_ATT(jobTktId->jobId->insertSheetId->media->name); FREE_OP_ATT(jobTktId->jobId->insertSheetId->media->description); FREE_OP_ATT(jobTktId->jobId->insertSheetId->media->sizeName); FREE_OP_ATT(jobTktId->jobId->insertSheetId->media->colorName); free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_MEDIA_ID)lstPtr)->next = nxtPtr; break; case OP_INSERT_SHEET_PAGE_RANGE_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->insertSheetId->insertPageRange, OP_PAG_RNG_ID); free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_PAG_RNG_ID)lstPtr)->next = nxtPtr; break; case OP_DOCUMENT_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->docId, OP_DOC_ID); FREE_OP_ATT(jobTktId->jobId->docId->docURI); while (jobTktId->jobId->docId->docPageRange != NULL) { opjtFreeObject(jobTktId, OP_DOC_PAGE_RANGE_OBJECT, jobTktId->jobId->docId->docPageRange); } while (jobTktId->jobId->docId->docForcePageId != NULL) { opjtFreeObject(jobTktId, OP_DOC_FORCE_PAGE_OBJECT, jobTktId->jobId->docId->docForcePageId); } while (jobTktId->jobId->docId->docInsertSheetId != NULL) { opjtFreeObject(jobTktId, OP_DOC_INSERT_SHEET_OBJECT, jobTktId->jobId->docId->docInsertSheetId); } free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_DOC_ID)lstPtr)->next = nxtPtr; break; case OP_DOC_PAGE_RANGE_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->docId->docPageRange, OP_PAG_RNG_ID); free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_PAG_RNG_ID)lstPtr)->next = nxtPtr; break; case OP_DOC_FORCE_PAGE_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->docId->docForcePageId, OP_PAG_RNG_ID); free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_PAG_RNG_ID)lstPtr)->next = nxtPtr; break; case OP_DOC_INSERT_SHEET_OBJECT: FIND_OP_OBJECT(jobTktId->jobId->docId->docInsertSheetId, OP_PAG_RNG_ID); free(aPtr); aPtr = NULL; if (lstPtr != NULL) ((OP_PAG_RNG_ID)lstPtr)->next = nxtPtr; break; default: OP_SET_ERR(OPJT_INVALID_PARAM); opDebugFlowOut("opjtFreeObject"); return; break; } /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtFreeObject"); return; } /**************************************|***************************************/ /* API-150070 */ /*TT API-150070 opjtNewAttribute NOT SUPPORTED */ /* Module : opjtNewAttribute */ /* Description: Creates a new Attribute object having the provided attribute */ /* name, value type, and value. */ /* param >>: object - Pointer of object to associate the new attribute */ /* param >>: type - Type for the new Attribute to create */ /* See: OP_OBJECT_TYPE, OP_ENUM_TYPE,OP_BASIC_TYPE */ /* << param : attribute - Pointer to the new Attribute specification. */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ void opjtNewAttribute( OP_JOB_TKT_ID jobTktId, OP_INT32 attributeId, void** attribute, void* object, OP_INT32 type ) { /*** Declaration of Local Routine Variables */ /*** API Identifier Information for this Routine */ OP_API_REG(150070, "opjtNewAttribute"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtNewAttribute"); /*** Is there an active Job */ CHECK_JOB_TKT(jobTktId, "opjtNewAttribute"); /*** Initialization of Local Routine Variables */ /*TT Adding a new Attribute is not supported at this time */ OP_SET_ERR(OPJT_NOT_SUPPORTED); opDebugFlowOut("opjtNewAttribute"); return; /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtNewAttribute"); return; } /**************************************|***************************************/ /* API-150080 */ /*TT API-150080 opjtFreeAttribute NOT SUPPORTED */ /* Module : opjtFreeAttribute (was opjtDestroyAttribute) */ /* Description: Free the memory used by the Attribute. */ /* name, value type, and value. */ /* param >>: attribute - Pointer to the Attribute to free */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ void opjtFreeAttribute( OP_JOB_TKT_ID jobTktId, OP_INT32 attributeId, void* attribute ) { /*** Declaration of Local Routine Variables */ /*** API Identifier Information for this Routine */ OP_API_REG(150080, "opjtFreeAttribute"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtFreeAttribute"); /*** Is there an active Job */ CHECK_JOB_TKT(jobTktId, "opjtFreeAttribute"); /*** Initialization of Local Routine Variables */ /*TT Destroy an Attribute is not supported at this time */ OP_SET_ERR(OPJT_NOT_SUPPORTED); opDebugFlowOut("opjtFreeAttribute"); return; /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtFreeAttribute"); return; } /**************************************|***************************************/ /* API-150090 */ /* Module : opjtSetValue */ /* Description: Set value for this Attribute with this value. */ /* param >>: attribute - Attribute to replace the existing values */ /* param >>: value - Pointer to replacement value */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ #define CPY_OBJECT_ATTRIT(b,c) *(b*)attribute = (b)malloc(sizeof(c)); \ if (*(b*)attribute == NULL) { \ OP_SET_ERR(OP_ERROR_MEMORY_ALLOCATION); \ opDebugFlowOut("opjtSetValue"); \ return; } \ memcpy(*(b*)attribute,*(b*)value,sizeof(c)); /**************************************|***************************************/ void opjtSetValue( OP_JOB_TKT_ID jobTktId, OP_INT32 attributeId, void* attribute, void* value ) { /*** Declaration of Local Routine Variables */ /*** API Identifier Information for this Routine */ OP_API_REG(150090, "opjtSetValue"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtSetValue"); /*** Is there an active Job */ CHECK_JOB_TKT(jobTktId, "opjtSetValue"); /*** Initialization of Local Routine Variables */ /*** Set the Attribute to the Value */ /*TT For the OPEP Thin-Thread implementation, value checking is not done. */ switch (attributeId) { /* Char Attributes */ /* -------------------------------------------------------------------*/ case OP_ATT_SUBSCRIPTION_CHARSET :/* char* */ case OP_ATT_SUBSCRIPTION_COMMENT :/* char* */ case OP_ATT_SUBSCRIPTION_JOB_ATTRIBUTES :/* char* */ case OP_ATT_SUBSCRIPTION_NATURAL_LANGUAGE:/* char* */ case OP_ATT_SUBSCRIPTION_SEND_TO_URI :/* char* */ case OP_ATT_SEPARATOR_SHEET_MESSAGE :/* char* */ case OP_ATT_MEDIA_COLOR_NAME :/* char* */ case OP_ATT_MEDIA_DESCRIPTION :/* char* */ case OP_ATT_MEDIA_NAME :/* char* */ case OP_ATT_MEDIA_SIZE_NAME :/* char* */ case OP_ATT_JT_API_CHARSET :/* char* */ case OP_ATT_JT_API_VERSION :/* char* */ case OP_ATT_JT_AUTHOR_NAME :/* char* */ case OP_ATT_JT_CHARSET :/* char* */ case OP_ATT_JT_COMMENT :/* char* */ case OP_ATT_JT_VERSION :/* char* */ case OP_ATT_JOB_BILLING_CODE :/* char* */ case OP_ATT_JOB_CLIENT_ID :/* char* */ case OP_ATT_JOB_COMMENT :/* char* */ case OP_ATT_JOB_CREATE_USER_NAME :/* char* */ case OP_ATT_JOB_DOCUMENT_FORMAT :/* char* (mine-type) */ case OP_ATT_JOB_DOCUMENT_NATURAL_LANGUAGE:/* char* */ case OP_ATT_JOB_MESSAGE_TO_OPERATOR :/* char* */ case OP_ATT_JOB_NAME :/* char* */ case OP_ATT_DOCUMENT_DATA_URI :/* char* */ case OP_ATT_DESTINATION_TARGET_URI :/* char* */ case OP_ATT_CONTACT_INFO_ADDRESS :/* char* */ case OP_ATT_CONTACT_INFO_COMPANY :/* char* */ case OP_ATT_CONTACT_INFO_CONTACT_URI :/* char* */ case OP_ATT_CONTACT_INFO_DETAILS :/* char* */ case OP_ATT_CONTACT_INFO_NAME :/* char* */ case OP_ATT_JT_COMPANY :/* char* */ case OP_ATT_JT_CONTACT_URI :/* char* */ case OP_ATT_JT_DETAILS :/* char* */ case OP_ATT_JT_NAME :/* char* */ case OP_ATT_JT_ROLES :/* char*[] */ *(char**)attribute = (char*)malloc(strlen((char*)value)); if (*(char**)attribute == NULL) { OP_SET_ERR(OP_ERROR_MEMORY_ALLOCATION); opDebugFlowOut("opjtNewObject"); return; } strcpy(*(char**)attribute,(char*)value); break; /* OP_INT32 Attributes */ /* -------------------------------------------------------------------*/ case OP_ATT_STITCHING_ANGLE :/* OP_INT32 */ case OP_ATT_STITCHING_COUNT :/* OP_INT32 */ case OP_ATT_PAGE_RANGE_LOWER :/* OP_INT32 */ case OP_ATT_PAGE_RANGE_UPPER :/* OP_INT32 */ case OP_ATT_MEDIA_HOLE_COUNT :/* OP_INT32 */ case OP_ATT_MEDIA_RECYCLED_PERCENTAGE :/* OP_INT32 */ case OP_ATT_MEDIA_SET_COUNT :/* OP_INT32 */ case OP_ATT_MEDIA_WEIGHT :/* OP_INT32 */ case OP_ATT_JOB_COPIES :/* OP_INT32 */ case OP_ATT_JOB_IMAGE_SHIFT_BACK_X :/* OP_INT32 */ case OP_ATT_JOB_IMAGE_SHIFT_BACK_Y :/* OP_INT32 */ case OP_ATT_JOB_IMAGE_SHIFT_FRONT_X :/* OP_INT32 */ case OP_ATT_JOB_IMAGE_SHIFT_FRONT_Y :/* OP_INT32 */ case OP_ATT_JOB_MARGIN_BOTTOM :/* OP_INT32 */ case OP_ATT_JOB_MARGIN_LEFT :/* OP_INT32 */ case OP_ATT_JOB_MARGIN_RIGHT :/* OP_INT32 */ case OP_ATT_JOB_MARGIN_TOP :/* OP_INT32 */ case OP_ATT_JOB_NUMBER_UP_X :/* OP_INT32 */ case OP_ATT_JOB_NUMBER_UP_Y :/* OP_INT32 */ case OP_ATT_JOB_PRIORITY :/* OP_INT32 */ case OP_ATT_JOB_RESOLUTION_X :/* OP_INT32 */ case OP_ATT_JOB_RESOLUTION_Y :/* OP_INT32 */ case OP_ATT_JOB_SCALING_FACTOR_X :/* OP_INT32 */ case OP_ATT_JOB_SCALING_FACTOR_Y :/* OP_INT32 */ case OP_ATT_INSERT_SHEET_COUNT :/* OP_INT32 */ case OP_ATT_HOLE_MAKING_COUNT :/* OP_INT32 */ case OP_ATT_FORCE_PAGE_CELL_POSITION_X :/* OP_INT32 */ case OP_ATT_FORCE_PAGE_CELL_POSITION_Y :/* OP_INT32 */ case OP_ATT_FORCE_PAGE_PAGE :/* OP_INT32 */ *(int*)attribute = *(int*)value; break; /* Enum Attributes */ /* -------------------------------------------------------------------*/ case OP_ATT_SUBSCRIPTION_EVENTS :/* OP_SUBSCR..._EVENT (Enum)*/ case OP_ATT_STITCHING_REFERENCE_EDGE :/* OP_REFERENCE_EDGE (Enum)*/ case OP_ATT_STITCHING_TYPE :/* OP_STITCHING_TYPE (Enum)*/ case OP_ATT_SEPARATOR_SHEET_TYPE :/* OP_SEPARATOR_SHEET (Enum)*/ case OP_ATT_MEDIA_BACK_COATING :/* OP_MEDIA_COATING (Enum)*/ case OP_ATT_MEDIA_COLOR :/* OP_MEDIA_COLOR (Enum)*/ case OP_ATT_MEDIA_FRONT_COATING :/* OP_MEDIA_COATING (Enum)*/ case OP_ATT_MEDIA_INPUT_TRAY_NAME :/* OP_INPUT_TRAY (Enum)*/ case OP_ATT_MEDIA_MANUAL_FEED :/* OP_PRESENT (Enum)*/ case OP_ATT_MEDIA_PREPRINTED :/* OP_MEDIA_PRE...TED (Enum)*/ case OP_ATT_MEDIA_TYPE :/* OP_MEDIA_TYPE (Enum)*/ case OP_ATT_JT_FIDELITY :/* OP_PRESENT (Enum)*/ case OP_ATT_JT_LENGTH_UNIT :/* OP_LENGTH_UNIT (Enum)*/ case OP_ATT_JT_TYPE_AND_VERSION :/* OP_JOB_TIC...SION (Enum)*/ case OP_ATT_JOB_BINDING :/* OP_BINDING_TYPE (Enum)*/ case OP_ATT_JOB_COLLATE :/* OP_COLLATE (Enum)*/ case OP_ATT_JOB_COMPRESSION :/* OP_COMPRESSION (Enum)*/ case OP_ATT_JOB_FEED_ORIENTATION :/* OP_FEED_ORI...N (Enum)*/ case OP_ATT_JOB_FIT_POLICY :/* OP_FIT_POLICY (Enum)*/ case OP_ATT_JOB_HOLD :/* OP_HOLD (Enum)*/ case OP_ATT_JOB_IMAGE_ALIGNMENT_X :/* OP_IMAGE_ALI...T_X (Enum)*/ case OP_ATT_JOB_IMAGE_ALIGNMENT_Y :/* OP_IMAGE_ALI...T_Y (Enum)*/ case OP_ATT_JOB_JOG_OFFSET :/* OP_JOG_OFFSET (Enum)*/ case OP_ATT_JOB_OUTPUT_BIN_NAME :/* OP_OUTPUT_...AME (Enum)*/ case OP_ATT_JOB_PAGE_DELIVERY :/* OP_PAGE_DELIVERY (Enum)*/ case OP_ATT_JOB_PRESENTATION_DIRECTION :/* OP_PRE...ECTION (Enum)*/ case OP_ATT_JOB_PRINT_QUALITY :/* OP_PRINT_QUALITY (Enum)*/ case OP_ATT_JOB_ROTATION :/* OP_ROTATION (Enum)*/ case OP_ATT_JOB_SIDES :/* OP_SIDES (Enum)*/ case OP_ATT_INSERT_SHEET_CONTENT :/* OP_IN...TENT (Enum)*/ case OP_ATT_INSERT_SHEET_POSITION :/* OP_POSITION (Enum)*/ case OP_ATT_HOLE_MAKING_REFERENCE_EDGE :/* OP_REFERENCE_EDGE (Enum)*/ case OP_ATT_FORCE_PAGE_SHEET_SIDE :/* OP_SHEET_SIDE (Enum)*/ case OP_ATT_FOLDING_REFERENCE_EDGE :/* OP_REF...EDGE (Enum)*/ case OP_ATT_FOLDING_TYPE :/* OP_FOLDING_TYPE (Enum)*/ case OP_ATT_CONTACT_INFO_ROLES :/* OP_CONTAC...OLE (Enum)*/ *(OP_INT32*)attribute = *(OP_INT32*)value; break; /* Object Attributes */ /* -------------------------------------------------------------------*/ /*TT For Thin-Thread no object level setting is supported */ case OP_ATT_SEPARATOR_SHEET_MEDIA :/* object */ // CPY_OBJECT_ATTRIT(OP_MEDIA_ID,OP_MEDIA); // break; case OP_ATT_JT_JOB :/* object */ case OP_ATT_JOB_CONTACT_INFO :/* object */ case OP_ATT_JOB_DESTINATIONS :/* object */ case OP_ATT_JOB_DOCUMENTS :/* object */ case OP_ATT_JOB_FOLDING :/* object */ case OP_ATT_JOB_FORCE_PAGES :/* object */ case OP_ATT_JOB_HOLE_MAKING :/* object */ case OP_ATT_JOB_INCLUDE_PAGES :/* object */ case OP_ATT_JOB_INSERT_SHEETS :/* object */ case OP_ATT_JOB_MEDIA :/* object */ case OP_ATT_JOB_OUTPUT_PAGES :/* object */ case OP_ATT_JOB_SEPARATOR_SHEETS :/* object */ case OP_ATT_JOB_STITCHING :/* object */ case OP_ATT_JOB_SUBSCRIPTIONS :/* object */ case OP_ATT_INSERT_SHEET_MEDIA :/* object */ case OP_ATT_INSERT_SHEET_PAGES :/* object */ case OP_ATT_DOCUMENT_PAGE_RANGE :/* object */ case OP_ATT_DOCUMENT_FORCE_PAGE :/* object */ case OP_ATT_DOCUMENT_INSERT_SHEET :/* object */ OP_SET_ERR(OPJT_NOT_SUPPORTED); opDebugFlowOut("opjtSetValue"); return; break; default: OP_SET_ERR(OPJT_INVALID_PARAM); opDebugFlowOut("opjtSetValue"); return; break; } /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtSetValue"); return; } /**************************************|***************************************/ /* API-150100 */ /* Module : opjtReplaceValue */ /* Description: Replaces current value for this Attribute with this value. */ /* Current value is determine by value increment pointer. */ /* param >>: attribute - Attribute to replace the existing values */ /* param >>: value - Pointer to replacement value */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ void opjtReplaceValue( OP_JOB_TKT_ID jobTktId, OP_INT32 attributeId, void* attribute, void* value ) { /*** Declaration of Local Routine Variables */ /*** API Identifier Information for this Routine */ OP_API_REG(150100, "opjtReplaceValue"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtReplaceValue"); /*** Is there an active Job */ CHECK_JOB_TKT(jobTktId, "opjtReplaceValue"); /*** Initialization of Local Routine Variables */ /*** Replace Value by Setting it */ opjtSetValue(jobTktId, attributeId, attribute, value); if (OP_AN_ERR) { OP_SET_ERR(OP_CUR_ERR); opDebugFlowOut("opjtReplaceValue"); return; } /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtReplaceValue"); return; } /**************************************|***************************************/ /* API-150110 */ /* Module : opjtAddValue */ /* Description: Add an additional value to this Attribute. */ /* param >>: attribute - Attribute to add the provided value to. */ /* param >>: value - Pointer to value to add. */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ void opjtAddValue( OP_JOB_TKT_ID jobTktId, OP_INT32 attributeId, void* attribute, void* value ) { /*** Declaration of Local Routine Variables */ OP_INT32 idx; /*** API Identifier Information for this Routine */ OP_API_REG(150110, "opjtAddValue"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtAddValue"); /*** Is there an active Job */ CHECK_JOB_TKT(jobTktId, "opjtAddValue"); /*** Initialization of Local Routine Variables */ /*** Only Attributes that have multiple values are: */ /*** OP_ATT_CONTACT_INFO_ROLES /* OP_CONTACT_INFO_ROLE (Enum)*/ /*** OP_ATT_SUBSCRIPTION_EVENTS /* OP_SUBSCRIPTION_EVENT (Enum)*/ /*** OP_ATT_SUBSCRIPTION_JOB_ATTRIBUTES /* char* */ /*** OP_ATT_JT_ROLES /* char*[] */ switch (attributeId) { case OP_ATT_CONTACT_INFO_ROLES: /* OP_CONTACT_INFO_ROLE (Enum)*/ idx = ((OP_CONT_INFO_ID)attribute)->numRoles; if (idx >= OP_CI_ROLE_LIST_SIZE) { OP_SET_ERR(OPJT_CANNOT_ADD_MORE_VALUES); opDebugFlowOut("opjtAddValue"); return; } ((OP_CONT_INFO_ID)attribute)->roles[idx] = *(OP_INT32*)value; ((OP_CONT_INFO_ID)attribute)->numRoles++; break; case OP_ATT_SUBSCRIPTION_EVENTS: /* OP_SUBSCRIPTION_EVENT (Enum)*/ idx = ((OP_SUBSCR_ID)attribute)->numEvents; if (idx >= OP_SUB_EVENT_LIST_SIZE) { OP_SET_ERR(OPJT_CANNOT_ADD_MORE_VALUES); opDebugFlowOut("opjtAddValue"); return; } ((OP_SUBSCR_ID)attribute)->events[idx] = *(OP_INT32*)value; ((OP_SUBSCR_ID)attribute)->numEvents++; break; case OP_ATT_SUBSCRIPTION_JOB_ATTRIBUTES: /* char* */ idx = ((OP_SUBSCR_ID)attribute)->numJobAttr; if (idx >= OP_SUB_JATT_LIST_SIZE) { OP_SET_ERR(OPJT_CANNOT_ADD_MORE_VALUES); opDebugFlowOut("opjtAddValue"); return; } ((OP_SUBSCR_ID)attribute)->jobAttr[idx] = (char*)malloc(strlen((char*)value)); if (((OP_SUBSCR_ID)attribute)->jobAttr[idx] == NULL) { OP_SET_ERR(OP_ERROR_MEMORY_ALLOCATION); opDebugFlowOut("opjtAddValue"); return; } strcpy(((OP_SUBSCR_ID)attribute)->jobAttr[idx],(char*)value); ((OP_SUBSCR_ID)attribute)->numJobAttr++; break; case OP_ATT_JT_ROLES: /* char*[] */ idx = ((OP_JBTK_INFO_ID)attribute)->numRoles; if (idx >= OP_JTI_ROLE_LIST_SIZE) { OP_SET_ERR(OPJT_CANNOT_ADD_MORE_VALUES); opDebugFlowOut("opjtAddValue"); return; } ((OP_JBTK_INFO_ID)attribute)->roles[idx] = (char*)malloc(strlen((char*)value)); if (((OP_JBTK_INFO_ID)attribute)->roles[idx] == NULL) { OP_SET_ERR(OP_ERROR_MEMORY_ALLOCATION); opDebugFlowOut("opjtAddValue"); return; } strcpy(((OP_JBTK_INFO_ID)attribute)->roles[idx],(char*)value); ((OP_JBTK_INFO_ID)attribute)->numRoles++; break; default: OP_SET_ERR(OPJT_INVALID_PARAM); opDebugFlowOut("opjtAddValue"); return; break; } /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtAddValue"); return; } /**************************************|***************************************/ /* API-150120 */ /* Module : opjtGetNextValue */ /* Description: Return the Attribute's next value. */ /* param >>: attribute - Attribute whose next value is to be returned */ /* << param : nextValue - Value of the value returned */ /* << param : moreValues - TRUE if there are more values for the */ /* Attribute other than the value being returned */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ void opjtGetNextValue( OP_JOB_TKT_ID jobTktId, OP_INT32 attributeId, void* attribute, void* value, OP_INT32* moreValues ) { /*** Declaration of Local Routine Variables */ OP_INT32 idx; OP_INT32 jdx; /*** API Identifier Information for this Routine */ OP_API_REG(150120, "opjtGetNextValue"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtGetNextValue"); /*** Is there an active Job */ CHECK_JOB_TKT(jobTktId, "opjtGetNextValue"); /*** Initialization of Local Routine Variables */ /*** Only Attributes that have multiple values are: */ /*** OP_ATT_CONTACT_INFO_ROLES /* OP_CONTACT_INFO_ROLE (Enum)*/ /*** OP_ATT_SUBSCRIPTION_EVENTS /* OP_SUBSCRIPTION_EVENT (Enum)*/ /*** OP_ATT_SUBSCRIPTION_JOB_ATTRIBUTES /* char* */ /*** OP_ATT_JT_ROLES /* char*[] */ *moreValues = TRUE; switch (attributeId) { case OP_ATT_CONTACT_INFO_ROLES: /* OP_CONTACT_INFO_ROLE (Enum)*/ idx = ((OP_CONT_INFO_ID)attribute)->numRoles; jdx = ((OP_CONT_INFO_ID)attribute)->roleIdx; *(OP_INT32*)value = ((OP_CONT_INFO_ID)attribute)->roles[idx]; ((OP_CONT_INFO_ID)attribute)->roleIdx++; jdx++; if (jdx >= idx) { ((OP_CONT_INFO_ID)attribute)->roleIdx = 0; *moreValues = FALSE; } break; case OP_ATT_SUBSCRIPTION_EVENTS: /* OP_SUBSCRIPTION_EVENT (Enum)*/ idx = ((OP_SUBSCR_ID)attribute)->numEvents; jdx = ((OP_SUBSCR_ID)attribute)->eventIdx; *(OP_INT32*)value = ((OP_SUBSCR_ID)attribute)->events[idx]; ((OP_SUBSCR_ID)attribute)->eventIdx++; jdx++; if (jdx >= idx) { ((OP_SUBSCR_ID)attribute)->eventIdx = 0; *moreValues = FALSE; } break; case OP_ATT_SUBSCRIPTION_JOB_ATTRIBUTES: /* char* */ idx = ((OP_SUBSCR_ID)attribute)->numJobAttr; jdx = ((OP_SUBSCR_ID)attribute)->jaIdx; *(char**)value = (char*)malloc(strlen(((OP_SUBSCR_ID)attribute)->jobAttr[idx])); if (*(char**)value == NULL) { OP_SET_ERR(OP_ERROR_MEMORY_ALLOCATION); opDebugFlowOut("opjtGetNextValue"); return; } strcpy(*(char**)value, ((OP_SUBSCR_ID)attribute)->jobAttr[idx]); ((OP_SUBSCR_ID)attribute)->jaIdx++; jdx++; if (jdx >= idx) { ((OP_SUBSCR_ID)attribute)->jaIdx = 0; *moreValues = FALSE; } break; case OP_ATT_JT_ROLES: /* char*[] */ idx = ((OP_JBTK_INFO_ID)attribute)->numRoles; jdx = ((OP_JBTK_INFO_ID)attribute)->roleIdx; *(char**)value = (char*)malloc(strlen(((OP_JBTK_INFO_ID)attribute)->roles[idx])); if (*(char**)value == NULL) { OP_SET_ERR(OP_ERROR_MEMORY_ALLOCATION); opDebugFlowOut("opjtGetNextValue"); return; } strcpy(*(char**)value, ((OP_JBTK_INFO_ID)attribute)->roles[idx]); ((OP_JBTK_INFO_ID)attribute)->roleIdx++; jdx++; if (jdx >= idx) { ((OP_JBTK_INFO_ID)attribute)->roleIdx = 0; *moreValues = FALSE; } break; default: OP_SET_ERR(OPJT_INVALID_PARAM); opDebugFlowOut("opjtGetNextValue"); return; break; } /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtGetNextValue"); return; } /**************************************|***************************************/ /* API-150130 */ /* Module : opjtSetIterator */ /* Description: Set the iterator (increment pointer) to specific value */ /* param >>: attribute - Attribute to set iterator for */ /* param >>: iterator - Value of iterator to set */ /* (1 is start of list; -1 is endo of list) */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ void opjtSetIterator( OP_JOB_TKT_ID jobTktId, OP_INT32 attributeId, void* attribute, OP_INT32 iterator ) { /*** Declaration of Local Routine Variables */ /*** API Identifier Information for this Routine */ OP_API_REG(150130, "opjtSetIterator"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtSetIterator"); /*** Is there an active Job */ CHECK_JOB_TKT(jobTktId, "opjtSetIterator"); /*** Initialization of Local Routine Variables */ /*** Only Attributes that have multiple values are: */ /*** OP_ATT_CONTACT_INFO_ROLES /* OP_CONTACT_INFO_ROLE (Enum)*/ /*** OP_ATT_SUBSCRIPTION_EVENTS /* OP_SUBSCRIPTION_EVENT (Enum)*/ /*** OP_ATT_SUBSCRIPTION_JOB_ATTRIBUTES /* char* */ /*** OP_ATT_JT_ROLES /* char*[] */ switch (attributeId) { case OP_ATT_CONTACT_INFO_ROLES: /* OP_CONTACT_INFO_ROLE (Enum)*/ if (iterator >= ((OP_CONT_INFO_ID)attribute)->numRoles) { OP_SET_ERR(OPJT_INVALID_PARAM); opDebugFlowOut("opjtSetIterator"); return; } ((OP_CONT_INFO_ID)attribute)->roleIdx = iterator; break; case OP_ATT_SUBSCRIPTION_EVENTS: /* OP_SUBSCRIPTION_EVENT (Enum)*/ if (iterator >= ((OP_SUBSCR_ID)attribute)->numEvents) { OP_SET_ERR(OPJT_INVALID_PARAM); opDebugFlowOut("opjtSetIterator"); return; } ((OP_SUBSCR_ID)attribute)->eventIdx = iterator; break; case OP_ATT_SUBSCRIPTION_JOB_ATTRIBUTES: /* char* */ if (iterator >= ((OP_SUBSCR_ID)attribute)->numJobAttr) { OP_SET_ERR(OPJT_INVALID_PARAM); opDebugFlowOut("opjtSetIterator"); return; } ((OP_SUBSCR_ID)attribute)->jaIdx = iterator; break; case OP_ATT_JT_ROLES: /* char*[] */ if (iterator >= ((OP_JBTK_INFO_ID)attribute)->numRoles) { OP_SET_ERR(OPJT_INVALID_PARAM); opDebugFlowOut("opjtSetIterator"); return; } ((OP_JBTK_INFO_ID)attribute)->roleIdx = iterator; break; default: OP_SET_ERR(OPJT_INVALID_PARAM); opDebugFlowOut("opjtSetIterator"); return; break; } /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtSetIterator"); return; } /**************************************|***************************************/ /* API-150140 */ /* Module : opjtGetNumOfValues */ /* Description: Get the number of values that a list Attribute contains. */ /* param >>: attribute - List Attribute whose number of values to get */ /* << param : numValues - Number of values */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ void opjtGetNumOfValues( OP_JOB_TKT_ID jobTktId, OP_INT32 attributeId, void* attribute, OP_INT32* numValues ) { /*** Declaration of Local Routine Variables */ /*** API Identifier Information for this Routine */ OP_API_REG(150140, "opjtGetNumValues"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtGetNumValues"); /*** Is there an active Job */ CHECK_JOB_TKT(jobTktId, "opjtGetNumValues"); /*** Initialization of Local Routine Variables */ /*** Only Attributes that have multiple values are: */ /*** OP_ATT_CONTACT_INFO_ROLES /* OP_CONTACT_INFO_ROLE (Enum)*/ /*** OP_ATT_SUBSCRIPTION_EVENTS /* OP_SUBSCRIPTION_EVENT (Enum)*/ /*** OP_ATT_SUBSCRIPTION_JOB_ATTRIBUTES /* char* */ /*** OP_ATT_JT_ROLES /* char*[] */ switch (attributeId) { case OP_ATT_CONTACT_INFO_ROLES: /* OP_CONTACT_INFO_ROLE (Enum)*/ *numValues = ((OP_CONT_INFO_ID)attribute)->numRoles; break; case OP_ATT_SUBSCRIPTION_EVENTS: /* OP_SUBSCRIPTION_EVENT (Enum)*/ *numValues = ((OP_SUBSCR_ID)attribute)->numEvents; break; case OP_ATT_SUBSCRIPTION_JOB_ATTRIBUTES: /* char* */ *numValues = ((OP_SUBSCR_ID)attribute)->numJobAttr; break; case OP_ATT_JT_ROLES: /* char*[] */ *numValues = ((OP_JBTK_INFO_ID)attribute)->numRoles; break; default: OP_SET_ERR(OPJT_INVALID_PARAM); opDebugFlowOut("opjtGetNumValues"); return; break; } /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtGetNumValues"); return; } /**************************************|***************************************/ /* API-150150 */ /* API-150150 opjtGetValueType NOT SUPPORTED */ /* Module : opjtGetValueType */ /* Description: Returns the type of the Attribute's values. */ /* param >>: attribute - Attribute whose value type to get */ /* << param : type - Type of this Attribute's values */ /* See: OP_OBJECT_TYPE, OP_ENUM_TYPE,OP_BASIC_TYPE */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ void opjtGetValueType( OP_JOB_TKT_ID jobTktId, OP_INT32 attributeId, void* attribute, OP_INT32* type ) { /*** Declaration of Local Routine Variables */ /*** API Identifier Information for this Routine */ OP_API_REG(150150, "opjtGetValueType"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtGetValueType"); /*** Is there an active Job */ CHECK_JOB_TKT(jobTktId, "opjtGetValueType"); /*** Initialization of Local Routine Variables */ /*TT Get Value Type is not supported at this time */ OP_SET_ERR(OPJT_NOT_SUPPORTED); opDebugFlowOut("opjtGetValueType"); return; /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtGetValueType"); return; } /**************************************|***************************************/ /* API-150160 */ /* Module : opjtFreeValue (was opjtDestroyValue) */ /* Description: Free (Destroy) current value for this Attribute. */ /* Current value is determine by value increment pointer. */ /* param >>: attribute - Attribute to destroy the existing values */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ void opjtFreeValue( OP_JOB_TKT_ID jobTktId, OP_INT32 attributeId, void* attribute ) { /*** Declaration of Local Routine Variables */ /*** API Identifier Information for this Routine */ OP_API_REG(150160, "opjtFreeValue"); /*** Debug Flow Information for this Routine */ opDebugFlowIn("opjtFreeValue"); /*** Is there an active Job */ CHECK_JOB_TKT(jobTktId, "opjtFreeValue"); /*** Initialization of Local Routine Variables */ /*TT Destroy Value is not supported; Values are destroyed with the object */ OP_SET_ERR(OPJT_NOT_SUPPORTED); opDebugFlowOut("opjtFreeValue"); return; /*** Return to Caller */ OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("opjtFreeValue"); return; } /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ /*%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%*/ /*-------------------- Internal Functions ---------------------*/ /*%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%*/ /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ /**************************************|***************************************/ /* */ /* Module : FindAjobTktId */ /* Description: Find a jobTktId in link list - use to validatd a ticket ID */ /* << return : Pointer to jobTktId if valid or NULL is not valid */ /* */ /**************************************|***************************************/ /* */ /* Revision Log */ /* Date Who */ /* 2007.08.07 Glen W. Petrie */ /* # Original code */ /* */ /**************************************|***************************************/ static OP_JOB_TKT_ID FindAjobTktId( OP_JOB_TKT_ID theJTID /* Job Ticket Identifier to located */ ) { /*** Declare Variable Local to Routine */ OP_JOB_TKT_ID currentjobTktId; /* Job ID being tested */ /*** Debug Flow Information for this Routine */ opDebugFlowIn("FindAjobTktId"); /*** Initialization of Local Routine Variables */ /*** If driver has not initialized then return NULL */ if (theJobTktId == NULL) { OP_SET_ERR(OP_ERROR_INVALID_ARG); opDebugFlowOut("FindAjobTktId"); return((OP_JOB_TKT_ID)NULL); } /*** If request ID matches theJobTkt then done */ if (theJTID == theJobTktId) { OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("FindAjobTktId"); return((OP_JOB_TKT_ID)theJTID); } /*** Step through link list to last entry */ currentjobTktId = theJobTktId; while(currentjobTktId->next != NULL) { if (currentjobTktId->next == theJTID) { OP_SET_ERR(OP_ERROR_NONE); opDebugFlowOut("FindAjobTktId"); return((OP_JOB_TKT_ID)theJTID); } currentjobTktId = currentjobTktId->next; } /*** Return to Caller */ OP_SET_ERR(OP_ERROR_INVALID_ARG); opDebugFlowOut("FindAjobTktId"); return((OP_JOB_TKT_ID)NULL); } /*______________________________ opJTAPI.c _______________________________*/ /*3456789012345678901234567890123456789012345678901234567890123456789012345678*/ /* 1 2 3 4 5 6 7 */ /**************************************|***************************************/ /*** End of File ** End of File ** End of File ** End of File ** End of File */ /**************************************|***************************************/