xaizek / zograscope (License: AGPLv3 only) (since 2018-12-07)
Mainly a syntax-aware diff that also provides a number of additional tools.
<root> / src / srcml / cxx / SrcmlCxxSType.hpp (9a0bdd0cd00c9959e8f15b0f16151a0a3d10eb37) (2,855B) (mode 100644) [raw]
// Copyright (C) 2017 xaizek <xaizek@posteo.net>
//
// This file is part of zograscope.
//
// zograscope is free software: you can redistribute it and/or modify
// it under the terms of version 3 of the GNU Affero General Public License as
// published by the Free Software Foundation.
//
// zograscope is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with zograscope.  If not, see <http://www.gnu.org/licenses/>.

#ifndef ZOGRASCOPE_SRCML_CXX_SRCMLCXXSTYPE_HPP_
#define ZOGRASCOPE_SRCML_CXX_SRCMLCXXSTYPE_HPP_

#include <cstdint>

enum class SType : std::uint8_t;

// The namespace is necessary to avoid ODR violation for negation operator.
namespace srcmlcxx {

// C++-specific STypes.
enum class SrcmlCxxSType : std::uint8_t
{
    None,
    Separator,
    Statements,

    Argument,
    Comment,
    CppEndif,
    CppLiteral,
    EnumDecl,
    Escape,
    ExprStmt,
    Incr,
    Macro,
    MacroList,
    RefQualifier,
    Unit,

    CppDefine,
    CppDirective,
    CppElif,
    CppElse,
    CppEmpty,
    CppError,
    CppFile,
    CppIf,
    CppIfdef,
    CppIfndef,
    CppInclude,
    CppLine,
    CppMacro,
    CppNumber,
    CppPragma,
    CppUndef,
    CppValue,
    CppWarning,

    Alignas,
    Alignof,
    ArgumentList,
    Asm,
    Assert,
    Attribute,
    Block,
    BlockContent,
    Break,
    Call,
    Capture,
    Case,
    Cast,
    Catch,
    Class,
    ClassDecl,
    Condition,
    Constructor,
    ConstructorDecl,
    Continue,
    Control,
    Decl,
    DeclStmt,
    Decltype,
    Default,
    Destructor,
    DestructorDecl,
    Do,
    Else,
    Elseif,
    EmptyStmt,
    Enum,
    Expr,
    Extern,
    For,
    Friend,
    Function,
    FunctionDecl,
    Goto,
    If,
    IfStmt,
    Index,
    Init,
    Label,
    Lambda,
    Literal,
    MemberInitList,
    MemberList,
    Modifier,
    Name,
    Namespace,
    Noexcept,
    Operator,
    Param,
    Parameter,
    ParameterList,
    Private,
    Protected,
    Public,
    Range,
    Return,
    Sizeof,
    Specifier,
    Struct,
    StructDecl,
    Super,
    SuperList,
    Switch,
    Template,
    Ternary,
    Then,
    Throw,
    Try,
    Type,
    Typedef,
    Typeid,
    Typename,
    Union,
    UnionDecl,
    Using,
    While,
};

// "Conversion operator": SrcmlCxxSType -> SType.
constexpr SType
operator+(SrcmlCxxSType stype)
{
    return static_cast<SType>(stype);
}

// "Conversion operator": SType -> SrcmlCxxSType.
constexpr SrcmlCxxSType
operator-(SType stype)
{
    return static_cast<SrcmlCxxSType>(stype);
}

}

#endif // ZOGRASCOPE_SRCML_CXX_SRCMLCXXSTYPE_HPP_
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/zograscope

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/zograscope

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master