xref: /llvm-project/clang-tools-extra/test/clang-doc/Inputs/basic-project/include/Shape.h (revision 70ec8419dd722abeddf09e11f01500ae62334394)
1*70ec8419SPeterChou1 #pragma once
2*70ec8419SPeterChou1 
3*70ec8419SPeterChou1 /**
4*70ec8419SPeterChou1  * @brief Abstract base class for shapes.
5*70ec8419SPeterChou1  *
6*70ec8419SPeterChou1  * Provides a common interface for different types of shapes.
7*70ec8419SPeterChou1  */
8*70ec8419SPeterChou1 class Shape {
9*70ec8419SPeterChou1 public:
10*70ec8419SPeterChou1     /**
11*70ec8419SPeterChou1      * @brief Virtual destructor.
12*70ec8419SPeterChou1      */
~Shape()13*70ec8419SPeterChou1     virtual ~Shape() {}
14*70ec8419SPeterChou1 
15*70ec8419SPeterChou1     /**
16*70ec8419SPeterChou1      * @brief Calculates the area of the shape.
17*70ec8419SPeterChou1      *
18*70ec8419SPeterChou1      * @return double The area of the shape.
19*70ec8419SPeterChou1      */
20*70ec8419SPeterChou1     virtual double area() const = 0;
21*70ec8419SPeterChou1 
22*70ec8419SPeterChou1     /**
23*70ec8419SPeterChou1      * @brief Calculates the perimeter of the shape.
24*70ec8419SPeterChou1      *
25*70ec8419SPeterChou1      * @return double The perimeter of the shape.
26*70ec8419SPeterChou1      */
27*70ec8419SPeterChou1     virtual double perimeter() const = 0;
28*70ec8419SPeterChou1 };
29*70ec8419SPeterChou1 
30*70ec8419SPeterChou1 
31