diff options
Diffstat (limited to 'NT')
| -rw-r--r-- | NT/Makefile | 265 | ||||
| -rw-r--r-- | NT/src/rotor.cpp | 7 | ||||
| -rw-r--r-- | NT/src/rotor.h | 68 |
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; + }; + +} |
