protected void createOperation( IClass clazz, Type type, MemberdefType memberdefType, IClass findClass) throws InvalidEditingException, ProjectNotFoundException { IOperation operation = null; if (LanguageManager.PRIMITIVE_TYPE.contains(type.getNamespaceClass().clazz)) { operation = this.basicModelEditor.createOperation( clazz, type.getName(), type.getNamespaceClass().clazz); } else { if (findClass == null) { if (clazz.getName().equals(type.getName()) || format("~%s", clazz.getName()).equals(type.getName())) { operation = this.basicModelEditor.createOperation(clazz, type.getName(), ""); } else if (type.getNamespaceClass() != null && !isEmpty(type.getNamespaceClass().clazz)) { operation = this.basicModelEditor.createOperation( clazz, type.getName(), type.getNamespaceClass().clazz); } } else { operation = this.basicModelEditor.createOperation(clazz, type.getName(), (IClass) findClass); } } if (operation == null) { return; } // 操作のその他属性を作成 this.setLanguage(CPLUS_OPERATION, operation); this.createParameter(operation, memberdefType.getParam()); operation.setDefinition(this.parseDescription(memberdefType.getDetaileddescription())); operation.setVisibility(type.getVisiblity()); if (type.isConst()) { this.createTaggedValue(operation, "jude.c_plus.const", "true"); } if (type.getVirt().equals(DoxVirtualKind.VIRTUAL.value()) || type.getVirt().equals(DoxVirtualKind.PURE_VIRTUAL.value())) { this.createTaggedValue(operation, "jude.c_plus.virtual", "true"); } if (type.isExplicit()) { this.createTaggedValue(operation, "jude.c_plus.explicit", "true"); } if (type.isInline()) { this.createTaggedValue(operation, "jude.c_plus.inline", "true"); } if (type.isFriend()) { this.createTaggedValue(operation, "jude.c_plus.friend", "true"); } }
private IParameter createParameter( BasicModelEditor modelEditor, IOperation operation, String name, String typeExpression) throws InvalidEditingException { try { return modelEditor.createParameter(operation, name, typeExpression); } catch (InvalidEditingException e) { String br = System.getProperty("line.separator"); StringBuffer message = new StringBuffer(); message.append(e.getMessage()); message.append(br); message.append("Operation : "); message.append(operation.getName()); message.append(br); message.append("Name : "); message.append(name); message.append(br); message.append("TypeExpression : "); message.append(typeExpression); throw new InvalidEditingException(e.getKey(), message.toString()); } }