// Copyright (c) 2005-2021 Jay Berkenbilt
// Copyright (c) 2022-2025 Jay Berkenbilt and Manfred Holger
//
// This file is part of qpdf.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
// in compliance with the License. You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
// or implied. See the License for the specific language governing permissions and limitations under
// the License.
//
// Versions of qpdf prior to version 7 were released under the terms of version 2.0 of the Artistic
// License. At your option, you may continue to consider qpdf to be licensed under those terms.
// Please see the manual for additional information.

#ifndef QTC_HH
#define QTC_HH

#include <qpdf/DLL.h>

// Defining QPDF_DISABLE_QTC will effectively compile out any QTC::TC calls in any code that
// includes this file, but QTC will still be built into the library. That way, it is possible to
// build and package qpdf with QPDF_DISABLE_QTC while still making QTC::TC available to end users.

namespace QTC
{
    QPDF_DLL
    void TC_real(char const* const scope, char const* const ccase, int n = 0);

    inline void
    TC(char const* const scope, char const* const ccase, int n = 0)
    {
#ifndef QPDF_DISABLE_QTC
        TC_real(scope, ccase, n);
#endif // QPDF_DISABLE_QTC
    }
}; // namespace QTC

#endif // QTC_HH
