Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: third_party/yasm/patched-yasm/tools/python-yasm/symrec.pxi

Issue 6170009: Update our yasm copy to yasm 1.1.0 (Part 1: yasm side)... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # Python bindings for Yasm: Pyrex input file for symrec.h 1 # Python bindings for Yasm: Pyrex input file for symrec.h
2 # 2 #
3 # Copyright (C) 2006 Michael Urman, Peter Johnson 3 # Copyright (C) 2006 Michael Urman, Peter Johnson
4 # 4 #
5 # Redistribution and use in source and binary forms, with or without 5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions 6 # modification, are permitted provided that the following conditions
7 # are met: 7 # are met:
8 # 1. Redistributions of source code must retain the above copyright 8 # 1. Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer. 9 # notice, this list of conditions and the following disclaimer.
10 # 2. Redistributions in binary form must reproduce the above copyright 10 # 2. Redistributions in binary form must reproduce the above copyright
11 # notice, this list of conditions and the following disclaimer in the 11 # notice, this list of conditions and the following disclaimer in the
12 # documentation and/or other materials provided with the distribution. 12 # documentation and/or other materials provided with the distribution.
13 # 13 #
14 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS'' 14 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
15 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE 17 # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
18 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 18 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 19 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 20 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 21 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 22 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 23 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24 # POSSIBILITY OF SUCH DAMAGE. 24 # POSSIBILITY OF SUCH DAMAGE.
25 25
26 cdef class Symbol: 26 cdef class Symbol:
27 cdef yasm_symrec *sym 27 cdef yasm_symrec *sym
28 28
29 def __new__(self, symrec): 29 def __cinit__(self, symrec):
30 self.sym = NULL 30 self.sym = NULL
31 if PyCObject_Check(symrec): 31 if PyCObject_Check(symrec):
32 self.sym = <yasm_symrec *>__get_voidp(symrec, Symbol) 32 self.sym = <yasm_symrec *>__get_voidp(symrec, Symbol)
33 else: 33 else:
34 raise NotImplementedError 34 raise NotImplementedError
35 35
36 # no deref or destroy necessary 36 # no deref or destroy necessary
37 37
38 property name: 38 property name:
39 def __get__(self): return yasm_symrec_get_name(self.sym) 39 def __get__(self): return yasm_symrec_get_name(self.sym)
40 40
41 property status: 41 property status:
42 def __get__(self): 42 def __get__(self):
43 cdef yasm_sym_status status 43 cdef yasm_sym_status status
44 s = set() 44 s = set()
45 status = yasm_symrec_get_status(self.sym) 45 status = yasm_symrec_get_status(self.sym)
46 if <int>status & <int>SYM_USED: s.add('used') 46 if <int>status & <int>YASM_SYM_USED: s.add('used')
47 if <int>status & <int>SYM_DEFINED: s.add('defined') 47 if <int>status & <int>YASM_SYM_DEFINED: s.add('defined')
48 if <int>status & <int>SYM_VALUED: s.add('valued') 48 if <int>status & <int>YASM_SYM_VALUED: s.add('valued')
49 return s 49 return s
50 50
51 property in_table: 51 property in_table:
52 def __get__(self): 52 def __get__(self):
53 return bool(<int>yasm_symrec_get_status(self.sym) & 53 return bool(<int>yasm_symrec_get_status(self.sym) &
54 <int>SYM_NOTINTABLE) 54 <int>YASM_SYM_NOTINTABLE)
55 55
56 property visibility: 56 property visibility:
57 def __get__(self): 57 def __get__(self):
58 cdef yasm_sym_vis vis 58 cdef yasm_sym_vis vis
59 s = set() 59 s = set()
60 vis = yasm_symrec_get_visibility(self.sym) 60 vis = yasm_symrec_get_visibility(self.sym)
61 if <int>vis & <int>YASM_SYM_GLOBAL: s.add('global') 61 if <int>vis & <int>YASM_SYM_GLOBAL: s.add('global')
62 if <int>vis & <int>YASM_SYM_COMMON: s.add('common') 62 if <int>vis & <int>YASM_SYM_COMMON: s.add('common')
63 if <int>vis & <int>YASM_SYM_EXTERN: s.add('extern') 63 if <int>vis & <int>YASM_SYM_EXTERN: s.add('extern')
64 if <int>vis & <int>YASM_SYM_DLOCAL: s.add('dlocal') 64 if <int>vis & <int>YASM_SYM_DLOCAL: s.add('dlocal')
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 <void *>symbol) 117 <void *>symbol)
118 Py_INCREF(symbol) # We're keeping a reference on the C side! 118 Py_INCREF(symbol) # We're keeping a reference on the C side!
119 return symbol 119 return symbol
120 120
121 cdef class Bytecode 121 cdef class Bytecode
122 cdef class SymbolTable 122 cdef class SymbolTable
123 123
124 cdef class SymbolTableKeyIterator: 124 cdef class SymbolTableKeyIterator:
125 cdef yasm_symtab_iter *iter 125 cdef yasm_symtab_iter *iter
126 126
127 def __new__(self, symtab): 127 def __cinit__(self, symtab):
128 if not isinstance(symtab, SymbolTable): 128 if not isinstance(symtab, SymbolTable):
129 raise TypeError 129 raise TypeError
130 self.iter = yasm_symtab_first((<SymbolTable>symtab).symtab) 130 self.iter = yasm_symtab_first((<SymbolTable>symtab).symtab)
131 131
132 def __iter__(self): 132 def __iter__(self):
133 return self 133 return self
134 134
135 def __next__(self): 135 def __next__(self):
136 if self.iter == NULL: 136 if self.iter == NULL:
137 raise StopIteration 137 raise StopIteration
138 rv = yasm_symrec_get_name(yasm_symtab_iter_value(self.iter)) 138 rv = yasm_symrec_get_name(yasm_symtab_iter_value(self.iter))
139 self.iter = yasm_symtab_next(self.iter) 139 self.iter = yasm_symtab_next(self.iter)
140 return rv 140 return rv
141 141
142 cdef class SymbolTableValueIterator: 142 cdef class SymbolTableValueIterator:
143 cdef yasm_symtab_iter *iter 143 cdef yasm_symtab_iter *iter
144 144
145 def __new__(self, symtab): 145 def __cinit__(self, symtab):
146 if not isinstance(symtab, SymbolTable): 146 if not isinstance(symtab, SymbolTable):
147 raise TypeError 147 raise TypeError
148 self.iter = yasm_symtab_first((<SymbolTable>symtab).symtab) 148 self.iter = yasm_symtab_first((<SymbolTable>symtab).symtab)
149 149
150 def __iter__(self): 150 def __iter__(self):
151 return self 151 return self
152 152
153 def __next__(self): 153 def __next__(self):
154 if self.iter == NULL: 154 if self.iter == NULL:
155 raise StopIteration 155 raise StopIteration
156 rv = __make_symbol(yasm_symtab_iter_value(self.iter)) 156 rv = __make_symbol(yasm_symtab_iter_value(self.iter))
157 self.iter = yasm_symtab_next(self.iter) 157 self.iter = yasm_symtab_next(self.iter)
158 return rv 158 return rv
159 159
160 cdef class SymbolTableItemIterator: 160 cdef class SymbolTableItemIterator:
161 cdef yasm_symtab_iter *iter 161 cdef yasm_symtab_iter *iter
162 162
163 def __new__(self, symtab): 163 def __cinit__(self, symtab):
164 if not isinstance(symtab, SymbolTable): 164 if not isinstance(symtab, SymbolTable):
165 raise TypeError 165 raise TypeError
166 self.iter = yasm_symtab_first((<SymbolTable>symtab).symtab) 166 self.iter = yasm_symtab_first((<SymbolTable>symtab).symtab)
167 167
168 def __iter__(self): 168 def __iter__(self):
169 return self 169 return self
170 170
171 def __next__(self): 171 def __next__(self):
172 cdef yasm_symrec *sym 172 cdef yasm_symrec *sym
173 if self.iter == NULL: 173 if self.iter == NULL:
174 raise StopIteration 174 raise StopIteration
175 sym = yasm_symtab_iter_value(self.iter) 175 sym = yasm_symtab_iter_value(self.iter)
176 rv = (yasm_symrec_get_name(sym), __make_symbol(sym)) 176 rv = (yasm_symrec_get_name(sym), __make_symbol(sym))
177 self.iter = yasm_symtab_next(self.iter) 177 self.iter = yasm_symtab_next(self.iter)
178 return rv 178 return rv
179 179
180 cdef int __parse_vis(vis) except -1: 180 cdef int __parse_vis(vis) except -1:
181 if not vis or vis == 'local': return YASM_SYM_LOCAL 181 if not vis or vis == 'local': return YASM_SYM_LOCAL
182 if vis == 'global': return YASM_SYM_GLOBAL 182 if vis == 'global': return YASM_SYM_GLOBAL
183 if vis == 'common': return YASM_SYM_COMMON 183 if vis == 'common': return YASM_SYM_COMMON
184 if vis == 'extern': return YASM_SYM_EXTERN 184 if vis == 'extern': return YASM_SYM_EXTERN
185 if vis == 'dlocal': return YASM_SYM_DLOCAL 185 if vis == 'dlocal': return YASM_SYM_DLOCAL
186 msg = "bad visibility value %r" % vis 186 msg = "bad visibility value %r" % vis
187 PyErr_SetString(ValueError, msg) 187 PyErr_SetString(ValueError, msg)
188 return -1 188 return -1
189 189
190 cdef class SymbolTable: 190 cdef class SymbolTable:
191 cdef yasm_symtab *symtab 191 cdef yasm_symtab *symtab
192 192
193 def __new__(self): 193 def __cinit__(self):
194 self.symtab = yasm_symtab_create() 194 self.symtab = yasm_symtab_create()
195 195
196 def __dealloc__(self): 196 def __dealloc__(self):
197 if self.symtab != NULL: yasm_symtab_destroy(self.symtab) 197 if self.symtab != NULL: yasm_symtab_destroy(self.symtab)
198 198
199 def use(self, name, line): 199 def use(self, name, line):
200 return __make_symbol(yasm_symtab_use(self.symtab, name, line)) 200 return __make_symbol(yasm_symtab_use(self.symtab, name, line))
201 201
202 def define_equ(self, name, expr, line): 202 def define_equ(self, name, expr, line):
203 if not isinstance(expr, Expression): 203 if not isinstance(expr, Expression):
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 symrec = yasm_symtab_get(self.symtab, key) 276 symrec = yasm_symtab_get(self.symtab, key)
277 if symrec == NULL: 277 if symrec == NULL:
278 return x 278 return x
279 return __make_symbol(symrec) 279 return __make_symbol(symrec)
280 280
281 def iterkeys(self): return SymbolTableKeyIterator(self) 281 def iterkeys(self): return SymbolTableKeyIterator(self)
282 def itervalues(self): return SymbolTableValueIterator(self) 282 def itervalues(self): return SymbolTableValueIterator(self)
283 def iteritems(self): return SymbolTableItemIterator(self) 283 def iteritems(self): return SymbolTableItemIterator(self)
284 def __iter__(self): return SymbolTableKeyIterator(self) 284 def __iter__(self): return SymbolTableKeyIterator(self)
285 285
OLDNEW
« no previous file with comments | « third_party/yasm/patched-yasm/tools/python-yasm/setup.py ('k') | third_party/yasm/patched-yasm/tools/python-yasm/value.pxi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698