/*
 * Copyright (C) 1996-2021 The Squid Software Foundation and contributors
 *
 * Squid software is distributed under GPLv2+ license and includes
 * contributions from numerous individuals and organizations.
 * Please see the COPYING and CONTRIBUTORS files for details.
 */

#include "squid.h"
#include "esi/Libxml2Parser.h"
#include "esi/Module.h"
/* include for esi/ExpatParser.h must follow esi/Libxml2Parser.h */
/* do not remove this comment, as it acts as barrier for the autmatic sorting */
#include "esi/ExpatParser.h"

#if HAVE_LIBXML2
static ESIParser::Register *prLibxml = 0;
#endif
#if HAVE_LIBEXPAT
static ESIParser::Register *prExpat = 0;
#endif

void Esi::Init()
{
    // register in reverse order of preference.
    // The latest registered parser will be used as default.
#if HAVE_LIBEXPAT
    assert(!prExpat); // we should be called once
    prExpat = new ESIParser::Register("expat", &ESIExpatParser::NewParser);
#endif

#if HAVE_LIBXML2
    assert(!prLibxml); // we should be called once
    prLibxml = new ESIParser::Register("libxml2", &ESILibxml2Parser::NewParser);
#endif
}

void Esi::Clean()
{
#if HAVE_LIBEXPAT
    delete prExpat;
    prExpat = NULL;
#endif

#if HAVE_LIBXML2
    delete prLibxml;
    prLibxml = NULL;
#endif
}

