您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ ASET函数代码示例

51自学网 2021-06-01 19:36:43
  C++
这篇教程C++ ASET函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中ASET函数的典型用法代码示例。如果您正苦于以下问题:C++ ASET函数的具体用法?C++ ASET怎么用?C++ ASET使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了ASET函数的18个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: push_menu_pane

static voidpush_menu_pane (Lisp_Object name, Lisp_Object prefix_vec){  ensure_menu_items (MENU_ITEMS_PANE_LENGTH);  if (menu_items_submenu_depth == 0)    menu_items_n_panes++;  ASET (menu_items, menu_items_used, Qt);  menu_items_used++;  ASET (menu_items, menu_items_used, name);  menu_items_used++;  ASET (menu_items, menu_items_used, prefix_vec);  menu_items_used++;}
开发者ID:ueno,项目名称:emacs,代码行数:13,


示例2: push_left_right_boundary

static voidpush_left_right_boundary (void){  ensure_menu_items (1);  ASET (menu_items, menu_items_used, Qquote);  menu_items_used++;}
开发者ID:ueno,项目名称:emacs,代码行数:7,


示例3: evict_lower_half

static void evict_lower_half (log_t *log){  ptrdiff_t size = ASIZE (log->key_and_value) / 2;  EMACS_INT median = approximate_median (log, 0, size);  ptrdiff_t i;  for (i = 0; i < size; i++)    /* Evict not only values smaller but also values equal to the median,       so as to make sure we evict something no matter what.  */    if (XINT (HASH_VALUE (log, i)) <= median)      {	Lisp_Object key = HASH_KEY (log, i);	{ /* FIXME: we could make this more efficient.  */	  Lisp_Object tmp;	  XSET_HASH_TABLE (tmp, log); /* FIXME: Use make_lisp_ptr.  */	  Fremhash (key, tmp);	}	eassert (EQ (log->next_free, make_number (i)));	{	  int j;	  eassert (VECTORP (key));	  for (j = 0; j < ASIZE (key); j++)	    ASET (key, j, Qnil);	}	set_hash_key_slot (log, i, key);      }}
开发者ID:aspiers,项目名称:emacs-git,代码行数:27,


示例4: push_submenu_end

static voidpush_submenu_end (void){  ensure_menu_items (1);  ASET (menu_items, menu_items_used, Qlambda);  menu_items_used++;  menu_items_submenu_depth--;}
开发者ID:ueno,项目名称:emacs,代码行数:8,


示例5: push_submenu_start

static voidpush_submenu_start (void){  ensure_menu_items (1);  ASET (menu_items, menu_items_used, Qnil);  menu_items_used++;  menu_items_submenu_depth++;}
开发者ID:ueno,项目名称:emacs,代码行数:8,


示例6: xftfont_match

static Lisp_Objectxftfont_match (struct frame *f, Lisp_Object spec){  Lisp_Object entity = ftfont_driver.match (f, spec);  if (! NILP (entity))    ASET (entity, FONT_TYPE_INDEX, Qxft);  return entity;}
开发者ID:NeoTse,项目名称:deepin-emacs,代码行数:9,


示例7: xftfont_list

static Lisp_Objectxftfont_list (struct frame *f, Lisp_Object spec){  Lisp_Object list = ftfont_driver.list (f, spec), tail;  for (tail = list; CONSP (tail); tail = XCDR (tail))    ASET (XCAR (tail), FONT_TYPE_INDEX, Qxft);  return list;}
开发者ID:NeoTse,项目名称:deepin-emacs,代码行数:9,


示例8: module_vec_set

static voidmodule_vec_set (emacs_env *env, emacs_value vec, ptrdiff_t i, emacs_value val){  /* FIXME: This function should return bool because it can fail.  */  MODULE_FUNCTION_BEGIN ();  Lisp_Object lvec = value_to_lisp (vec);  CHECK_VECTOR (lvec);  CHECK_RANGED_INTEGER (make_number (i), 0, ASIZE (lvec) - 1);  ASET (lvec, i, value_to_lisp (val));}
开发者ID:QingweiPeterLan,项目名称:cs188-emacs,代码行数:10,


