add first code
This commit is contained in:
		
							parent
							
								
									f207af2c4a
								
							
						
					
					
						commit
						8bf49928e5
					
				
					 5 changed files with 181 additions and 1 deletions
				
			
		
							
								
								
									
										66
									
								
								inc/col.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								inc/col.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,66 @@
 | 
			
		|||
 | 
			
		||||
class Node;
 | 
			
		||||
typedef void (*drawfun_t)(int offset, int size, Node*);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void draw_menu(int, int, Node*);
 | 
			
		||||
 | 
			
		||||
class Drawable{
 | 
			
		||||
	public:
 | 
			
		||||
		const int minsize;
 | 
			
		||||
		const int maxsize;
 | 
			
		||||
		drawfun_t render;
 | 
			
		||||
	Drawable(drawfun_t fun, int min = 0, int max=~0): minsize(min), maxsize(max), render(fun){
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class Node{
 | 
			
		||||
	private:
 | 
			
		||||
	Node* parent_ = 0;
 | 
			
		||||
	Node* child_ = 0;
 | 
			
		||||
	Node* next_ = 0;
 | 
			
		||||
	void addNodes(bool b){
 | 
			
		||||
	}
 | 
			
		||||
	template<class ...Us>
 | 
			
		||||
	void addNodes(bool b, Node* n, Us ... ns){
 | 
			
		||||
		next_ = n;
 | 
			
		||||
		next_->parent_ = parent_;
 | 
			
		||||
		next_->addNodes(!b,ns...);
 | 
			
		||||
	}
 | 
			
		||||
	public:
 | 
			
		||||
	Drawable view;
 | 
			
		||||
	const char* title_ = 0;
 | 
			
		||||
	Node(): next_(nullptr), child_(nullptr), parent_(nullptr), view(nullptr){
 | 
			
		||||
	}
 | 
			
		||||
	Node(const char* t, drawfun_t fun=draw_menu) : title_(t), view(fun), next_(nullptr), child_(nullptr), parent_(nullptr){
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	template<typename ... Args>
 | 
			
		||||
	Node(const char* t, Node* n, Args ... ns) : title_(t), view(nullptr){
 | 
			
		||||
		child_ = n;
 | 
			
		||||
		n->parent_=this;
 | 
			
		||||
		child_->addNodes(true,ns...);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void p(int i);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class Value: public Node{
 | 
			
		||||
	public:
 | 
			
		||||
	const char* header;
 | 
			
		||||
	int state;
 | 
			
		||||
	Value(const char* t, int val, drawfun_t fun): Node(t, fun), header(t), state(val){
 | 
			
		||||
		
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class Layout{
 | 
			
		||||
	private:
 | 
			
		||||
		int menuthrs_;
 | 
			
		||||
	public:
 | 
			
		||||
		Layout(int max) : menuthrs_(max){
 | 
			
		||||
			
 | 
			
		||||
		}
 | 
			
		||||
		//slots
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										11
									
								
								inc/hal.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								inc/hal.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
void print(const char* str);
 | 
			
		||||
void print(int str);
 | 
			
		||||
 | 
			
		||||
#ifndef LINUX
 | 
			
		||||
 | 
			
		||||
void * operator new(unsigned int size);
 | 
			
		||||
void operator delete(void * ptr);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										29
									
								
								src/col.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								src/col.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,29 @@
 | 
			
		|||
 | 
			
		||||
#include "hal.h"
 | 
			
		||||
#include "col.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void Node::p(int i){
 | 
			
		||||
	for(int j = 0; j < i; j++){ print("__"); }
 | 
			
		||||
	if(title_)
 | 
			
		||||
		print(title_);
 | 
			
		||||
	else
 | 
			
		||||
		print("--");
 | 
			
		||||
		
 | 
			
		||||
	if(view.render)
 | 
			
		||||
		view.render(0,0,this);
 | 
			
		||||
		
 | 
			
		||||
	print("\n");
 | 
			
		||||
 | 
			
		||||
	if(child_)
 | 
			
		||||
		child_->p(i+1);
 | 
			
		||||
 | 
			
		||||
	if(next_)
 | 
			
		||||
		next_->p(i);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void draw_menu(int offset, int size, Node* val){
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										35
									
								
								src/hal.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/hal.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,35 @@
 | 
			
		|||
 | 
			
		||||
#ifdef LINUX
 | 
			
		||||
 | 
			
		||||
#include <iostream>
 | 
			
		||||
 | 
			
		||||
void print(const char* str){
 | 
			
		||||
	std::cout << str << std::flush;
 | 
			
		||||
}
 | 
			
		||||
void print(int str){
 | 
			
		||||
	std::cout << str << std::flush;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
void * operator new(unsigned int size)
 | 
			
		||||
{
 | 
			
		||||
  return malloc(size);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void operator delete(void * ptr)
 | 
			
		||||
{
 | 
			
		||||
  free(ptr);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void print(const char* str){
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void print(int str){
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										41
									
								
								src/main.cpp
									
										
									
									
									
								
							
							
						
						
									
										41
									
								
								src/main.cpp
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,6 +1,45 @@
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
#include "hal.h"
 | 
			
		||||
#include "col.h"
 | 
			
		||||
 | 
			
		||||
void draw_foo(int offset, int size, Node* ptr){
 | 
			
		||||
	Value* val = (Value*) ptr;
 | 
			
		||||
	print("\t|");
 | 
			
		||||
	if(ptr)
 | 
			
		||||
		print(ptr->title_);
 | 
			
		||||
	//print(ptr->state);
 | 
			
		||||
	print("|");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void draw_blub(int offset, int size, Node* val){
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
	Node root(nullptr,
 | 
			
		||||
		new Node("foo",
 | 
			
		||||
			new Node("foo",
 | 
			
		||||
				new Node("foo", new Value("FOO",5,draw_foo))
 | 
			
		||||
			),
 | 
			
		||||
			new Node("foo", new Value("FOO",5,draw_foo)),
 | 
			
		||||
			new Node("foo", new Value("FOO",5,draw_foo))
 | 
			
		||||
		),
 | 
			
		||||
		new Node("blub", new Value("BLUB",5,draw_blub)),
 | 
			
		||||
		new Node("blub", new Value("BLUB",5,draw_blub)),
 | 
			
		||||
		new Node("blub", new Value("BLUB",5,draw_blub))
 | 
			
		||||
	);
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
	root.p(0);
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	// 128 x 32
 | 
			
		||||
	Layout l(64);
 | 
			
		||||
 | 
			
		||||
	//build tree
 | 
			
		||||
	//walk tree + allocate slots
 | 
			
		||||
	//position slots
 | 
			
		||||
	//render
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue