Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

ifprintf.cc

Go to the documentation of this file.
00001 #include "ifprintf.h"
00002 char* indent_current = 0;
00003 char* indent_amount = 0;
00004 int indentLevel = 0;
00005 int maxIndentLevel = 256;
00006 //-----------------------------------------------------------------------------//
00007 void set_indent(const char* s){
00008     assert(indent_current == 0 && "I am to lazy to allow changing of this");
00009     indent_amount = strdup(s);
00010     indent_current = new char[strlen(indent_amount) * maxIndentLevel];
00011     indentLevel = 0;
00012 }
00013 //-----------------------------------------------------------------------------//
00014 void indent(){
00015     indentLevel++;
00016     assert(indentLevel < maxIndentLevel);
00017     strcat(indent_current, indent_amount);
00018     assert(strlen(indent_current) == strlen(indent_amount) * indentLevel);
00019 }
00020 //-----------------------------------------------------------------------------//
00021 void outdent(){
00022     indentLevel--;
00023     assert(indentLevel >= 0 && "unindented too many times");
00024     indent_current[indentLevel * strlen(indent_amount)] = '\0';
00025     assert(strlen(indent_current) == strlen(indent_amount) * indentLevel);
00026 }
00027 //-----------------------------------------------------------------------------//
00028 void ifprintf(FILE* f, const char* c, ...){
00029     fprintf(f, indent_current);
00030     va_list valist;
00031     va_start(valist, c);
00032     vfprintf(f, c, valist);
00033     va_end(valist);
00034 }
00035 //-----------------------------------------------------------------------------//

Generated on Thu Oct 20 12:00:04 2005 for ASTree by  doxygen 1.4.2-20050421