11754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato/*
21754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * Copyright (C) 2016 The Android Open Source Project
31754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato *
41754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * Licensed under the Apache License, Version 2.0 (the "License");
51754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * you may not use this file except in compliance with the License.
61754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * You may obtain a copy of the License at
71754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato *
81754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato *      http://www.apache.org/licenses/LICENSE-2.0
91754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato *
101754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * Unless required by applicable law or agreed to in writing, software
111754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * distributed under the License is distributed on an "AS IS" BASIS,
121754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * See the License for the specific language governing permissions and
141754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * limitations under the License.
151754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato */
161754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
171754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato#ifndef PRINTER_H
181754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato#define PRINTER_H
191754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
201754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato#include <stdio.h>
211754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
221754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratoclass Out
231754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato{
241754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratopublic:
251754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    Out(int fd);
261754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    ~Out();
271754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
281754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    void printf(const char* format, ...);
291754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
301754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    void indent();
311754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    void dedent();
321754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
331754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratoprivate:
341754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    FILE* mOut;
351754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    int mBufSize;
361754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    char* mBuf;
371754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    int mIndent;
381754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    bool mPendingIndent;
391754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
401754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    int reallocate(int size);
411754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    void print_indent();
421754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato};
431754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
441754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato#endif // PRINTER_H
45