This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 243960
Collapse All | Expand All

(-)a/cnd.modelimpl/src/org/netbeans/modules/cnd/modelimpl/csm/ParameterEllipsisImpl.java (-2 / +2 lines)
Lines 109-115 Link Here
109
        super.write(output);      
109
        super.write(output);      
110
    }  
110
    }  
111
    
111
    
112
    public ParameterEllipsisImpl(RepositoryDataInput input) throws IOException {
112
    public ParameterEllipsisImpl(RepositoryDataInput input, CsmUID<CsmScope> scopeUID) throws IOException {
113
        super(input);
113
        super(input, scopeUID);
114
    } 
114
    } 
115
}
115
}
(-)a/cnd.modelimpl/src/org/netbeans/modules/cnd/modelimpl/csm/ParameterImpl.java (-4 / +8 lines)
Lines 108-116 Link Here
108
    @Override
108
    @Override
109
    public void write(RepositoryDataOutput output) throws IOException {
109
    public void write(RepositoryDataOutput output) throws IOException {
110
        super.write(output);      
110
        super.write(output);      
111
    }  
111
    }
112
    
112
113
    public ParameterImpl(RepositoryDataInput input) throws IOException {
113
    @Override
114
        super(input);
114
    protected void writeScope(RepositoryDataOutput output) throws IOException {
115
    }
116
117
    public ParameterImpl(RepositoryDataInput input, CsmUID<CsmScope> scopeUID) throws IOException {
118
        super(input, scopeUID);
115
    } 
119
    } 
116
}
120
}
(-)a/cnd.modelimpl/src/org/netbeans/modules/cnd/modelimpl/csm/ParameterListImpl.java (+2 lines)
Lines 49-54 Link Here
49
import org.netbeans.modules.cnd.api.model.CsmNamedElement;
49
import org.netbeans.modules.cnd.api.model.CsmNamedElement;
50
import org.netbeans.modules.cnd.api.model.CsmParameter;
50
import org.netbeans.modules.cnd.api.model.CsmParameter;
51
import org.netbeans.modules.cnd.api.model.CsmParameterList;
51
import org.netbeans.modules.cnd.api.model.CsmParameterList;
52
import org.netbeans.modules.cnd.api.model.CsmScope;
53
import org.netbeans.modules.cnd.api.model.CsmUID;
52
import org.netbeans.modules.cnd.apt.structure.APTDefine;
54
import org.netbeans.modules.cnd.apt.structure.APTDefine;
53
import org.netbeans.modules.cnd.apt.support.APTMacro;
55
import org.netbeans.modules.cnd.apt.support.APTMacro;
54
import org.netbeans.modules.cnd.apt.support.APTToken;
56
import org.netbeans.modules.cnd.apt.support.APTToken;
(-)a/cnd.modelimpl/src/org/netbeans/modules/cnd/modelimpl/csm/VariableImpl.java (-1 / +11 lines)
Lines 501-512 Link Here
501
        output.writeByte(pack);
501
        output.writeByte(pack);
502
        PersistentUtils.writeExpression(initExpr, output);
502
        PersistentUtils.writeExpression(initExpr, output);
503
        PersistentUtils.writeType(type, output);
503
        PersistentUtils.writeType(type, output);
504
        writeScope(output);
505
    }
504
506
507
    protected void writeScope(RepositoryDataOutput output) throws IOException {
505
        // could be null UID (i.e. parameter)
508
        // could be null UID (i.e. parameter)
506
        UIDObjectFactory.getDefaultFactory().writeUID(this.scopeUID, output);
509
        UIDObjectFactory.getDefaultFactory().writeUID(this.scopeUID, output);
507
    }
510
    }
508
511
509
    public VariableImpl(RepositoryDataInput input) throws IOException {
512
    public VariableImpl(RepositoryDataInput input) throws IOException {
513
        this(input, null);
514
        this.scopeUID = UIDObjectFactory.getDefaultFactory().readUID(input);
515
        // could be null UID (i.e. parameter)
516
        this.scopeRef = null;
517
    }
518
519
    protected VariableImpl(RepositoryDataInput input, CsmUID<CsmScope> scopeUID) throws IOException {
510
        super(input);
520
        super(input);
511
        this.name = PersistentUtils.readUTF(input, NameCache.getManager());
521
        this.name = PersistentUtils.readUTF(input, NameCache.getManager());
512
        assert this.name != null;
522
        assert this.name != null;
Lines 516-522 Link Here
516
        this.initExpr = (ExpressionBase) PersistentUtils.readExpression(input);
526
        this.initExpr = (ExpressionBase) PersistentUtils.readExpression(input);
517
        this.type = PersistentUtils.readType(input);
527
        this.type = PersistentUtils.readType(input);
518
528
519
        this.scopeUID = UIDObjectFactory.getDefaultFactory().readUID(input);
529
        this.scopeUID = scopeUID;
520
        // could be null UID (i.e. parameter)
530
        // could be null UID (i.e. parameter)
521
        this.scopeRef = null;
531
        this.scopeRef = null;
522
    }
532
    }
(-)a/cnd.modelimpl/src/org/netbeans/modules/cnd/modelimpl/fsm/DummyParameterImpl.java (-2 / +2 lines)
Lines 104-110 Link Here
104
        super.write(output);
104
        super.write(output);
105
    }  
105
    }  
106
    
106
    
107
    public DummyParameterImpl(RepositoryDataInput input) throws IOException {
107
    public DummyParameterImpl(RepositoryDataInput input, CsmUID<CsmScope> scopeUID) throws IOException {
108
        super(input);    
108
        super(input, scopeUID);
109
    } 
109
    } 
110
}
110
}
(-)a/cnd.modelimpl/src/org/netbeans/modules/cnd/modelimpl/repository/PersistentUtils.java (-6 / +21 lines)
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;
(-)a/cnd.modelimpl/src/org/netbeans/modules/cnd/modelimpl/repository/RepositoryUtils.java (-1 / +1 lines)
Lines 78-84 Link Here
78
    /**
78
    /**
79
     * the version of the persistency mechanism
79
     * the version of the persistency mechanism
80
     */
80
     */
81
    private static final int CURRENT_VERSION_OF_PERSISTENCY = 168;
81
    private static final int CURRENT_VERSION_OF_PERSISTENCY = 169;
82
82
83
//    /** temporary flag, to be removed as soon as relocatable repository is achieved */
83
//    /** temporary flag, to be removed as soon as relocatable repository is achieved */
84
//    public static final boolean RELOCATABLE = true;
84
//    public static final boolean RELOCATABLE = true;

Return to bug 243960