natcore.cc

来自「this gcc-g++-3.3.1.tar.gz is a source fi」· CC 代码 · 共 91 行

CC
91
字号
// natCore -- C++ side of Core/* Copyright (C) 2001, 2002  Free Software Foundation   This file is part of libgcj.This software is copyrighted work licensed under the terms of theLibgcj License.  Please consult the file "LIBGCJ_LICENSE" fordetails.  *//* Author: Anthony Green <green@redhat.com>.  */#include <config.h>#include <gcj/cni.h>#include <jvm.h>#include <string.h>#include <stdlib.h>#include <java/lang/NullPointerException.h>#include <java/io/IOException.h>#include <gnu/gcj/Core.h>typedef struct core_chain_struct{  int name_length;  const char *name;  int data_length;  const void *data;    struct core_chain_struct *next;} core_chain;static core_chain *root;void _Jv_RegisterResource (void *vptr){  char *rptr = (char *)vptr;  // These are permanent data structures for now.  This routine is  // called from a static constructor, so we shouldn't depend on too  // much existing infrastructure.  core_chain *cc = (core_chain *) _Jv_Malloc (sizeof (core_chain));  cc->name_length = ((int *)rptr)[0];  cc->data_length = ((int *)rptr)[1];  cc->name = rptr + 2*sizeof(int);  cc->data = cc->name + cc->name_length;  // Add this new item to the chain...  core_chain *old_root = root;  cc->next = old_root;  root = cc;}gnu::gcj::Core *gnu::gcj::Core::create (jstring name){  char *buf = (char *) __builtin_alloca (JvGetStringUTFLength (name) + 1);  jsize total = JvGetStringUTFRegion (name, 0, name->length(), buf);  buf[total] = '\0';  // Usually requests here end up as an absolute URL.  We strip the  // initial `/'.  if (buf[0] == '/')    {      ++buf;      --total;    }  core_chain *node = root;  while (node)    {      if (total == node->name_length	  && strncmp (buf, node->name, total) == 0)	{	  gnu::gcj::Core *core = 	    (gnu::gcj::Core *) _Jv_AllocObject(&gnu::gcj::Core::class$,					       sizeof (gnu::gcj::Core));	  core->ptr = (gnu::gcj::RawData *) node->data;	  core->length = node->data_length;	  return core;	}      else	node = node->next;    }  throw new java::io::IOException (JvNewStringLatin1 ("can't open core"));}

⌨️ 快捷键说明

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