| name | cpp-header-template |
| description | Generate C++ header files following Google Style Guide. Use when creating new header files or asking for a header template. |
| disable-model-invocation | true |
C++ Header File Template Generator
Generate header files following Google C++ Style Guide conventions.
Usage
Provide: class name, namespace, and file path to generate a compliant header.
Template
#ifndef [PROJECT]_[PATH]_[FILENAME]_H_
#define [PROJECT]_[PATH]_[FILENAME]_H_
#include <memory>
#include <string>
#include <vector>
namespace [namespace] {
class [ClassName] {
public:
using ValueType = int;
static constexpr int kDefaultSize = 100;
static std::unique_ptr<[ClassName]> Create();
[ClassName]();
explicit [ClassName](int value);
[ClassName](const [ClassName]&) = default;
[ClassName]& operator=([const ClassName]&) = default;
[ClassName]([ClassName]&&) noexcept = default;
[ClassName]& operator=([ClassName]&&) noexcept = default;
~[ClassName]();
void Process();
int value() const { return value_; }
void set_value(int value) { value_ = value; }
protected:
private:
void InternalHelper();
int value_ = 0;
std::string name_;
};
}
#endif
Include Guard Format
Convert path to uppercase with underscores:
| File Path | Guard |
|---|
foo/bar/baz.h | FOO_BAR_BAZ_H_ |
src/http/parser.h | SRC_HTTP_PARSER_H_ |
my_project/utils.h | MY_PROJECT_UTILS_H_ |
Struct Template
For passive data with public members and no invariants:
namespace [namespace] {
struct [StructName] {
int field_one;
std::string field_two;
float field_three = 0.0f;
};
}
Include Order
- Related header (for
.cc files)
- Blank line
- C system headers (
<unistd.h>)
- Blank line
- C++ standard library (
<string>, <vector>)
- Blank line
- Other libraries
- Blank line
- Project headers
Each section sorted alphabetically.