optionally use guarded alloc for tiles compositor, also replace allocation functions...
[blender.git] / source / blender / compositor / intern / COM_Socket.h
1 /*
2  * Copyright 2011, Blender Foundation.
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * Contributor: 
19  *              Jeroen Bakker 
20  *              Monique Dewanchand
21  */
22
23 #ifndef _COM_Socket_h
24 #define _COM_Socket_h
25
26 #include <vector>
27 #include "BKE_text.h"
28 #include <string>
29 #include "DNA_node_types.h"
30 #include "COM_defines.h"
31
32 using namespace std;
33 class SocketConnection;
34 class NodeBase;
35
36 /**
37  * @brief Base class for InputSocket and OutputSocket.
38  *
39  * A socket are the points on an node where the user can make a connection between.
40  * Sockets are always part of a node or an operation.
41  *
42  * @see InputSocket
43  * @see OutputSocket
44  * @see SocketConnection - a connection between an InputSocket and an OutputSocket
45  * @ingroup Model
46  */
47 class Socket {
48 private:
49         /**
50          * Reference to the node where this Socket belongs to
51          */
52         NodeBase *node;
53         
54         /**
55          * the datatype of this socket. Is used for automatically data transformation.
56          * @section data-conversion
57          */
58         DataType datatype;
59         
60         bNodeSocket *editorSocket;
61 public:
62         Socket(DataType datatype);
63         
64         DataType getDataType() const;
65         void setNode(NodeBase *node);
66         NodeBase *getNode() const;
67         
68
69         const virtual int isConnected() const;
70         int isInputSocket() const;
71         int isOutputSocket() const;
72         virtual void determineResolution(int resolution[], unsigned int preferredResolution[]) {}
73
74         void setEditorSocket(bNodeSocket *editorSocket) { this->editorSocket = editorSocket; }
75         bNodeSocket *getbNodeSocket() const { return this->editorSocket; }
76         
77 #ifdef WITH_CXX_GUARDEDALLOC
78         MEM_CXX_CLASS_ALLOC_FUNCS("COM:Socket")
79 #endif
80 };
81
82
83 #endif