001/*
002 * ============================================================================
003 * Copyright © 2002-2026 by Thomas Thrien.
004 * All Rights Reserved.
005 * ============================================================================
006 *
007 * Licensed to the public under the agreements of the GNU Lesser General Public
008 * License, version 3.0 (the "License"). You may obtain a copy of the License at
009 *
010 *      http://www.gnu.org/licenses/lgpl.html
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
014 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
015 * License for the specific language governing permissions and limitations
016 * under the License.
017 */
018
019package org.tquadrat.foundation.perflog;
020
021import static org.apiguardian.api.API.Status.STABLE;
022
023import org.apiguardian.api.API;
024import org.tquadrat.foundation.annotation.ClassVersion;
025import org.tquadrat.foundation.lang.StringConverter;
026import org.tquadrat.foundation.perflog.internal.PerformanceSectionNameImpl;
027
028/**
029 *  <p>{@summary This interface describes the name for a a &quot;Performance
030 *  Section&quot;.}</p>
031 *
032 *  @extauthor Thomas Thrien - thomas.thrien@tquadrat.org
033 *  @version $Id: PerformanceSectionName.java 1211 2026-05-01 15:24:10Z tquadrat $
034 *  @since 0.25.0
035 *
036 *  @UMLGraph.link
037 */
038@ClassVersion( sourceVersion = "$Id: PerformanceSectionName.java 1211 2026-05-01 15:24:10Z tquadrat $" )
039@API( status = STABLE, since = "0.25.0" )
040public sealed interface PerformanceSectionName extends Comparable<PerformanceSectionName>
041    permits PerformanceSectionNameImpl
042{
043        /*---------*\
044    ====** Methods **==========================================================
045        \*---------*/
046    /**
047     *  {@inheritDoc}
048     */
049    @Override
050    public int compareTo( final PerformanceSectionName o );
051
052    /**
053     *  {@inheritDoc}
054     */
055    @Override
056    public boolean equals( final Object o );
057
058    /**
059     *  Returns the
060     *  {@link org.tquadrat.foundation.lang.StringConverter}
061     *  for instances of this class.
062     *
063     *  @param  <T> The type that is handled by the returned
064     *      {@link StringConverter}
065     *      instance.
066     *  @return The {@code StringConverter}.
067     */
068    public static <T extends PerformanceSectionName> StringConverter<T> getStringConverter()
069    {
070        return PerformanceSectionNameImpl.getStringConverter();
071    }  //  getStringConverter()
072
073    /**
074     *  {@inheritDoc}
075     */
076    @Override
077    public int hashCode();
078
079    /**
080     *  {@inheritDoc}
081     */
082    @Override
083    public String toString();
084}
085//  interface PerformanceSectionName
086
087/*
088 *  End of File
089 */