CLion новый шаблон файла класса C ++ - PullRequest
1 голос
/ 22 мая 2019

CLion имеет шаблон файла для генерации класса C ++, который генерирует исходный файл и заголовок.В моем проекте у меня есть классы обработчиков, которые имеют ту же часть кода, и я хочу сгенерировать их с помощью шаблонов файлов.И шаблоны, которые я создал, не могут этого сделать:

  1. Установить имена файлов для класса MyHandlerClass. Я хочу my_handler_class.cpp и .hpp

  2. Отодно имя класса, я хочу сгенерировать 2 файла заголовка и источника, не знаю, как это сделать.

  3. Я также хочу, чтобы строка была похожа на MyClass -> my-class, found function $lowercaseAndDash($NAME)но не знаю, почему он не работает

У меня есть шаблон для заголовка:

#pragma once
// includes

namespace handlers {

class ${NAME}: public Parent {
  public:
  // methods
};

}

Я попытался решить первую проблему, установив имя файла следующим образом: #set ($FILE_NAME = "test_class.hpp"),Но я не знаю, стоит ли устанавливать CamelCase на snake, и это не работает.

Также можно найти в docs функцию для случая змеи, но она не работает для меня в шаблоне файла.

1 Ответ

0 голосов
/ 22 мая 2019
  1. Невозможно изменить имя файла из шаблона.При создании класса C ++ вы устанавливаете имя класса и выберите кодировку имени файла .Когда вы создаете файл из шаблона, сохраняет файл с вашим именем .Я нашел решение таким образом, введите имя_файла (в случае змеи), и с Velocity создайте CamelCaseName для имени класса:

    #set( $CamelCaseName = "" )

    #set( $part = "" )

    #foreach($part in $NAME.split("_"))

    #set( $CamelCaseName = "${CamelCaseName}$part.substring(0,1).toUpperCase()$part.substring(1).toLowerCase()" )

    #end

  2. Невозможно сгенерировать 2 файла одним щелчком мыши, как это делает шаблон класса C ++.Я должен шаблоны и использовать их оба.

  3. Эта функция для liveTemplates, для FileTemplate я использовал скорость: #set( $NeededString = $NAME.replaceAll('_', '-') )

    Чтобы включить заголовочный файл из использования cpp#[[#include]]# "${NAME}.hpp"

...