Class: Ragweed::Wraposx::ThreadContext::State
- Includes:
- FFIStructInclude
- Defined in:
- lib/ragweed/wraposx/thread_context.rb
Constant Summary collapse
- FLAVOR =
7
Instance Method Summary collapse
- #dump(&block) ⇒ Object
- #header ⇒ Object
- #is_32? ⇒ Boolean
- #is_64? ⇒ Boolean
- #method_missing(meth, *args) ⇒ Object
- #methods(regular = true) ⇒ Object
- #respond_to?(meth, include_priv = false) ⇒ Boolean
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(meth, *args) ⇒ Object
319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 |
# File 'lib/ragweed/wraposx/thread_context.rb', line 319 def method_missing meth, *args super unless self.respond_to? meth if meth.to_s =~ /=$/ mth = meth.to_s.gsub(/=$/,'').intern if self.members.include? mth # don't proxy self.__send__(:[]=, mth, *args) elsif self[:tsh].members.include? meth self[:tsh].__send__(:[]=, mth, *args) else case self[:tsh][:flavor] when Ragweed::Wraposx::ThreadContext::X86_THREAD_STATE32 self[:uts][:ts32].__send__(:[]=, mth, *args) when Ragweed::Wraposx::ThreadContext::X86_THREAD_STATE64 self[:uts][:ts64].__send__(:[]=, mth, *args) end end else if self.members.include? meth # don't proxy self.__send__(:[], meth, *args) elsif self[:tsh].members.include? meth self[:tsh].__send__(:[], meth, *args) else case self[:tsh][:flavor] when Ragweed::Wraposx::ThreadContext::X86_THREAD_STATE32 self[:uts][:ts32].__send__(:[], meth, *args) when Ragweed::Wraposx::ThreadContext::X86_THREAD_STATE64 self[:uts][:ts64].__send__(:[], meth, *args) end end end end |
Instance Method Details
#dump(&block) ⇒ Object
358 359 360 361 362 363 364 365 |
# File 'lib/ragweed/wraposx/thread_context.rb', line 358 def dump(&block) case self[:tsh][:flavor] when Ragweed::Wraposx::ThreadContext::X86_THREAD_STATE32 self[:uts][:ts32].dump(&block) when Ragweed::Wraposx::ThreadContext::X86_THREAD_STATE64 self[:uts][:ts64].dump(&block) end end |
#header ⇒ Object
283 |
# File 'lib/ragweed/wraposx/thread_context.rb', line 283 def header; self[:fsh]; end |
#is_32? ⇒ Boolean
282 |
# File 'lib/ragweed/wraposx/thread_context.rb', line 282 def is_32?; !is_64?; end |
#is_64? ⇒ Boolean
281 |
# File 'lib/ragweed/wraposx/thread_context.rb', line 281 def is_64?; self[:tsh].is_64?; end |
#methods(regular = true) ⇒ Object
290 291 292 293 294 295 296 297 298 299 300 301 302 |
# File 'lib/ragweed/wraposx/thread_context.rb', line 290 def methods regular=true ret = super + self.members.map{|x| [x.to_s, x.to_s + "="]} ret += self[:tsh].members.map{|x| [x.to_s, x.to_s + "="]} ret += case self[:tsh][:flavor] when Ragweed::Wraposx::ThreadContext::X86_THREAD_STATE32 self[:uts][:ts32].members.map{|x| [x.to_s, x.to_s + "="]} when Ragweed::Wraposx::ThreadContext::X86_THREAD_STATE64 self[:uts][:ts64].members.map{|x| [x.to_s, x.to_s + "="]} else [] end ret.flatten end |
#respond_to?(meth, include_priv = false) ⇒ Boolean
353 354 355 356 |
# File 'lib/ragweed/wraposx/thread_context.rb', line 353 def respond_to? meth, include_priv=false mth = meth.to_s.gsub(/=$/,'') # may not be needed anymore self.methods.include? mth || super end |