|
Functions | |
| Q_OBSTACK * | qObstack (void) |
| Initialize object-stack. | |
| static bool | _grow (Q_OBSTACK *obstack, const void *object, size_t size) |
| Q_OBSTACK->grow(): Stack object. | |
| static bool | _growStr (Q_OBSTACK *obstack, const char *str) |
| Q_OBSTACK->growStr(): Stack string. | |
| static bool | _growStrf (Q_OBSTACK *obstack, const char *format,...) |
| Q_OBSTACK->growStrf(): Stack formatted string. | |
| static void * | _getFinal (Q_OBSTACK *obstack, size_t *size) |
| Q_OBSTACK->getFinal(): Get merged single final object. | |
| static ssize_t | _writeFinal (Q_OBSTACK *obstack, int nFd) |
| Q_OBSTACK->writeFinal(): Write out merged final data to the file descriptor. | |
| static size_t | _getSize (Q_OBSTACK *obstack) |
| Q_OBSTACK->getSize(): Get stacked objects size. | |
| static int | _getNum (Q_OBSTACK *obstack) |
| Q_OBSTACK->getNum(): Get the number of stacked objects. | |
| static bool | _free (Q_OBSTACK *obstack) |
| Q_OBSTACK->free(): De-allocate obstack. | |
An qObstack is a pool of memory containing a stack of objects. An qObstack can contain any number of objects of any size.
[Code sample - String] // get new obstack Q_OBSTACK *obstack = qObstack(); // stack obstack->growStr(obstack, "AB"); // no need to supply size obstack->growStrf(obstack, "%s", "CDE"); // for formatted string obstack->grow(obstack, "FGH", 3); // same effects as above but this can // be used for object or binary // final char *final = (char *)obstack->getFinal(obstack, NULL); // print out printf("Final string = %s\n", final); printf("Total Size = %d, Number of Objects = %d\n", obstack->getSize(obstack), obstack->getNum(obstack)); free(final); obstack->free(obstack); [Result] Final string = ABCDEFGH Total Size = 8, Number of Objects = 3
[Code sample - Object] struct sampleobj { int num; char str[10]; }; // get new obstack Q_OBSTACK *obstack = qObstack(); // stack int i; struct sampleobj obj; for(i = 0; i < 3; i++) { // filling object with sample data obj.num = i; sprintf(obj.str, "hello%d", i); // stack obstack->grow(obstack, (void *)&obj, sizeof(struct sampleobj)); } // final struct sampleobj *final = (struct sampleobj *)obstack->getFinal(obstack, NULL); // print out qContentType("text/plain"); for(i = 0; i < obstack->getNum(obstack); i++) { printf("Object%d final = %d, %s\n", i+1, final[i].num, final[i].str); } printf("Total Size = %d, Number of Objects = %d\n", obstack->getSize(obstack), obstack->getNum(obstack)); obstack->free(obstack); [Result] Object1 final = 0, hello0 Object2 final = 1, hello1 Object3 final = 2, hello2 Total Size = 48, Number of Objects = 3
| Q_OBSTACK* qObstack | ( | void | ) |
| static bool _grow | ( | Q_OBSTACK * | obstack, | |
| const void * | object, | |||
| size_t | size | |||
| ) | [static] |
Q_OBSTACK->grow(): Stack object.
| obstack | a pointer of Q_OBSTACK | |
| object | a pointer of object data | |
| size | size of object |
| static bool _growStr | ( | Q_OBSTACK * | obstack, | |
| const char * | str | |||
| ) | [static] |
Q_OBSTACK->growStr(): Stack string.
| obstack | a pointer of Q_OBSTACK | |
| str | a pointer of string |
| static bool _growStrf | ( | Q_OBSTACK * | obstack, | |
| const char * | format, | |||
| ... | ||||
| ) | [static] |
Q_OBSTACK->growStrf(): Stack formatted string.
| obstack | a pointer of Q_OBSTACK | |
| format | string format |
| static void* _getFinal | ( | Q_OBSTACK * | obstack, | |
| size_t * | size | |||
| ) | [static] |
Q_OBSTACK->getFinal(): Get merged single final object.
| obstack | a pointer of Q_OBSTACK | |
| size | if size is not NULL, merged object size will be stored. |
| static ssize_t _writeFinal | ( | Q_OBSTACK * | obstack, | |
| int | nFd | |||
| ) | [static] |
Q_OBSTACK->writeFinal(): Write out merged final data to the file descriptor.
| obstack | a pointer of Q_OBSTACK | |
| nFd | a file descriptor for writing out. |
| static size_t _getSize | ( | Q_OBSTACK * | obstack | ) | [static] |
Q_OBSTACK->getSize(): Get stacked objects size.
| obstack | a pointer of Q_OBSTACK |
| static int _getNum | ( | Q_OBSTACK * | obstack | ) | [static] |
Q_OBSTACK->getNum(): Get the number of stacked objects.
| obstack | a pointer of Q_OBSTACK |
| static bool _free | ( | Q_OBSTACK * | obstack | ) | [static] |
Q_OBSTACK->free(): De-allocate obstack.
| obstack | a pointer of Q_OBSTACK |
| [Home] [About] [Examples] [Changes] [Download] [SVN Repository] [Install] [Reference] |