// load the mesh bool TriMesh::LoadMesh( const string& str , Transform& transform ) { // set the tranformation m_Transform = transform; // load the mesh bool flag = MeshManager::GetSingleton().LoadMesh( str , this ); if( false == flag ) return false; _copyMaterial(); return true; }
/* ---------------- * copyObject returns a copy of the node or list. If it is a list, it * recursively copies its items. * ---------------- */ void * copyObject(void *from) { void *retval; if (from==NULL) return NULL; switch(nodeTag(from)) { /* * PLAN NODES */ case T_Plan: retval = _copyPlan(from); break; case T_Existential: retval = _copyExistential(from); break; case T_Result: retval = _copyResult(from); break; case T_Append: retval = _copyAppend(from); break; case T_Scan: retval = _copyScan(from); break; case T_SeqScan: retval = _copySeqScan(from); break; case T_IndexScan: retval = _copyIndexScan(from); break; case T_Join: retval = _copyJoin(from); break; case T_NestLoop: retval = _copyNestLoop(from); break; case T_MergeJoin: retval = _copyMergeJoin(from); break; case T_HashJoin: retval = _copyHashJoin(from); break; case T_Temp: retval = _copyTemp(from); break; case T_Material: retval = _copyMaterial(from); break; case T_Sort: retval = _copySort(from); break; case T_Agg: retval = _copyAgg(from); break; case T_Unique: retval = _copyUnique(from); break; case T_Hash: retval = _copyHash(from); break; /* * PRIMITIVE NODES */ case T_Resdom: retval = _copyResdom(from); break; case T_Fjoin: retval = _copyFjoin(from); break; case T_Expr: retval = _copyExpr(from); break; case T_Var: retval = _copyVar(from); break; case T_Oper: retval = _copyOper(from); break; case T_Const: retval = _copyConst(from); break; case T_Param: retval = _copyParam(from); break; case T_Func: retval = _copyFunc(from); break; case T_Array: retval = _copyArray(from); break; case T_ArrayRef: retval = _copyArrayRef(from); break; case T_Aggreg: retval = _copyAggreg(from); break; /* * RELATION NODES */ case T_Rel: retval = _copyRel(from); break; case T_Path: retval = _copyPath(from); break; case T_IndexPath: retval = _copyIndexPath(from); break; case T_JoinPath: retval = _copyJoinPath(from); break; case T_MergePath: retval = _copyMergePath(from); break; case T_HashPath: retval = _copyHashPath(from); break; case T_OrderKey: retval = _copyOrderKey(from); break; case T_JoinKey: retval = _copyJoinKey(from); break; case T_MergeOrder: retval = _copyMergeOrder(from); break; case T_CInfo: retval = _copyCInfo(from); break; case T_JoinMethod: retval = _copyJoinMethod(from); break; case T_HInfo: retval = _copyHInfo(from); break; case T_MInfo: retval = _copyMInfo(from); break; case T_JInfo: retval = _copyJInfo(from); break; case T_Iter: retval = _copyIter(from); break; case T_Stream: retval = _copyStream(from); break; /* * PARSE NODES */ case T_Query: retval = _copyQuery(from); break; case T_TargetEntry: retval = _copyTargetEntry(from); break; case T_RangeTblEntry: retval = _copyRangeTblEntry(from); break; case T_SortClause: retval = _copySortClause(from); break; /* * VALUE NODES */ case T_Integer: case T_String: case T_Float: retval = _copyValue(from); break; case T_List: { List *list=from, *l; List *newlist = NIL, *nl; foreach(l, list) { if (newlist==NIL) { newlist = nl = lcons(copyObject(lfirst(l)),NIL); }else { lnext(nl) = lcons(copyObject(lfirst(l)),NIL); nl = lnext(nl); } } retval = newlist; } break; default: elog(NOTICE, "copyObject: don't know how to copy %d", nodeTag(from)); retval = from; break; } return retval; }