/[svn]/linuxsampler/trunk/src/engines/common/InstrumentScriptVMFunctions.h
ViewVC logotype

Contents of /linuxsampler/trunk/src/engines/common/InstrumentScriptVMFunctions.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2630 - (show annotations) (download) (as text)
Fri Jun 13 15:01:06 2014 UTC (9 years, 10 months ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 5228 byte(s)
* Implemented built-in instrument script function "set_event_mark()".
* Implemented built-in instrument script function "delete_event_mark()".
* Implemented built-in instrument script function "by_marks()".
* Added built-in instrument script int const variables $MARK_1 to $MARK_28.
* Built-in instrument script functions "ignore_event()", "note_off()" and
  "gig_set_dim_zone()" now also accept an array of event IDs as argument
  (i.e. return value of new script function "by_marks()").
* Bumped version (1.0.0.svn53).

1 /*
2 * Copyright (c) 2014 Christian Schoenebeck
3 *
4 * http://www.linuxsampler.org
5 *
6 * This file is part of LinuxSampler and released under the same terms.
7 * See README file for details.
8 */
9
10 #ifndef LS_INSTRSCRIPTVMFUNCTIONS_H
11 #define LS_INSTRSCRIPTVMFUNCTIONS_H
12
13 #include "../../common/global.h"
14 #include "../../scriptvm/CoreVMFunctions.h"
15
16 namespace LinuxSampler {
17
18 class EventGroup;
19 class InstrumentScriptVM;
20
21 class InstrumentScriptVMFunction_play_note : public VMIntResultFunction {
22 public:
23 InstrumentScriptVMFunction_play_note(InstrumentScriptVM* parent);
24 int minRequiredArgs() const { return 1; }
25 int maxAllowedArgs() const { return 4; }
26 bool acceptsArgType(int iArg, ExprType_t type) const { return type == INT_EXPR;}
27 ExprType_t argType(int iArg) const { return INT_EXPR; }
28 VMFnResult* exec(VMFnArgs* args);
29 protected:
30 InstrumentScriptVM* m_vm;
31 };
32
33 class InstrumentScriptVMFunction_set_controller : public VMIntResultFunction {
34 public:
35 InstrumentScriptVMFunction_set_controller(InstrumentScriptVM* parent);
36 int minRequiredArgs() const { return 2; }
37 int maxAllowedArgs() const { return 2; }
38 bool acceptsArgType(int iArg, ExprType_t type) const { return type == INT_EXPR;}
39 ExprType_t argType(int iArg) const { return INT_EXPR; }
40 VMFnResult* exec(VMFnArgs* args);
41 protected:
42 InstrumentScriptVM* m_vm;
43 };
44
45 class InstrumentScriptVMFunction_ignore_event : public VMEmptyResultFunction {
46 public:
47 InstrumentScriptVMFunction_ignore_event(InstrumentScriptVM* parent);
48 int minRequiredArgs() const { return 1; }
49 int maxAllowedArgs() const { return 1; }
50 bool acceptsArgType(int iArg, ExprType_t type) const;
51 ExprType_t argType(int iArg) const { return INT_EXPR; }
52 VMFnResult* exec(VMFnArgs* args);
53 protected:
54 InstrumentScriptVM* m_vm;
55 };
56
57 class InstrumentScriptVMFunction_ignore_controller : public VMEmptyResultFunction {
58 public:
59 InstrumentScriptVMFunction_ignore_controller(InstrumentScriptVM* parent);
60 int minRequiredArgs() const { return 0; }
61 int maxAllowedArgs() const { return 1; }
62 bool acceptsArgType(int iArg, ExprType_t type) const { return type == INT_EXPR;}
63 ExprType_t argType(int iArg) const { return INT_EXPR; }
64 VMFnResult* exec(VMFnArgs* args);
65 protected:
66 InstrumentScriptVM* m_vm;
67 };
68
69 class InstrumentScriptVMFunction_note_off : public VMEmptyResultFunction {
70 public:
71 InstrumentScriptVMFunction_note_off(InstrumentScriptVM* parent);
72 int minRequiredArgs() const { return 1; }
73 int maxAllowedArgs() const { return 2; }
74 bool acceptsArgType(int iArg, ExprType_t type) const;
75 ExprType_t argType(int iArg) const { return INT_EXPR; }
76 VMFnResult* exec(VMFnArgs* args);
77 protected:
78 InstrumentScriptVM* m_vm;
79 };
80
81 class InstrumentScriptVMFunction_set_event_mark : public VMEmptyResultFunction {
82 public:
83 InstrumentScriptVMFunction_set_event_mark(InstrumentScriptVM* parent);
84 int minRequiredArgs() const { return 2; }
85 int maxAllowedArgs() const { return 2; }
86 bool acceptsArgType(int iArg, ExprType_t type) const { return type == INT_EXPR;}
87 ExprType_t argType(int iArg) const { return INT_EXPR; }
88 VMFnResult* exec(VMFnArgs* args);
89 protected:
90 InstrumentScriptVM* m_vm;
91 };
92
93 class InstrumentScriptVMFunction_delete_event_mark : public VMEmptyResultFunction {
94 public:
95 InstrumentScriptVMFunction_delete_event_mark(InstrumentScriptVM* parent);
96 int minRequiredArgs() const { return 2; }
97 int maxAllowedArgs() const { return 2; }
98 bool acceptsArgType(int iArg, ExprType_t type) const { return type == INT_EXPR;}
99 ExprType_t argType(int iArg) const { return INT_EXPR; }
100 VMFnResult* exec(VMFnArgs* args);
101 protected:
102 InstrumentScriptVM* m_vm;
103 };
104
105 class InstrumentScriptVMFunction_by_marks : public VMFunction {
106 public:
107 InstrumentScriptVMFunction_by_marks(InstrumentScriptVM* parent);
108 int minRequiredArgs() const { return 1; }
109 int maxAllowedArgs() const { return 1; }
110 bool acceptsArgType(int iArg, ExprType_t type) const { return type == INT_EXPR;}
111 ExprType_t argType(int iArg) const { return INT_EXPR; }
112 ExprType_t returnType() { return INT_ARR_EXPR; }
113 VMFnResult* exec(VMFnArgs* args);
114 protected:
115 InstrumentScriptVM* m_vm;
116 class Result : public VMFnResult, public VMIntArrayExpr {
117 public:
118 StmtFlags_t flags;
119 EventGroup* eventGroup;
120
121 int arraySize() const OVERRIDE;
122 int evalIntElement(uint i) OVERRIDE;
123 void assignIntElement(uint i, int value) OVERRIDE {} // ignore assignment
124 VMExpr* resultValue() OVERRIDE { return this; }
125 StmtFlags_t resultFlags() { return flags; }
126 } m_result;
127
128 VMFnResult* errorResult();
129 VMFnResult* successResult(EventGroup* eventGroup);
130 };
131
132 } // namespace LinuxSampler
133
134 #endif // LS_INSTRSCRIPTVMFUNCTIONS_H

  ViewVC Help
Powered by ViewVC