aboutsummaryrefslogtreecommitdiff
path: root/docs/styleguide-cpp.tex
diff options
context:
space:
mode:
author Robert Clarke <clarke.john.robert@gmail.com>2023-02-08 19:59:02 +0100
committer Robert Clarke <clarke.john.robert@gmail.com>2023-02-08 19:59:02 +0100
commit8cef79142f61af13e7ae0a523e958b45f1bd6299 (patch)
tree9f6653cceaf03b47a1769bed0a7259e5250a7494 /docs/styleguide-cpp.tex
parent233d8896093cd1fef145c0b8483c50cf6d068721 (diff)
Beginning of initial draft
Diffstat (limited to 'docs/styleguide-cpp.tex')
-rw-r--r--docs/styleguide-cpp.tex100
1 files changed, 100 insertions, 0 deletions
diff --git a/docs/styleguide-cpp.tex b/docs/styleguide-cpp.tex
new file mode 100644
index 0000000..c606d37
--- /dev/null
+++ b/docs/styleguide-cpp.tex
@@ -0,0 +1,100 @@
+\documentclass{article}
+\usepackage[colorlinks = true, urlcolor = blue, linkcolor = blue]{hyperref}
+\usepackage{multirow}
+
+
+%Setup for code snippets
+\usepackage{listings}
+\usepackage{xcolor}
+\definecolor{darkGreen}{RGB}{63,127,95}
+\lstset {
+ language=C++,
+ backgroundcolor=\color{black!3},
+ basicstyle=\footnotesize,
+ basicstyle=\ttfamily,
+ keywordstyle=\color{blue}\ttfamily,
+ stringstyle=\color{red}\ttfamily,
+ commentstyle=\color{darkGreen}\ttfamily,
+ morecomment=[l][\color{magenta}]{\#}
+}
+
+\usepackage{helvet}
+\renewcommand{\rmdefault}{\sfdefault} %Use sans-serif font family
+
+
+\title{OpenVic2 C++ Style Guidelines (Draft)}
+\author{ZincLadder}
+\date{\today\\v0.0.1}
+
+
+
+
+\begin{document}
+%=====================================
+
+\maketitle
+\tableofcontents
+\clearpage
+
+\section{Why Style?}
+You may be wondering "Why do we need a style guide?" "Are you trying to give me homework?"
+
+\subsection{General Principles}
+\begin{itemize}
+ \item Prefer clarity over brevity
+ \item Don't optimize prematurely
+ \item Avoid C-style casts
+\end{itemize}
+
+\subsection{File Formatting}
+Source code files should adhere to the following:
+\begin{itemize}
+ \item Encoded in UTF-8
+ \item Use tabs for indentation
+ \item Use LF for end-of-line sequences
+ \item Not have any trailing whitespace (Lines which end in spaces or tabs)
+ \item Any \#include directives should be at the top of the file
+\end{itemize}
+
+
+\section{Conventions}
+\subsection{Naming Conventions}
+
+\begin{table}[!ht]
+ \begin{center}
+ \caption{Basic Naming Conventions}
+ \begin{tabular}{|l|l|l|}
+ \hline
+ \bf Item & \bf Writing Convention & \bf Example \\
+ \hline
+ Class and Struct Names & PascalCase & MyCoolExample \\
+ Variables and Function Names & CamelCase & myCoolExample \\
+ Constants, Enum Values, and Preprocessor & SnakeCase (all-caps) & MY\_COOL\_EXAMPLE \\
+ Type aliases & SnakeCase (lower) & my\_cool\_example\_t \\
+ \hline
+ \end{tabular}
+ \end{center}
+\end{table}
+
+\begin{lstlisting}
+#pragma once
+#include<stdio.h>
+#include<iostream>
+// A comment
+constexpr size_t UNIQUE_RGB_COLOURS = 256 * 256 * 256;
+
+struct RGBColour {
+ unsigned char r;
+ unsigned char g;
+ unsigned char b;
+};
+
+bool isColourGreyscale(RGBColour c);
+
+class Something {
+
+};
+\end{lstlisting}
+
+%=====================================
+\end{document}