30
+ − 1 /*-
+ − 2 * Copyright (c) 2010 The NetBSD Foundation, Inc.
+ − 3 * All rights reserved.
+ − 4 *
+ − 5 * This code is derived from software contributed to The NetBSD Foundation
+ − 6 * by David A. Holland.
+ − 7 *
+ − 8 * Redistribution and use in source and binary forms, with or without
+ − 9 * modification, are permitted provided that the following conditions
+ − 10 * are met:
+ − 11 * 1. Redistributions of source code must retain the above copyright
+ − 12 * notice, this list of conditions and the following disclaimer.
+ − 13 * 2. Redistributions in binary form must reproduce the above copyright
+ − 14 * notice, this list of conditions and the following disclaimer in the
+ − 15 * documentation and/or other materials provided with the distribution.
+ − 16 *
+ − 17 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ − 18 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ − 19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ − 20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ − 21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ − 22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ − 23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ − 24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ − 25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ − 26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ − 27 * POSSIBILITY OF SUCH DAMAGE.
+ − 28 */
+ − 29
17
+ − 30 #include <stdbool.h>
12
+ − 31
+ − 32 enum places {
+ − 33 P_NOWHERE,
+ − 34 P_BUILTIN,
+ − 35 P_COMMANDLINE,
+ − 36 P_FILE,
+ − 37 };
8
+ − 38 struct place {
12
+ − 39 enum places type;
13
+ − 40 const struct placefile *file;
8
+ − 41 unsigned line;
+ − 42 unsigned column;
+ − 43 };
+ − 44
10
+ − 45 void place_init(void);
+ − 46 void place_cleanup(void);
+ − 47
8
+ − 48 void place_setnowhere(struct place *p);
+ − 49 void place_setbuiltin(struct place *p, unsigned num);
14
+ − 50 void place_setcommandline(struct place *p, unsigned word, unsigned column);
+ − 51 void place_setfilestart(struct place *p, const struct placefile *pf);
8
+ − 52
13
+ − 53 const struct placefile *place_addfile(const struct place *incplace,
+ − 54 const char *name, bool fromsystemdir);