map<string,MetaData_YML_Backed* > MetaData_YML_Backed::get_subdata_yml() { if(leftP()) return map<string,MetaData_YML_Backed* >{{"left_hand",this}}; else return map<string,MetaData_YML_Backed* >{{"right_hand",this}}; }
static PyObject* select_folder(PyObject* /*self*/, PyObject* args) { char *ttext = NULL; TInt ttextlen = 0; TInt32 useDefaultTitle; char *rtext = NULL; TInt rtextlen = 0; TInt32 useDefaultRight; char *ltext = NULL; TInt ltextlen = 0; TInt32 useDefaultLeft; char *mtext = NULL; TInt mtextlen = 0; TInt32 type; TCommonDialogType dialogType = ECFDDialogTypeSave; if (!PyArg_ParseTuple(args, "iu#u#iu#iu#i", &type, &mtext, &mtextlen, &ttext, &ttextlen,&useDefaultTitle, &rtext, &rtextlen,&useDefaultRight, <ext, <extlen, &useDefaultLeft)) { return Py_BuildValue("s", "Cannot parse arguments."); } switch (type) { case 0: { dialogType = ECFDDialogTypeSave; } break; case 1: { dialogType = ECFDDialogTypeMove; } break; case 2: { dialogType = ECFDDialogTypeCopy; } break; } Cpyfileselect* obj = Cpyfileselect::NewL(); const char* res; TPtrC titleP((TUint16*) ttext, ttextlen); TPtrC memory((TUint16*) mtext, mtextlen); TPtrC leftP((TUint16*) ltext, ltextlen); TPtrC rightP((TUint16*) rtext, rtextlen); TBuf <20> title; title.Append(titleP); TBuf <20> right; right.Append(rightP); TBuf <20> left; left.Append(leftP); if(useDefaultTitle == 1) { title = KNullDesC; } if(useDefaultRight == 1) { right = KNullDesC; } if(useDefaultLeft == 1) { left = KNullDesC; } TRAPD( err, res = obj->FolderSelectionDlg(dialogType,memory, title, right, left) ); PyObject* result; if (err != KErrNone) { result = SPyErr_SetFromSymbianOSErr(err); } else { result = Py_BuildValue("s", res); } delete obj; return result; }
dgVector dgCollisionConvexHull::SupportVertex (const dgVector& dir, dgInt32* const vertexIndex) const { dgAssert (dir.m_w == dgFloat32 (0.0f)); dgInt32 index = -1; dgVector maxProj (dgFloat32 (-1.0e20f)); if (m_vertexCount > DG_CONVEX_VERTEX_CHUNK_SIZE) { dgFloat32 distPool[32]; const dgConvexBox* stackPool[32]; dgInt32 ix = (dir[0] > dgFloat64 (0.0f)) ? 1 : 0; dgInt32 iy = (dir[1] > dgFloat64 (0.0f)) ? 1 : 0; dgInt32 iz = (dir[2] > dgFloat64 (0.0f)) ? 1 : 0; const dgConvexBox& leftBox = m_supportTree[m_supportTree[0].m_leftBox]; const dgConvexBox& rightBox = m_supportTree[m_supportTree[0].m_rightBox]; dgVector leftP (leftBox.m_box[ix][0], leftBox.m_box[iy][1], leftBox.m_box[iz][2], dgFloat32 (0.0f)); dgVector rightP (rightBox.m_box[ix][0], rightBox.m_box[iy][1], rightBox.m_box[iz][2], dgFloat32 (0.0f)); dgFloat32 leftDist = leftP.DotProduct4(dir).m_x; dgFloat32 rightDist = rightP.DotProduct4(dir).m_x; if (rightDist >= leftDist) { distPool[0] = leftDist; stackPool[0] = &leftBox; distPool[1] = rightDist; stackPool[1] = &rightBox; } else { distPool[0] = rightDist; stackPool[0] = &rightBox; distPool[1] = leftDist; stackPool[1] = &leftBox; } dgInt32 stack = 2; while (stack) { stack--; dgFloat32 dist = distPool[stack]; if (dist > maxProj.m_x) { const dgConvexBox& box = *stackPool[stack]; if (box.m_leftBox > 0) { dgAssert (box.m_rightBox > 0); const dgConvexBox& leftBox = m_supportTree[box.m_leftBox]; const dgConvexBox& rightBox = m_supportTree[box.m_rightBox]; dgVector leftP (leftBox.m_box[ix][0], leftBox.m_box[iy][1], leftBox.m_box[iz][2], dgFloat32 (0.0f)); dgVector rightP (rightBox.m_box[ix][0], rightBox.m_box[iy][1], rightBox.m_box[iz][2], dgFloat32 (0.0f)); dgFloat32 leftDist = leftP.DotProduct4(dir).m_x; dgFloat32 rightDist = rightP.DotProduct4(dir).m_x; if (rightDist >= leftDist) { distPool[stack] = leftDist; stackPool[stack] = &leftBox; stack ++; dgAssert (stack < sizeof (distPool)/sizeof (distPool[0])); distPool[stack] = rightDist; stackPool[stack] = &rightBox; stack ++; dgAssert (stack < sizeof (distPool)/sizeof (distPool[0])); } else { distPool[stack] = rightDist; stackPool[stack] = &rightBox; stack ++; dgAssert (stack < sizeof (distPool)/sizeof (distPool[0])); distPool[stack] = leftDist; stackPool[stack] = &leftBox; stack ++; dgAssert (stack < sizeof (distPool)/sizeof (distPool[0])); } } else { for (dgInt32 i = 0; i < box.m_vertexCount; i ++) { const dgVector& p = m_vertex[box.m_vertexStart + i]; dgAssert (p.m_x >= box.m_box[0].m_x); dgAssert (p.m_x <= box.m_box[1].m_x); dgAssert (p.m_y >= box.m_box[0].m_y); dgAssert (p.m_y <= box.m_box[1].m_y); dgAssert (p.m_z >= box.m_box[0].m_z); dgAssert (p.m_z <= box.m_box[1].m_z); dgVector dist (p.DotProduct4(dir)); //if (dist.m_x > maxProj.m_x) { // maxProj = dist; // index = box.m_vertexStart + i; //} dgVector mask (dist > maxProj); dgInt32 intMask = *((dgInt32*) &mask.m_x); index = ((box.m_vertexStart + i) & intMask) | (index & ~intMask); maxProj = maxProj.GetMax(dist); } } } } } else { for (dgInt32 i = 0; i < m_vertexCount; i ++) { const dgVector& p = m_vertex[i]; dgVector dist (p.DotProduct4(dir)); //if (dist.m_x > maxProj.m_x) { // index = i; // maxProj = dist; //} dgVector mask (dist > maxProj); dgInt32 intMask = *((dgInt32*) &mask.m_x); index = (i & intMask) | (index & ~intMask); maxProj = maxProj.GetMax(dist); } } if (vertexIndex) { *vertexIndex = index; } dgAssert (index != -1); return m_vertex[index]; }