From 619fd34fca95a27cf013908a4d6cefdefb35c081 Mon Sep 17 00:00:00 2001 From: Ckristian Duran Date: Wed, 1 May 2024 13:37:53 +0900 Subject: [PATCH 1/3] Fixes to get it compilable --- Makefile | 2 +- include/utils.h | 2 +- src/circuit.cpp | 2 +- src/utils.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 48d6523..4d2b127 100644 --- a/Makefile +++ b/Makefile @@ -39,5 +39,5 @@ obj/%.o : src/%.cpp $(COBJS) : $(CHDRS) clean: - -rm -f obj/* bin/* src/parseYY.cpp src/parseYY.hpp src/parseLEX.cpp + -rm -f obj/*.o bin/cspice src/parseYY.cpp src/parseYY.hpp src/parseLEX.cpp diff --git a/include/utils.h b/include/utils.h index fbbbec5..cd7d82a 100644 --- a/include/utils.h +++ b/include/utils.h @@ -13,7 +13,7 @@ extern void printFormula(const vector > & , ostream &) ; extern complex evalFormula(const vector & , const double&); extern vector > expandFormula(const vector > &) ; vector numericalIntegration(const vector& times,Simulator::TransferFunction& tf, unsigned shift = 8) ; -extern unsigned long long hash(const char *) ; +extern unsigned long long util_hash(const char *) ; #endif /* __UTILS_H__ */ diff --git a/src/circuit.cpp b/src/circuit.cpp index 4c73e11..9ecee33 100644 --- a/src/circuit.cpp +++ b/src/circuit.cpp @@ -111,7 +111,7 @@ void Circuit::dfs( // Be ware that, we have to take the risk of // hash(a) + hash(b) == hash(c) + hash(d), // though I don't think it would happen so easily. - hashValue += hash(current_tree[i]->formula().c_str()) ; + hashValue += util_hash(current_tree[i]->formula().c_str()) ; sign *= current_tree[i]->sign() ; } diff --git a/src/utils.cpp b/src/utils.cpp index cdb5f87..8e3e06f 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -98,7 +98,7 @@ ostream& operator<<(ostream& out , const Element& element) { return out ; } -unsigned long long hash(const char * p) { +unsigned long long util_hash(const char * p) { // using FNV-1a hash algorithm const unsigned long long prime = 1099511628211ull ; unsigned long long result = 14695981039346656037ull ; From 2aaebc0161475fb6eaf618a6d5e398bc8ff6185a Mon Sep 17 00:00:00 2001 From: Jim Fialho Date: Sat, 30 Nov 2024 13:52:30 -0500 Subject: [PATCH 2/3] Small modifications to make it compile without warnings or errors --- .vscode/settings.json | 3 +++ .vscode/tasks.json | 28 ++++++++++++++++++++++++++++ Makefile | 31 ++++++++++++++++++++----------- include/parser.h | 2 +- include/source.h | 4 ++-- src/parser.cpp | 2 +- src/parser.l | 2 +- 7 files changed, 56 insertions(+), 16 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..f34857d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "C_Cpp.default.configurationProvider": "ms-vscode.makefile-tools" +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..35b9502 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,28 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Build with Make", + "type": "shell", + "command": "make", + "args": [], + "group": { + "kind": "build", + "isDefault": true + }, + "problemMatcher": { + "owner": "cpp", + "fileLocation": "absolute", + "pattern": { + "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", + "file": 1, + "line": 2, + "column": 3, + "severity": 4, + "message": 5 + } + }, + "detail": "Custom task to build using make" + } + ] +} diff --git a/Makefile b/Makefile index 4d2b127..96e220c 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,22 @@ -LEX = flex +LEX = flex YACC = bison -LEX_FLAG = -Pparse -YACC_FLAG = -d -p parse +LEX_FLAG = -Pparse +YACC_FLAG = -d -p parse -CXX = g++ -#CFLAGS = -g -Iinclude -CFLAGS = -O3 -Iinclude -Wall -CSRCS = $(wildcard src/*.cpp) -CHDRS = $(wildcard include/*.h) -#COBJS = $(addsuffix .o, $(basename $(CSRCS))) +CXX = g++ +CFLAGS = -O3 -Iinclude -Wall +CFLAGS_STFU = -Wno-unused-function -Wno-unneeded-internal-declaration +CSRCS = $(wildcard src/*.cpp) +CHDRS = $(wildcard include/*.h) -COBJS = obj/main.o obj/simulator.o obj/circuit.o obj/utils.o obj/parseLEX.o obj/parseYY.o +COBJS = obj/main.o obj/simulator.o obj/circuit.o obj/utils.o obj/parseLEX.o obj/parseYY.o -all : bin/cspice +.PHONY: create_dirs + +all : create_dirs bin/cspice + +create_dirs: + mkdir -p bin obj src/parseLEX.cpp: src/parser.l src/parseYY.hpp @echo "> lexing: $<" @@ -25,6 +29,10 @@ src/parseYY.cpp src/parseYY.hpp: src/parser.y @mv parseYY.hpp src/parseYY.hpp @ln -sf src/parseYY.hpp include/parseYY.hpp +# Special rule for parseLEX.o to shut up warnings from autogenerated source +obj/parseLEX.o : src/parseLEX.cpp + $(CXX) $(CFLAGS) ${CFLAGS_STFU} -c -o $@ $< + obj/parseYY.o : src/parser.cpp bin/cspice : $(COBJS) @@ -40,4 +48,5 @@ $(COBJS) : $(CHDRS) clean: -rm -f obj/*.o bin/cspice src/parseYY.cpp src/parseYY.hpp src/parseLEX.cpp + -rm -rf bin obj diff --git a/include/parser.h b/include/parser.h index b633e12..e4028b8 100644 --- a/include/parser.h +++ b/include/parser.h @@ -10,7 +10,7 @@ using namespace std; class Parser { public: - Parser(const char *) ; + Parser(const char* fname = nullptr) ; const Circuit& getCircuit() const { return circuit; } const vector& getConfig() const { return config; } Circuit& getCircuit() { return circuit; } diff --git a/include/source.h b/include/source.h index 1e4b02f..1fdae38 100644 --- a/include/source.h +++ b/include/source.h @@ -11,8 +11,8 @@ class Source { _name() , _prevValue(0.0) , _nextValue(0.0) , - _n1(NULL) , - _n2(NULL) { } + _n1(0) , + _n2(0) { } Source(const char * name , const int n1 , const int n2 , const double pv , const double nv) : _name(name) , diff --git a/src/parser.cpp b/src/parser.cpp index af3ca8b..f7521f7 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -1,4 +1,4 @@ -Parser::Parser(const char * fname = NULL) { +Parser::Parser(const char * fname) { extern FILE * yyin ; extern int yyparse() ; diff --git a/src/parser.l b/src/parser.l index 620af0b..af637cd 100644 --- a/src/parser.l +++ b/src/parser.l @@ -282,7 +282,7 @@ FNAME (([0-9a-zA-Z\.\-_])+\.eps) . { /* rest cases */ char msg[40] ; - sprintf(msg , "Unexpected character: '%s'" , escape(yytext)) ; + snprintf(msg , 40, "Unexpected character: '%s'" , escape(yytext)) ; yyerror(msg) ; return yytext[0] ; } From 1bb5509e42298031f95d812738af6a5d40814f8c Mon Sep 17 00:00:00 2001 From: Jim Fialho Date: Sat, 30 Nov 2024 13:55:01 -0500 Subject: [PATCH 3/3] Ignore vscode config files --- .gitignore | 1 + .vscode/settings.json | 3 --- .vscode/tasks.json | 28 ---------------------------- 3 files changed, 1 insertion(+), 31 deletions(-) delete mode 100644 .vscode/settings.json delete mode 100644 .vscode/tasks.json diff --git a/.gitignore b/.gitignore index 78c93ff..31eed88 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ src/parseLEX.cpp *.swp *.eps *.plt +.vscode/ diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index f34857d..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "C_Cpp.default.configurationProvider": "ms-vscode.makefile-tools" -} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index 35b9502..0000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "Build with Make", - "type": "shell", - "command": "make", - "args": [], - "group": { - "kind": "build", - "isDefault": true - }, - "problemMatcher": { - "owner": "cpp", - "fileLocation": "absolute", - "pattern": { - "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", - "file": 1, - "line": 2, - "column": 3, - "severity": 4, - "message": 5 - } - }, - "detail": "Custom task to build using make" - } - ] -}