[SyncFS] Build indexes from FileTracker entries on disk.
[chromium-blink-merge.git] / third_party / mach_override / libudis86 / input.h
bloba4ee7f51db36febe1c83f6f87167ebd59a153da2
1 /* udis86 - libudis86/input.h
3 * Copyright (c) 2002-2009 Vivek Thampi
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without modification,
7 * are permitted provided that the following conditions are met:
8 *
9 * * Redistributions of source code must retain the above copyright notice,
10 * this list of conditions and the following disclaimer.
11 * * Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
19 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
22 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 #ifndef UD_INPUT_H
27 #define UD_INPUT_H
29 #include "types.h"
30 #include "udint.h"
32 uint8_t ud_inp_next(struct ud* u);
34 /*
35 * inp_start
36 * Should be called before each de-code operation.
38 static inline void
39 inp_start(struct ud *u)
41 u->inp_ctr = 0;
44 /* inp_reset
45 * Resets the current pointer to its position before the current
46 * instruction disassembly was started.
48 static inline void
49 inp_reset(struct ud *u)
51 u->inp_curr -= u->inp_ctr;
52 u->inp_ctr = 0;
55 /* inp_sess
56 * Returns the pointer to current session.
58 static inline uint8_t*
59 inp_sess(struct ud *u)
61 return u->inp_sess;
64 /*
65 * inp_curr
66 * Returns the current input byte.
68 static inline uint8_t
69 inp_curr(const struct ud *u)
71 return u->inp_cache[u->inp_curr];
75 * inp_back
76 * Move back a single byte in the stream.
78 static inline void
79 inp_back(struct ud* u)
81 if (u->inp_ctr > 0) {
82 --u->inp_curr;
83 --u->inp_ctr;
87 /*
88 * inp_peek
89 * Peek next byte in input.
91 static inline uint8_t
92 inp_peek(struct ud* u)
94 uint8_t r = ud_inp_next(u);
95 if (!u->error) {
96 inp_back(u); /* Don't backup if there was an error */
98 return r;
103 * inp_len
104 * Returns the number of bytes input in the current
105 * session.
107 static inline size_t
108 inp_len(const struct ud *u)
110 return u->inp_ctr;
113 #endif /* UD_INPUT_H */
115 vim: set ts=2 sw=2 expandtab