00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <stdlib.h>
00027 #include <stdio.h>
00028 #include <assert.h>
00029 #include <string.h>
00030 #include "GenContext.h"
00031
00032 #define GENCONTEXT_INC 2
00033
00034 namespace eyedb {
00035
00036 GenContext::GenContext(FILE *_fd, const char *_package,
00037 const char *_rootclass)
00038 {
00039 buff_alloc = 32;
00040 buff = (char *)malloc(buff_alloc);
00041 buff_len = 0;
00042 buff[buff_len] = 0;
00043 fd = _fd;
00044 package = (_package ? strdup(_package) : 0);
00045 rootclass = (_rootclass ? strdup(_rootclass) : 0);
00046 }
00047
00048 GenContext::~GenContext()
00049 {
00050 free(buff);
00051 free(package);
00052 free(rootclass);
00053 }
00054
00055 void GenContext::push()
00056 {
00057 if (buff_len + GENCONTEXT_INC >= buff_alloc)
00058 {
00059 buff_alloc = buff_len + GENCONTEXT_INC + 32;
00060 buff = (char *)realloc(buff, buff_alloc);
00061 }
00062
00063 for (int i = 0; i < GENCONTEXT_INC; i++)
00064 buff[buff_len++] = ' ';
00065
00066 buff[buff_len] = 0;
00067 }
00068
00069 void GenContext::pop()
00070 {
00071 buff_len -= GENCONTEXT_INC;
00072
00073 assert(buff_len >= 0);
00074 buff[buff_len] = 0;
00075 }
00076
00077 void GenContext::print()
00078 {
00079 fprintf(fd, "%s", buff);
00080 }
00081
00082 FILE *GenContext::getFile()
00083 {
00084 return fd;
00085 }
00086
00087 const char *GenContext::get() const
00088 {
00089 return buff;
00090 }
00091
00092 }
00093