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 //-----------------------------------------------------------------------------//