示例9: store_function_docstring

static voidstore_function_docstring (Lisp_Object obj, ptrdiff_t offset){  /* Don't use indirect_function here, or defaliases will apply their     docstrings to the base functions (Bug#2603).  */  Lisp_Object fun = SYMBOLP (obj) ? XSYMBOL (obj)->function : obj;  /* The type determines where the docstring is stored.  */  /* Lisp_Subrs have a slot for it.  */  if (SUBRP (fun))    {      intptr_t negative_offset = - offset;      XSUBR (fun)->doc = (char *) negative_offset;    }  /* If it's a lisp form, stick it in the form.  */  else if (CONSP (fun))    {      Lisp_Object tem;      tem = XCAR (fun);      if (EQ (tem, Qlambda) || EQ (tem, Qautoload)	  || (EQ (tem, Qclosure) && (fun = XCDR (fun), 1)))	{	  tem = Fcdr (Fcdr (fun));	  if (CONSP (tem) && INTEGERP (XCAR (tem)))	    /* FIXME: This modifies typically pure hash-cons'd data, so its	       correctness is quite delicate.  */	    XSETCAR (tem, make_number (offset));	}      else if (EQ (tem, Qmacro))	store_function_docstring (XCDR (fun), offset);    }  /* Bytecode objects sometimes have slots for it.  */  else if (COMPILEDP (fun))    {      /* This bytecode object must have a slot for the	 docstring, since we've found a docstring for it.  */      if ((ASIZE (fun) & PSEUDOVECTOR_SIZE_MASK) > COMPILED_DOC_STRING)	ASET (fun, COMPILED_DOC_STRING, make_number (offset));      else	{	  AUTO_STRING (format, "No docstring slot for %s");	  CALLN (Fmessage, format,		 (SYMBOLP (obj)		  ? SYMBOL_NAME (obj)		  : build_string ("<anonymous>")));	}    }}
开发者ID:primitivorm,项目名称:emacs,代码行数:52,


示例10: push_menu_item

static voidpush_menu_item (Lisp_Object name, Lisp_Object enable, Lisp_Object key, Lisp_Object def, Lisp_Object equiv, Lisp_Object type, Lisp_Object selected, Lisp_Object help){  ensure_menu_items (MENU_ITEMS_ITEM_LENGTH);  ASET (menu_items, menu_items_used + MENU_ITEMS_ITEM_NAME,	name);  ASET (menu_items, menu_items_used + MENU_ITEMS_ITEM_ENABLE,	enable);  ASET (menu_items, menu_items_used + MENU_ITEMS_ITEM_VALUE,	key);  ASET (menu_items, menu_items_used + MENU_ITEMS_ITEM_EQUIV_KEY, equiv);  ASET (menu_items, menu_items_used + MENU_ITEMS_ITEM_DEFINITION, def);  ASET (menu_items, menu_items_used + MENU_ITEMS_ITEM_TYPE,	type);  ASET (menu_items, menu_items_used + MENU_ITEMS_ITEM_SELECTED,	selected);  ASET (menu_items, menu_items_used + MENU_ITEMS_ITEM_HELP,	help);  menu_items_used += MENU_ITEMS_ITEM_LENGTH;}
开发者ID:ueno,项目名称:emacs,代码行数:16,


示例11: store_function_docstring

static voidstore_function_docstring (Lisp_Object obj, EMACS_INT offset)/* Use EMACS_INT because we get offset from pointer subtraction.  */{    /* Don't use indirect_function here, or defaliases will apply their       docstrings to the base functions (Bug#2603).  */    Lisp_Object fun = SYMBOLP (obj) ? XSYMBOL (obj)->function : obj;    /* The type determines where the docstring is stored.  */    /* Lisp_Subrs have a slot for it.  */    if (SUBRP (fun))    {        intptr_t negative_offset = - offset;        XSUBR (fun)->doc = (char *) negative_offset;    }    /* If it's a lisp form, stick it in the form.  */    else if (CONSP (fun))    {        Lisp_Object tem;        tem = XCAR (fun);        if (EQ (tem, Qlambda) || EQ (tem, Qautoload)                || (EQ (tem, Qclosure) && (fun = XCDR (fun), 1)))        {            tem = Fcdr (Fcdr (fun));            if (CONSP (tem) && INTEGERP (XCAR (tem)))                XSETCAR (tem, make_number (offset));        }        else if (EQ (tem, Qmacro))            store_function_docstring (XCDR (fun), offset);    }    /* Bytecode objects sometimes have slots for it.  */    else if (COMPILEDP (fun))    {        /* This bytecode object must have a slot for the        docstring, since we've found a docstring for it.  */        if ((ASIZE (fun) & PSEUDOVECTOR_SIZE_MASK) > COMPILED_DOC_STRING)            ASET (fun, COMPILED_DOC_STRING, make_number (offset));    }}
开发者ID:rradonic,项目名称:emacs,代码行数:43,


示例12: module_vec_set

static voidmodule_vec_set (emacs_env *env, emacs_value vec, ptrdiff_t i, emacs_value val){  /* FIXME: This function should return bool because it can fail.  */  MODULE_FUNCTION_BEGIN ();  Lisp_Object lvec = value_to_lisp (vec);  if (! VECTORP (lvec))    {      module_wrong_type (env, Qvectorp, lvec);      return;    }  if (! (0 <= i && i < ASIZE (lvec)))    {      if (MOST_NEGATIVE_FIXNUM <= i && i <= MOST_POSITIVE_FIXNUM)	module_args_out_of_range (env, lvec, make_number (i));      else	module_non_local_exit_signal_1 (env, Qoverflow_error, Qnil);      return;    }  ASET (lvec, i, value_to_lisp (val));}
开发者ID:AdrieanKhisbe,项目名称:emacs,代码行数:21,


示例13: digest_single_submenu

