lib/ronin/model/targets_arch.rb in ronin-exploits-0.2.1 vs lib/ronin/model/targets_arch.rb in ronin-exploits-0.3.0
- old
+ new
@@ -1,7 +1,6 @@
#
-#--
# Ronin Exploits - A Ruby library for Ronin that provides exploitation and
# payload crafting functionality.
#
# Copyright (c) 2007-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
#
@@ -16,42 +15,54 @@
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#++
#
require 'ronin/arch'
+require 'extlib'
+
module Ronin
module Model
module TargetsArch
def self.included(base)
base.module_eval do
# The targeted architecture
- belongs_to :arch
+ belongs_to :arch,
+ :nullable => true
#
- # Returns the current targeted arch if no _name_ is given. If a
- # _name_ is given, a new Arch object will be created with the
- # given _name_ and associated with the target.
+ # The targeted architecture.
#
+ # @param [Symbol] name
+ # If a name is given, a new Arch with the matching name will be
+ # targeted.
+ #
+ # @return [Arch]
+ # The architecture to target.
+ #
+ # @example Accessing the targeted architecture
# target.arch
# # => nil
#
+ # @example Setting the targeted architecture
# target.arch :i686
# # => #<Ronin::Arch type=Ronin::Arch id=nil name="i686"
# # endian="little" address_length=4>
#
def arch(name=nil)
if name
return self.arch = Arch[name]
else
- return arch_association
+ return relationships[:arch].get(self)
end
end
end
+
+ model_name = base.name.split('::').last.snake_case.plural.to_sym
+ Arch.has Arch.n, model_name, :model => base.name
end
end
end
end