@Override public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { if (newBinding instanceof ICPPTemplateTemplateParameter) { final Database db = getDB(); ICPPTemplateTemplateParameter ttp = (ICPPTemplateTemplateParameter) newBinding; updateName(newBinding.getNameCharArray()); IType newDefault = null; try { newDefault = ttp.getDefault(); } catch (DOMException e) { // ignore } if (newDefault != null) { linkage.storeType(record + DEFAULT_TYPE, newDefault); } long oldRec = db.getRecPtr(record + PARAMETERS); IPDOMCPPTemplateParameter[] oldParams = getTemplateParameters(); try { params = PDOMTemplateParameterArray.createPDOMTemplateParameters( getLinkage(), this, ttp.getTemplateParameters()); long newRec = PDOMTemplateParameterArray.putArray(db, params); db.putRecPtr(record + PARAMETERS, newRec); if (oldRec != 0) db.free(oldRec); for (IPDOMCPPTemplateParameter opar : oldParams) { opar.forceDelete(linkage); } } catch (DOMException e) { } } }
public PDOMCPPTemplateTemplateParameter( PDOMLinkage linkage, PDOMNode parent, ICPPTemplateTemplateParameter param) throws CoreException, DOMException { super(linkage, parent, param.getNameCharArray()); final Database db = getDB(); int id = param.getParameterID(); if (param.isParameterPack()) { id |= PACK_BIT; } db.putInt(record + PARAMETERID, id); final ICPPTemplateParameter[] origParams = param.getTemplateParameters(); final IPDOMCPPTemplateParameter[] params = PDOMTemplateParameterArray.createPDOMTemplateParameters(linkage, this, origParams); long rec = PDOMTemplateParameterArray.putArray(db, params); getDB().putRecPtr(record + PARAMETERS, rec); }
public PDOMCPPMethodTemplateSpecialization( PDOMCPPLinkage linkage, PDOMNode parent, ICPPMethod method, PDOMBinding specialized) throws CoreException { super(linkage, parent, (ICPPFunctionTemplate) method, specialized); computeTemplateParameters((ICPPFunctionTemplate) method); // Sets fTemplateParameters final Database db = getDB(); long rec = PDOMTemplateParameterArray.putArray(db, fTemplateParameters); db.putRecPtr(record + TEMPLATE_PARAMS, rec); linkage .new ConfigureTemplateParameters( ((ICPPFunctionTemplate) method).getTemplateParameters(), fTemplateParameters); }
private void computeTemplateParameters(ICPPFunctionTemplate originalMethodTemplate) { try { fTemplateParameters = PDOMTemplateParameterArray.createPDOMTemplateParameters( getLinkage(), this, originalMethodTemplate.getTemplateParameters()); } catch (DOMException e) { CCorePlugin.log(e); fTemplateParameters = IPDOMCPPTemplateParameter.EMPTY_ARRAY; } catch (CoreException e) { CCorePlugin.log(e); fTemplateParameters = IPDOMCPPTemplateParameter.EMPTY_ARRAY; } }
@Override public IPDOMCPPTemplateParameter[] getTemplateParameters() { if (params == null) { try { long rec = getDB().getRecPtr(record + PARAMETERS); if (rec == 0) { params = IPDOMCPPTemplateParameter.EMPTY_ARRAY; } else { params = PDOMTemplateParameterArray.getArray(this, rec); } } catch (CoreException e) { CCorePlugin.log(e); params = IPDOMCPPTemplateParameter.EMPTY_ARRAY; } } return params; }