Lines 49-59
Link Here
|
49 |
import java.util.Collection; |
49 |
import java.util.Collection; |
50 |
import java.util.List; |
50 |
import java.util.List; |
51 |
import java.util.Set; |
51 |
import java.util.Set; |
52 |
import org.netbeans.modules.cnd.api.model.CsmNamedElement; |
52 |
import org.netbeans.modules.cnd.api.model.CsmObject; |
53 |
import org.netbeans.modules.cnd.api.model.CsmParameter; |
53 |
import org.netbeans.modules.cnd.api.model.CsmParameter; |
54 |
import org.netbeans.modules.cnd.api.model.CsmParameterList; |
54 |
import org.netbeans.modules.cnd.api.model.CsmParameterList; |
|
|
55 |
import org.netbeans.modules.cnd.api.model.CsmScope; |
55 |
import org.netbeans.modules.cnd.api.model.CsmSpecializationParameter; |
56 |
import org.netbeans.modules.cnd.api.model.CsmSpecializationParameter; |
56 |
import org.netbeans.modules.cnd.api.model.CsmType; |
57 |
import org.netbeans.modules.cnd.api.model.CsmType; |
|
|
58 |
import org.netbeans.modules.cnd.api.model.CsmUID; |
57 |
import org.netbeans.modules.cnd.api.model.CsmVisibility; |
59 |
import org.netbeans.modules.cnd.api.model.CsmVisibility; |
58 |
import org.netbeans.modules.cnd.api.model.deep.CsmCompoundStatement; |
60 |
import org.netbeans.modules.cnd.api.model.deep.CsmCompoundStatement; |
59 |
import org.netbeans.modules.cnd.api.model.deep.CsmExpression; |
61 |
import org.netbeans.modules.cnd.api.model.deep.CsmExpression; |
Lines 82-93
Link Here
|
82 |
import org.netbeans.modules.cnd.modelimpl.csm.TemplateParameterTypeImpl; |
84 |
import org.netbeans.modules.cnd.modelimpl.csm.TemplateParameterTypeImpl; |
83 |
import org.netbeans.modules.cnd.modelimpl.csm.TypeBasedSpecializationParameterImpl; |
85 |
import org.netbeans.modules.cnd.modelimpl.csm.TypeBasedSpecializationParameterImpl; |
84 |
import org.netbeans.modules.cnd.modelimpl.csm.VariadicSpecializationParameterImpl; |
86 |
import org.netbeans.modules.cnd.modelimpl.csm.VariadicSpecializationParameterImpl; |
|
|
87 |
import org.netbeans.modules.cnd.modelimpl.csm.core.CsmIdentifiable; |
85 |
import org.netbeans.modules.cnd.modelimpl.csm.core.ErrorDirectiveImpl; |
88 |
import org.netbeans.modules.cnd.modelimpl.csm.core.ErrorDirectiveImpl; |
86 |
import org.netbeans.modules.cnd.modelimpl.csm.deep.CompoundStatementImpl; |
89 |
import org.netbeans.modules.cnd.modelimpl.csm.deep.CompoundStatementImpl; |
87 |
import org.netbeans.modules.cnd.modelimpl.csm.deep.ExpandedExpressionBase; |
90 |
import org.netbeans.modules.cnd.modelimpl.csm.deep.ExpandedExpressionBase; |
88 |
import org.netbeans.modules.cnd.modelimpl.csm.deep.LazyTryCatchStatementImpl; |
91 |
import org.netbeans.modules.cnd.modelimpl.csm.deep.LazyTryCatchStatementImpl; |
89 |
import org.netbeans.modules.cnd.modelimpl.fsm.DummyParameterImpl; |
92 |
import org.netbeans.modules.cnd.modelimpl.fsm.DummyParameterImpl; |
90 |
import org.netbeans.modules.cnd.modelimpl.fsm.DummyParametersListImpl; |
93 |
import org.netbeans.modules.cnd.modelimpl.fsm.DummyParametersListImpl; |
|
|
94 |
import org.netbeans.modules.cnd.modelimpl.uid.UIDObjectFactory; |
91 |
import org.netbeans.modules.cnd.repository.spi.RepositoryDataInput; |
95 |
import org.netbeans.modules.cnd.repository.spi.RepositoryDataInput; |
92 |
import org.netbeans.modules.cnd.repository.spi.RepositoryDataOutput; |
96 |
import org.netbeans.modules.cnd.repository.spi.RepositoryDataOutput; |
93 |
import org.netbeans.modules.cnd.repository.support.AbstractObjectFactory; |
97 |
import org.netbeans.modules.cnd.repository.support.AbstractObjectFactory; |
Lines 185-193
Link Here
|
185 |
|
189 |
|
186 |
public static void writeParameters(Collection<CsmParameter> params, RepositoryDataOutput output) throws IOException { |
190 |
public static void writeParameters(Collection<CsmParameter> params, RepositoryDataOutput output) throws IOException { |
187 |
if (params == null || params.isEmpty()) { |
191 |
if (params == null || params.isEmpty()) { |
|
|
192 |
//UIDObjectFactory.getDefaultFactory().writeUID(null, output); |
188 |
output.writeShort(0); |
193 |
output.writeShort(0); |
189 |
} else { |
194 |
} else { |
190 |
output.writeShort(params.size()); |
195 |
output.writeShort(params.size()); |
|
|
196 |
CsmUID scopeUID = null; |
197 |
for (CsmParameter param : params) { |
198 |
CsmScope scope = param.getScope(); |
199 |
scopeUID = (scope instanceof CsmIdentifiable) ? ((CsmIdentifiable) scope).getUID() : null; |
200 |
break; |
201 |
// we could assert in else, but model tests that dump model and compare with goldens |
202 |
// will check this perfectly well |
203 |
} |
204 |
UIDObjectFactory.getDefaultFactory().writeUID(scopeUID, output); |
191 |
for (CsmParameter param : params) { |
205 |
for (CsmParameter param : params) { |
192 |
writeParameter(param, output); |
206 |
writeParameter(param, output); |
193 |
} |
207 |
} |
Lines 199-224
Link Here
|
199 |
if (size == 0) { |
213 |
if (size == 0) { |
200 |
return null; |
214 |
return null; |
201 |
} |
215 |
} |
|
|
216 |
CsmUID<CsmScope> scopeUID = UIDObjectFactory.getDefaultFactory().readUID(input); |
202 |
ArrayList<CsmParameter> list = new ArrayList<>(size); |
217 |
ArrayList<CsmParameter> list = new ArrayList<>(size); |
203 |
for (int i = 0; i < size; i++) { |
218 |
for (int i = 0; i < size; i++) { |
204 |
list.add(readParameter(input)); |
219 |
list.add(readParameter(input, scopeUID)); |
205 |
} |
220 |
} |
206 |
list.trimToSize(); |
221 |
list.trimToSize(); |
207 |
return list; |
222 |
return list; |
208 |
} |
223 |
} |
209 |
|
224 |
|
210 |
private static CsmParameter readParameter(RepositoryDataInput input) throws IOException { |
225 |
private static CsmParameter readParameter(RepositoryDataInput input, CsmUID<CsmScope> scopeUID) throws IOException { |
211 |
byte handler = input.readByte(); |
226 |
byte handler = input.readByte(); |
212 |
CsmParameter obj = null; |
227 |
CsmParameter obj = null; |
213 |
switch (handler) { |
228 |
switch (handler) { |
214 |
case DUMMY_PARAMETER_IMPL: |
229 |
case DUMMY_PARAMETER_IMPL: |
215 |
obj = new ParameterEllipsisImpl(input); |
230 |
obj = new ParameterEllipsisImpl(input, scopeUID); |
216 |
break; |
231 |
break; |
217 |
case PARAMETER_ELLIPSIS_IMPL: |
232 |
case PARAMETER_ELLIPSIS_IMPL: |
218 |
obj = new ParameterEllipsisImpl(input); |
233 |
obj = new ParameterEllipsisImpl(input, scopeUID); |
219 |
break; |
234 |
break; |
220 |
case PARAMETER_IMPL: |
235 |
case PARAMETER_IMPL: |
221 |
obj = new ParameterImpl(input); |
236 |
obj = new ParameterImpl(input, scopeUID); |
222 |
break; |
237 |
break; |
223 |
default: |
238 |
default: |
224 |
assert false : "unexpected handler" + handler; |
239 |
assert false : "unexpected handler" + handler; |