--- /dev/null
+
+/*] Copyright (c) 2009-2010, Charles McGarvey [**************************
+**] All rights reserved.
+*
+* vi:ts=4 sw=4 tw=75
+*
+* Distributable under the terms and conditions of the 2-clause BSD license;
+* see the file COPYING for a complete text of the license.
+*
+**************************************************************************/
+
+#include "script.hh"
+#include "sound.hh"
+
+
+namespace moof {
+
+
+static int sound_new(script& script)
+{
+ script::slot name = script[2].require_string("sound name");
+
+ std::string str;
+ name.get(str);
+
+ script.push(sound(str));
+ return 1;
+}
+
+static int sound_enqueue(script& script)
+{
+ sound* sound;
+ script[1].require_object<moof::sound>("sound").get(sound);
+
+ std::string name;
+ script[2].require_string("sound name").get(name);
+
+ sound->enqueue(name);
+ return 0;
+}
+
+static int sound_play(script& script)
+{
+ sound* sound;
+ script[1].require_object<moof::sound>("sound").get(sound);
+ sound->play();
+ return 0;
+}
+
+static int sound_stop(script& script)
+{
+ sound* sound;
+ script[1].require_object<moof::sound>("sound").get(sound);
+ sound->stop();
+ return 0;
+}
+
+static int sound_pause(script& script)
+{
+ sound* sound;
+ script[1].require_object<moof::sound>("sound").get(sound);
+ sound->pause();
+ return 0;
+}
+
+static int sound_rewind(script& script)
+{
+ sound* sound;
+ script[1].require_object<moof::sound>("sound").get(sound);
+ sound->rewind();
+ return 0;
+}
+
+static int sound_toggle(script& script)
+{
+ sound* sound;
+ script[1].require_object<moof::sound>("sound").get(sound);
+ sound->toggle();
+ return 0;
+}
+
+static int sound_is_playing(script& script)
+{
+ sound* sound;
+ script[1].require_object<moof::sound>("sound").get(sound);
+ script.push(sound->is_playing());
+ return 1;
+}
+
+
+void sound::import(script& script, const std::string& nspace)
+{
+ script.check_stack(4);
+
+ script::slot parent = script.push_table(nspace);
+ script::slot meta = script.push_class<sound>(sound_new);
+
+ meta.set_field("enqueue", sound_enqueue);
+ meta.set_field("play", sound_play);
+ meta.set_field("stop", sound_stop);
+ meta.set_field("pause", sound_pause);
+ meta.set_field("rewind", sound_rewind);
+ meta.set_field("toggle", sound_toggle);
+ meta.set_field("is_playing", sound_is_playing);
+
+ parent.set_field("sound");
+ parent.pop();
+}
+
+
+} // namespace moof
+