Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 73 lines (66 sloc) 2.142 kb
4b71bbe @mhroth Add LGPL license to remaining files.
authored
1 /*
29f83db Towards an a stack-based messaging system. First commit.
Martin Roth authored
2 * Copyright 2009,2010,2011 Reality Jockey, Ltd.
4b71bbe @mhroth Add LGPL license to remaining files.
authored
3 * info@rjdj.me
4 * http://rjdj.me/
063c086 I have added Multiply and Divide object.
Yoonchang Han authored
5 *
4b71bbe @mhroth Add LGPL license to remaining files.
authored
6 * This file is part of ZenGarden.
7 *
8 * ZenGarden is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU Lesser General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * ZenGarden is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Lesser General Public License for more details.
063c086 I have added Multiply and Divide object.
Yoonchang Han authored
17 *
4b71bbe @mhroth Add LGPL license to remaining files.
authored
18 * You should have received a copy of the GNU Lesser General Public License
19 * along with ZenGarden. If not, see <http://www.gnu.org/licenses/>.
20 *
21 */
22
abb33ec First commit of current source.
Martin Roth authored
23 #include "MessageDivide.h"
24
7329847 @mhroth Add static factory method to all objects in order to create an object in...
authored
25 MessageObject *MessageDivide::newObject(PdMessage *initMessage, PdGraph *graph) {
26 return new MessageDivide(initMessage, graph);
27 }
28
063c086 I have added Multiply and Divide object.
Yoonchang Han authored
29 MessageDivide::MessageDivide(PdMessage *initMessage, PdGraph *graph) : MessageObject(2, 1, graph) {
d22a69f @Kyew Change mathematical functions
Kyew authored
30 constant = initMessage->isFloat(0) ? initMessage->getFloat(0) : 0.0f;
31 last = 0.0f;
abb33ec First commit of current source.
Martin Roth authored
32 }
33
34 MessageDivide::~MessageDivide() {
35 // nothing to do
36 }
37
d22a69f @Kyew Change mathematical functions
Kyew authored
38 std::string MessageDivide::toString() {
39 char str[snprintf(NULL, 0, "/ %g", constant)+1];
40 snprintf(str, sizeof(str), "/ %g", constant);
19d25ec @mhroth Add toString() to MessageAdd, MessageSubtract, and MessageDivide.
authored
41 return string(str);
063c086 I have added Multiply and Divide object.
Yoonchang Han authored
42 }
43
44 void MessageDivide::processMessage(int inletIndex, PdMessage *message) {
45 switch (inletIndex) {
46 case 0: {
d22a69f @Kyew Change mathematical functions
Kyew authored
47 switch (message->getType(0)) {
48 case FLOAT: {
49 last = constant == 0.0f ? 0.0f : message->getFloat(0) / constant;
50 // allow fallthrough
51 }
52 case BANG: {
53 PdMessage *outgoingMessage = PD_MESSAGE_ON_STACK(1);
54 outgoingMessage->initWithTimestampAndFloat(message->getTimestamp(), last);
55 sendMessage(0, outgoingMessage);
56 break;
57 }
58 default: return;
063c086 I have added Multiply and Divide object.
Yoonchang Han authored
59 }
60 break;
61 }
62 case 1: {
29f83db Towards an a stack-based messaging system. First commit.
Martin Roth authored
63 if (message->isFloat(0)) {
d22a69f @Kyew Change mathematical functions
Kyew authored
64 constant = message->getFloat(0);
063c086 I have added Multiply and Divide object.
Yoonchang Han authored
65 }
66 break;
67 }
68 default: {
69 break;
70 }
71 }
72 }
Something went wrong with that request. Please try again.