1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Cosmetics.

This commit is contained in:
Sergey Prigogin 2012-07-28 16:44:25 -07:00
parent 765363be4a
commit 94ee2bc827
7 changed files with 84 additions and 82 deletions

View file

@ -6,7 +6,7 @@
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Markus Schorn - initial API and implementation * Markus Schorn - initial API and implementation
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.core.dom.ast.cpp; package org.eclipse.cdt.core.dom.ast.cpp;
@ -20,7 +20,6 @@ import org.eclipse.cdt.core.dom.ast.IASTInitializerList;
* @noimplement This interface is not intended to be implemented by clients. * @noimplement This interface is not intended to be implemented by clients.
*/ */
public interface ICPPASTInitializerList extends IASTInitializerList, ICPPASTInitializerClause, ICPPASTPackExpandable { public interface ICPPASTInitializerList extends IASTInitializerList, ICPPASTInitializerClause, ICPPASTPackExpandable {
@Override @Override
ICPPASTInitializerList copy(); ICPPASTInitializerList copy();

View file

@ -6,7 +6,7 @@
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Devin Steffler (IBM Corporation) - initial API and implementation * Devin Steffler (IBM Corporation) - initial API and implementation
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser.c; package org.eclipse.cdt.internal.core.dom.parser.c;
@ -157,7 +157,6 @@ public class CArrayType implements ICArrayType, ITypeContainer, ISerializableTyp
return ASTTypeUtil.getType(this); return ASTTypeUtil.getType(this);
} }
@Override @Override
public void marshal(ITypeMarshalBuffer buffer) throws CoreException { public void marshal(ITypeMarshalBuffer buffer) throws CoreException {
int firstByte= ITypeMarshalBuffer.ARRAY_TYPE; int firstByte= ITypeMarshalBuffer.ARRAY_TYPE;
@ -174,14 +173,13 @@ public class CArrayType implements ICArrayType, ITypeContainer, ISerializableTyp
firstByte |= ITypeMarshalBuffer.FLAG1; firstByte |= ITypeMarshalBuffer.FLAG1;
} }
val= getSize(); val= getSize();
if (val != null) { if (val != null) {
firstByte |= ITypeMarshalBuffer.FLAG2; firstByte |= ITypeMarshalBuffer.FLAG2;
Long num= val.numericalValue(); Long num= val.numericalValue();
if (num != null) { if (num != null) {
long l= num; long l= num;
if (l>=0 && l <= Short.MAX_VALUE) { if (l >= 0 && l <= Short.MAX_VALUE) {
nval= (short) l; nval= (short) l;
firstByte |= ITypeMarshalBuffer.FLAG3; firstByte |= ITypeMarshalBuffer.FLAG3;
} }

View file

@ -32,10 +32,9 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor;
/** /**
* Binding for a non-type template parameter. * Binding for a non-type template parameter.
*/ */
public class CPPTemplateNonTypeParameter extends CPPTemplateParameter implements public class CPPTemplateNonTypeParameter extends CPPTemplateParameter
ICPPTemplateNonTypeParameter { implements ICPPTemplateNonTypeParameter {
private IType type;
private IType type = null;
public CPPTemplateNonTypeParameter(IASTName name) { public CPPTemplateNonTypeParameter(IASTName name) {
super(name); super(name);
@ -80,7 +79,7 @@ public class CPPTemplateNonTypeParameter extends CPPTemplateParameter implements
d= (IASTExpression) dc; d= (IASTExpression) dc;
} else if (dc instanceof ICPPASTInitializerList) { } else if (dc instanceof ICPPASTInitializerList) {
ICPPASTInitializerList list= (ICPPASTInitializerList) dc; ICPPASTInitializerList list= (ICPPASTInitializerList) dc;
switch(list.getSize()) { switch (list.getSize()) {
case 0: case 0:
return new CPPTemplateArgument(Value.create(0), getType()); return new CPPTemplateArgument(Value.create(0), getType());
case 1: case 1:
@ -123,26 +122,32 @@ public class CPPTemplateNonTypeParameter extends CPPTemplateParameter implements
public boolean isStatic() { public boolean isStatic() {
return false; return false;
} }
@Override @Override
public boolean isExtern() { public boolean isExtern() {
return false; return false;
} }
@Override @Override
public boolean isAuto() { public boolean isAuto() {
return false; return false;
} }
@Override @Override
public boolean isRegister() { public boolean isRegister() {
return false; return false;
} }
@Override @Override
public IValue getInitialValue() { public IValue getInitialValue() {
return null; return null;
} }
@Override @Override
public boolean isExternC() { public boolean isExternC() {
return false; return false;
} }
@Override @Override
public boolean isMutable() { public boolean isMutable() {
return false; return false;

View file

@ -6,9 +6,9 @@
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Andrew Ferguson (Symbian) - Initial implementation * Andrew Ferguson (Symbian) - Initial implementation
* Bryan Wilkinson (QNX) * Bryan Wilkinson (QNX)
* Markus Schorn (Wind River Systems) * Markus Schorn (Wind River Systems)
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.index.composite.cpp; package org.eclipse.cdt.internal.core.index.composite.cpp;
@ -26,15 +26,16 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameterMap; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameterMap;
import org.eclipse.cdt.core.index.IIndexBinding; import org.eclipse.cdt.core.index.IIndexBinding;
import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.core.parser.util.ObjectMap;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateArgument;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateParameterMap; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateParameterMap;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateTypeArgument;
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding; import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory; import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
/** /**
* For implementation re-use in the absence of multiple inheritance * For implementation re-use in the absence of multiple inheritance.
*/ */
public class TemplateInstanceUtil { public class TemplateInstanceUtil {
public static ICPPTemplateParameterMap getTemplateParameterMap(ICompositesFactory cf, ICPPTemplateInstance rbinding) { public static ICPPTemplateParameterMap getTemplateParameterMap(ICompositesFactory cf, ICPPTemplateInstance rbinding) {
ICPPTemplateParameterMap preresult= rbinding.getTemplateParameterMap(); ICPPTemplateParameterMap preresult= rbinding.getTemplateParameterMap();
Integer[] keys= preresult.getAllParameterPositions(); Integer[] keys= preresult.getAllParameterPositions();
@ -50,8 +51,8 @@ public class TemplateInstanceUtil {
result.put(key, convert(cf, pack)); result.put(key, convert(cf, pack));
} }
} }
} catch(DOMException de) { } catch (DOMException e) {
CCorePlugin.log(de); CCorePlugin.log(e);
} }
return result; return result;
} }
@ -105,7 +106,7 @@ public class TemplateInstanceUtil {
final IType typeValue = arg.getTypeValue(); final IType typeValue = arg.getTypeValue();
IType t= cf.getCompositeType(typeValue); IType t= cf.getCompositeType(typeValue);
if (t != typeValue) { if (t != typeValue) {
return new CPPTemplateArgument(t); return new CPPTemplateTypeArgument(t);
} }
return arg; return arg;
} }
@ -113,8 +114,8 @@ public class TemplateInstanceUtil {
@Deprecated @Deprecated
public static ObjectMap getArgumentMap(ICompositesFactory cf, IIndexBinding rbinding) { public static ObjectMap getArgumentMap(ICompositesFactory cf, IIndexBinding rbinding) {
ICPPSpecialization specn= (ICPPSpecialization) rbinding; ICPPSpecialization specn= (ICPPSpecialization) rbinding;
IBinding specd= ((CPPCompositesFactory)cf).findOneBinding(specn.getSpecializedBinding()); IBinding specd= ((CPPCompositesFactory) cf).findOneBinding(specn.getSpecializedBinding());
if(specd == null) if (specd == null)
specd= specn.getSpecializedBinding(); specd= specn.getSpecializedBinding();
ObjectMap preresult= specn.getArgumentMap(); ObjectMap preresult= specn.getArgumentMap();
@ -122,14 +123,13 @@ public class TemplateInstanceUtil {
Object[] keys= preresult.keyArray(); Object[] keys= preresult.keyArray();
Object[] keysToAdapt= keys; Object[] keysToAdapt= keys;
if(specd instanceof ICPPTemplateDefinition) { if (specd instanceof ICPPTemplateDefinition) {
keysToAdapt= ((ICPPTemplateDefinition)specd).getTemplateParameters(); keysToAdapt= ((ICPPTemplateDefinition) specd).getTemplateParameters();
} }
for(int i = 0; i < keys.length && i < keysToAdapt.length; i++) { for (int i= 0; i < keys.length && i < keysToAdapt.length; i++) {
IType type= (IType) preresult.get(keys[i]); IType type= (IType) preresult.get(keys[i]);
result.put( result.put(
cf.getCompositeBinding((IIndexFragmentBinding)keysToAdapt[i]), cf.getCompositeBinding((IIndexFragmentBinding) keysToAdapt[i]), cf.getCompositeType(type));
cf.getCompositeType(type));
} }
return result; return result;
@ -144,15 +144,15 @@ public class TemplateInstanceUtil {
public static IType[] getArguments(ICompositesFactory cf, ICPPClassTemplatePartialSpecialization rbinding) { public static IType[] getArguments(ICompositesFactory cf, ICPPClassTemplatePartialSpecialization rbinding) {
try { try {
return getArguments(cf, rbinding.getArguments()); return getArguments(cf, rbinding.getArguments());
} catch(DOMException de) { } catch (DOMException e) {
CCorePlugin.log(de); CCorePlugin.log(e);
return IType.EMPTY_TYPE_ARRAY; return IType.EMPTY_TYPE_ARRAY;
} }
} }
@Deprecated @Deprecated
private static IType[] getArguments(ICompositesFactory cf, IType[] result) { private static IType[] getArguments(ICompositesFactory cf, IType[] result) {
for(int i=0; i<result.length; i++) { for (int i= 0; i < result.length; i++) {
result[i] = cf.getCompositeType(result[i]); result[i] = cf.getCompositeType(result[i]);
} }
return result; return result;

View file

@ -6,7 +6,7 @@
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Markus Schorn - initial API and implementation * Markus Schorn - initial API and implementation
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.dom.cpp; package org.eclipse.cdt.internal.core.pdom.dom.cpp;
@ -15,7 +15,6 @@ import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.core.dom.ast.IValue; import org.eclipse.cdt.core.dom.ast.IValue;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument;
import org.eclipse.cdt.internal.core.dom.parser.ProblemType; import org.eclipse.cdt.internal.core.dom.parser.ProblemType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateArgument;
import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.db.Database;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode;
@ -36,17 +35,18 @@ public class PDOMCPPArgumentList {
public static long putArguments(PDOMNode parent, ICPPTemplateArgument[] templateArguments) throws CoreException { public static long putArguments(PDOMNode parent, ICPPTemplateArgument[] templateArguments) throws CoreException {
final PDOMLinkage linkage= parent.getLinkage(); final PDOMLinkage linkage= parent.getLinkage();
final Database db= linkage.getDB(); final Database db= linkage.getDB();
final short len= (short) Math.min(templateArguments.length, (Database.MAX_MALLOC_SIZE-2)/NODE_SIZE); final short len= (short) Math.min(templateArguments.length, (Database.MAX_MALLOC_SIZE - 2) / NODE_SIZE);
final long block= db.malloc(2+NODE_SIZE*len); final long block= db.malloc(2 + NODE_SIZE * len);
long p= block; long p= block;
db.putShort(p, len); p+=2; db.putShort(p, len);
for (int i=0; i<len; i++, p+=NODE_SIZE) { p += 2;
for (int i= 0; i < len; i++, p += NODE_SIZE) {
final ICPPTemplateArgument arg = templateArguments[i]; final ICPPTemplateArgument arg = templateArguments[i];
final boolean isNonType= arg.isNonTypeValue(); final boolean isNonType= arg.isNonTypeValue();
if (isNonType) { if (isNonType) {
linkage.storeType(p, arg.getTypeOfNonTypeValue()); linkage.storeType(p, arg.getTypeOfNonTypeValue());
linkage.storeValue(p+VALUE_OFFSET, arg.getNonTypeValue()); linkage.storeValue(p + VALUE_OFFSET, arg.getNonTypeValue());
} else { } else {
linkage.storeType(p, arg.getTypeValue()); linkage.storeType(p, arg.getTypeValue());
} }
@ -54,7 +54,6 @@ public class PDOMCPPArgumentList {
return block; return block;
} }
/** /**
* Restores an array of template arguments from the database. * Restores an array of template arguments from the database.
*/ */
@ -63,11 +62,11 @@ public class PDOMCPPArgumentList {
final Database db= linkage.getDB(); final Database db= linkage.getDB();
final short len= db.getShort(record); final short len= db.getShort(record);
Assert.isTrue(len >= 0 && len <= (Database.MAX_MALLOC_SIZE-2)/NODE_SIZE); Assert.isTrue(len >= 0 && len <= (Database.MAX_MALLOC_SIZE - 2) / NODE_SIZE);
long p= record+2; long p= record + 2;
for (int i=0; i<len; i++) { for (int i= 0; i < len; i++) {
linkage.storeType(p, null); linkage.storeType(p, null);
linkage.storeValue(p+VALUE_OFFSET, null); linkage.storeValue(p + VALUE_OFFSET, null);
p+= NODE_SIZE; p+= NODE_SIZE;
} }
db.free(record); db.free(record);
@ -81,25 +80,25 @@ public class PDOMCPPArgumentList {
final Database db= linkage.getDB(); final Database db= linkage.getDB();
final short len= db.getShort(rec); final short len= db.getShort(rec);
Assert.isTrue(len >= 0 && len <= (Database.MAX_MALLOC_SIZE-2)/NODE_SIZE); Assert.isTrue(len >= 0 && len <= (Database.MAX_MALLOC_SIZE - 2) / NODE_SIZE);
if (len == 0) { if (len == 0) {
return ICPPTemplateArgument.EMPTY_ARGUMENTS; return ICPPTemplateArgument.EMPTY_ARGUMENTS;
} }
rec+=2; rec += 2;
ICPPTemplateArgument[] result= new ICPPTemplateArgument[len]; ICPPTemplateArgument[] result= new ICPPTemplateArgument[len];
for (int i=0; i<len; i++) { for (int i= 0; i < len; i++) {
IType type= linkage.loadType(rec); IType type= linkage.loadType(rec);
if (type == null) { if (type == null) {
type= new ProblemType(ISemanticProblem.TYPE_NOT_PERSISTED); type= new ProblemType(ISemanticProblem.TYPE_NOT_PERSISTED);
} }
IValue val= linkage.loadValue(rec+VALUE_OFFSET); IValue val= linkage.loadValue(rec + VALUE_OFFSET);
if (val != null) { if (val != null) {
result[i]= new CPPTemplateArgument(val, type); result[i]= new CPPTemplateArgument(val, type);
} else { } else {
result[i]= new CPPTemplateArgument(type); result[i]= new CPPTemplateArgument(type);
} }
rec+= NODE_SIZE; rec += NODE_SIZE;
} }
return result; return result;
} }

View file

@ -6,10 +6,10 @@
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Bryan Wilkinson (QNX) - Initial API and implementation * Bryan Wilkinson (QNX) - Initial API and implementation
* Markus Schorn (Wind River Systems) * Markus Schorn (Wind River Systems)
* Sergey Prigogin (Google) * Sergey Prigogin (Google)
* Andrew Ferguson (Symbian) * Andrew Ferguson (Symbian)
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.dom.cpp; package org.eclipse.cdt.internal.core.pdom.dom.cpp;
@ -24,7 +24,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateNonTypeParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateNonTypeParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter;
import org.eclipse.cdt.internal.core.Util; import org.eclipse.cdt.internal.core.Util;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateArgument;
import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants;
import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.db.Database;
import org.eclipse.cdt.internal.core.pdom.dom.IPDOMMemberOwner; import org.eclipse.cdt.internal.core.pdom.dom.IPDOMMemberOwner;
@ -35,9 +34,8 @@ import org.eclipse.core.runtime.CoreException;
/** /**
* Binding for template non-type parameter in the index. * Binding for template non-type parameter in the index.
*/ */
class PDOMCPPTemplateNonTypeParameter extends PDOMCPPBinding implements IPDOMMemberOwner, class PDOMCPPTemplateNonTypeParameter extends PDOMCPPBinding
ICPPTemplateNonTypeParameter, IPDOMCPPTemplateParameter { implements IPDOMMemberOwner, ICPPTemplateNonTypeParameter, IPDOMCPPTemplateParameter {
private static final int TYPE_OFFSET= PDOMCPPBinding.RECORD_SIZE; private static final int TYPE_OFFSET= PDOMCPPBinding.RECORD_SIZE;
private static final int PARAMETERID= TYPE_OFFSET + Database.TYPE_SIZE; private static final int PARAMETERID= TYPE_OFFSET + Database.TYPE_SIZE;
private static final int DEFAULTVAL= PARAMETERID + Database.VALUE_SIZE; private static final int DEFAULTVAL= PARAMETERID + Database.VALUE_SIZE;
@ -100,8 +98,8 @@ class PDOMCPPTemplateNonTypeParameter extends PDOMCPPBinding implements IPDOMMem
@Override @Override
public void forceDelete(PDOMLinkage linkage) throws CoreException { public void forceDelete(PDOMLinkage linkage) throws CoreException {
getDBName().delete(); getDBName().delete();
linkage.storeType(record+TYPE_OFFSET, null); linkage.storeType(record + TYPE_OFFSET, null);
linkage.storeValue(record+DEFAULTVAL, null); linkage.storeValue(record + DEFAULTVAL, null);
} }
@Override @Override
@ -112,7 +110,7 @@ class PDOMCPPTemplateNonTypeParameter extends PDOMCPPBinding implements IPDOMMem
@Override @Override
public short getTemplateNestingLevel() { public short getTemplateNestingLevel() {
readParamID(); readParamID();
return (short)(getParameterID() >> 16); return (short) (getParameterID() >> 16);
} }
@Override @Override
@ -184,18 +182,22 @@ class PDOMCPPTemplateNonTypeParameter extends PDOMCPPBinding implements IPDOMMem
public IValue getInitialValue() { public IValue getInitialValue() {
return null; return null;
} }
@Override @Override
public boolean isAuto() { public boolean isAuto() {
return false; return false;
} }
@Override @Override
public boolean isExtern() { public boolean isExtern() {
return false; return false;
} }
@Override @Override
public boolean isRegister() { public boolean isRegister() {
return false; return false;
} }
@Override @Override
public boolean isStatic() { public boolean isStatic() {
return false; return false;
@ -204,6 +206,7 @@ class PDOMCPPTemplateNonTypeParameter extends PDOMCPPBinding implements IPDOMMem
public boolean isExternC() { public boolean isExternC() {
return false; return false;
} }
@Override @Override
public boolean isMutable() { public boolean isMutable() {
return false; return false;
@ -213,6 +216,7 @@ class PDOMCPPTemplateNonTypeParameter extends PDOMCPPBinding implements IPDOMMem
public Object clone() { public Object clone() {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
/** /**
* @deprecated * @deprecated
*/ */
@ -221,5 +225,4 @@ class PDOMCPPTemplateNonTypeParameter extends PDOMCPPBinding implements IPDOMMem
public IASTExpression getDefault() { public IASTExpression getDefault() {
return null; return null;
} }
} }

View file

@ -6,7 +6,7 @@
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Markus Schorn - initial API and implementation * Markus Schorn - initial API and implementation
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.dom.cpp; package org.eclipse.cdt.internal.core.pdom.dom.cpp;
@ -16,7 +16,6 @@ import org.eclipse.cdt.core.dom.ast.IValue;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameterMap; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameterMap;
import org.eclipse.cdt.internal.core.dom.parser.ProblemType; import org.eclipse.cdt.internal.core.dom.parser.ProblemType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateArgument;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateParameterMap; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateParameterMap;
import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.db.Database;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage;
@ -42,32 +41,32 @@ public class PDOMCPPTemplateParameterMap {
int keyLen= 0; int keyLen= 0;
int dataSize= 2; int dataSize= 2;
for (Integer key : keys) { for (Integer key : keys) {
int delta= 2+4+NODE_SIZE; int delta= 2 + 4 + NODE_SIZE;
ICPPTemplateArgument[] packExpansion= map.getPackExpansion(key); ICPPTemplateArgument[] packExpansion= map.getPackExpansion(key);
if (packExpansion != null) { if (packExpansion != null) {
delta+= (packExpansion.length-1) * NODE_SIZE; delta += (packExpansion.length - 1) * NODE_SIZE;
} }
if (dataSize+delta > Database.MAX_MALLOC_SIZE) if (dataSize + delta > Database.MAX_MALLOC_SIZE)
break; break;
dataSize += delta; dataSize += delta;
keyLen++; keyLen++;
} }
final long block= db.malloc(dataSize); final long block= db.malloc(dataSize);
long p= block; long p= block;
db.putShort(p, (short)keyLen); p+=2; db.putShort(p, (short) keyLen); p += 2;
for (final Integer paramId : keys) { for (final Integer paramId : keys) {
if (--keyLen < 0) if (--keyLen < 0)
break; break;
db.putInt(p, paramId); p+=4; db.putInt(p, paramId); p += 4;
final ICPPTemplateArgument arg = map.getArgument(paramId); final ICPPTemplateArgument arg = map.getArgument(paramId);
if (arg != null) { if (arg != null) {
db.putShort(p, (short) -1); p+=2; db.putShort(p, (short) -1); p += 2;
storeArgument(db, linkage, p, arg); p+= NODE_SIZE; storeArgument(db, linkage, p, arg); p += NODE_SIZE;
} else { } else {
final ICPPTemplateArgument[] args = map.getPackExpansion(paramId); final ICPPTemplateArgument[] args = map.getPackExpansion(paramId);
db.putShort(p, (short) args.length); p+=2; db.putShort(p, (short) args.length); p += 2;
for (ICPPTemplateArgument a : args) { for (ICPPTemplateArgument a : args) {
storeArgument(db, linkage, p, a); p+= NODE_SIZE; storeArgument(db, linkage, p, a); p += NODE_SIZE;
} }
} }
} }
@ -93,16 +92,16 @@ public class PDOMCPPTemplateParameterMap {
final Database db= linkage.getDB(); final Database db= linkage.getDB();
long p= record; long p= record;
final short len= db.getShort(p); p+= 2; final short len= db.getShort(p); p += 2;
for (int i=0; i<len; i++) { for (int i= 0; i < len; i++) {
p+= 4; // parameter id p += 4; // parameter id
short packSize= db.getShort(p); p+= 2; short packSize= db.getShort(p); p += 2;
if (packSize == -1) if (packSize == -1)
packSize= 1; packSize= 1;
for (int j = 0; j < packSize; j++) { for (int j = 0; j < packSize; j++) {
linkage.storeType(p+TYPE_OFFSET, null); linkage.storeType(p + TYPE_OFFSET, null);
linkage.storeValue(p+VALUE_OFFSET, null); linkage.storeValue(p + VALUE_OFFSET, null);
p+= NODE_SIZE; p+= NODE_SIZE;
} }
} }
@ -121,18 +120,18 @@ public class PDOMCPPTemplateParameterMap {
return CPPTemplateParameterMap.EMPTY; return CPPTemplateParameterMap.EMPTY;
} }
rec+=2; rec += 2;
CPPTemplateParameterMap result= new CPPTemplateParameterMap(len); CPPTemplateParameterMap result= new CPPTemplateParameterMap(len);
for (int i=0; i<len; i++) { for (int i= 0; i < len; i++) {
final int parPos= db.getInt(rec); rec+= 4; final int parPos= db.getInt(rec); rec += 4;
short packSize= db.getShort(rec); rec+= 2; short packSize= db.getShort(rec); rec += 2;
if (packSize == -1) { if (packSize == -1) {
ICPPTemplateArgument arg = readArgument(rec, linkage, db); rec+= NODE_SIZE; ICPPTemplateArgument arg = readArgument(rec, linkage, db); rec += NODE_SIZE;
result.put(parPos, arg); result.put(parPos, arg);
} else { } else {
ICPPTemplateArgument[] packExpansion= new ICPPTemplateArgument[packSize]; ICPPTemplateArgument[] packExpansion= new ICPPTemplateArgument[packSize];
for (int j = 0; j < packExpansion.length; j++) { for (int j = 0; j < packExpansion.length; j++) {
packExpansion[j]= readArgument(rec, linkage, db); rec+= NODE_SIZE; packExpansion[j]= readArgument(rec, linkage, db); rec += NODE_SIZE;
} }
result.put(parPos, packExpansion); result.put(parPos, packExpansion);
} }
@ -140,7 +139,6 @@ public class PDOMCPPTemplateParameterMap {
return result; return result;
} }
private static ICPPTemplateArgument readArgument(long rec, final PDOMLinkage linkage, final Database db) private static ICPPTemplateArgument readArgument(long rec, final PDOMLinkage linkage, final Database db)
throws CoreException { throws CoreException {
IType type= linkage.loadType(rec + TYPE_OFFSET); IType type= linkage.loadType(rec + TYPE_OFFSET);