/** * Copyright (c) 2012-2016 André Bargull * Alle Rechte vorbehalten / All Rights Reserved. Use is subject to license terms. * * <https://github.com/anba/es6draft> */ package com.github.anba.es6draft.parser; /** * */ public interface JSONBuilder<DOCUMENT, OBJECT, ARRAY, VALUE> { /** * Creates a new JSON document. * * @param value * the JSON text value * @return the new document */ DOCUMENT createDocument(VALUE value); /** * Starts a new JSON object. * * @return the new object */ OBJECT newObject(); /** * Finishes a JSON object. * * @param object * the object * @return the new object */ VALUE finishObject(OBJECT object); /** * Creates a new JSON property. * * @param object * the JSON object * @param name * the property name * @param rawName * the raw property name * @param index * the property index */ void newProperty(OBJECT object, String name, String rawName, long index); /** * Finishes a JSON property. * * @param object * the JSON object * @param name * the property name * @param rawName * the raw property name * @param index * the property index * @param value * the property value */ void finishProperty(OBJECT object, String name, String rawName, long index, VALUE value); /** * Starts a new JSON array. * * @return the new array */ ARRAY newArray(); /** * Finishes a JSON array. * * @param array * the array * @return the new array */ VALUE finishArray(ARRAY array); /** * Creates a new JSON element. * * @param array * the JSON array * @param index * the element index */ void newElement(ARRAY array, long index); /** * Finishes a JSON element. * * @param array * the JSON array * @param index * the element index * @param value * the element value */ void finishElement(ARRAY array, long index, VALUE value); /** * Creates a new JSON null value. * * @return the null value */ VALUE newNull(); /** * Creates a new JSON boolean value. * * @param value * the value * @return the boolean value */ VALUE newBoolean(boolean value); /** * Creates a new JSON number value. * * @param value * the value * @param rawValue * the raw value * @return the number value */ VALUE newNumber(double value, String rawValue); /** * Creates a new JSON string value. * * @param value * the value * @param rawValue * the raw value * @return the string value */ VALUE newString(String value, String rawValue); }