RCRegion* region; MemoryRegionID cmdVecDataID; OCommandVectorData* cmdVecData; OPENR::NewCommandVectorData(7, &cmdVecDataID, &cmdVecData); region = new RCRegion( cmdVecData->vectorInfo.memRegionID, cmdVecData->vectorInfo.offset, (void*)cmdVecData, cmdVecData->vectorInfo.totalSize); cmdVecData->SetNumData(7);OCommandVectorDataは,次のように定義されている. ODataVectorInfoは,OCommandVectorData全体に関する情報を含む.OComm andInfoは,OCommandVectorDataに格納された複数のOCommandDataのそれぞれ に対する情報を含む.
struct OCommandVectorData { ODataVectorInfo vectorInfo; OCommandInfo info[1]; void SetNumData(size_t ndata) { vectorInfo.numData = ndata; } OCommandInfo* GetInfo(int index) { return &info[index]; } OCommandData* GetData(int index) { return (OCommandData*)((byte*)&vectorInfo + info[index].dataOffset); } };メモリ上のOCommandVectorDataからOCommandInfoやOCommandDataを取り出すに は,GetInfo()やGetData()に配列のインデックス番号を指定する.
for(int i=0; i<numOfData; i++){ OCommandInfo* info = cmdVecData->GetInfo(); OCommandData* data = cmdVecData->GetData(); }