parses and lists all sims
This commit is contained in:
commit
8f975735b2
6 changed files with 244 additions and 0 deletions
50
Makefile
Normal file
50
Makefile
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
CC = gcc
|
||||
CXX = g++
|
||||
|
||||
CPPFLAGS = -g
|
||||
CFLAGS = -g
|
||||
LDFLAGS = -g
|
||||
LDLIBS = -lfltk
|
||||
|
||||
|
||||
SRC_DIR = src
|
||||
OBJ_DIR = obj
|
||||
BIN_DIR = bin
|
||||
|
||||
|
||||
|
||||
EXE = $(BIN_DIR)/main
|
||||
|
||||
C_SRC := $(wildcard $(SRC_DIR)/*.c) #GET LIST OF ALL C FILES
|
||||
CPP_SRC := $(wildcard $(SRC_DIR)/*.cpp) #GET LIST OF ALL CPP FILES
|
||||
|
||||
#SRC := $(C_SRC) $(CPP_SCR)
|
||||
|
||||
|
||||
C_OBJ := $(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(C_SRC)) #MAKE LIST OF ALL C OBJECT FILES THAT NEED TO BE BUILT
|
||||
CPP_OBJ := $(patsubst $(SRC_DIR)/%.cpp, $(OBJ_DIR)/%.o, $(CPP_SRC)) #MAKE LIST OF ALL CPP OBJECT FILES THAT NEED TO BE BUILT
|
||||
|
||||
OBJ := $(C_OBJ) $(CPP_OBJ)
|
||||
|
||||
|
||||
all: $(EXE)
|
||||
|
||||
$(EXE): $(OBJ) | $(BIN_DIR)
|
||||
$(CXX) $(LDFLAGS) $^ $(LDLIBS) -o $@
|
||||
|
||||
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
|
||||
|
||||
|
||||
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp | $(OBJ_DIR)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
|
||||
|
||||
$(BIN_DIR) $(OBJ_DIR):
|
||||
mkdir -p $@
|
||||
|
||||
|
||||
clean:
|
||||
@$(RM) -rv $(BIN_DIR) $(OBJ_DIR)
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
170
src/main.cpp
Normal file
170
src/main.cpp
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
#include <FL/Enumerations.H>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
|
||||
|
||||
#include "testcpp.hpp"
|
||||
|
||||
|
||||
#include <FL/Fl_Window.H>
|
||||
#include <FL/Fl_Box.H>
|
||||
#include <FL/Fl_Multi_Browser.H>
|
||||
#include <FL/Fl.H>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
||||
struct Person {
|
||||
std::string year;
|
||||
std::string name;
|
||||
|
||||
Person(std::string& y, std::string& n) : year(y), name(n) {}
|
||||
std::string toString() const {
|
||||
return "{(Person): " + year + ", " + name + "}";
|
||||
}
|
||||
};
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const Person& e) {
|
||||
//os << "{(Person): " << e.year << ", " << e.name << "}";
|
||||
os << e.toString();
|
||||
return os;
|
||||
}
|
||||
|
||||
|
||||
struct BasicEntry {
|
||||
Person A;
|
||||
Person B;
|
||||
|
||||
std::string matchlink;
|
||||
|
||||
std::string toString() const {
|
||||
return "{(BasicEntry): " + A.toString() + ", " + B.toString() + ", " + matchlink + "}";
|
||||
}
|
||||
|
||||
};
|
||||
std::ostream& operator<<(std::ostream& os, const BasicEntry& e) {
|
||||
//os << "{(BasicEntry): " << e.A << ", " << e.B << ", " << e.matchlink << "}";
|
||||
os << e.toString();
|
||||
return os;
|
||||
}
|
||||
|
||||
|
||||
std::vector<BasicEntry> MakeEntires(std::string filename) {
|
||||
|
||||
std::vector<BasicEntry> out;
|
||||
|
||||
std::ifstream matches(filename);
|
||||
|
||||
if (!matches.is_open()) {
|
||||
std::cout << "Err reading " <<filename << std::endl;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
std::string line;
|
||||
|
||||
std::string line1;
|
||||
std::string line2;
|
||||
|
||||
size_t linenum = 1; // One indexed like devtools
|
||||
while(std::getline(matches, line)) {
|
||||
if (linenum < 15) {
|
||||
|
||||
} else {
|
||||
if ( (linenum - 15) % 3 == 0) {
|
||||
line1 = line;
|
||||
if (line == "</td></tr></tbody></table>") break;
|
||||
} else if ( (linenum - 15) % 3 == 1) {
|
||||
line2 = line;
|
||||
|
||||
// std::cout << "Debug: L1: " << line1 << std::endl;
|
||||
// std::cout << "Debug: L2: " << line2 << std::endl;
|
||||
|
||||
|
||||
auto firstquote = line1.find("\"");
|
||||
// printf("fq: %ld\n", firstquote);
|
||||
auto secondquote = line1.find("\"", firstquote+1);
|
||||
// printf("sq: %ld\n", secondquote);
|
||||
auto matchlink = line1.substr(firstquote+1, secondquote - (firstquote+1));
|
||||
|
||||
auto firstslash = line1.find("/", secondquote+ 1);
|
||||
auto secondslash = line1.find("/", firstslash+1);
|
||||
auto thirdslash = line1.find("/", secondslash+1);
|
||||
|
||||
auto p1class = line1.substr(firstslash+1, secondslash - firstslash - 1);
|
||||
auto p1name = line1.substr(secondslash+1, thirdslash - secondslash -1);
|
||||
|
||||
|
||||
firstquote = line2.find("\"");
|
||||
secondquote = line2.find("\"", firstquote+1);
|
||||
firstslash = line2.find("/", secondquote+1);
|
||||
secondslash = line2.find("/", firstslash+1);
|
||||
thirdslash = line2.find("/", secondslash+1);
|
||||
|
||||
auto p2class = line2.substr(firstslash+1, secondslash - (firstslash+1));
|
||||
auto p2name = line2.substr(secondslash+1, thirdslash - (secondslash+1));
|
||||
|
||||
auto p1 = Person(p1class, p1name);
|
||||
|
||||
auto p2 = Person(p2class, p2name);
|
||||
printf("%s\n", p2class.c_str());
|
||||
|
||||
BasicEntry finent = {.A = p1, .B = p2, .matchlink = matchlink};
|
||||
|
||||
out.push_back(finent);
|
||||
|
||||
}
|
||||
}
|
||||
linenum++;
|
||||
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
struct State {
|
||||
std::vector<BasicEntry> entries;
|
||||
};
|
||||
|
||||
|
||||
int main (int argc, char ** argv) {
|
||||
if (argc < 2) {
|
||||
std::cout << "Not enough args" << std::endl;
|
||||
exit(1);
|
||||
}
|
||||
State s;
|
||||
s.entries = MakeEntires(argv[1]);
|
||||
|
||||
|
||||
for (auto e : s.entries) {
|
||||
std::cout << e << std::endl;
|
||||
}
|
||||
|
||||
|
||||
auto window = std::make_unique<Fl_Window>(300, 300, 300, 300, "MossMan :D");
|
||||
|
||||
auto group = std::make_unique<Fl_Group>(0,0,300,300);
|
||||
auto box = std::make_unique<Fl_Box>(0,0,100,50,"MossMan");
|
||||
box->labelsize(36);
|
||||
box->labelfont(FL_TIMES | FL_BOLD);
|
||||
box->align(FL_ALIGN_INSIDE | FL_ALIGN_TOP_LEFT);
|
||||
auto browser = std::make_unique<Fl_Multi_Browser>(0,51,300,250);
|
||||
|
||||
|
||||
for (auto e : s.entries) {
|
||||
auto h = ((e.A.year + "/" + e.A.name) + " and " + (e.B.year + "/" + e.B.name));
|
||||
browser->add(h.c_str());
|
||||
}
|
||||
|
||||
|
||||
group->resizable(*browser);
|
||||
group->end();
|
||||
|
||||
|
||||
window->resizable(*group);
|
||||
window->end();
|
||||
|
||||
window->show();
|
||||
|
||||
return Fl::run();
|
||||
}
|
||||
5
src/testc.c
Normal file
5
src/testc.c
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
#include <stdio.h>
|
||||
|
||||
void TestC() {
|
||||
printf("TestC\n");
|
||||
}
|
||||
6
src/testc.h
Normal file
6
src/testc.h
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef TESTC_HEADER
|
||||
#define TESTC_HEADER
|
||||
|
||||
void TestC();
|
||||
|
||||
#endif
|
||||
7
src/testcpp.cpp
Normal file
7
src/testcpp.cpp
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
void TestCPPFunc() {
|
||||
cout << "TestCPPFunc" << endl;
|
||||
|
||||
}
|
||||
6
src/testcpp.hpp
Normal file
6
src/testcpp.hpp
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef TESTCPP_HEADER
|
||||
#define TESTCPP_HEADER
|
||||
|
||||
void TestCPPFunc();
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue