⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cp_init.c

📁 linux 下的源代码分析阅读器 red hat公司新版
💻 C
字号:
/*Copyright (c) 2000, Red Hat, Inc.This file is part of Source-Navigator.Source-Navigator is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public License as publishedby the Free Software Foundation; either version 2, or (at your option)any later version.Source-Navigator 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 the GNUGeneral Public License for more details.You should have received a copy of the GNU General Public License alongwith Source-Navigator; see the file COPYING.  If not, write tothe Free Software Foundation, 59 Temple Place - Suite 330, Boston,MA 02111-1307, USA.*/#include <stdlib.h>#include <stdio.h>#include <string.h>#include <tcl.h>#include "crossrefP.h"static List_t f_InitList( char cTerminator );extern Init_t f_Init( char cTerminator );extern Init_t f_InitCreate( void );extern void f_InitDestroy( Init_t Init );extern Init_t f_Init( char cTerminator ){   Init_t Init;   List_t ListInit;   Expr_t Expr;   Save();   niveau++;   if( token( 0 ) == '{' )   {      step( 1 );      ListInit = f_InitList( '}' );      if( token( 0 ) == '}' )      {         step( 1 );      }      Init = f_InitCreate();      Init->ListInit = ListInit;      niveau--;      return Init;   }   else if(( Expr = f_AssignmentExpression()))   {      Init = f_InitCreate();      Init->Expr = Expr;      niveau--;      return Init;   }   else   {      f_StepTo( ',', ';', cTerminator, 0 );      Restore();      niveau--;      return 0;   }}static List_t f_InitList( char cTerminator ){   Init_t Init;   List_t List = 0;/* Save(); */   niveau++;   while( True )   {      if(( Init = f_Init( cTerminator )))      {         f_ListAddLast( &List, (Elem_t) Init );      }      else      {         f_StepTo( ',', (char) cTerminator, ';', 0 );      }      if( token( 0 ) == ',' )      {         step( 1 );      }      if( token( 0 ) == cTerminator || token( 0 ) == ';' || token( 0 ) == 0 )      {         niveau--;         return List;      }   }}extern Init_t f_InitCreate( void ){   Init_t Init = (Init_t) Malloc( sizeof( Init[0] ));   memset((void*) Init, 0, sizeof( Init[0] ));   Init->iCheck = INIT_CHECK;   return Init;}extern void f_InitDestroy( Init_t Init ){   if( Init )   {      if( Init->iCheck != INIT_CHECK ) Abort();      if( Init->Expr )         f_ExprDestroy( Init->Expr );      if( Init->ListInit )         f_ListDestroy( Init->ListInit, (void(*)()) f_InitDestroy );      ckfree( (char*)Init );   }}extern Init_t f_NewInitializer( void ){   Init_t Init;   Save();   if( token( 0 ) == '(' )   {      step( 1 );      Init = f_InitCreate();      Init->ListInit = f_InitList( ')' );      f_StepTo( ')', 0 );      step( 1 );      return Init;   }   else   {      Restore();      return 0;   }}extern void f_InitProcess( Init_t Init ){   Init_t Init2;   if( Init->Expr ) f_ExprProcess( Init->Expr );   for( Init2 = (Init_t) d_ElemFirst( Init->ListInit )      ; Init2      ; Init2 = Init2->InitNext      )   {      f_InitProcess( Init2 );   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -