-#else /* not MULTI_FRAME */
-
-/* These definitions are used in a single-frame version of Emacs. */
-
-#define FRAME_PTR int
-
-/* A frame we use to store all the data concerning the screen when we
- don't have multiple frames. Remember, if you store any data in it
- which needs to be protected from GC, you should staticpro that
- element explicitly. */
-extern struct frame the_only_frame;
-
-extern EMACS_INT selected_frame;
-extern EMACS_INT last_nonminibuf_frame;
-
-#define XFRAME(f) selected_frame
-#define WINDOW_FRAME(w) selected_frame
-
-#define FRAME_LIVE_P(f) 1
-#define FRAME_TERMCAP_P(f) 1
-#define FRAME_X_P(f) 0
-#define FRAME_MINIBUF_ONLY_P(f) 0
-#define FRAME_HAS_MINIBUF_P(f) 1
-#define FRAME_CURRENT_GLYPHS(f) (the_only_frame.current_glyphs)
-#define FRAME_DESIRED_GLYPHS(f) (the_only_frame.desired_glyphs)
-#define FRAME_TEMP_GLYPHS(f) (the_only_frame.temp_glyphs)
-#define FRAME_HEIGHT(f) (the_only_frame.height)
-#define FRAME_WIDTH(f) (the_only_frame.width)
-#define FRAME_NEW_HEIGHT(f) (the_only_frame.new_height)
-#define FRAME_NEW_WIDTH(f) (the_only_frame.new_width)
-#define FRAME_MENU_BAR_LINES(f) (the_only_frame.menu_bar_lines)
-#define FRAME_CURSOR_X(f) (the_only_frame.cursor_x)
-#define FRAME_CURSOR_Y(f) (the_only_frame.cursor_y)
-#define FRAME_SET_VISIBLE(f,p) (p)
-#define FRAME_VISIBLE_P(f) 1
-#define SET_FRAME_GARBAGED(f) (frame_garbaged = 1)
-#define FRAME_GARBAGED_P(f) (frame_garbaged)
-#define FRAME_NO_SPLIT_P(f) 0
-#define FRAME_WANTS_MODELINE_P(f) 1
-#define FRAME_ICONIFIED_P(f) 0
-#define FRAME_MINIBUF_WINDOW(f) (minibuf_window)
-#define FRAME_ROOT_WINDOW(f) (the_only_frame.root_window)
-#define FRAME_SELECTED_WINDOW(f) (selected_window)
-#define SET_GLYPHS_FRAME(glyphs,frame) do ; while (0)
-#define FRAME_INSERT_COST(frame) (the_only_frame.insert_line_cost)
-#define FRAME_DELETE_COST(frame) (the_only_frame.delete_line_cost)
-#define FRAME_INSERTN_COST(frame) (the_only_frame.insert_n_lines_cost)
-#define FRAME_DELETEN_COST(frame) (the_only_frame.delete_n_lines_cost)
-#define FRAME_MESSAGE_BUF(f) (the_only_frame.message_buf)
-#define FRAME_SCROLL_BOTTOM_VPOS(f) (the_only_frame.scroll_bottom_vpos)
-#define FRAME_FOCUS_FRAME(f) (Qnil)
-#define FRAME_CAN_HAVE_SCROLL_BARS(f) (the_only_frame.can_have_scroll_bars)
-#define FRAME_HAS_VERTICAL_SCROLL_BARS(f) \
- (the_only_frame.has_vertical_scroll_bars)
-#define FRAME_SCROLL_BAR_PIXEL_WIDTH(f) (the_only_frame.scroll_bar_pixel_width)
-#define FRAME_SCROLL_BAR_COLS(f) (the_only_frame.scroll_bar_cols)
-#define FRAME_SCROLL_BARS(f) (the_only_frame.scroll_bars)
-#define FRAME_CONDEMNED_SCROLL_BARS(f) (the_only_frame.condemned_scroll_bars)
-#define FRAME_MENU_BAR_ITEMS(f) (the_only_frame.menu_bar_items)
-
-/* See comments in definition above. */
-#define FRAME_SAMPLE_VISIBILITY(f) (0)
-
-#define CHECK_FRAME(x, i) do; while (0)
-#define CHECK_LIVE_FRAME(x, y) do; while (0)
-
-/* FOR_EACH_FRAME (LIST_VAR, FRAME_VAR) followed by a statement is a
- `for' loop which iterates over the elements of Vframe_list. The
- loop will set FRAME_VAR, a Lisp_Object, to each frame in
- Vframe_list in succession and execute the statement. LIST_VAR
- should be a Lisp_Object too; it is used to iterate through the
- Vframe_list.
-
- If MULTI_FRAME _is_ defined, then this loop expands to a real
- `for' loop which traverses Vframe_list using LIST_VAR and
- FRAME_VAR. */
-#define FOR_EACH_FRAME(list_var, frame_var) \
- for (list_var = Qt; XSETFASTINT (frame_var, selected_frame), ! NILP (list_var); list_var = Qnil)
-
-#endif /* not MULTI_FRAME */
-
-\f
-/* Device- and MULTI_FRAME-independent scroll bar stuff. */