Auto-generowane pliki cpp i hpp

0

Hej,
przez przypadek natknąłem się na nieznane mi do tej pory rozszerzenie pliku: .tlb
Zastanawiam się czy istnieje może plik przystosowany do autogenerowania plików .cpp, .h.
Coś jak templatka, z tym że z większym polem manewru np. różne nazwy funkcji, klas itd.

np. z taką zawartością:

class @MOJA_NAZWA@()
{
public:
   @MOJA_NAZWA@() {}
};

Znam do tego celu mało eleganckie rozwiązanie, a mianowicie preprocesor.
Plik template.h

class NAZWA_KLASY
{

};

Plik wzorzec.h

#define NAZWA_KLASY moja_klasa
#include "template.h"

Powiedzmy sobie strzeże, nie jest to rozwiązanie najwyższych lotów i sprawia wiele problemów podczas kompilowania na wiele platform.

ps.
Nie do końca jeszcze rozumiem sens stosowania plików tlb, więc może sam sobie odpowiedziałem na pytanie?

1

Dobre IDE generują puste klasy za Ciebie. Niektóre IDE mają własny konfigurowalny system szablonów do tego

0

Wiem, że Visual Studio potrafi generować puste metody z pliku .h, jednak dla mnie to mało. Nadal zadanie jest zbyt utrudnione.
Weźmy taki przykład.

Tworzymy jakiś model danych, który zawsze zawiera:
a) Klasę data - opisuje jakie propertisy zawiera nasz model danych
b) Model danych - opisuje akcje na konkretnej danej (pkt. a)

Teraz tworząc nową daną np. Train musimy stworzyć 4 pliki:
Train.hpp
Train.cpp
TrainDataModel.hpp
TrainDataModel.cpp

a tak naparwdę wystarczyłoby stworzyć ten plik:
TrainDataModel.auto

ewentualnie w celu dodania niestandardowych metod:
TrainDataModel.cpp

Bo cała reszta mogłaby zosatć opisana i wygenerowana przez
TrainDataModel.auto

Ewentualnie iść na łatwiznę iw rzucić wszystko do jednego pliku .hpp zwiększając przy tym czas kompilowania naszego projektu do dni :P
Czyż to nie byłoby piękne? To jest tylko prosty przykład, a co jeśli taki łańcuch powiązanych ze sobą klas byłby większy?

0

Czemu rozdzielasz dane od akcji? Czy to nie jest złamanie hermetyzacji i OOP?

0

Każde dobre ide ma możliwość definiowania szablonów kodu.
Sam kiedyś stworzyłem sobie takie szablony pod Visual Studio oraz Xcode
Niestety nie ma na to jednego ustalonego standardu.
Z udokumentowaniem tej funkcjonalności jest dość słabo (nie mam linków pod ręką).

Visual Studio trzyma szablony kodu stworzone przez użytkownika pod: <Twoje dokumenty>\Visual Studio 2019\Templates\ItemTemplates
Xcode nie pamiętam gdzie.

Rozszerzenia tlb nie kojarzę, jakiego IDE używasz?

Przykład szablonu kodu jakiego używam pod VIsual Studio dla testów gtest:

/**
 * @file  $itemname$.cpp
 * @brief <test description needed>
 * 
 * @note current owner: MarekR22 ([email protected])
 * 
 * @copyright Copyright (c) $year$ My Company Name
 */

#include "set_nod.h"
#include <$itemname$.h>

#include <gmock/gmock.h>
#include <gtest/gtest.h>

class $safeitemname$ : public ::testing::Test
{
public:
};

TEST_F($safeitemname$, firstTest)
{
}

TEST_F($safeitemname$, secondTest)
{
}

I jeszcze do tego plik: MyTemplate.vstemplate

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
  <TemplateData>
    <DefaultName>test</DefaultName>
    <Name>XXX gtest test tempalte</Name>
    <Description>Product XXX gtest template</Description>
    <ProjectType>VC</ProjectType>
    <SortOrder>12</SortOrder>
    <Icon>iconFile.ico</Icon>
  </TemplateData>
  <TemplateContent>
    <References />
    <ProjectItem SubType="" TargetFileName="$fileinputname$.cpp" ReplaceParameters="true">NazwaPlikuZWczesniejszegoKodu.cpp</ProjectItem>
  </TemplateContent>
</VSTemplate>
0
KamilAdam napisał(a):

Czemu rozdzielasz dane od akcji? Czy to nie jest złamanie hermetyzacji i OOP?

To jest prosty przyklad, taka dana mogłaby np. służyć dla projektu serwer-klient, gdzie data model jest wykorzystywany wyłącznie po stronie serwera.

MarekR22 napisał(a):

Każde dobre ide ma możliwość definiowania szablonów kodu.
Sam kiedyś stworzyłem sobie takie szablony pod Visual Studio oraz Xcode
Niestety nie ma na to jednego ustalonego standardu.
Z udokumentowaniem tej funkcjonalności jest dość słabo (nie mam linków pod ręką).

Visual Studio trzyma szablony kodu stworzone przez użytkownika pod: <Twoje dokumenty>\Visual Studio 2019\Templates\ItemTemplates
Xcode nie pamiętam gdzie.

Rozszerzenia tlb nie kojarzę, jakiego IDE używasz?

Różnie, pod Windowsem najczęściej jest to właśnie Visual Studio, ewentualnie QtCreator

1 użytkowników online, w tym zalogowanych: 0, gości: 1