Войти
ФлеймФорумПрограммирование

[С++] преобразователь сортов Code Style`ов [WIP]

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 Следующая »
#0
16:15, 23 янв. 2013

Короче, есть много-много классов написанных вот в таком Code Style`е:

class A{
  int a;
  char b;
  float c;
private:
  void foo(){ a=+10;}
  void bar(){ b=+00;}
  void baz(){ a=-10;}
protected:
};

class B{
public:
  int a;
  float c;
  char b;
  void foo(){ a=+11;}
private:
  void bar(){ b=+00;}
protected:
  void baz(){ a=-10;}
};

class C{
protected:
  int a;
  void foo(){ a=+11;}
public:
  inline void bar(){ b=+00;}
public:
  char b;
private:
  void baz(){ a=-10;}
  template<int> void weak(int&gg){gg=1;hidden::foo();}
  float c;
  struct hidden{
    static void foo(){*((int*)nullptr)=0;int tmp;weak<0>(tmp);}
  };
};

Ещё есть много много классов написаных в в таком Code Style`е:

class A{
  int a;
  char b;
  float c;
private:
  void foo();
  void bar();
  void baz();
protected:
};

class B{
public:
  int a;
  float c;
  char b;
  void foo();
private:
  void bar();
protected:
  void baz();
};

class C{
protected:
  int a;
  void foo();
public:
  inline void bar();
public:
  char b;
private:
  void baz();
  template<int> void weak(int&gg);
  float c;
  struct hidden{
    static void foo();
  };
};

void A::foo(){ a=+10;}
void A::bar(){ b=+00;}
void A::baz(){ a=-10;}

void B::foo(){ a=+11;}
void B::bar(){ b=+00;}
void B::baz(){ a=-10;}

void C::foo(){ a=+11;}
void C::bar(){ b=+00;}
void C::baz(){ a=-10;}
template<int>void C::weak(int&gg){gg=1;hidden::foo();}
void C::hidden::foo(){*((int*)nullptr)=0;int tmp;weak<0>(tmp);}

Существует ли программа-преобразователь, которая конвертирует код между двумя приведёнными Code Style`ми?
Спасибо.

UPDATE[2015.01.30]:
Важная поправка: речь не про Code Style, а про сорт Code Style`а. Подробнее тут: http://www.gamedev.ru/flame/forum/?id=172020#m12


#1
16:16, 23 янв. 2013

http://astyle.sourceforge.net/

#2
16:17, 23 янв. 2013

bazhenovc
Он так не умеет.

#3
16:39, 23 янв. 2013

Неверю, что люди до сих пор делают преобразования между этими Code Style`ми вручную или oh shi~ сразу пишут код только в одном Code Style`е.

#4
16:40, 23 янв. 2013

Можно руками парсер написать. :D

#5
17:44, 23 янв. 2013

В QtCreator можно выбрать/задать в настройках стиль, а затем применить этот стиль к документу.

Вот нашел справку: http://doc.qt.digia.com/qtcreator-2.4/creator-code-style-settings.html

#6
17:47, 23 янв. 2013

Eclipse CDT умеет тонкую настройку кодестайла и переформатирование.

#7
17:55, 23 янв. 2013

Mr.TyanVary
> Можно руками парсер написать. :D
Нужно:
1)Убедится, что аналогичные программы не существуют в публичном доступе.
2)Проверить, если в такой программе необходимость, а то вдруг я просто что-то делаю не так.
3)Найти исполнителя.
...
N)Выгода.

Mephi1984, kvakvs
Сдаётся мне, что внтури они либо используют astyle либо умеют не больше чем он. Или я не прав?

#8
19:13, 23 янв. 2013

Adler
> много классов написаных в в таком Code Style`е

жир капает.

#9
19:52, 23 янв. 2013

Adler
> Существует ли программа-преобразователь, которая конвертирует код между двумя
> приведёнными Code Style`ми?

Между двумя этими? А в нормальный, значит, не надо?
Okay.

#10
20:02, 23 янв. 2013

Adler
> Сдаётся мне, что внтури они либо используют astyle либо умеют не больше чем он.
> Или я не прав?
  астайл гнутый, а значит эклипс даже теоретически не может его использовать, а если оно написано на крестах, то тем более, ну а что такую фигню легче написать самим, чем дёргать откуда-то это ещё один аргумент.

#11
20:14, 23 янв. 2013

Кроме astyle, - гугл еще подсказывает http://uncrustify.sourceforge.net/
Но как оно реально работает, - не знаю, не пользовался.

#12
20:39, 23 янв. 2013

jaguard
> Между двумя этими? А в нормальный, значит, не надо?
Стоп. Давай договаримся не обращать внимания на кол-во пробелов, именование переменных, методов, классов, а также ещё много чего.
Тоесть, давайте в этой теме считать Code Style`ы не Code Style`ы в обычном смысле. А давайте в этой теме считать Code Style = категорией Code Style`ов.
Хотя, постойте-ка. Может надо было сразу сказать, что меня интересуют не Code Style`ы, а их сорт.


Короче, вот два эталона:
Code Style первосортный.

struct A{void foo(){}};
Code Style второсортный.
struct A{void foo();};void A::foo(){}


Тоесть если переписать вот так, то сорт Code Style`а не изменится.
Code Style первосортный.

struct A
{
  void foo()
  {
  }
};
Code Style второсортный.
struct A
{
   void foo();
};
void A::foo()
{
}

Существует ли программа-преобразователь, которая конвертирует Code Style из первого сорта во второй и наоборот?

jaguard
> Между двумя этими? А в нормальный, значит, не надо?
> Okay.
Какой из двух приведённых выше сортов Code Style`а ближе для тебя к нормальному? Спасибо.

#13
20:57, 23 янв. 2013

Adler
> Может надо было сразу сказать, что меня интересуют не Code Style`ы, а их сорт.

Естественно. Умная мысля приходит опосля. Тебя на самом деле интересовало вынесение тел функций за определение класса, а не code style.
Я такого не знаю.

#14
21:30, 23 янв. 2013

0iStalker
> Но как оно реально работает, - не знаю, не пользовался.
Посмотрел. Это штука не умеет вытаскивать реализацию методов из тела класса.

=A=L=X=
> Тебя на самом деле интересовало вынесение тел функций за определение класса, а
> не code style.
Да, именно так. И ещё занесение тела функции внутрь определения класса.

Страницы: 1 2 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.