1*d628d152Sdholland /*- 2*d628d152Sdholland * Copyright (c) 2010 The NetBSD Foundation, Inc. 3*d628d152Sdholland * All rights reserved. 4*d628d152Sdholland * 5*d628d152Sdholland * This code is derived from software contributed to The NetBSD Foundation 6*d628d152Sdholland * by David A. Holland. 7*d628d152Sdholland * 8*d628d152Sdholland * Redistribution and use in source and binary forms, with or without 9*d628d152Sdholland * modification, are permitted provided that the following conditions 10*d628d152Sdholland * are met: 11*d628d152Sdholland * 1. Redistributions of source code must retain the above copyright 12*d628d152Sdholland * notice, this list of conditions and the following disclaimer. 13*d628d152Sdholland * 2. Redistributions in binary form must reproduce the above copyright 14*d628d152Sdholland * notice, this list of conditions and the following disclaimer in the 15*d628d152Sdholland * documentation and/or other materials provided with the distribution. 16*d628d152Sdholland * 17*d628d152Sdholland * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 18*d628d152Sdholland * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 19*d628d152Sdholland * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 20*d628d152Sdholland * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 21*d628d152Sdholland * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22*d628d152Sdholland * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23*d628d152Sdholland * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24*d628d152Sdholland * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25*d628d152Sdholland * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26*d628d152Sdholland * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27*d628d152Sdholland * POSSIBILITY OF SUCH DAMAGE. 28*d628d152Sdholland */ 29*d628d152Sdholland 30*d628d152Sdholland #include <stddef.h> 31*d628d152Sdholland #include "bool.h" 32*d628d152Sdholland 33*d628d152Sdholland struct place; 34*d628d152Sdholland 35*d628d152Sdholland void macros_init(void); 36*d628d152Sdholland void macros_cleanup(void); 37*d628d152Sdholland 38*d628d152Sdholland void macro_define_plain(struct place *, const char *macro, 39*d628d152Sdholland struct place *, const char *expansion); 40*d628d152Sdholland void macro_define_params(struct place *, const char *macro, 41*d628d152Sdholland struct place *, const char *params, 42*d628d152Sdholland struct place *, const char *expansion); 43*d628d152Sdholland void macro_define_magic(struct place *, const char *macro); 44*d628d152Sdholland void macro_undef(const char *macro); 45*d628d152Sdholland bool macro_isdefined(const char *macro); 46*d628d152Sdholland 47*d628d152Sdholland char *macroexpand(struct place *, const char *buf, size_t len, 48*d628d152Sdholland bool honordefined); 49*d628d152Sdholland 50*d628d152Sdholland void macro_sendline(struct place *, const char *buf, size_t len); 51*d628d152Sdholland void macro_sendeof(struct place *); 52