File indexing completed on 2024-05-19 05:42:29

0001 // ct_lvtshr_graphenums.h                                         -*-C++-*-
0002 
0003 /*
0004 // Copyright 2023 Codethink Ltd <codethink@codethink.co.uk>
0005 // SPDX-License-Identifier: Apache-2.0
0006 //
0007 // Licensed under the Apache License, Version 2.0 (the "License");
0008 // you may not use this file except in compliance with the License.
0009 // You may obtain a copy of the License at
0010 //
0011 //     http://www.apache.org/licenses/LICENSE-2.0
0012 //
0013 // Unless required by applicable law or agreed to in writing, software
0014 // distributed under the License is distributed on an "AS IS" BASIS,
0015 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
0016 // See the License for the specific language governing permissions and
0017 // limitations under the License.
0018 */
0019 #ifndef INCLUDED_CT_LVTSHR_GRAPHENUMS
0020 #define INCLUDED_CT_LVTSHR_GRAPHENUMS
0021 
0022 #include <lvtshr_export.h>
0023 
0024 namespace Codethink::lvtshr {
0025 
0026 // Defines how the load algorithm will handle the classes
0027 enum ClassView { TraverseByRelation, TraverseAllPaths, ClassHierarchyGraph, ClassHierarchyTree };
0028 
0029 /*! Type has a value for each type of LakosRelation */
0030 enum LakosRelationType {
0031     IsA = 0x1, /*!< The IsA relation */
0032     PackageDependency = 0x2, /*!< The Package-Dependency relation */
0033     UsesInNameOnly = 0x4, /*!< The Uses-In-Name-Only relation */
0034     UsesInTheImplementation = 0x8, /*!< The Uses-In-The-Implementation relation */
0035     UsesInTheInterface = 0x10, /*!< The Uses-In-The-Interface relation */
0036     None = 0,
0037 };
0038 
0039 /*! ClassScope specifies the scope of the classes to be loaded */
0040 enum class ClassScope {
0041     All, /*!< Load all classes  */
0042     PackageOnly, /*!< Load only classes in same package  */
0043     NamespaceOnly /*!< Load only classes in same namespace  */
0044 };
0045 
0046 enum class DiagramType {
0047     ClassType = 1,
0048     ComponentType = 10,
0049     PackageType = 100,
0050     RepositoryType = 1000,
0051     NoneType = 1001,
0052     FreeFunctionType = 10000,
0053 };
0054 
0055 enum class AccessSpecifier {
0056     // AccessSpecifier A C++ access specifier (public, private, protected), plus the
0057     //  special value "none" which means different things in different contexts.
0058 
0059     e_public = 0, // public access
0060     e_protected = 1, // protected access
0061     e_private = 2, // private access
0062     e_none = 3, // undefined access
0063 };
0064 
0065 // enum for backwards / forward navigation.
0066 enum class HistoryType {
0067     NoHistory, // don't record on history
0068     History // record on history
0069 };
0070 
0071 enum class UDTKind { Class, Enum, Struct, TypeAlias, Union, Unknown };
0072 
0073 /*! Defines how searches on the Diagram should be handled. */
0074 enum class SearchMode { CaseInsensitive, CaseSensitive, RegularExpressions };
0075 
0076 } // end namespace Codethink::lvtshr
0077 
0078 #endif