Sha256: 02d5d586092718aee3bc7f81977b37627bba237eef44ff5c1cba5b58c30f5468

Contents?: true

Size: 1.43 KB

Versions: 5

Compression:

Stored size: 1.43 KB

Contents

//
//  refract/ElementInserter.h
//  librefract
//
//  Created by Jiri Kratochvil on 17/06/15.
//  Copyright (c) 2015 Apiary Inc. All rights reserved.
//
#ifndef REFRACT_ELEMENTINSERTER_H
#define REFRACT_ELEMENTINSERTER_H

#include <iterator>

namespace refract
{

    // Forward declarations of Elements
    struct IElement;

    template <typename T>
    struct ElementInsertIterator : public std::iterator<std::output_iterator_tag, void, void, void, void> {
        T& element;

        ElementInsertIterator(T& element) : element(element) {}

        ElementInsertIterator(const ElementInsertIterator& other) : element(other.element) {}

        ElementInsertIterator& operator=(const ElementInsertIterator& other) {
            element = other.element;
            return *this;
        }

        ElementInsertIterator& operator=(refract::IElement* e) {
            element.push_back(e);
            return *this;
        }

        ElementInsertIterator& operator=(const refract::IElement* e) {
            element.push_back(e);
            return *this;
        }

        ElementInsertIterator& operator++() {
            return *this;
        }

        ElementInsertIterator& operator*() {
            return *this;
        }
        
    };

    template <typename T>
    ElementInsertIterator<T> ElementInserter(T& element) {
        return ElementInsertIterator<T>(element);
    }

}; // namespace refract

#endif // #ifndef REFRACT_ELEMENTINSERTER_H

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
lounge_lizard-0.1.4 ext/drafter/src/refract/ElementInserter.h
lounge_lizard-0.1.3 ext/drafter/src/refract/ElementInserter.h
lounge_lizard-0.1.2 ext/drafter/src/refract/ElementInserter.h
lounge_lizard-0.1.1 ext/drafter/src/refract/ElementInserter.h
lounge_lizard-0.1.0 ext/drafter/src/refract/ElementInserter.h