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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? obstack.c

?? 這是完整的gcc源代碼
?? C
字號(hào):
/* obstack.c - subroutines used implicitly by object stack macros   Copyright (C) 1988 Free Software Foundation, Inc.This program is free software; you can redistribute it and/or modify itunder the terms of the GNU General Public License as published by theFree Software Foundation; either version 1, or (at your option) anylater version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, 675 Mass Ave, Cambridge, MA 02139, USA.In other words, you are welcome to use, share and improve this program.You are forbidden to forbid anyone else to use, share and improvewhat you give them.   Help stamp out software-hoarding!  */#include "obstack.h"#ifdef __STDC__#define POINTER void *#else#define POINTER char *#endif/* Determine default alignment.  */struct fooalign {char x; double d;};#define DEFAULT_ALIGNMENT ((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 non-GNU-C macros copy the obstack into this global variable   to avoid multiple evaluation.  */struct obstack *_obstack;/* 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.  */void_obstack_begin (h, size, alignment, chunkfun, freefun)     struct obstack *h;     int size;     int alignment;     POINTER (*chunkfun) ();     void (*freefun) ();{  register struct _obstack_chunk* chunk; /* points to new chunk */  if (alignment == 0)    alignment = DEFAULT_ALIGNMENT;  if (size == 0)    /* Default size is what GNU malloc can fit in a 4096-byte block.       Pick a number small enough that when rounded up to DEFAULT_ROUNDING       it is still smaller than 4096 - 4.  */    {      int extra = 4;      if (extra < DEFAULT_ROUNDING)	extra = DEFAULT_ROUNDING;      size = 4096 - extra;    }  h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;  h->freefun = freefun;  h->chunk_size = size;  h->alignment_mask = alignment - 1;  chunk	= h->chunk = (*h->chunkfun) (h->chunk_size);  h->next_free = h->object_base = chunk->contents;  h->chunk_limit = chunk->limit   = (char *) chunk + h->chunk_size;  chunk->prev = 0;}/* 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 int obj_size = h->next_free - h->object_base;  register int i;  int 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 = h->chunk = (*h->chunkfun) (new_size);  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     is sufficiently aligned.  */  if (h->alignment_mask + 1 >= DEFAULT_ALIGNMENT)    {      for (i = obj_size / sizeof (COPYING_UNIT) - 1;	   i >= 0; i--)	((COPYING_UNIT *)new_chunk->contents)[i]	  = ((COPYING_UNIT *)h->object_base)[i];      /* We used to copy the odd few remaining bytes as one extra COPYING_UNIT,	 but that can cross a page boundary on a machine	 which does not do strict alignment for COPYING_UNITS.  */      already = obj_size / sizeof (COPYING_UNIT) * sizeof (COPYING_UNIT);    }  else    already = 0;  /* Copy remaining bytes one by one.  */  for (i = already; i < obj_size; i++)    new_chunk->contents[i] = h->object_base[i];  h->object_base = new_chunk->contents;  h->next_free = h->object_base + obj_size;}/* Return nonzero if object OBJ has been allocated from obstack H.   This is here for debugging.   If you use it in a program, you are probably losing.  */int_obstack_allocated_p (h, obj)     struct obstack *h;     POINTER obj;{  register struct _obstack_chunk*  lp;	/* below addr of any objects in this chunk */  register struct _obstack_chunk*  plp;	/* point to previous chunk if any */  lp = (h)->chunk;  while (lp != 0 && ((POINTER)lp > obj || (POINTER)(lp)->limit < obj))    {      plp = lp -> prev;      lp = plp;    }  return lp != 0;}/* Free objects in obstack H, including OBJ and everything allocate   more recently than OBJ.  If OBJ is zero, free everything in H.  */void#ifdef __STDC__#undef obstack_freeobstack_free (struct obstack *h, POINTER obj)#else_obstack_free (h, obj)     struct obstack *h;     POINTER obj;#endif{  register struct _obstack_chunk*  lp;	/* below addr of any objects in this chunk */  register struct _obstack_chunk*  plp;	/* point to previous chunk if any */  lp = (h)->chunk;  while (lp != 0 && ((POINTER)lp > obj || (POINTER)(lp)->limit < obj))    {      plp = lp -> prev;      (*h->freefun) (lp);      lp = plp;    }  if (lp)    {      (h)->object_base = (h)->next_free = (char *)(obj);      (h)->chunk_limit = lp->limit;      (h)->chunk = lp;    }  else if (obj != 0)    /* obj is not in any of the chunks! */    abort ();}/* Let same .o link with output of gcc and other compilers.  */#ifdef __STDC__void_obstack_free (h, obj)     struct obstack *h;     POINTER obj;{  obstack_free (h, obj);}#endif#if 0/* These are now turned off because the applications do not use it   and it uses bcopy via obstack_grow, which causes trouble on sysV.  *//* Now define the functional versions of the obstack macros.   Define them to simply use the corresponding macros to do the job.  */#ifdef __STDC__/* These function definitions do not work with non-ANSI preprocessors;   they won't pass through the macro names in parentheses.  *//* The function names appear in parentheses in order to prevent   the macro-definitions of the names from being expanded there.  */POINTER (obstack_base) (obstack)     struct obstack *obstack;{  return obstack_base (obstack);}POINTER (obstack_next_free) (obstack)     struct obstack *obstack;{  return obstack_next_free (obstack);}int (obstack_object_size) (obstack)     struct obstack *obstack;{  return obstack_object_size (obstack);}int (obstack_room) (obstack)     struct obstack *obstack;{  return obstack_room (obstack);}void (obstack_grow) (obstack, pointer, length)     struct obstack *obstack;     POINTER pointer;     int length;{  obstack_grow (obstack, pointer, length);}void (obstack_grow0) (obstack, pointer, length)     struct obstack *obstack;     POINTER pointer;     int length;{  obstack_grow0 (obstack, pointer, length);}void (obstack_1grow) (obstack, character)     struct obstack *obstack;     int character;{  obstack_1grow (obstack, character);}void (obstack_blank) (obstack, length)     struct obstack *obstack;     int length;{  obstack_blank (obstack, length);}void (obstack_1grow_fast) (obstack, character)     struct obstack *obstack;     int character;{  obstack_1grow_fast (obstack, character);}void (obstack_blank_fast) (obstack, length)     struct obstack *obstack;     int length;{  obstack_blank_fast (obstack, length);}POINTER (obstack_finish) (obstack)     struct obstack *obstack;{  return obstack_finish (obstack);}POINTER (obstack_alloc) (obstack, length)     struct obstack *obstack;     int length;{  return obstack_alloc (obstack, length);}POINTER (obstack_copy) (obstack, pointer, length)     struct obstack *obstack;     POINTER pointer;     int length;{  return obstack_copy (obstack, pointer, length);}POINTER (obstack_copy0) (obstack, pointer, length)     struct obstack *obstack;     POINTER pointer;     int length;{  return obstack_copy0 (obstack, pointer, length);}#endif /* __STDC__ */#endif /* 0 */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品av综合导航| 欧美在线观看视频在线| 欧美日韩在线播| 久久精品无码一区二区三区| 亚洲一区二区欧美| 成人a级免费电影| 日韩欧美国产系列| 亚洲午夜一区二区三区| 成人晚上爱看视频| 精品少妇一区二区| 偷拍与自拍一区| 在线观看视频一区| 亚洲色图在线视频| 国产成人无遮挡在线视频| 91精品免费在线| 亚洲与欧洲av电影| 99精品国产91久久久久久| 久久久久久久久久看片| 日韩av一二三| 欧美日韩精品一区二区三区| 亚洲日本乱码在线观看| 波多野结衣中文字幕一区| 国产丝袜在线精品| 久久91精品久久久久久秒播| 欧美日韩成人综合在线一区二区 | 成人免费视频一区| 精品精品国产高清a毛片牛牛 | 亚洲天堂精品视频| 丁香婷婷深情五月亚洲| 久久久精品天堂| 久久99国产精品久久99| 欧美mv日韩mv国产| 国产在线视视频有精品| 日韩一区二区三区四区| 麻豆专区一区二区三区四区五区| 欧美日韩精品专区| 午夜精品福利一区二区三区蜜桃| 欧美视频中文一区二区三区在线观看| 亚洲免费观看高清完整版在线观看| 成人av在线影院| 国产精品高潮呻吟久久| 日本一区二区免费在线| 日本不卡一二三区黄网| 日韩欧美中文一区二区| 捆绑调教美女网站视频一区| 欧美刺激脚交jootjob| 九九热在线视频观看这里只有精品| 日韩一级片网址| 久久99热这里只有精品| 精品久久一区二区| 国产精品一区二区久久不卡| 国产日韩精品一区二区三区在线| 国产成人免费视频| 国产精品不卡视频| 91精品1区2区| 日韩在线播放一区二区| 日韩欧美一区在线观看| 久久99精品国产.久久久久久| 精品日韩一区二区三区| 国产精品伊人色| 国产精品福利一区| 欧美在线播放高清精品| 日韩精品一级中文字幕精品视频免费观看 | 亚洲一区二区三区精品在线| 欧美日韩国产综合一区二区三区| 奇米综合一区二区三区精品视频| 欧美videofree性高清杂交| 国产精品1区2区3区在线观看| 中文字幕在线观看不卡| 欧美中文一区二区三区| 美女mm1313爽爽久久久蜜臀| 久久精品日产第一区二区三区高清版| 不卡一区中文字幕| 亚洲成人免费视频| 欧美精品一区二区三区在线| av中文字幕亚洲| 亚洲超丰满肉感bbw| 久久综合久久99| 91视频一区二区| 日韩成人免费看| 国产偷国产偷亚洲高清人白洁| 色婷婷精品久久二区二区蜜臀av | 偷窥国产亚洲免费视频| 久久天堂av综合合色蜜桃网| 97久久久精品综合88久久| 亚州成人在线电影| 久久久不卡影院| 欧美系列日韩一区| 国产精品自拍三区| 亚洲综合色区另类av| 久久新电视剧免费观看| 日本韩国欧美在线| 国内精品国产成人| 一区二区高清在线| 2023国产精华国产精品| 色婷婷久久久亚洲一区二区三区| 玖玖九九国产精品| 亚洲精品视频免费看| 欧美电影免费观看高清完整版在线| 成人av在线资源网| 久久不见久久见免费视频7| 国产精品午夜久久| 日韩一区二区免费电影| 99久久综合精品| 九色综合狠狠综合久久| 一区二区三区在线高清| 久久亚洲综合av| 欧美日精品一区视频| 从欧美一区二区三区| 日本欧美肥老太交大片| 亚洲丝袜精品丝袜在线| 久久综合资源网| 欧美老女人第四色| 91亚洲精品乱码久久久久久蜜桃| 久久国产综合精品| 亚洲一区二区三区四区五区中文| 日本一区二区免费在线| 精品日韩欧美在线| 欧美乱妇一区二区三区不卡视频 | 日本色综合中文字幕| 亚洲乱码日产精品bd| 国产日韩三级在线| 日韩亚洲欧美综合| 欧美视频一区在线| 91麻豆国产自产在线观看| 国产精品一区二区91| 奇米影视在线99精品| 亚洲午夜激情网站| 亚洲精品国久久99热| 亚洲国产精华液网站w | 欧美午夜宅男影院| 色综合色综合色综合| 成人综合在线网站| 国产福利电影一区二区三区| 蜜乳av一区二区| 日韩国产精品久久久| 亚洲成av人影院| 亚洲综合激情另类小说区| 中文字幕制服丝袜成人av| 国产欧美日韩另类视频免费观看| 欧美大片一区二区| 欧美一区二区三区免费| 欧美日韩一区二区在线观看| 91免费视频网址| av午夜精品一区二区三区| 成人免费毛片嘿嘿连载视频| 国产馆精品极品| 国产一区二区在线观看视频| 精品一二线国产| 久久99在线观看| 国精品**一区二区三区在线蜜桃| 美美哒免费高清在线观看视频一区二区| 日韩成人精品在线| 奇米色一区二区| 免费成人小视频| 久久99精品久久久久久国产越南 | av高清不卡在线| 97久久精品人人做人人爽50路 | 久久91精品久久久久久秒播| 久久国产精品无码网站| 久久99日本精品| 国产黄色成人av| 成人做爰69片免费看网站| av电影在线观看一区| 91网站在线观看视频| 色诱视频网站一区| 欧美综合色免费| 欧美丝袜丝交足nylons图片| 制服丝袜国产精品| 欧美mv和日韩mv国产网站| 久久久精品人体av艺术| 国产精品国产精品国产专区不蜜 | 一区二区三区在线视频观看58| 亚洲激情欧美激情| 午夜欧美一区二区三区在线播放| 天堂在线亚洲视频| 精品一区二区国语对白| 国产91在线观看| 91美女片黄在线观看| 欧美日韩精品免费观看视频| 欧美一级二级三级乱码| 久久综合精品国产一区二区三区| 国产日韩欧美不卡| 亚洲精品国产成人久久av盗摄| 亚洲成av人综合在线观看| 久久草av在线| caoporen国产精品视频| 欧美性生活久久| 日韩女优电影在线观看| 国产欧美一区二区精品性色| 亚洲三级小视频| 日日摸夜夜添夜夜添国产精品| 久草这里只有精品视频| 99久久综合国产精品| 欧美精品一卡两卡| 国产欧美一区二区三区沐欲| 亚洲制服丝袜av| 激情综合五月天| 色婷婷综合久久久| 日韩亚洲欧美在线|