コード例 #1
0
  @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);
  }
コード例 #2
0
 @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;
 }
コード例 #3
0
 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);
   }
 }