@Override protected void collectModifications(IProgressMonitor pm, ModificationCollector collector) throws CoreException, OperationCanceledException { List<IASTNode> getterAndSetters = new ArrayList<IASTNode>(); List<IASTFunctionDefinition> definitions = new ArrayList<IASTFunctionDefinition>(); for (GetterSetterInsertEditProvider currentProvider : context.selectedFunctions) { if (context.isDefinitionSeparate()) { getterAndSetters.add(currentProvider.getFunctionDeclaration()); IASTFunctionDefinition functionDefinition = currentProvider.getFunctionDefinition(true); // Standalone definitions in a header file have to be declared inline. if (definitionInsertLocation.getTranslationUnit().isHeaderUnit()) { functionDefinition.getDeclSpecifier().setInline(true); } definitions.add(functionDefinition); } else { getterAndSetters.add(currentProvider.getFunctionDefinition(false)); } } if (context.isDefinitionSeparate()) { addDefinition(collector, definitions, pm); } ICPPASTCompositeTypeSpecifier classDefinition = (ICPPASTCompositeTypeSpecifier) context.existingFields.get(context.existingFields.size() - 1).getParent(); AddDeclarationNodeToClassChange.createChange( classDefinition, VisibilityEnum.v_public, getterAndSetters, false, collector); }
@Override public RefactoringStatus checkFinalConditions( IProgressMonitor pm, CheckConditionsContext checkContext) throws CoreException, OperationCanceledException { RefactoringStatus result = new RefactoringStatus(); if (context.isDefinitionSeparate()) { findDefinitionInsertLocation(pm); if (definitionInsertLocation == null || definitionInsertLocation.getTranslationUnit() == null) { result.addInfo(Messages.GenerateGettersAndSettersRefactoring_NoImplFile); } } Checks.addModifiedFilesToChecker(getAllFilesToModify(), checkContext); return result; }
private void initRefactoring(IProgressMonitor pm) throws OperationCanceledException, CoreException { IASTTranslationUnit ast = astCache.getAST(tu, null); context.selectedName = getSelectedName(ast); IASTCompositeTypeSpecifier compositeTypeSpecifier = null; if (context.selectedName != null) { compositeTypeSpecifier = getCompositeTypeSpecifier(context.selectedName); } else { compositeTypeSpecifier = findCurrentCompositeTypeSpecifier(ast); } if (compositeTypeSpecifier != null) { findDeclarations(compositeTypeSpecifier); } else { initStatus.addFatalError(Messages.GenerateGettersAndSettersRefactoring_NoCassDefFound); } }