亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? obstack.c

?? linux平臺中
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* obstack.c - subroutines used implicitly by object stack macros   Copyright (C) 1988-1994,96,97,98,99 Free Software Foundation, Inc.   This file is part of the GNU C Library.  Its master source is NOT part of   the C library, however.  The master source lives in /gd/gnu/lib.   The GNU C Library is free software; you can redistribute it and/or   modify it under the terms of the GNU Library General Public License as   published by the Free Software Foundation; either version 2 of the   License, or (at your option) any later version.   The GNU C Library is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   Library General Public License for more details.   You should have received a copy of the GNU Library General Public   License along with the GNU C Library; see the file COPYING.LIB.  If not,   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,   Boston, MA 02111-1307, USA.  */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include "obstack.h"/* NOTE BEFORE MODIFYING THIS FILE: This version number must be   incremented whenever callers compiled using an old obstack.h can no   longer properly call the functions in this obstack.c.  */#define OBSTACK_INTERFACE_VERSION 1/* Comment out all this code if we are using the GNU C Library, and are not   actually compiling the library itself, and the installed library   supports the same library interface we do.  This code is part of the GNU   C Library, but also included in many other GNU distributions.  Compiling   and linking in this code is a waste when using the GNU C library   (especially if it is a shared library).  Rather than having every GNU   program understand `configure --with-gnu-libc' and omit the object   files, it is simpler to just do this in the source for each such file.  */#include <stdio.h>		/* Random thing to get __GNU_LIBRARY__.  */#if !defined (_LIBC) && defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1#include <gnu-versions.h>#if _GNU_OBSTACK_INTERFACE_VERSION == OBSTACK_INTERFACE_VERSION#define ELIDE_CODE#endif#endif#ifndef ELIDE_CODE#if defined (__STDC__) && __STDC__#define POINTER void *#else#define POINTER char *#endif/* Determine default alignment.  */struct fooalign {char x; double d;};#define DEFAULT_ALIGNMENT  \  ((PTR_INT_TYPE) ((char *) &((struct fooalign *) 0)->d - (char *) 0))/* If malloc were really smart, it would round addresses to DEFAULT_ALIGNMENT.   But in fact it might be less smart and round addresses to as much as   DEFAULT_ROUNDING.  So we prepare for it to do that.  */union fooround {long x; double d;};#define DEFAULT_ROUNDING (sizeof (union fooround))/* When we copy a long block of data, this is the unit to do it with.   On some machines, copying successive ints does not work;   in such a case, redefine COPYING_UNIT to `long' (if that works)   or `char' as a last resort.  */#ifndef COPYING_UNIT#define COPYING_UNIT int#endif/* The functions allocating more room by calling `obstack_chunk_alloc'   jump to the handler pointed to by `obstack_alloc_failed_handler'.   This can be set to a user defined function which should either   abort gracefully or use longjump - but shouldn't return.  This   variable by default points to the internal function   `print_and_abort'.  */#if defined (__STDC__) && __STDC__static void print_and_abort (void);void (*obstack_alloc_failed_handler) (void) = print_and_abort;#elsestatic void print_and_abort ();void (*obstack_alloc_failed_handler) () = print_and_abort;#endif/* Exit value used when `print_and_abort' is used.  */#if defined __GNU_LIBRARY__ || defined HAVE_STDLIB_H#include <stdlib.h>#endif#ifndef EXIT_FAILURE#define EXIT_FAILURE 1#endifint obstack_exit_failure = EXIT_FAILURE;/* The non-GNU-C macros copy the obstack into this global variable   to avoid multiple evaluation.  */struct obstack *_obstack;/* Define a macro that either calls functions with the traditional malloc/free   calling interface, or calls functions with the mmalloc/mfree interface   (that adds an extra first argument), based on the state of use_extra_arg.   For free, do not use ?:, since some compilers, like the MIPS compilers,   do not allow (expr) ? void : void.  */#if defined (__STDC__) && __STDC__#define CALL_CHUNKFUN(h, size) \  (((h) -> use_extra_arg) \   ? (*(h)->chunkfun) ((h)->extra_arg, (size)) \   : (*(struct _obstack_chunk *(*) (long)) (h)->chunkfun) ((size)))#define CALL_FREEFUN(h, old_chunk) \  do { \    if ((h) -> use_extra_arg) \      (*(h)->freefun) ((h)->extra_arg, (old_chunk)); \    else \      (*(void (*) (void *)) (h)->freefun) ((old_chunk)); \  } while (0)#else#define CALL_CHUNKFUN(h, size) \  (((h) -> use_extra_arg) \   ? (*(h)->chunkfun) ((h)->extra_arg, (size)) \   : (*(struct _obstack_chunk *(*) ()) (h)->chunkfun) ((size)))#define CALL_FREEFUN(h, old_chunk) \  do { \    if ((h) -> use_extra_arg) \      (*(h)->freefun) ((h)->extra_arg, (old_chunk)); \    else \      (*(void (*) ()) (h)->freefun) ((old_chunk)); \  } while (0)#endif/* Initialize an obstack H for use.  Specify chunk size SIZE (0 means default).   Objects start on multiples of ALIGNMENT (0 means use default).   CHUNKFUN is the function to use to allocate chunks,   and FREEFUN the function to free them.   Return nonzero if successful, calls obstack_alloc_failed_handler if   allocation fails.  */int_obstack_begin (h, size, alignment, chunkfun, freefun)     struct obstack *h;     int size;     int alignment;#if defined (__STDC__) && __STDC__     POINTER (*chunkfun) (long);     void (*freefun) (void *);#else     POINTER (*chunkfun) ();     void (*freefun) ();#endif{  register struct _obstack_chunk *chunk; /* points to new chunk */  if (alignment == 0)    alignment = (int) DEFAULT_ALIGNMENT;  if (size == 0)    /* Default size is what GNU malloc can fit in a 4096-byte block.  */    {      /* 12 is sizeof (mhead) and 4 is EXTRA from GNU malloc.	 Use the values for range checking, because if range checking is off,	 the extra bytes won't be missed terribly, but if range checking is on	 and we used a larger request, a whole extra 4096 bytes would be	 allocated.	 These number are irrelevant to the new GNU malloc.  I suspect it is	 less sensitive to the size of the request.  */      int extra = ((((12 + DEFAULT_ROUNDING - 1) & ~(DEFAULT_ROUNDING - 1))		    + 4 + DEFAULT_ROUNDING - 1)		   & ~(DEFAULT_ROUNDING - 1));      size = 4096 - extra;    }#if defined (__STDC__) && __STDC__  h->chunkfun = (struct _obstack_chunk * (*)(void *, long)) chunkfun;  h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;#else  h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;  h->freefun = freefun;#endif  h->chunk_size = size;  h->alignment_mask = alignment - 1;  h->use_extra_arg = 0;  chunk = h->chunk = CALL_CHUNKFUN (h, h -> chunk_size);  if (!chunk)    (*obstack_alloc_failed_handler) ();  h->next_free = h->object_base = chunk->contents;  h->chunk_limit = chunk->limit    = (char *) chunk + h->chunk_size;  chunk->prev = 0;  /* The initial chunk now contains no empty object.  */  h->maybe_empty_object = 0;  h->alloc_failed = 0;  return 1;}int_obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)     struct obstack *h;     int size;     int alignment;#if defined (__STDC__) && __STDC__     POINTER (*chunkfun) (POINTER, long);     void (*freefun) (POINTER, POINTER);#else     POINTER (*chunkfun) ();     void (*freefun) ();#endif     POINTER arg;{  register struct _obstack_chunk *chunk; /* points to new chunk */  if (alignment == 0)    alignment = (int) DEFAULT_ALIGNMENT;  if (size == 0)    /* Default size is what GNU malloc can fit in a 4096-byte block.  */    {      /* 12 is sizeof (mhead) and 4 is EXTRA from GNU malloc.	 Use the values for range checking, because if range checking is off,	 the extra bytes won't be missed terribly, but if range checking is on	 and we used a larger request, a whole extra 4096 bytes would be	 allocated.	 These number are irrelevant to the new GNU malloc.  I suspect it is	 less sensitive to the size of the request.  */      int extra = ((((12 + DEFAULT_ROUNDING - 1) & ~(DEFAULT_ROUNDING - 1))		    + 4 + DEFAULT_ROUNDING - 1)		   & ~(DEFAULT_ROUNDING - 1));      size = 4096 - extra;    }#if defined(__STDC__) && __STDC__  h->chunkfun = (struct _obstack_chunk * (*)(void *,long)) chunkfun;  h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;#else  h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;  h->freefun = freefun;#endif  h->chunk_size = size;  h->alignment_mask = alignment - 1;  h->extra_arg = arg;  h->use_extra_arg = 1;  chunk = h->chunk = CALL_CHUNKFUN (h, h -> chunk_size);  if (!chunk)    (*obstack_alloc_failed_handler) ();  h->next_free = h->object_base = chunk->contents;  h->chunk_limit = chunk->limit    = (char *) chunk + h->chunk_size;  chunk->prev = 0;  /* The initial chunk now contains no empty object.  */  h->maybe_empty_object = 0;  h->alloc_failed = 0;  return 1;}/* Allocate a new current chunk for the obstack *H   on the assumption that LENGTH bytes need to be added   to the current object, or a new object of length LENGTH allocated.   Copies any partial object from the end of the old chunk   to the beginning of the new one.  */void_obstack_newchunk (h, length)     struct obstack *h;     int length;{  register struct _obstack_chunk *old_chunk = h->chunk;  register struct _obstack_chunk *new_chunk;  register long	new_size;  register long obj_size = h->next_free - h->object_base;  register long i;  long already;  /* Compute size for new chunk.  */  new_size = (obj_size + length) + (obj_size >> 3) + 100;  if (new_size < h->chunk_size)    new_size = h->chunk_size;  /* Allocate and initialize the new chunk.  */  new_chunk = CALL_CHUNKFUN (h, new_size);  if (!new_chunk)    (*obstack_alloc_failed_handler) ();  h->chunk = new_chunk;  new_chunk->prev = old_chunk;  new_chunk->limit = h->chunk_limit = (char *) new_chunk + new_size;  /* Move the existing object to the new chunk.     Word at a time is fast and is safe if the object

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品一区二区三区四区| 亚洲色图清纯唯美| 日韩国产一二三区| 久久爱www久久做| 在线精品亚洲一区二区不卡| 欧美成人精精品一区二区频| 亚洲精品国产a久久久久久| 精品一区二区三区免费| 欧美午夜精品免费| 国产精品国产三级国产a| 狂野欧美性猛交blacked| 在线观看日产精品| 亚洲特黄一级片| 国产精品综合在线视频| 日韩欧美一区二区视频| 亚洲电影第三页| 欧美在线影院一区二区| 国产精品乱码人人做人人爱| 韩国成人在线视频| 精品久久久久久无| 日本成人超碰在线观看| 欧美日韩精品三区| 亚洲国产精品麻豆| 欧美色图激情小说| 国产一区二区影院| 欧美三级韩国三级日本一级| 国产精品美女一区二区三区| 国产乱码一区二区三区| 精品国产乱码91久久久久久网站| 天堂在线亚洲视频| 欧美日韩一级片在线观看| 一区二区三区在线免费观看| 99国产一区二区三精品乱码| 国产精品久久久久久久久免费丝袜| 国产成人在线观看| 欧美国产一区二区| 99精品视频在线观看| 亚洲天堂精品视频| 欧美亚洲综合另类| 午夜激情一区二区| 欧美成人在线直播| 国产永久精品大片wwwapp| 555夜色666亚洲国产免| 久久精品国产精品亚洲精品| 在线观看91精品国产入口| 一区二区三区色| 精品1区2区3区| 男人的天堂亚洲一区| 欧美不卡一区二区| 成人性生交大片免费看中文 | 中文字幕一区不卡| 色综合欧美在线视频区| 亚洲亚洲人成综合网络| 日韩免费在线观看| 国产98色在线|日韩| 综合久久久久久| 欧美一级久久久| 成人天堂资源www在线| 亚洲制服丝袜av| 欧美一区二区三区公司| 精品国产乱子伦一区| 五月开心婷婷久久| 日韩视频在线观看一区二区| 欧美福利电影网| 国内精品久久久久影院一蜜桃| 国产亲近乱来精品视频| 91小视频免费观看| 麻豆freexxxx性91精品| 亚洲国产成人一区二区三区| 在线精品视频小说1| 国产一区在线精品| 夜夜嗨av一区二区三区四季av| 欧美大肚乱孕交hd孕妇| 一本色道a无线码一区v| 麻豆精品一区二区三区| 久久精品欧美一区二区三区不卡| 91小视频在线观看| 国产一区视频导航| 亚洲国产精品视频| 久久久久国产精品麻豆| 欧美日韩色综合| 成人教育av在线| 久久99国产精品久久99果冻传媒| 亚洲欧美综合另类在线卡通| 久久综合色鬼综合色| 91福利视频网站| 国产经典欧美精品| 日韩中文字幕一区二区三区| 中文字幕在线观看不卡| 日韩写真欧美这视频| 欧亚洲嫩模精品一区三区| 国产激情一区二区三区桃花岛亚洲 | 在线观看一区不卡| 国产精品影视在线| 日本欧美一区二区在线观看| 亚洲激情成人在线| 亚洲国产精品精华液2区45| 91精品国产一区二区| 欧美亚洲国产一区二区三区va | 青青草精品视频| 亚洲永久免费av| 亚洲视频一区二区在线观看| 国产欧美视频一区二区| 精品久久久久久久人人人人传媒 | 亚洲成人一区在线| 久久久久久久久久看片| 日韩精品最新网址| 欧美精三区欧美精三区| 在线观看欧美日本| 欧美中文字幕一二三区视频| 91麻豆蜜桃一区二区三区| 成人av网址在线| 成人av在线资源网站| 成人福利视频网站| 成人黄色国产精品网站大全在线免费观看| 九九精品视频在线看| 在线观看免费亚洲| 91麻豆文化传媒在线观看| 成人av在线一区二区| av电影在线观看完整版一区二区| 国产成人日日夜夜| av中文字幕在线不卡| 欧美白人最猛性xxxxx69交| 欧美伊人精品成人久久综合97| 成人晚上爱看视频| av网站一区二区三区| 91一区二区三区在线播放| 日本高清免费不卡视频| 色狠狠色狠狠综合| 7777精品伊人久久久大香线蕉经典版下载| 欧美视频一区二区三区四区| 91精品国产乱码久久蜜臀| 精品久久久久香蕉网| 国产日韩亚洲欧美综合| 中文字幕一区二区三区四区| 亚洲精品美国一| 欧美aⅴ一区二区三区视频| 国产精品一区专区| 色女孩综合影院| 日韩一区二区视频在线观看| 久久亚洲欧美国产精品乐播| 国产精品成人一区二区三区夜夜夜| 亚洲精品网站在线观看| 日韩vs国产vs欧美| 成人午夜电影网站| 国产精品久久777777| 亚洲人成小说网站色在线| 亚洲一区二区三区免费视频| 免费看欧美美女黄的网站| 国产成人精品网址| 欧美日韩亚洲综合在线| 久久综合九色综合97_久久久| 国产精品护士白丝一区av| 天天综合日日夜夜精品| 国产99久久久国产精品免费看| 一本色道久久加勒比精品| 日韩视频在线你懂得| 久久精工是国产品牌吗| 91丨九色丨国产丨porny| 日韩精品专区在线| 亚洲女同ⅹxx女同tv| 精品亚洲成av人在线观看| 色哟哟欧美精品| 国产日韩欧美制服另类| 午夜激情久久久| 99免费精品视频| 精品国产乱子伦一区| 亚洲第一激情av| 91最新地址在线播放| 26uuu国产在线精品一区二区| 一区二区三区小说| 成人丝袜高跟foot| 国产精品国产自产拍高清av| 亚洲国产精品久久艾草纯爱| 国产麻豆精品一区二区| 欧美卡1卡2卡| 亚洲欧美色一区| 国产成人精品免费视频网站| 这里只有精品99re| 亚洲在线免费播放| 99精品偷自拍| 国产精品系列在线| 国产美女一区二区三区| 日韩一区二区三区av| 一片黄亚洲嫩模| 91热门视频在线观看| 国产精品久久久久久久蜜臀| 国产精品一区二区黑丝| 欧美精品一区二区三区高清aⅴ| 午夜精品福利久久久| 在线看国产日韩| 亚洲综合在线五月| 91蜜桃网址入口| 成人午夜免费av| 久久久影视传媒| 国产成人在线色| 国产欧美一区二区精品性色超碰| 韩国精品一区二区| 国产亚洲一区二区三区四区| 精品无人区卡一卡二卡三乱码免费卡|