/*
 * Copyright (C) 1996-2023 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.
 */

/* DEBUG: section 86    ESI processing */

#ifndef SQUID_ESILITERAL_H
#define SQUID_ESILITERAL_H

#include "esi/Element.h"

class ESIContext;

class esiLiteral : public ESIElement
{
    MEMPROXY_CLASS(esiLiteral);

public:
    esiLiteral(ESISegment::Pointer);
    esiLiteral(ESIContext *, const char *s, int len);
    ~esiLiteral();

    void render(ESISegment::Pointer);
    esiProcessResult_t process (int dovars);
    Pointer makeCacheable() const;
    Pointer makeUsable(esiTreeParentPtr, ESIVarState &) const;
    /* optimise copies away later */
    ESISegment::Pointer buffer;

    struct {
        int donevars:1;
    } flags;

    ESIVarState *varState;
    void finish();

private:
    esiLiteral(esiLiteral const &);
};

#endif /* SQUID_ESILITERAL_H */

