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

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

?? neo_util.c

?? 在 linux平臺上的網頁編程的模板
?? C
字號:
/* * Copyright 2001-2004 Brandon Long * All Rights Reserved. * * ClearSilver Templating System * * This code is made available under the terms of the ClearSilver License. * http://www.clearsilver.net/license.hdf * */#include <ruby.h>#include <version.h>#include "ClearSilver.h"#include "neo_ruby.h"VALUE mNeotonic;static VALUE cHdf;VALUE eHdfError;static ID id_to_s;#define Srb_raise(val) rb_raise(eHdfError, "%s/%d %s",__FILE__,__LINE__,RSTRING(val)->ptr)VALUE r_neo_error (NEOERR *err){  STRING str;  VALUE errstr;  string_init (&str);  nerr_error_string (err, &str);  errstr = rb_str_new2(str.buf);  /*  if (nerr_match(err, NERR_PARSE)) {  }  else {  }  */  string_clear (&str);  return errstr;}static void h_free2(t_hdfh *hdfh) {#ifdef DEBUG  fprintf(stderr,"freeing hdf 0x%x\n",hdfh);#endif  hdf_destroy(&(hdfh->hdf));  free(hdfh);}static void h_free(t_hdfh *hdfh) {#ifdef DEBUG  fprintf(stderr,"freeing hdf holder 0x%x of 0x%x\n",hdfh,hdfh->parent);#endif  free(hdfh);}static void h_mark(t_hdfh *hdfh) {  /* Only mark the array if this is the top node, only the original node should     set up the marker.   */#ifdef DEBUG  fprintf(stderr,"marking 0x%x\n",hdfh);#endif  if ( ! NIL_P(hdfh->top) )    rb_gc_mark(hdfh->top);  else    fprintf(stderr,"mark top 0x%x\n",hdfh);}static VALUE h_init (VALUE self){  return self;}VALUE h_new(VALUE class){  t_hdfh *hdfh;  NEOERR *err;  VALUE obj;  obj=Data_Make_Struct(class,t_hdfh,0,h_free2,hdfh);  err = hdf_init (&(hdfh->hdf));  if (err) Srb_raise(r_neo_error(err));#ifdef DEBUG  fprintf(stderr,"allocated 0x%x\n",(void *)hdfh);#endif  hdfh->top=Qnil;  rb_obj_call_init(obj, 0, NULL);  return obj;}static VALUE h_get_attr (VALUE self, VALUE oName){  t_hdfh *hdfh;  char *name;  HDF_ATTR *attr;  VALUE k,v;  VALUE rv;  Data_Get_Struct(self, t_hdfh, hdfh);  name = STR2CSTR(oName);  rv = rb_hash_new();  attr = hdf_get_attr(hdfh->hdf, name);  while ( attr != NULL ) {    k=rb_str_new2(attr->key);    v=rb_str_new2(attr->value);    rb_hash_aset(rv, k, v);    attr = attr->next;  }  return rv;}static VALUE h_set_attr(VALUE self, VALUE oName, VALUE oKey, VALUE oValue){  t_hdfh *hdfh;  char *name, *key, *value;  NEOERR *err;  Data_Get_Struct(self, t_hdfh, hdfh);  name = STR2CSTR(oName);  key = STR2CSTR(oKey);  if ( NIL_P(oValue) )    value = NULL;  else    value = STR2CSTR(oValue);  err = hdf_set_attr(hdfh->hdf, name, key, value);  if (err) Srb_raise(r_neo_error(err));  return self;}static VALUE h_set_value (VALUE self, VALUE oName, VALUE oValue){  t_hdfh *hdfh;  char *name, *value;  NEOERR *err;  Data_Get_Struct(self, t_hdfh, hdfh);  if ( TYPE(oName) == T_STRING )    name=STR2CSTR(oName);  else    name=STR2CSTR(rb_funcall(oName,id_to_s,0));  if ( TYPE(oValue) == T_STRING )    value=STR2CSTR(oValue);  else    value=STR2CSTR(rb_funcall(oValue,id_to_s,0));  err = hdf_set_value (hdfh->hdf, name, value);  if (err) Srb_raise(r_neo_error(err));  return self;}static VALUE h_get_int_value (VALUE self, VALUE oName, VALUE oDefault){  t_hdfh *hdfh;  char *name;  int r, d = 0;  VALUE rv;  Data_Get_Struct(self, t_hdfh, hdfh);  name=STR2CSTR(oName);  d=NUM2INT(oDefault);  r = hdf_get_int_value (hdfh->hdf, name, d);  rv = INT2NUM(r);  return rv;}static VALUE h_get_value (VALUE self, VALUE oName, VALUE oDefault){  t_hdfh *hdfh;  char *name;  char *r, *d = NULL;  VALUE rv;  Data_Get_Struct(self, t_hdfh, hdfh);  name=STR2CSTR(oName);  d=STR2CSTR(oDefault);  r = hdf_get_value (hdfh->hdf, name, d);  rv = rb_str_new2(r);  return rv;}static VALUE h_get_child (VALUE self, VALUE oName){  t_hdfh *hdfh,*hdfh_new;  HDF *r;  VALUE rv;  char *name;  Data_Get_Struct(self, t_hdfh, hdfh);  name=STR2CSTR(oName);  r = hdf_get_child (hdfh->hdf, name);  if (r == NULL) {    return Qnil;  }  rv=Data_Make_Struct(cHdf,t_hdfh,h_mark,h_free,hdfh_new);  hdfh_new->top=self;  hdfh_new->hdf=r;  hdfh_new->parent=hdfh;  return rv;}static VALUE h_get_obj (VALUE self, VALUE oName){  t_hdfh *hdfh,*hdfh_new;  HDF *r;  VALUE rv;  char *name;  Data_Get_Struct(self, t_hdfh, hdfh);  name=STR2CSTR(oName);  r = hdf_get_obj (hdfh->hdf, name);  if (r == NULL) {    return Qnil;  }  rv=Data_Make_Struct(cHdf,t_hdfh,h_mark,h_free,hdfh_new);  hdfh_new->top=self;  hdfh_new->hdf=r;  hdfh_new->parent=hdfh;  return rv;}static VALUE h_get_node (VALUE self, VALUE oName){  t_hdfh *hdfh,*hdfh_new;  HDF *r;  VALUE rv;  char *name;  NEOERR *err;  Data_Get_Struct(self, t_hdfh, hdfh);  name=STR2CSTR(oName);  err = hdf_get_node (hdfh->hdf, name, &r);  if (err)    Srb_raise(r_neo_error(err));  rv=Data_Make_Struct(cHdf,t_hdfh,h_mark,h_free,hdfh_new);  hdfh_new->top=self;  hdfh_new->hdf=r;  hdfh_new->parent=hdfh;  return rv;}static VALUE h_obj_child (VALUE self){  t_hdfh *hdfh,*hdfh_new;  HDF *r = NULL;  VALUE rv;  Data_Get_Struct(self, t_hdfh, hdfh);    r = hdf_obj_child (hdfh->hdf);  if (r == NULL) {    return Qnil;  }  rv=Data_Make_Struct(cHdf,t_hdfh,h_mark,h_free,hdfh_new);  hdfh_new->top=self;  hdfh_new->hdf=r;  hdfh_new->parent=hdfh;  return rv;}static VALUE h_obj_next (VALUE self){  t_hdfh *hdfh,*hdfh_new;  HDF *r = NULL;  VALUE rv;  Data_Get_Struct(self, t_hdfh, hdfh);  r = hdf_obj_next (hdfh->hdf);  if (r == NULL) {    return Qnil;  }  rv=Data_Make_Struct(cHdf,t_hdfh,h_mark,h_free,hdfh_new);  hdfh_new->top=self;  hdfh_new->hdf=r;  hdfh_new->parent=hdfh;  return rv;}static VALUE h_obj_top (VALUE self){  t_hdfh *hdfh,*hdfh_new;  HDF *r = NULL;  VALUE rv;  Data_Get_Struct(self, t_hdfh, hdfh);  r = hdf_obj_top (hdfh->hdf);  if (r == NULL) {    return Qnil;  }  rv=Data_Make_Struct(cHdf,t_hdfh,h_mark,h_free,hdfh_new);  hdfh_new->top=self;  hdfh_new->hdf=r;  hdfh_new->parent=hdfh;  return rv;}static VALUE h_obj_name (VALUE self){  t_hdfh *hdfh;  VALUE rv;  char *r;  Data_Get_Struct(self, t_hdfh, hdfh);  r = hdf_obj_name (hdfh->hdf);  if (r == NULL) {    return Qnil;  }  rv = rb_str_new2(r);  return rv;}static VALUE h_obj_attr (VALUE self){  t_hdfh *hdfh;  HDF_ATTR *attr;  VALUE k,v;  VALUE rv;  Data_Get_Struct(self, t_hdfh, hdfh);  rv = rb_hash_new();    attr = hdf_obj_attr(hdfh->hdf);  while ( attr != NULL ) {    k=rb_str_new2(attr->key);    v=rb_str_new2(attr->value);    rb_hash_aset(rv, k, v);    attr = attr->next;  }  return rv;}static VALUE h_obj_value (VALUE self){  t_hdfh *hdfh;  VALUE rv;  char *r;  Data_Get_Struct(self, t_hdfh, hdfh);  r = hdf_obj_value (hdfh->hdf);  if (r == NULL) {    return Qnil;  }  rv = rb_str_new2(r);  return rv;}static VALUE h_read_file (VALUE self, VALUE oPath){  t_hdfh *hdfh;  char *path;  NEOERR *err;  Data_Get_Struct(self, t_hdfh, hdfh);  path=STR2CSTR(oPath);  err = hdf_read_file (hdfh->hdf, path);  if (err) Srb_raise(r_neo_error(err));  return self;}static VALUE h_write_file (VALUE self, VALUE oPath){  t_hdfh *hdfh;  char *path;  NEOERR *err;  Data_Get_Struct(self, t_hdfh, hdfh);  path=STR2CSTR(oPath);  err = hdf_write_file (hdfh->hdf, path);  if (err) Srb_raise(r_neo_error(err));  return self;}static VALUE h_write_file_atomic (VALUE self, VALUE oPath){  t_hdfh *hdfh;  char *path;  NEOERR *err;  Data_Get_Struct(self, t_hdfh, hdfh);  path=STR2CSTR(oPath);  err = hdf_write_file_atomic (hdfh->hdf, path);  if (err) Srb_raise(r_neo_error(err));  return self;}static VALUE h_remove_tree (VALUE self, VALUE oName){  t_hdfh *hdfh;  char *name;  NEOERR *err;  Data_Get_Struct(self, t_hdfh, hdfh);  name = STR2CSTR(oName);  err = hdf_remove_tree (hdfh->hdf, name);  if (err) Srb_raise(r_neo_error(err));  return self;}static VALUE h_dump (VALUE self){  t_hdfh *hdfh;  VALUE rv;  NEOERR *err;  STRING str;  string_init (&str);    Data_Get_Struct(self, t_hdfh, hdfh);  err = hdf_dump_str (hdfh->hdf, NULL, 0, &str);  if (err) Srb_raise(r_neo_error(err));  if (str.len==0)    return Qnil;  rv = rb_str_new2(str.buf);  string_clear (&str);  return rv;}static VALUE h_write_string (VALUE self){  t_hdfh *hdfh;  VALUE rv;  NEOERR *err;  char *s = NULL;  Data_Get_Struct(self, t_hdfh, hdfh);  err = hdf_write_string (hdfh->hdf, &s);  if (err) Srb_raise(r_neo_error(err));  rv = rb_str_new2(s);  if (s) free(s);  return rv;}static VALUE h_read_string (VALUE self, VALUE oString, VALUE oIgnore){  t_hdfh *hdfh;  NEOERR *err;  char *s = NULL;  int ignore = 0;  Data_Get_Struct(self, t_hdfh, hdfh);  s = STR2CSTR(oString);  ignore = NUM2INT(oIgnore);  err = hdf_read_string_ignore (hdfh->hdf, s, ignore);  if (err) Srb_raise(r_neo_error(err));  return self;}static VALUE h_copy (VALUE self, VALUE oName, VALUE oHdfSrc){  t_hdfh *hdfh, *hdfh_src;  char *name;  NEOERR *err;  Data_Get_Struct(self, t_hdfh, hdfh);  Data_Get_Struct(oHdfSrc, t_hdfh, hdfh_src);  name = STR2CSTR(oName);  if (hdfh_src == NULL) rb_raise(eHdfError, "second argument must be an Hdf object");  err = hdf_copy (hdfh->hdf, name, hdfh_src->hdf);  if (err) Srb_raise(r_neo_error(err));  return self;}static VALUE h_set_symlink (VALUE self, VALUE oSrc, VALUE oDest){  t_hdfh *hdfh;  char *src;  char *dest;  NEOERR *err;  Data_Get_Struct(self, t_hdfh, hdfh);  src = STR2CSTR(oSrc);  dest = STR2CSTR(oDest);  err = hdf_set_symlink (hdfh->hdf, src, dest);  if (err) Srb_raise(r_neo_error(err));  return self;}static VALUE h_escape (VALUE self, VALUE oString, VALUE oEsc_char, VALUE oEsc){  VALUE rv;  char *s;  char *escape;  char *esc_char;  long buflen;  char *ret = NULL;  NEOERR *err;  s = rb_str2cstr(oString,&buflen);  esc_char = STR2CSTR(oEsc_char);  escape = STR2CSTR(oEsc);  err = neos_escape((UINT8*)s, buflen, esc_char[0], escape, &ret);  if (err) Srb_raise(r_neo_error(err));  rv = rb_str_new2(ret);  free(ret);  return rv;}static VALUE h_unescape (VALUE self, VALUE oString, VALUE oEsc_char){  VALUE rv;  char *s;  char *copy;  char *esc_char;  long buflen;  s = rb_str2cstr(oString,&buflen);  esc_char = STR2CSTR(oEsc_char);  /* This should be changed to use memory from the gc */  copy = strdup(s);  if (copy == NULL) rb_raise(rb_eNoMemError, "out of memory");  neos_unescape((UINT8*)copy, buflen, esc_char[0]);  rv = rb_str_new2(copy);  free(copy);  return rv;}void Init_cs();void Init_hdf() {  id_to_s=rb_intern("to_s");  mNeotonic = rb_define_module("Neo");  cHdf = rb_define_class_under(mNeotonic, "Hdf", rb_cObject);  rb_define_singleton_method(cHdf, "new", h_new, 0);  rb_define_method(cHdf, "initialize", h_init, 0);  rb_define_method(cHdf, "get_attr", h_get_attr, 1);  rb_define_method(cHdf, "set_attr", h_set_attr, 3);  rb_define_method(cHdf, "set_value", h_set_value, 2);  rb_define_method(cHdf, "put", h_set_value, 2);  rb_define_method(cHdf, "get_int_value", h_get_int_value, 2);  rb_define_method(cHdf, "get_value", h_get_value, 2);  rb_define_method(cHdf, "get_child", h_get_child, 1);  rb_define_method(cHdf, "get_obj", h_get_obj, 1);  rb_define_method(cHdf, "get_node", h_get_node, 1);  rb_define_method(cHdf, "obj_child", h_obj_child, 0);  rb_define_method(cHdf, "obj_next", h_obj_next, 0);  rb_define_method(cHdf, "obj_top", h_obj_top, 0);  rb_define_method(cHdf, "obj_name", h_obj_name, 0);  rb_define_method(cHdf, "obj_attr", h_obj_attr, 0);  rb_define_method(cHdf, "obj_value", h_obj_value, 0);  rb_define_method(cHdf, "read_file", h_read_file, 1);  rb_define_method(cHdf, "write_file", h_write_file, 1);  rb_define_method(cHdf, "write_file_atomic", h_write_file_atomic, 1);  rb_define_method(cHdf, "remove_tree", h_remove_tree, 1);  rb_define_method(cHdf, "dump", h_dump, 0);  rb_define_method(cHdf, "write_string", h_write_string, 0);  rb_define_method(cHdf, "read_string", h_read_string, 2);  rb_define_method(cHdf, "copy", h_copy, 2);  rb_define_method(cHdf, "set_symlink", h_set_symlink, 2);  rb_define_singleton_method(cHdf, "escape", h_escape, 3);  rb_define_singleton_method(cHdf, "unescape", h_unescape, 3);  eHdfError = rb_define_class_under(mNeotonic, "HdfError",#if RUBY_VERSION_MINOR >= 6				    rb_eStandardError);#else                                    rb_eException);#endif  Init_cs();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久免费精品高清特色大片| 色老头久久综合| 秋霞影院一区二区| 亚洲国产精品自拍| 亚洲综合999| 国产美女精品一区二区三区| 麻豆国产精品官网| 精品一区二区三区免费视频| 日本麻豆一区二区三区视频| 日本美女一区二区三区视频| 免费不卡在线观看| 免费成人在线影院| 国产中文字幕一区| 国产一区在线不卡| 久久疯狂做爰流白浆xx| 人人狠狠综合久久亚洲| 蜜臀久久99精品久久久久久9| 美女mm1313爽爽久久久蜜臀| 经典三级视频一区| 国产高清在线精品| 91丨porny丨国产| 一本色道亚洲精品aⅴ| 色中色一区二区| 欧美日韩一区二区电影| 日韩美一区二区三区| 欧美精品一区二区三区久久久 | 欧美韩日一区二区三区四区| 欧美激情一区二区三区| 一级做a爱片久久| 日韩精品一卡二卡三卡四卡无卡| 麻豆精品蜜桃视频网站| 成人激情视频网站| 在线一区二区三区| 欧美电影免费观看高清完整版在线 | av一二三不卡影片| 色婷婷综合久色| 欧美久久久影院| 久久久久综合网| 亚洲一区二区中文在线| 久久精品国产免费| 成人av在线资源网站| 欧美视频日韩视频| 国产欧美一区二区三区在线看蜜臀| 亚洲欧洲制服丝袜| 经典三级视频一区| 一本色道久久综合精品竹菊| 日韩精品一区在线| 亚洲精品国产a久久久久久 | 欧美久久一二三四区| 国产性色一区二区| 石原莉奈在线亚洲三区| 成人av在线资源| 日韩欧美成人激情| 一级特黄大欧美久久久| 国产精品白丝jk白祙喷水网站| 欧美撒尿777hd撒尿| 视频一区国产视频| 欧美日本不卡视频| 欧美国产一区在线| 日本在线不卡视频| 成人av电影在线网| 日韩精品一区二区三区视频 | 一区二区三区视频在线观看| 久久99精品网久久| 欧美性受极品xxxx喷水| 国产精品福利影院| 久久 天天综合| 欧美男同性恋视频网站| 亚洲天天做日日做天天谢日日欢| 国产伦精品一区二区三区免费 | 久久久777精品电影网影网 | 欧美性猛交xxxx乱大交退制版| 久久久国产一区二区三区四区小说 | 色噜噜久久综合| 6080午夜不卡| 亚洲你懂的在线视频| 国产高清在线观看免费不卡| 日韩免费电影网站| 石原莉奈一区二区三区在线观看| 一本色道综合亚洲| 亚洲欧美综合另类在线卡通| 国产成人精品亚洲日本在线桃色| 91精品国产欧美一区二区18| 亚洲夂夂婷婷色拍ww47| 91尤物视频在线观看| 国产精品色一区二区三区| 国产一级精品在线| 久久亚洲一级片| 久久精品国产久精国产爱| 欧美一区二区三区四区久久| 香港成人在线视频| 欧美午夜精品久久久| 亚洲综合免费观看高清在线观看| 久久久亚洲高清| 亚洲最新在线观看| 91麻豆自制传媒国产之光| 国产亚洲精品aa| 国产高清成人在线| 国产亚洲短视频| 国产99久久久久| 欧美韩国日本一区| 成人97人人超碰人人99| 中文字幕一区视频| 国产99久久久精品| 国产精品视频yy9299一区| 成人激情电影免费在线观看| 1024亚洲合集| 色噜噜狠狠一区二区三区果冻| 亚洲精品写真福利| 欧美日韩你懂得| 青青草精品视频| 精品国产乱码久久久久久影片| 韩国精品主播一区二区在线观看 | 日韩一区二区三区电影| 三级成人在线视频| 日韩欧美国产综合一区| 狠狠狠色丁香婷婷综合久久五月| 久久香蕉国产线看观看99| 国产精品69毛片高清亚洲| 国产精品污www在线观看| 色噜噜狠狠成人中文综合| 亚欧色一区w666天堂| 日韩精品最新网址| 国产高清精品在线| 亚洲视频香蕉人妖| 7799精品视频| 国产一区二区成人久久免费影院| 国产精品白丝在线| 欧美亚洲丝袜传媒另类| 久久精品国产亚洲一区二区三区| 国产欧美日韩不卡| 日本韩国欧美在线| 日韩国产欧美在线视频| 精品国产乱码久久久久久图片| av在线综合网| 亚洲超碰97人人做人人爱| 精品国产污污免费网站入口| 91色porny| 裸体一区二区三区| 国产精品福利一区二区三区| 欧美精品777| 丁香婷婷深情五月亚洲| 亚洲大片免费看| 久久久国产一区二区三区四区小说 | 国产精品一区免费视频| 国产精品乱码妇女bbbb| 在线观看免费成人| 国产伦精品一区二区三区免费迷| 亚洲精品中文在线影院| 精品少妇一区二区三区| 99精品视频在线观看免费| 日韩电影免费一区| 最新日韩在线视频| 欧美一区二区三区在线视频| a级高清视频欧美日韩| 日韩和欧美一区二区| 国产精品无码永久免费888| 欧美一区二区三区成人| 99这里只有久久精品视频| 男人的天堂久久精品| 亚洲男人的天堂在线观看| 日韩三级电影网址| 欧美日韩亚洲国产综合| 久久精品国产99国产| 亚洲靠逼com| 国产欧美日韩在线| 日韩欧美一级二级| 在线观看亚洲专区| 成人av免费观看| 国产真实乱子伦精品视频| 亚洲v中文字幕| 综合中文字幕亚洲| 国产女人水真多18毛片18精品视频 | 精品免费日韩av| 欧美日本乱大交xxxxx| 色综合久久久久久久久久久| 国产精品一区二区男女羞羞无遮挡| 亚洲v日本v欧美v久久精品| 中文字幕五月欧美| 国产香蕉久久精品综合网| 欧美一级在线观看| 欧美自拍丝袜亚洲| 99久久伊人网影院| 国产成人夜色高潮福利影视| 美脚の诱脚舐め脚责91| 日韩国产在线观看一区| 亚洲国产精品综合小说图片区| 亚洲三级在线看| 中文字幕va一区二区三区| 久久伊人中文字幕| 欧美mv日韩mv国产网站| 日韩欧美国产麻豆| 欧美一卡二卡三卡四卡| 91精品久久久久久蜜臀| 欧美日韩国产系列| 欧美日韩高清一区二区三区| 欧美色偷偷大香| 欧美偷拍一区二区| 欧美日韩亚洲综合在线| 欧美日韩午夜在线|