mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Cosmetics.
This commit is contained in:
parent
765363be4a
commit
94ee2bc827
7 changed files with 84 additions and 82 deletions
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue