diff --git a/parallel/ddd/basic/ooppcc.h b/parallel/ddd/basic/ooppcc.h index b8d97ab71271754d8721c7c3a37f4af483337873..22e333130c4b9c75bb7203b8af756d12cea6d8e1 100644 --- a/parallel/ddd/basic/ooppcc.h +++ b/parallel/ddd/basic/ooppcc.h @@ -46,113 +46,6 @@ typedef PtrOf * CPtr; #endif /****************************************************************************/ - - - -/****************************************************************************/ -#ifdef ArrayOf -/****************************************************************************/ - -#define Array(T) CN(CCAT(T,Array)) - -/* class name for array */ -#define CArray CCAT(ArrayOf,Array) - - -#ifndef ArrayAllocate -/* define default allocate function */ -#define ArrayAllocate OO_Allocate -#endif - -#ifndef ArrayFree -/* define default free function */ -#define ArrayFree OO_Free -#endif - - -/*** array class ***/ - -#define ClassName CArray -Class_Data_Begin -CN(ArrayOf) *data; -int size; -int used; -Class_Data_End -Method_New_ (int _NEWPARAMS); -void Method(Free) (DefThis); -CN(ArrayOf) *Method(GetData) (DefThis); -int Method(GetSize) (DefThis); - - -#ifdef ContainerImplementation -Method_New_ (int size _NEWPARAMS) -{ - Construct(This, _CHECKALLOC(This)); - - if (size==0) - { - This->data = NULL; - } - else - { - This->data = (CN(ArrayOf) *)ArrayAllocate (sizeof(CN(ArrayOf))*size); - if (This->data==NULL) - { - Destruct(This); - return(NULL); - } - } - - This->size = size; - This->used = 0; - - return(This); -} - - -void Method(Free) (ParamThis) -{ - if (This==NULL) - return; - -#ifndef NoArrayFree - if (This->data!=NULL) - ArrayFree (This->data); -#endif - - Destruct(This); -} - - -CN(ArrayOf) *Method(GetData) (ParamThis) -{ - return(This->data); -} - - -int Method(GetSize) (ParamThis) -{ - return(This->size); -} - -#endif - -#undef ClassName - - -/****************************************************************************/ -#undef ArrayAllocate -#undef ArrayFree -#ifdef NoArrayFree - #undef NoArrayFree -#endif -#undef CArray -#undef ArrayOf -#endif -/****************************************************************************/ - - - /****************************************************************************/ #ifdef SegmListOf /****************************************************************************/ @@ -510,10 +403,6 @@ typedef CN (CListItem) * ListIter (ListOf); #define CBTreeNode CCAT(BTreeOf,BTreeNode) #define CBTree CCAT(BTreeOf,BTree) -/* this is the corresponding pointer-array class */ -#define CPtrArray CCAT(CN(BTreeOf),PtrArray) - - /* method pointers */ #define Iterate_Method CCAT(BTreeOf,IterateMethod) typedef void (*Iterate_Method)(CN(BTreeOf) *); @@ -850,7 +739,7 @@ void Method(Print) (DefThis _PRINTPARAMS); void Method(Reset) (DefThis); int Method(Insert) (DefThis, CN(BTreeOf) *); void Method(Iterate) (DefThis, Iterate_Method); -CPtrArray *Method(GetArray) (DefThis); +std::vector<BTreeOf*> Method(GetArray) (DefThis); void Method(GetResources) (DefThis, int *, int *, size_t *, size_t *); @@ -924,25 +813,16 @@ void Method(Iterate) (ParamThis, Iterate_Method iter_method) } -CPtrArray *Method(GetArray) (ParamThis) +std::vector<BTreeOf*> Method(GetArray) (ParamThis) { - CPtrArray *array; - CN(BTreeOf) **ptr; - - array = CALL(New,CPtrArray) (This->nItems); + std::vector<BTreeOf*> array(This->nItems); - /* if no items exist, we return empty array. */ - if (This->nItems==0) return(array); - - - /* if there are items, but New returns NULL, we ran out of - memory. we return NULL to the caller in this case. */ - if (array==NULL) return(NULL); - - ptr = CALL(CPtrArray,GetData) (array); - CALL(CBTreeNode,Linearize) (This->root, ptr); + if (This->nItems != 0) { + BTreeOf** ptr = array.data(); + CALL(CBTreeNode,Linearize) (This->root, ptr); + } - return(array); + return array; } @@ -970,7 +850,6 @@ void Method(GetResources) (ParamThis, /****************************************************************************/ -#undef CPtrArray #undef CBTreeNode #undef CBTree /*#undef Compare_Method*/ @@ -1007,7 +886,6 @@ void Method(GetResources) (ParamThis, /* instantiate all template types we will need lateron */ #define PtrOf SetOf -#define ArrayOf CCAT(SetOf,Ptr) #define SegmListOf SetOf #define SegmSize Set_SegmSize #define BTreeOf SetOf @@ -1025,7 +903,6 @@ void Method(GetResources) (ParamThis, #define CSet CCAT(SetOf,Set) #define CSegmList CCAT(SetOf,SegmList) #define CBTree CCAT(SetOf,BTree) -#define CPtrArray CCAT(CN(SetOf),PtrArray) /*** Set class ***/ @@ -1044,7 +921,7 @@ CN(SetOf) *Method(NewItem) (DefThis); int Method(ItemOK) (DefThis); int Method(GetNItems) (DefThis); int Method(GetNDiscarded) (DefThis); -CPtrArray *Method(GetArray) (DefThis); +std::vector<SetOf*> Method(GetArray) (DefThis); void Method(GetResources) (DefThis, int *, int *, int *, size_t *, size_t *); @@ -1111,7 +988,7 @@ int Method(GetNDiscarded) (ParamThis) } -CPtrArray *Method(GetArray) (ParamThis) +std::vector<SetOf*> Method(GetArray) (ParamThis) { return(CALL(CBTree,GetArray) (This->tree)); } @@ -1145,7 +1022,6 @@ void Method(GetResources) (ParamThis, /****************************************************************************/ #undef CSegmList #undef CBTree -#undef CPtrArray #undef CSet #undef SetOf #endif diff --git a/parallel/ddd/basic/test/testbtree.cc b/parallel/ddd/basic/test/testbtree.cc index 24a7805503bc8e1c2154d18c431a039554a4cd56..58d344c71919f461b8f7ec3364a5a166e2638d07 100644 --- a/parallel/ddd/basic/test/testbtree.cc +++ b/parallel/ddd/basic/test/testbtree.cc @@ -5,6 +5,7 @@ #include <cstdio> #include <cstdlib> #include <cassert> +#include <vector> /* some macros for customizing oopp */ #define _NEWPARAMS @@ -44,10 +45,6 @@ int Method(Compare) (ClassPtr, ClassPtr); #define SetOf TestTreeElement #define Set_SegmSize 256 #define Set_BTreeOrder 32 -#ifdef XferMemFromHeap -#define ArrayAllocate xfer_AllocHeap -#define NoArrayFree -#endif #endif // Create method definitions, not just declarations diff --git a/parallel/ddd/join/jcmds.cc b/parallel/ddd/join/jcmds.cc index 1d78ba5bbfb20e55e4f79fe4e9ae4a7d3e33a583..03fbd3053595b15d84bf351aff9b09b8d7ecdf6f 100644 --- a/parallel/ddd/join/jcmds.cc +++ b/parallel/ddd/join/jcmds.cc @@ -114,12 +114,12 @@ static int sort_Gid (const void *e1, const void *e2) */ -static int PreparePhase1Msgs (JIJoinPtrArray *arrayJoin, +static int PreparePhase1Msgs (std::vector<JIJoin*>& arrayJoin, JOINMSG1 **theMsgs, size_t *memUsage) { int i, last_i, nMsgs; - JIJoin **itemsJ = JIJoinPtrArray_GetData(arrayJoin); - int nJ = JIJoinPtrArray_GetSize(arrayJoin); + JIJoin** itemsJ = arrayJoin.data(); + const int nJ = arrayJoin.size(); # if DebugJoin<=3 printf("%4d: PreparePhase1Msgs, nJoins=%d\n", @@ -410,12 +410,12 @@ static void UnpackPhase1Msgs (LC_MSGHANDLE *theMsgs, int nRecvMsgs, */ -static int PreparePhase2Msgs (JIAddCplPtrArray *arrayAddCpl, +static int PreparePhase2Msgs (std::vector<JIAddCpl*>& arrayAddCpl, JOINMSG2 **theMsgs, size_t *memUsage) { int i, last_i, nMsgs; - JIAddCpl **itemsAC = JIAddCplPtrArray_GetData(arrayAddCpl); - int nAC = JIAddCplPtrArray_GetSize(arrayAddCpl); + JIAddCpl** itemsAC = arrayAddCpl.data(); + const int nAC = arrayAddCpl.size(); # if DebugJoin<=3 printf("%4d: PreparePhase2Msgs, nAddCpls=%d\n", @@ -603,12 +603,12 @@ static void UnpackPhase2Msgs (LC_MSGHANDLE *theMsgs2, int nRecvMsgs2, */ -static int PreparePhase3Msgs (JIAddCplPtrArray *arrayAddCpl, +static int PreparePhase3Msgs (std::vector<JIAddCpl*>& arrayAddCpl, JOINMSG3 **theMsgs, size_t *memUsage) { int i, last_i, nMsgs; - JIAddCpl **itemsAC = JIAddCplPtrArray_GetData(arrayAddCpl); - int nAC = JIAddCplPtrArray_GetSize(arrayAddCpl); + JIAddCpl** itemsAC = arrayAddCpl.data(); + const int nAC = arrayAddCpl.size(); # if DebugJoin<=3 printf("%4d: PreparePhase3Msgs, nAddCpls=%d\n", @@ -727,10 +727,10 @@ static void PackPhase3Msgs (JOINMSG3 *theMsgs) */ static void UnpackPhase3Msgs (LC_MSGHANDLE *theMsgs, int nRecvMsgs, - JIJoinPtrArray *arrayJoin) + std::vector<JIJoin*>& arrayJoin) { - JIJoin **itemsJ = JIJoinPtrArray_GetData(arrayJoin); - int nJ = JIJoinPtrArray_GetSize(arrayJoin); + JIJoin** itemsJ = arrayJoin.data(); + const int nJ = arrayJoin.size(); int m; @@ -786,9 +786,6 @@ static void UnpackPhase3Msgs (LC_MSGHANDLE *theMsgs, int nRecvMsgs, DDD_RET DDD_JoinEnd (void) { - JIJoinPtrArray *arrayJIJoin = NULL; - JIAddCplPtrArray *arrayJIAddCpl2 = NULL; - JIAddCplPtrArray *arrayJIAddCpl3 = NULL; int obsolete, nRecvMsgs1, nRecvMsgs2, nRecvMsgs3; JOINMSG1 *sendMsgs1=NULL, *sm1=NULL; JOINMSG2 *sendMsgs2=NULL, *sm2=NULL; @@ -822,7 +819,7 @@ DDD_RET DDD_JoinEnd (void) PREPARATION PHASE */ /* get sorted array of JIJoin-items */ - arrayJIJoin = JIJoinSet_GetArray(joinGlobals.setJIJoin); + std::vector<JIJoin*> arrayJIJoin = JIJoinSet_GetArray(joinGlobals.setJIJoin); obsolete = JIJoinSet_GetNDiscarded(joinGlobals.setJIJoin); @@ -941,7 +938,7 @@ DDD_RET DDD_JoinEnd (void) for which Joins had been issued remotely. */ /* get sorted array of JIAddCpl-items */ - arrayJIAddCpl2 = JIAddCplSet_GetArray(joinGlobals.setJIAddCpl2); + std::vector<JIAddCpl*> arrayJIAddCpl2 = JIAddCplSet_GetArray(joinGlobals.setJIAddCpl2); STAT_RESET; /* prepare msgs for JIAddCpl-items */ @@ -963,11 +960,12 @@ DDD_RET DDD_JoinEnd (void) /* reorder Join-commands according to new_gid */ /* this ordering is needed in UnpackPhase3 */ - if (JIJoinPtrArray_GetSize(arrayJIJoin) > 1) + if (arrayJIJoin.size() > 1) { + // TODO: use std::sort qsort( - JIJoinPtrArray_GetData(arrayJIJoin), - JIJoinPtrArray_GetSize(arrayJIJoin), + arrayJIJoin.data(), + arrayJIJoin.size(), sizeof(JIJoin *), sort_NewGid); } @@ -1049,7 +1047,7 @@ DDD_RET DDD_JoinEnd (void) on which the JoinObj-commands have been issued. */ /* get sorted array of JIAddCpl-items */ - arrayJIAddCpl3 = JIAddCplSet_GetArray(joinGlobals.setJIAddCpl3); + std::vector<JIAddCpl*> arrayJIAddCpl3 = JIAddCplSet_GetArray(joinGlobals.setJIAddCpl3); STAT_RESET; /* prepare msgs for JIAddCpl-items */ @@ -1137,13 +1135,10 @@ DDD_RET DDD_JoinEnd (void) /* free temporary storage */ - JIJoinPtrArray_Free(arrayJIJoin); JIJoinSet_Reset(joinGlobals.setJIJoin); - JIAddCplPtrArray_Free(arrayJIAddCpl2); JIAddCplSet_Reset(joinGlobals.setJIAddCpl2); - JIAddCplPtrArray_Free(arrayJIAddCpl3); JIAddCplSet_Reset(joinGlobals.setJIAddCpl3); if (localCplObjs!=NULL) FreeTmp(localCplObjs, 0); diff --git a/parallel/ddd/join/join.h b/parallel/ddd/join/join.h index 7c27dc69400215a0536244ebdf4b6d3acf838c3c..48bdc66d0c4d263632deb587220079df5dac1d41 100644 --- a/parallel/ddd/join/join.h +++ b/parallel/ddd/join/join.h @@ -32,6 +32,7 @@ #ifndef __JOIN_H__ #define __JOIN_H__ +#include <vector> #define DebugJoin 10 /* 0 is all, 10 is off */ diff --git a/parallel/ddd/xfer/cmdmsg.cc b/parallel/ddd/xfer/cmdmsg.cc index 6668d96f75e5a5366e3a7cb98e89c8e8d6230e3a..5fbf11690ca56af65b7c74bdcd4448dcbb9d65d3 100644 --- a/parallel/ddd/xfer/cmdmsg.cc +++ b/parallel/ddd/xfer/cmdmsg.cc @@ -469,16 +469,15 @@ static void CmdMsgDisplay (const char *comment, LC_MSGHANDLE xm) int PruneXIDelCmd ( XIDelCmd **itemsDC, int nDC, - XICopyObjPtrArray *arrayCO) + std::vector<XICopyObj*>& arrayCO) { CMDMSG *sendMsgs, *sm=0; LC_MSGHANDLE *recvMsgs; int nSendMsgs, nRecvMsgs; int nPruned; - XICopyObj **itemsCO = XICopyObjPtrArray_GetData(arrayCO); - int nCO = XICopyObjPtrArray_GetSize(arrayCO); - + XICopyObj** itemsCO = arrayCO.data(); + const int nCO = arrayCO.size(); /* accumulate messages (one for each partner) */ nSendMsgs = PrepareCmdMsgs(itemsCO, nCO, &sendMsgs); diff --git a/parallel/ddd/xfer/cmds.cc b/parallel/ddd/xfer/cmds.cc index 7de044fd7f9061c8c2851c6eeca8bc29901cfc3e..3df28f5a924814d406a763584655a21526251baa 100644 --- a/parallel/ddd/xfer/cmds.cc +++ b/parallel/ddd/xfer/cmds.cc @@ -397,13 +397,12 @@ static void DisplayMemResources (void) DDD_RET DDD_XferEnd (void) { DDD_RET ret_code = DDD_RET_OK; - XICopyObjPtrArray *arrayXICopyObj = NULL; XICopyObj **arrayNewOwners = NULL; int nNewOwners; XIDelCmd **arrayXIDelCmd = NULL; int remXIDelCmd, prunedXIDelCmd; XIDelObj **arrayXIDelObj = NULL; - XISetPrioPtrArray *arrayXISetPrio = NULL; + std::vector<XISetPrio*> arrayXISetPrio; XINewCpl **arrayXINewCpl = NULL; XIOldCpl **arrayXIOldCpl = NULL; XIDelCpl **arrayXIDelCpl = NULL; @@ -434,14 +433,7 @@ DDD_RET DDD_XferEnd (void) */ STAT_RESET; /* get sorted array of XICopyObj-items */ - arrayXICopyObj = XICopyObjSet_GetArray(xferGlobals.setXICopyObj); - if (arrayXICopyObj==NULL) - { - DDD_PrintError('W', 6080, "out of memory in DDD_XferEnd(), giving up."); - ret_code = DDD_RET_ERROR_NOMEM; - LC_Abort(EXCEPTION_LOWCOMM_USER); - goto exit; - } + std::vector<XICopyObj*> arrayXICopyObj = XICopyObjSet_GetArray(xferGlobals.setXICopyObj); obsolete = XICopyObjSet_GetNDiscarded(xferGlobals.setXICopyObj); /* debugging output, write all XICopyObjs to file @@ -605,13 +597,6 @@ DDD_RET DDD_XferEnd (void) /* create sorted array of XISetPrio-items, and unify it */ STAT_RESET; arrayXISetPrio = XISetPrioSet_GetArray(xferGlobals.setXISetPrio); - if (arrayXISetPrio==NULL) - { - DDD_PrintError('W', 6087, "out of memory in DDD_XferEnd(), giving up."); - LC_Cleanup(); - ret_code = DDD_RET_ERROR_NOMEM; - goto exit; - } obsolete += XISetPrioSet_GetNDiscarded(xferGlobals.setXISetPrio); @@ -793,13 +778,11 @@ DDD_RET DDD_XferEnd (void) exit: /* free temporary storage */ - XICopyObjPtrArray_Free(arrayXICopyObj); XICopyObjSet_Reset(xferGlobals.setXICopyObj); if (arrayNewOwners!=NULL) OO_Free (arrayNewOwners /*,0*/); FreeAllXIAddData(); - XISetPrioPtrArray_Free(arrayXISetPrio); XISetPrioSet_Reset(xferGlobals.setXISetPrio); if (arrayXIDelCmd!=NULL) OO_Free (arrayXIDelCmd /*,0*/); diff --git a/parallel/ddd/xfer/unpack.cc b/parallel/ddd/xfer/unpack.cc index b9c215e70c1ff545df92f7033e30dd6a5f2ad862..eb3d4cbe52dc9e08a576b4e6692f61e0a923e15c 100644 --- a/parallel/ddd/xfer/unpack.cc +++ b/parallel/ddd/xfer/unpack.cc @@ -1513,17 +1513,17 @@ static int CompressNewCpl (TENewCpl *tabNC, int nNC) void XferUnpack (LC_MSGHANDLE *theMsgs, int nRecvMsgs, const DDD_HDR *localCplObjs, int nLocalCplObjs, - XISetPrioPtrArray *theSP, + std::vector<XISetPrio*>& theSP, XIDelObj **arrayDO, int nDO, - XICopyObjPtrArray *arrayCO, + const std::vector<XICopyObj*>& arrayCO, XICopyObj **arrayNewOwners, int nNewOwners) { TENewCpl *allNewCpl; OBJTAB_ENTRY **unionObjTab; int lenObjTab, lenSymTab, nNewCpl; int i, pos1, pos2, len; - XISetPrio **arraySP = XISetPrioPtrArray_GetData(theSP); - int nSP = XISetPrioPtrArray_GetSize(theSP); + XISetPrio** arraySP = theSP.data(); + const int nSP = theSP.size(); diff --git a/parallel/ddd/xfer/xfer.cc b/parallel/ddd/xfer/xfer.cc index c7df057e360378f27d130343d20a1b9b54e6df12..a4a22a260718f44bdc8adf38d8752735fea85e32 100644 --- a/parallel/ddd/xfer/xfer.cc +++ b/parallel/ddd/xfer/xfer.cc @@ -112,12 +112,12 @@ static int sort_NewOwners (const void *e1, const void *e2) XFER-P and XFER-D). */ -XICopyObj **CplClosureEstimate (XICopyObjPtrArray *arrayItems, int *nRet) +XICopyObj **CplClosureEstimate (const std::vector<XICopyObj*>& arrayItems, int *nRet) { int i, nNewOwners; XICopyObj **arrayNewOwners = NULL; - XICopyObj **items = XICopyObjPtrArray_GetData(arrayItems); - int n = XICopyObjPtrArray_GetSize(arrayItems); + XICopyObj* const* items = arrayItems.data(); + const int n = arrayItems.size(); @@ -513,7 +513,7 @@ static XFERMSG *AccumXIOldCpl (XFERMSG *currxm, int *nMsgs, int *nItems, coupling closure from CplClosureEstimate(). */ -int PrepareObjMsgs (XICopyObjPtrArray *arrayO, +int PrepareObjMsgs (std::vector<XICopyObj*>& arrayO, XINewCpl **itemsNC, int nNC, XIOldCpl **itemsOC, int nOC, XFERMSG **theMsgs, size_t *memUsage) @@ -521,8 +521,8 @@ int PrepareObjMsgs (XICopyObjPtrArray *arrayO, XFERMSG *xm=NULL; int iO, iNC, iOC, nMsgs=0; - XICopyObj **itemsO = XICopyObjPtrArray_GetData(arrayO); - int nO = XICopyObjPtrArray_GetSize(arrayO); + XICopyObj** itemsO = arrayO.data(); + const int nO = arrayO.size(); # if DebugXfer<=3 @@ -622,13 +622,13 @@ int PrepareObjMsgs (XICopyObjPtrArray *arrayO, procs during first message phase. */ void ExecLocalXISetPrio ( - XISetPrioPtrArray *arrayP, + const std::vector<XISetPrio*>& arrayP, XIDelObj **itemsD, int nD, XICopyObj **itemsNO, int nNO) { int iP, iD, iNO; - XISetPrio **itemsP = XISetPrioPtrArray_GetData(arrayP); - int nP = XISetPrioPtrArray_GetSize(arrayP); + XISetPrio* const* itemsP = arrayP.data(); + const int nP = arrayP.size(); /* execute SetPrio only if no corresponding DelObj exists! diff --git a/parallel/ddd/xfer/xfer.h b/parallel/ddd/xfer/xfer.h index a5721b3dbec7d27f6f7107af128c94acb343d21d..855350726b91b1c6143968e814abb43f09a8e699 100644 --- a/parallel/ddd/xfer/xfer.h +++ b/parallel/ddd/xfer/xfer.h @@ -33,6 +33,7 @@ #ifndef __XFER_H__ #define __XFER_H__ +#include <vector> #define DebugXfer 10 /* 0 is all, 10 is off */ #define DebugPack 6 /* off: 6 */ @@ -176,10 +177,6 @@ int Method(Compare) (ClassPtr, ClassPtr); #define SetOf XICopyObj #define Set_SegmSize 256 #define Set_BTreeOrder 32 -#ifdef XferMemFromHeap -#define ArrayAllocate xfer_AllocHeap -#define NoArrayFree -#endif #endif #include "basic/ooppcc.h" @@ -261,10 +258,6 @@ int Method(Compare) (ClassPtr, ClassPtr); #define SetOf XISetPrio #define Set_SegmSize 256 #define Set_BTreeOrder 32 -#ifdef XferMemFromHeap -#define ArrayAllocate xfer_AllocHeap -#define NoArrayFree -#endif #endif #include "basic/ooppcc.h" @@ -605,17 +598,17 @@ void CplMsgExit (void); /* cmdmsg.c */ -int PruneXIDelCmd (XIDelCmd **, int, XICopyObjPtrArray *); +int PruneXIDelCmd (XIDelCmd **, int, std::vector<XICopyObj*>&); void CmdMsgInit (void); void CmdMsgExit (void); /* xfer.c, used only by cmds.c */ -XICopyObj **CplClosureEstimate(XICopyObjPtrArray *, int *); -int PrepareObjMsgs(XICopyObjPtrArray *, XINewCpl **, int, +XICopyObj **CplClosureEstimate(const std::vector<XICopyObj*>&, int *); +int PrepareObjMsgs(std::vector<XICopyObj*>&, XINewCpl **, int, XIOldCpl **, int, XFERMSG **, size_t *); void ExecLocalXIDelCmd(XIDelCmd **, int); -void ExecLocalXISetPrio(XISetPrioPtrArray *, XIDelObj **,int, XICopyObj **,int); +void ExecLocalXISetPrio(const std::vector<XISetPrio*>&, XIDelObj **,int, XICopyObj **,int); void ExecLocalXIDelObj(XIDelObj **, int, XICopyObj **,int); void PropagateCplInfos(XISetPrio **, int, XIDelObj **, int, TENewCpl *, int); @@ -629,8 +622,8 @@ RETCODE XferPackMsgs (XFERMSG *); /* unpack.c, used only by cmds.c */ void XferUnpack (LC_MSGHANDLE *, int, const DDD_HDR *, int, - XISetPrioPtrArray *, XIDelObj **, int, - XICopyObjPtrArray *, XICopyObj **, int); + std::vector<XISetPrio*>&, XIDelObj **, int, + const std::vector<XICopyObj*>&, XICopyObj **, int); /* ctrl.c */