widget_value *digest_single_submenu (int start, int end, bool top_level_items){  widget_value *wv, *prev_wv, *save_wv, *first_wv;  int i;  int submenu_depth = 0;  widget_value **submenu_stack;  bool panes_seen = 0;  struct frame *f = XFRAME (Vmenu_updating_frame);  USE_SAFE_ALLOCA;  SAFE_NALLOCA (submenu_stack, 1, menu_items_used);  wv = make_widget_value ("menu", NULL, true, Qnil);  wv->button_type = BUTTON_TYPE_NONE;  first_wv = wv;  save_wv = 0;  prev_wv = 0;  /* Loop over all panes and items made by the preceding call     to parse_single_submenu and construct a tree of widget_value objects.     Ignore the panes and items used by previous calls to     digest_single_submenu, even though those are also in menu_items.  */  i = start;  while (i < end)    {      if (EQ (AREF (menu_items, i), Qnil))	{	  submenu_stack[submenu_depth++] = save_wv;	  save_wv = prev_wv;	  prev_wv = 0;	  i++;	}      else if (EQ (AREF (menu_items, i), Qlambda))	{	  prev_wv = save_wv;	  save_wv = submenu_stack[--submenu_depth];	  i++;	}      else if (EQ (AREF (menu_items, i), Qt)	       && submenu_depth != 0)	i += MENU_ITEMS_PANE_LENGTH;      /* Ignore a nil in the item list.	 It's meaningful only for dialog boxes.  */      else if (EQ (AREF (menu_items, i), Qquote))	i += 1;      else if (EQ (AREF (menu_items, i), Qt))	{	  /* Create a new pane.  */	  Lisp_Object pane_name;	  const char *pane_string;	  panes_seen = 1;	  pane_name = AREF (menu_items, i + MENU_ITEMS_PANE_NAME);	  /* TTY menus display menu items via tty_write_glyphs, which	     will encode the strings as appropriate.  */	  if (!FRAME_TERMCAP_P (f))	    {#ifdef HAVE_NTGUI	      if (STRINGP (pane_name))		{		  if (unicode_append_menu)		    /* Encode as UTF-8 for now.  */		    pane_name = ENCODE_UTF_8 (pane_name);		  else if (STRING_MULTIBYTE (pane_name))		    pane_name = ENCODE_SYSTEM (pane_name);		  ASET (menu_items, i + MENU_ITEMS_PANE_NAME, pane_name);		}#elif defined (USE_LUCID) && defined (HAVE_XFT)	      if (STRINGP (pane_name))		{		  pane_name = ENCODE_UTF_8 (pane_name);		  ASET (menu_items, i + MENU_ITEMS_PANE_NAME, pane_name);		}#elif !defined (HAVE_MULTILINGUAL_MENU)	      if (STRINGP (pane_name) && STRING_MULTIBYTE (pane_name))		{		  pane_name = ENCODE_MENU_STRING (pane_name);		  ASET (menu_items, i + MENU_ITEMS_PANE_NAME, pane_name);		}#endif	    }	  pane_string = (NILP (pane_name)			 ? "" : SSDATA (pane_name));	  /* If there is just one top-level pane, put all its items directly	     under the top-level menu.  */	  if (menu_items_n_panes == 1)	    pane_string = "";	  /* If the pane has a meaningful name,	     make the pane a top-level menu item	     with its items as a submenu beneath it.  */	  if (strcmp (pane_string, ""))	    {	      /* Set value to 1 so update_submenu_strings can handle '@'.  */	      wv = make_widget_value (NULL, (char *) 1, true, Qnil);	      if (save_wv)//.........这里部分代码省略.........
开发者ID:ueno,项目名称:emacs,代码行数:101,


示例14: single_menu_item

static voidsingle_menu_item (Lisp_Object key, Lisp_Object item, Lisp_Object dummy, void *skp_v){  Lisp_Object map, item_string, enabled;  struct gcpro gcpro1, gcpro2;  bool res;  struct skp *skp = skp_v;  /* Parse the menu item and leave the result in item_properties.  */  GCPRO2 (key, item);  res = parse_menu_item (item, 0);  UNGCPRO;  if (!res)    return;			/* Not a menu item.  */  map = AREF (item_properties, ITEM_PROPERTY_MAP);  enabled = AREF (item_properties, ITEM_PROPERTY_ENABLE);  item_string = AREF (item_properties, ITEM_PROPERTY_NAME);  if (!NILP (map) && SREF (item_string, 0) == '@')    {      if (!NILP (enabled))	/* An enabled separate pane. Remember this to handle it later.  */	skp->pending_maps = Fcons (Fcons (map, Fcons (item_string, key)),				   skp->pending_maps);      return;    }  /* Simulate radio buttons and toggle boxes by putting a prefix in     front of them.  */  if (!have_boxes ())    {      char const *prefix = 0;      Lisp_Object type = AREF (item_properties, ITEM_PROPERTY_TYPE);      if (!NILP (type))	{	  Lisp_Object selected	    = AREF (item_properties, ITEM_PROPERTY_SELECTED);	  if (skp->notbuttons)	    /* The first button. Line up previous items in this menu.  */	    {	      int idx = skp->notbuttons; /* Index for first item this menu.  */	      int submenu = 0;	      Lisp_Object tem;	      while (idx < menu_items_used)		{		  tem		    = AREF (menu_items, idx + MENU_ITEMS_ITEM_NAME);		  if (NILP (tem))		    {		      idx++;		      submenu++;		/* Skip sub menu.  */		    }		  else if (EQ (tem, Qlambda))		    {		      idx++;		      submenu--;		/* End sub menu.  */		    }		  else if (EQ (tem, Qt))		    idx += 3;		/* Skip new pane marker. */		  else if (EQ (tem, Qquote))		    idx++;		/* Skip a left, right divider. */		  else		    {		      if (!submenu && SREF (tem, 0) != '/0'			  && SREF (tem, 0) != '-')			ASET (menu_items, idx + MENU_ITEMS_ITEM_NAME,			      concat2 (SCOPED_STRING ("    "), tem));		      idx += MENU_ITEMS_ITEM_LENGTH;		    }		}	      skp->notbuttons = 0;	    }	  /* Calculate prefix, if any, for this item.  */	  if (EQ (type, QCtoggle))	    prefix = NILP (selected) ? "[ ] " : "[X] ";	  else if (EQ (type, QCradio))	    prefix = NILP (selected) ? "( ) " : "(*) ";	}      /* Not a button. If we have earlier buttons, then we need a prefix.  */      else if (!skp->notbuttons && SREF (item_string, 0) != '/0'	       && SREF (item_string, 0) != '-')	prefix = "    ";      if (prefix)	item_string = concat2 (SCOPED_STRING (prefix), item_string);  }  if ((FRAME_TERMCAP_P (XFRAME (Vmenu_updating_frame))       || FRAME_MSDOS_P (XFRAME (Vmenu_updating_frame)))      && !NILP (map))    /* Indicate visually that this is a submenu.  */    item_string = concat2 (item_string, SCOPED_STRING (" >"));  push_menu_item (item_string, enabled, key,		  AREF (item_properties, ITEM_PROPERTY_DEF),		  AREF (item_properties, ITEM_PROPERTY_KEYEQ),//.........这里部分代码省略.........
开发者ID:ueno,项目名称:emacs,代码行数:101,


示例15: xftfont_open

static Lisp_Objectxftfont_open (struct frame *f, Lisp_Object entity, int pixel_size){  FcResult result;  Display *display = FRAME_X_DISPLAY (f);  Lisp_Object val, filename, idx, font_object;  FcPattern *pat = NULL, *match;  struct xftfont_info *xftfont_info = NULL;  struct font *font;  double size = 0;  XftFont *xftfont = NULL;  int spacing;  char name[256];  int len, i;  XGlyphInfo extents;  FT_Face ft_face;  FcMatrix *matrix;  val = assq_no_quit (QCfont_entity, AREF (entity, FONT_EXTRA_INDEX));  if (! CONSP (val))    return Qnil;  val = XCDR (val);  filename = XCAR (val);  idx = XCDR (val);  size = XINT (AREF (entity, FONT_SIZE_INDEX));  if (size == 0)    size = pixel_size;  pat = FcPatternCreate ();  FcPatternAddInteger (pat, FC_WEIGHT, FONT_WEIGHT_NUMERIC (entity));  i = FONT_SLANT_NUMERIC (entity) - 100;  if (i < 0) i = 0;  FcPatternAddInteger (pat, FC_SLANT, i);  FcPatternAddInteger (pat, FC_WIDTH, FONT_WIDTH_NUMERIC (entity));  FcPatternAddDouble (pat, FC_PIXEL_SIZE, pixel_size);  val = AREF (entity, FONT_FAMILY_INDEX);  if (! NILP (val))    FcPatternAddString (pat, FC_FAMILY, (FcChar8 *) SDATA (SYMBOL_NAME (val)));  val = AREF (entity, FONT_FOUNDRY_INDEX);  if (! NILP (val))    FcPatternAddString (pat, FC_FOUNDRY, (FcChar8 *) SDATA (SYMBOL_NAME (val)));  val = AREF (entity, FONT_SPACING_INDEX);  if (! NILP (val))    FcPatternAddInteger (pat, FC_SPACING, XINT (val));  val = AREF (entity, FONT_DPI_INDEX);  if (! NILP (val))    {      double dbl = XINT (val);      FcPatternAddDouble (pat, FC_DPI, dbl);    }  val = AREF (entity, FONT_AVGWIDTH_INDEX);  if (INTEGERP (val) && XINT (val) == 0)    FcPatternAddBool (pat, FC_SCALABLE, FcTrue);  /* This is necessary to identify the exact font (e.g. 10x20.pcf.gz     over 10x20-ISO8859-1.pcf.gz).  */  FcPatternAddCharSet (pat, FC_CHARSET, ftfont_get_fc_charset (entity));  xftfont_add_rendering_parameters (pat, entity);  FcPatternAddString (pat, FC_FILE, (FcChar8 *) SDATA (filename));  FcPatternAddInteger (pat, FC_INDEX, XINT (idx));  block_input ();  /* Make sure that the Xrender extension is added before the Xft one.     Otherwise, the close-display hook set by Xft is called after the     one for Xrender, and the former tries to re-add the latter.  This     results in inconsistency of internal states and leads to X     protocol error when one reconnects to the same X server.     (Bug#1696)  */  {    int event_base, error_base;    XRenderQueryExtension (display, &event_base, &error_base);  }  /* Substitute in values from X resources and XftDefaultSet.  */  XftDefaultSubstitute (display, FRAME_X_SCREEN_NUMBER (f), pat);  match = XftFontMatch (display, FRAME_X_SCREEN_NUMBER (f), pat, &result);  xftfont_fix_match (pat, match);  FcPatternDestroy (pat);  xftfont = XftFontOpenPattern (display, match);  if (!xftfont)    {      unblock_input ();      XftPatternDestroy (match);      return Qnil;    }  ft_face = XftLockFace (xftfont);  unblock_input ();  /* We should not destroy PAT here because it is kept in XFTFONT and     destroyed automatically when XFTFONT is closed.  */  font_object = font_make_object (VECSIZE (struct xftfont_info), entity, size);  ASET (font_object, FONT_TYPE_INDEX, Qxft);  len = font_unparse_xlfd (entity, size, name, 256);  if (len > 0)    ASET (font_object, FONT_NAME_INDEX, make_string (name, len));  len = font_unparse_fcname (entity, size, name, 256);  if (len > 0)//.........这里部分代码省略.........
开发者ID:NeoTse,项目名称:deepin-emacs,代码行数:101,


示例16: SPB_VERB

//.........这里部分代码省略.........			complex_t(cos(k[0]*2*M_PI), sin(k[0]*2*M_PI)),			complex_t(cos(k[1]*2*M_PI), sin(k[1]*2*M_PI))		};		for(int i = 0; i < res[0]; ++i){			for(int j = 0; j < res[1]; ++j){				size_t row, col;				complex_t coeff;								const int curmat = impl->ind[2*IDX(i,j)+1];				complex_t eps_z(1.);				if(curmat >= 0){					eps_z = material[curmat].eps_inf.value[8];				}				#define ASET(ROW,COL,COEFF) Amap[sparse_t::index_t((ROW),(COL))] = (COEFF)#define BSET(ROW,COL,COEFF) Bmap[sparse_t::index_t((ROW),(COL))] = (COEFF)				// divH ~ dx Hx + dy Hy + dz Hz				// E ~ -i wp V				// V ~ +i wp E - i G V - i w0 P				// P ~ +i w0 V							//for(size_t idbg=0;idbg<ne+nh+1;++idbg){					//ASET(row0+idbg,row0+idbg,1); // for debugging				//}							// Hx ~ -i dy Ez				// Hy ~ +i dx Ez				// Ez ~ -i dy Hx + i dx Hy				// Hx = complex_t(0,-idr[1]) * (Ez[i,j+1,k] - Ez[i,j,k])				row = HX_OFF + IDX(i,j);				coeff = complex_t(0,-idr[1]);				col = EZ_OFF + IDX(i,j); // Ez				ASET(row,col, -coeff);				if(j+1 == res[1]){					col = EZ_OFF + IDX(i,0); // Ez					ASET(row,col, coeff/Bloch[1]);				}else{					col = EZ_OFF + IDX(i,j+1); // Ez					ASET(row,col, coeff);				}				BSET(row,row, 1);								// Hy = complex_t(0, idr[0]) * (Ez[i+1,j,k] - Ez[i,j,k])				row = HY_OFF + IDX(i,j);				coeff = complex_t(0, idr[0]);				col = EZ_OFF + IDX(i,j); // Ez				ASET(row,col, -coeff);				if(i+1 == res[0]){					col = EZ_OFF + IDX(0,j); // Ez					ASET(row,col, coeff/Bloch[0]);				}else{					col = EZ_OFF + IDX(i+1,j); // Ez					ASET(row,col, coeff);				}				BSET(row,row, 1);								// divH = idr[0] * (Hx[i+1,j,k] - Hx[i,j,k])				//      + idr[1] * (Hy[i,j+1,k] - Hx[i,j,k])				row = DIVH_OFF + IDX(i,j);				coeff = complex_t(0,idr[0]);				col = HX_OFF + IDX(i,j); // Hx				ASET(row,col, -coeff);				ASET(col,row, -std::conj(coeff));				if(i+1 == res[0]){					col = HX_OFF + IDX(0,j); // Hx
开发者ID:victorliu,项目名称:SPB,代码行数:67,


示例17: w32_menu_show

Lisp_Objectw32_menu_show (struct frame *f, int x, int y, int menuflags,	       Lisp_Object title, const char **error){  int i;  int menu_item_selection;  HMENU menu;  POINT pos;  widget_value *wv, *save_wv = 0, *first_wv = 0, *prev_wv = 0;  widget_value **submenu_stack    = (widget_value **) alloca (menu_items_used * sizeof (widget_value *));  Lisp_Object *subprefix_stack    = (Lisp_Object *) alloca (menu_items_used * word_size);  int submenu_depth = 0;  bool first_pane;  *error = NULL;  if (menu_items_n_panes == 0)    return Qnil;  if (menu_items_used <= MENU_ITEMS_PANE_LENGTH)    {      *error = "Empty menu";      return Qnil;    }  block_input ();  /* Create a tree of widget_value objects     representing the panes and their items.  */  wv = make_widget_value ("menu", NULL, true, Qnil);  wv->button_type = BUTTON_TYPE_NONE;  first_wv = wv;  first_pane = true;  /* Loop over all panes and items, filling in the tree.  */  i = 0;  while (i < menu_items_used)    {      if (EQ (AREF (menu_items, i), Qnil))	{	  submenu_stack[submenu_depth++] = save_wv;	  save_wv = prev_wv;	  prev_wv = 0;	  first_pane = false;	  i++;	}      else if (EQ (AREF (menu_items, i), Qlambda))	{	  prev_wv = save_wv;	  save_wv = submenu_stack[--submenu_depth];	  first_pane = false;	  i++;	}      else if (EQ (AREF (menu_items, i), Qt)	       && submenu_depth != 0)	i += MENU_ITEMS_PANE_LENGTH;      /* Ignore a nil in the item list.	 It's meaningful only for dialog boxes.  */      else if (EQ (AREF (menu_items, i), Qquote))	i += 1;      else if (EQ (AREF (menu_items, i), Qt))	{	  /* Create a new pane.  */	  Lisp_Object pane_name, prefix;	  const char *pane_string;	  pane_name = AREF (menu_items, i + MENU_ITEMS_PANE_NAME);	  prefix = AREF (menu_items, i + MENU_ITEMS_PANE_PREFIX);	  if (STRINGP (pane_name))	    {	      if (unicode_append_menu)		pane_name = ENCODE_UTF_8 (pane_name);	      else if (STRING_MULTIBYTE (pane_name))		pane_name = ENCODE_SYSTEM (pane_name);	      ASET (menu_items, i + MENU_ITEMS_PANE_NAME, pane_name);	    }	  pane_string = (NILP (pane_name)			 ? "" : SSDATA (pane_name));	  /* If there is just one top-level pane, put all its items directly	     under the top-level menu.  */	  if (menu_items_n_panes == 1)	    pane_string = "";	  /* If the pane has a meaningful name,	     make the pane a top-level menu item	     with its items as a submenu beneath it.  */	  if (!(menuflags & MENU_KEYMAPS) && strcmp (pane_string, ""))	    {	      wv = make_widget_value (pane_string, NULL, true, Qnil);	      if (save_wv)		save_wv->next = wv;	      else		first_wv->contents = wv;	      if ((menuflags & MENU_KEYMAPS) && !NILP (prefix))		wv->name++;	      wv->button_type = BUTTON_TYPE_NONE;//.........这里部分代码省略.........
开发者ID:0xAX,项目名称:emacs,代码行数:101,


示例18: digest_single_submenu

widget_value *digest_single_submenu (int start, int end, int top_level_items){  widget_value *wv, *prev_wv, *save_wv, *first_wv;  int i;  int submenu_depth = 0;  widget_value **submenu_stack;  int panes_seen = 0;  submenu_stack    = (widget_value **) alloca (menu_items_used * sizeof (widget_value *));  wv = xmalloc_widget_value ();  wv->name = "menu";  wv->value = 0;  wv->enabled = 1;  wv->button_type = BUTTON_TYPE_NONE;  wv->help = Qnil;  first_wv = wv;  save_wv = 0;  prev_wv = 0;  /* Loop over all panes and items made by the preceding call     to parse_single_submenu and construct a tree of widget_value objects.     Ignore the panes and items used by previous calls to     digest_single_submenu, even though those are also in menu_items.  */  i = start;  while (i < end)    {      if (EQ (XVECTOR (menu_items)->contents[i], Qnil))	{	  submenu_stack[submenu_depth++] = save_wv;	  save_wv = prev_wv;	  prev_wv = 0;	  i++;	}      else if (EQ (XVECTOR (menu_items)->contents[i], Qlambda))	{	  prev_wv = save_wv;	  save_wv = submenu_stack[--submenu_depth];	  i++;	}      else if (EQ (XVECTOR (menu_items)->contents[i], Qt)	       && submenu_depth != 0)	i += MENU_ITEMS_PANE_LENGTH;      /* Ignore a nil in the item list.	 It's meaningful only for dialog boxes.  */      else if (EQ (XVECTOR (menu_items)->contents[i], Qquote))	i += 1;      else if (EQ (XVECTOR (menu_items)->contents[i], Qt))	{	  /* Create a new pane.  */	  Lisp_Object pane_name, prefix;	  const char *pane_string;	  panes_seen++;	  pane_name = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_NAME];	  prefix = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_PREFIX];#ifdef HAVE_NTGUI	  if (STRINGP (pane_name))	    {	      if (unicode_append_menu)		/* Encode as UTF-8 for now.  */		pane_name = ENCODE_UTF_8 (pane_name);	      else if (STRING_MULTIBYTE (pane_name))		pane_name = ENCODE_SYSTEM (pane_name);	      ASET (menu_items, i + MENU_ITEMS_PANE_NAME, pane_name);	    }#elif defined (USE_LUCID) && defined (HAVE_XFT)	  if (STRINGP (pane_name))            {              pane_name = ENCODE_UTF_8 (pane_name);	      ASET (menu_items, i + MENU_ITEMS_PANE_NAME, pane_name);            }#elif !defined (HAVE_MULTILINGUAL_MENU)	  if (STRINGP (pane_name) && STRING_MULTIBYTE (pane_name))	    {	      pane_name = ENCODE_MENU_STRING (pane_name);	      ASET (menu_items, i + MENU_ITEMS_PANE_NAME, pane_name);	    }#endif	  pane_string = (NILP (pane_name)			 ? "" : (char *) SDATA (pane_name));	  /* If there is just one top-level pane, put all its items directly	     under the top-level menu.  */	  if (menu_items_n_panes == 1)	    pane_string = "";	  /* If the pane has a meaningful name,	     make the pane a top-level menu item	     with its items as a submenu beneath it.  */	  if (strcmp (pane_string, ""))	    {	      wv = xmalloc_widget_value ();	      if (save_wv)		save_wv->next = wv;	      else//.........这里部分代码省略.........
开发者ID:stanis,项目名称:emacs,代码行数:101,



注:本文中的ASET函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ ASIC_IS_DCE4函数代码示例
C++ ASCIILiteral函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。