con un clic
cpp-header-template
// Generate C++ header files following Google Style Guide. Use when creating new header files or asking for a header template.
// Generate C++ header files following Google Style Guide. Use when creating new header files or asking for a header template.
Create and push a new semver release tag. Asks for release type (patch/minor/major), validates commit exists on remote, bumps version, and pushes the tag.
Check C++ naming conventions against Google Style Guide. Use when checking if names follow conventions or when renaming identifiers.
Review C++ code against Google C++ Style Guide. Use when reviewing C++ code, pull requests, or when asked to check code style compliance.
Google C++ Style Guide rules for writing clean, maintainable C++ code. Use when writing C++, reviewing code, discussing naming conventions, formatting, class design, or any C++ best practices. Covers headers, scoping, classes, functions, naming, comments, and formatting.
| 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 |
Generate header files following Google C++ Style Guide conventions.
Provide: class name, namespace, and file path to generate a compliant header.
// Copyright [year] [copyright holder]
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
#ifndef [PROJECT]_[PATH]_[FILENAME]_H_
#define [PROJECT]_[PATH]_[FILENAME]_H_
// C system headers (if needed)
// #include <sys/types.h>
// C++ standard library headers
#include <memory>
#include <string>
#include <vector>
// Other library headers
// #include "other/library.h"
// Project headers
// #include "project/base.h"
namespace [namespace] {
// Forward declarations (avoid when possible)
/// Brief description of the class.
///
/// Detailed description if needed. Include:
/// - Purpose and responsibilities
/// - Thread safety guarantees
/// - Example usage (for complex classes)
class [ClassName] {
public:
// Types and type aliases
using ValueType = int;
// Static constants
static constexpr int kDefaultSize = 100;
// Factory functions (if needed)
static std::unique_ptr<[ClassName]> Create();
// Constructors
[ClassName]();
explicit [ClassName](int value);
// Rule of five - be explicit about copy/move
[ClassName](const [ClassName]&) = default;
[ClassName]& operator=([const ClassName]&) = default;
[ClassName]([ClassName]&&) noexcept = default;
[ClassName]& operator=([ClassName]&&) noexcept = default;
// Destructor
~[ClassName]();
// Public methods
void Process();
// Accessors and mutators
int value() const { return value_; }
void set_value(int value) { value_ = value; }
protected:
// Protected members (only if needed for inheritance)
private:
// Private methods
void InternalHelper();
// Data members (always private for classes)
int value_ = 0;
std::string name_;
};
} // namespace [namespace]
#endif // [PROJECT]_[PATH]_[FILENAME]_H_
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_ |
For passive data with public members and no invariants:
namespace [namespace] {
/// Brief description.
struct [StructName] {
int field_one; // No trailing underscore for structs
std::string field_two;
float field_three = 0.0f; // Default values OK
};
} // namespace [namespace]
.cc files)<unistd.h>)<string>, <vector>)Each section sorted alphabetically.