Здравствуйте!
Есть один довольно большой проект на MATLAB, который желательно перевести на С#
Проект написан классами, пример кода ниже,
сам код сделан похожим на шарповый.
Я прекрасно понимаю, что надо будет расставлять типы, делать какие-то интерфейсы, что автоматизированных утилит я вряд ли найду, и что надо будет пилить это руками, но пугает объем - несколько тысяч (хз, тысячи 3-4) строк кода.
Есть ли хотя бы какие-то конвертеры синтаксиса, чтобы не менять все эти function.... end, if... end, for... end на классический синтаксис фигурными скобками?
Пример кода. Весь код в таком ООП стиле: класс-методы-наследование, есть ивенты
classdef ENode<handle
properties
nodes_range %Диапазон схемных узлов, соответствующих графическому узлу Зачем нужен?
connected_elements={};
is_repacked=false
end
methods
function copy_object=Clone(this)
constructor=str2func(class(this));
copy_object=constructor(this.nodes_range);
%!!! У КОПИИ is_repacked=false!!!
end
function this=ENode(nodes_range)
if nargin==1
this.nodes_range=nodes_range;
end
end
function RefreshNodeRange(this,deleted_range)
if ~isempty(deleted_range)
has_selfnode_deleted=false;
new_range=this.nodes_range;
for i=1:length(deleted_range)
for j=1:length(this.nodes_range)
if deleted_range(i)<this.nodes_range(j)
new_range(j)=new_range(j)-1;
elseif deleted_range(i)==this.nodes_range(j)
new_range(j)=0; %присваивем ему нулевой диапазон
has_selfnode_deleted=true;
end
end
end
%На случай, если мы удаляем узел, входящий в
%диапазон логического узла
if has_selfnode_deleted %если мы удаляли и свои узлы
k=1;
while 1
if new_range(k)==0
new_range=[];
else
k=k+1;
end
if k>length(this.nodes_range)
break
end
end
end
this.nodes_range=new_range;
%2)Диапазон лежит целиком ниже (удаляется нижестоящий) или совпадает (удаляется сам элемент). Тогда ничего не делаем.
end
end
end
end