X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fstream-event.hh;h=27a83ed72ff83e5f274398842029e69d2ce01fb7;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=0ac1b4712fc91bf53288e9cc714b49b8b27c00c1;hpb=8e58d9bf219537b7c6655319d7e57e417b435d51;p=lilypond.git diff --git a/lily/include/stream-event.hh b/lily/include/stream-event.hh index 0ac1b4712f..27a83ed72f 100644 --- a/lily/include/stream-event.hh +++ b/lily/include/stream-event.hh @@ -1,9 +1,20 @@ /* - stream-event.hh -- declare Stream_event + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2005--2015 Erik Sandberg - (c) 2005-2006 Erik Sandberg + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #ifndef STREAM_EVENT_HH @@ -17,20 +28,31 @@ class Stream_event : public Prob { public: Stream_event (); + VIRTUAL_COPY_CONSTRUCTOR (Stream_event, Stream_event); + + static Stream_event *unsmob (SCM s) { + return dynamic_cast (Prob::unsmob (s)); + } + static bool is_smob (SCM s) { + return Prob::is_smob (s) && unsmob (s); + } + + Stream_event (SCM event_class, SCM immutable_props = SCM_EOL); + Stream_event (SCM class_name, Input *); + Input *origin () const; void set_spot (Input *i); + bool internal_in_event_class (SCM class_name); + void make_transposable (); + + virtual SCM copy_mutable_properties () const; DECLARE_SCHEME_CALLBACK (undump, (SCM)); DECLARE_SCHEME_CALLBACK (dump, (SCM)); - - // todo: remove unneeded constructors - Stream_event (SCM event_class, SCM mutable_props); - Stream_event (SCM property_alist); - Stream_event (SCM class_name, Input *); - Stream_event (Stream_event *ev); }; -Stream_event *unsmob_stream_event (SCM); -DECLARE_TYPE_P (Stream_event); +#define in_event_class(class_name) internal_in_event_class (ly_symbol2scm (class_name)) + +SCM ly_event_deep_copy (SCM); #endif /* STREAM_EVENT_HH */