summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NT/Makefile265
-rw-r--r--NT/src/rotor.cpp7
-rw-r--r--NT/src/rotor.h68
3 files changed, 340 insertions, 0 deletions
diff --git a/NT/Makefile b/NT/Makefile
new file mode 100644
index 0000000..38618b2
--- /dev/null
+++ b/NT/Makefile
@@ -0,0 +1,265 @@
+# The pre-processor and compiler options.
+
+#http://docs.gstreamer.com/display/GstSDK/Installing+on+Linux
+
+#MY_CFLAGS = -fpermissive -std=c++11 -Wno-error -I /opt/gstreamer-sdk/include/gstreamer-0.10/ -I /opt/gstreamer-sdk/include/glib-2.0 -I /opt/gstreamer-sdk/lib/glib-2.0/include -I /opt/gstreamer-sdk/include/libxml2 $(shell pkg-config gstreamer-0.10 gstreamer-video-0.10 gstreamer-base-0.10 --cflags)
+#MY_CFLAGS = -Wswitch -fpermissive -std=c++11 -I /usr/include/librsvg-2.0/librsvg -I /usr/include/glib-2.0 -I /usr/lib/x86_64-linux-gnu/glib-2.0/include -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/opencv -I /usr/include/cairo -I /usr/include/jsoncpp
+#-Wno-error $(shell pkg-config gstreamer-0.10 gstreamer-video-0.10 gstreamer-base-0.10 --cflags)
+MY_CFLAGS = -Wswitch -fpermissive -std=c++11 `pkg-config --cflags --libs gtk+-2.0` -I /usr/include/librsvg-2.0/librsvg -I /usr/include/opencv -I /usr/include/cairo -I /usr/include/jsoncpp
+
+# -I ../ffmpeg
+
+# The linker options.libgstaasinklibgstaasink.so
+MY_LIBS = -lgobject-2.0 -lrsvg-2 -lnoise -lffms2 -ljsoncpp -lcairo -lopencv_core -lopencv_video -lopencv_imgproc -lopencv_highgui -lPocoNet -lPocoXML -lPocoUtil -lPocoFoundation -lvamp-hostsdk -lsndfile -L /usr/local/lib -lswscale -lavcodec -lavformat -lavfilter -lavdevice -lavutil -lstdc++ -lm
+#-lopencv_highgui
+#MY_LIBS = -lPocoNet -lPocoXML -lPocoUtil -lPocoFoundation -lvamp-hostsdk -lsndfile -L /usr/local/lib -lswscale -lavcodec -lavformat -lavfilter -lavdevice -lavutil $(shell pkg-config gstreamer-0.10 gstreamer-video-0.10 gstreamer-base-0.10 --libs)
+# -lgstreamer-0.10 -lgstreamer-video-0.10 -lgstreamer-base-0.10 -lglib-2.0 -lgstapp-0.10
+#MY_LIBS = ../libavcodec/ffmpeg/libavcodec/libavcodec.a ../libavcodec/ffmpeg/libavutil/libavutil.a ../libavcodec/ffmpeg/libavformat/libavformat.a ../libavcodec/ffmpeg/libavfilter/libavfilter.a ../libavcodec/ffmpeg/libavdevice/libavdevice.a -lPocoNet -lPocoXML -lPocoUtil -lPocoFoundation -lvamp-hostsdk
+#GAH! HARD!
+
+# The pre-processor options used by the cpp (man cpp for more).
+CPPFLAGS = -Wall
+
+# The options used in linking as well as in any direct use of ld.
+LDFLAGS =
+
+# The directories in which source files reside.
+# If not specified, only the current directory will be serached.
+SRCDIRS = src
+
+# The executable file name.
+# If not specified, current directory name or `a.out' will be used.
+PROGRAM =
+
+OBJ_OUTPUT = obj/
+
+## Implicit Section: change the following only when necessary.
+##==========================================================================
+
+# The source file types (headers excluded).
+# .c indicates C source files, and others C++ ones.
+SRCEXTS = .c .C .cc .cpp .CPP .c++ .cxx .cp
+
+# The header file types.
+HDREXTS = .h .H .hh .hpp .HPP .h++ .hxx .hp
+
+# The pre-processor and compiler options.
+# Users can override those variables from the command line.
+CFLAGS = -g -O3
+CXXFLAGS=
+CXX = colorgcc
+
+# The C program compiler.
+#CC = gcc
+
+# The C++ program compiler.
+#CXX = g++
+
+# Un-comment the following line to compile C programs as C++ ones.
+#CC = $(CXX)
+
+# The command used to delete file.
+RM = rm -f
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+## Stable Section: usually no need to be changed. But you can add more.
+##==========================================================================
+SHELL = /bin/sh
+EMPTY =
+SPACE = $(EMPTY) $(EMPTY)
+ifeq ($(PROGRAM),)
+ CUR_PATH_NAMES = $(subst /,$(SPACE),$(subst $(SPACE),_,$(CURDIR)))
+ PROGRAM = $(word $(words $(CUR_PATH_NAMES)),$(CUR_PATH_NAMES))
+ ifeq ($(PROGRAM),)
+ PROGRAM = a.out
+ endif
+endif
+ifeq ($(SRCDIRS),)
+ SRCDIRS = .
+endif
+##mkdir -p $(OBJ_OUTPUT)
+SOURCES = $(foreach d,$(SRCDIRS),$(wildcard $(addprefix $(d)/*,$(SRCEXTS))))
+HEADERS = $(foreach d,$(SRCDIRS),$(wildcard $(addprefix $(d)/*,$(HDREXTS))))
+SRC_CXX = $(filter-out %.c,$(SOURCES))
+OBJS = $(addsuffix .o, $(basename $(SOURCES)))
+DEPS = $(OBJS:.o=.d)
+
+## Define some useful variables.
+DEP_OPT = $(shell if `$(CC) --version | grep "GCC" >/dev/null`; then \
+ echo "-MM -MP"; else echo "-M"; fi )
+DEPEND = $(CC) $(DEP_OPT) $(MY_CFLAGS) $(CFLAGS) $(CPPFLAGS)
+DEPEND.d = $(subst -g ,,$(DEPEND))
+COMPILE.c = $(CC) $(MY_CFLAGS) $(CFLAGS) $(CPPFLAGS) -c
+COMPILE.cxx = $(CXX) $(MY_CFLAGS) $(CXXFLAGS) $(CPPFLAGS) -c
+LINK.c = $(CC) $(MY_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+LINK.cxx = $(CXX) $(MY_CFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)
+
+.PHONY: all objs tags ctags clean distclean help show install
+
+# Delete the default suffixes
+.SUFFIXES:
+
+all: Release
+
+Clang: CXX = clang
+
+Clang: $(PROGRAM)
+
+Release: CXXFLAGS += -O2
+
+Release: $(PROGRAM)
+
+Debug: CXXFLAGS += -g3
+
+Debug: $(PROGRAM)
+
+Valgrind: CXXFLAGS += -O0
+Valgrind: CXXFLAGS += -g3
+
+Valgrind: $(PROGRAM)
+
+prefix=/usr/local
+
+Install: rotord
+ strip rotord
+ install -m 0755 rotord $(prefix)/bin
+
+
+# Rules for creating dependency files (.d).
+#------------------------------------------
+
+%.d:%.c
+ @echo -n $(dir $<) > $@
+ @$(DEPEND.d) $< >> $@
+
+%.d:%.C
+ @echo -n $(dir $<) > $@
+ @$(DEPEND.d) $< >> $@
+
+%.d:%.cc
+ @echo -n $(dir $<) > $@
+ @$(DEPEND.d) $< >> $@
+
+%.d:%.cpp
+ @echo -n $(dir $<) > $@
+ @$(DEPEND.d) $< >> $@
+
+%.d:%.CPP
+ @echo -n $(dir $<) > $@
+ @$(DEPEND.d) $< >> $@
+
+%.d:%.c++
+ @echo -n $(dir $<) > $@
+ @$(DEPEND.d) $< >> $@
+
+%.d:%.cp
+ @echo -n $(dir $<) > $@
+ @$(DEPEND.d) $< >> $@
+
+%.d:%.cxx
+ @echo -n $(dir $<) > $@
+ @$(DEPEND.d) $< >> $@
+
+# Rules for generating object files (.o).
+#----------------------------------------
+objs:$(OBJS)
+
+%.o:%.c
+ $(COMPILE.c) $< -o $@
+
+%.o:%.C
+ $(COMPILE.cxx) $< -o $@
+
+%.o:%.cc
+ $(COMPILE.cxx) $< -o $@
+
+%.o:%.cpp
+ $(COMPILE.cxx) $< -o $@
+
+%.o:%.CPP
+ $(COMPILE.cxx) $< -o $@
+
+%.o:%.c++
+ $(COMPILE.cxx) $< -o $@
+
+%.o:%.cp
+ $(COMPILE.cxx) $< -o $@
+
+%.o:%.cxx
+ $(COMPILE.cxx) $< -o $@
+
+# Rules for generating the tags.
+#-------------------------------------
+tags: $(HEADERS) $(SOURCES)
+ $(ETAGS) $(ETAGSFLAGS) $(HEADERS) $(SOURCES)
+
+ctags: $(HEADERS) $(SOURCES)
+ $(CTAGS) $(CTAGSFLAGS) $(HEADERS) $(SOURCES)
+
+# Rules for generating the executable.
+#-------------------------------------
+$(PROGRAM):$(OBJS)
+ifeq ($(SRC_CXX),) # C program
+ $(LINK.c) $(OBJS) $(MY_LIBS) -o bin/$@
+ @echo cd bin
+ @echo ./$@ to execute the program.
+else # C++ program
+ $(LINK.cxx) $(OBJS) $(MY_LIBS) -o bin/$@
+ @echo cd bin
+ @echo ./$@ to execute the program.
+endif
+
+ifndef NODEP
+ifneq ($(DEPS),)
+ sinclude $(DEPS)
+endif
+endif
+
+
+clean:
+ $(RM) $(OBJS) $(PROGRAM) $(DEPS)
+
+distclean: clean
+ $(RM) $(DEPS) TAGS
+
+# Show help.
+help:
+ @echo 'Generic Makefile for C/C++ Programs (gcmakefile) version 0.5'
+ @echo 'Copyright (C) 2007, 2008 whyglinux <whyglinux@hotmail.com>'
+ @echo
+ @echo 'Usage: make [TARGET]'
+ @echo 'TARGETS:'
+ @echo ' all (=make) compile and link.'
+ @echo ' NODEP=yes make without generating dependencies.'
+ @echo ' objs compile only (no linking).'
+ @echo ' tags create tags for Emacs editor.'
+ @echo ' ctags create ctags for VI editor.'
+ @echo ' clean clean objects and the executable file.'
+ @echo ' distclean clean objects, the executable and dependencies.'
+ @echo ' show show variables (for debug use only).'
+ @echo ' help print this message.'
+ @echo
+ @echo 'Report bugs to <whyglinux AT gmail DOT com>.'
+
+# Show variables (for debug use only.)
+show:
+ @echo 'PROGRAM :' $(PROGRAM)
+ @echo 'SRCDIRS :' $(SRCDIRS)
+ @echo 'HEADERS :' $(HEADERS)
+ @echo 'SOURCES :' $(SOURCES)
+ @echo 'SRC_CXX :' $(SRC_CXX)
+ @echo 'OBJS :' $(OBJS)
+ @echo 'DEPS :' $(DEPS)
+ @echo 'DEPEND :' $(DEPEND)
+ @echo 'COMPILE.c :' $(COMPILE.c)
+ @echo 'COMPILE.cxx :' $(COMPILE.cxx)
+ @echo 'link.c :' $(LINK.c)
+ @echo 'link.cxx :' $(LINK.cxx)
+
+## End of the Makefile ## Suggestions are welcome ## All rights reserved ##
+#############################################################################
diff --git a/NT/src/rotor.cpp b/NT/src/rotor.cpp
new file mode 100644
index 0000000..2678dd5
--- /dev/null
+++ b/NT/src/rotor.cpp
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+#include "rotor.h"
+
+int main(){
+ printf("hello, world\n");
+} \ No newline at end of file
diff --git a/NT/src/rotor.h b/NT/src/rotor.h
new file mode 100644
index 0000000..6835d01
--- /dev/null
+++ b/NT/src/rotor.h
@@ -0,0 +1,68 @@
+#include <string>
+#include <map>
+#include <unordered_map>
+
+namespace Rotor {
+
+ class Node;
+ class Frame_parameters;
+
+ class Variable { //base type for variable pointers
+ public:
+ virtual void init(std::string s){};
+ virtual ~Variable(){};
+ };
+ template <class T> class Variable_type : public Variable {
+ public:
+ Node* connection;
+ T* get(Frame_parameters frame);
+ bool connectable;
+ T value;
+ };
+ //type specialisations deal with string conversion
+
+
+ //what happens if we want to link an unlinked attribute at runtime
+ //should attributes and paramaters just be the same thing
+ //it would be really nice if there could be arithmetic
+ //type objects that could act on multiple types
+
+ //either we call them attributes and inlets or just vars
+ //for the author, is it better to have seperate static members?
+ //for the GUI, yes. but is that another issue?
+ //does the gui need a hint for the "basic" mode inlets so they stand out?
+
+ class Node { //base type for node pointers
+ };
+ template <class NT> class Node_type : public Node {
+ public:
+ std::unordered_map<std::string,Variable*> vars;
+ NT* get_output(Frame_parameters frame);
+ virtual ~Node_type(){
+ for (auto v:vars){
+ delete v.second;
+ }
+ }
+ void init(std::map<std::string,std::string> settings){
+ for (auto s:settings) {
+ if (vars.find(s.first)){
+ vars[s.first]->init(s.second);
+ }
+ }
+ }
+ template <class IT> IT* create_inlet(std::string name){
+ vars[name]=new Variable_type<IT>();
+ return &((dynamic_cast<Variable_type<IT>*>(vars[name]))->value);
+ }
+ };
+
+ class a_node: public Node_type<double> {
+ a_node(){
+ delay=create_inlet<int>("delay");
+ //initialise the pointer to point at the instance variable
+ //how to delete the vars ???
+ };
+ int *delay;
+ };
+
+}