Compare commits

..

3 Commits

Author SHA1 Message Date
Brett 4c79cf6808 push 2023-12-23 02:51:44 -05:00
Brett e79741d448 annoying 2023-12-23 02:40:16 -05:00
Brett 033068ff74 process functions, need to add python script next 2023-12-23 01:23:08 -05:00
10 changed files with 102 additions and 43 deletions

Binary file not shown.

View File

@ -1,10 +1,10 @@
# ninja log v5
3 1437 1703269248001211383 libraries/BLT/CMakeFiles/BLT.dir/src/blt/std/string.cpp.o 7372d87554025941
1 1383 1703299843831973242 CMakeFiles/gl_doc_generator.dir/src/main.cpp.o f2846e1dc111dd8
1 1319 1703313187097385701 CMakeFiles/gl_doc_generator.dir/src/main.cpp.o f2846e1dc111dd8
3 3035 1703269249601195503 libraries/BLT/CMakeFiles/BLT.dir/src/blt/std/system.cpp.o 6b34ee1aa4557b8
4 6430 1703269252993161839 libraries/BLT/CMakeFiles/BLT.dir/src/blt/profiling/profiler_v2.cpp.o f7d76198a6666d0a
3 4901 1703269251465177003 libraries/BLT/CMakeFiles/BLT.dir/src/blt/profiling/profiler.cpp.o 98c3613a268835f7
0 552 1703299907953718140 CMakeFiles/gl_doc_generator.dir/src/load_file.cpp.o e3be46751e904b25
1 505 1703313186281395730 CMakeFiles/gl_doc_generator.dir/src/load_file.cpp.o e3be46751e904b25
2 4864 1703269251429177360 libraries/BLT/CMakeFiles/BLT.dir/src/blt/std/format.cpp.o 86854dbc10b97205
5 6828 1703269253393157869 libraries/BLT/CMakeFiles/BLT.dir/src/blt/parse/argparse.cpp.o c25a8a66b746b95f
6829 6962 1703269253521156599 libraries/BLT/libBLT.a f5b601d9b774b003
@ -12,18 +12,13 @@
2 2026 1703269248589205547 libraries/BLT/CMakeFiles/BLT.dir/src/blt/std/loader.cpp.o c1e2cebc92cff5ff
4 891 1703269247453216823 libraries/BLT/CMakeFiles/BLT.dir/src/blt/nbt/nbt_block.cpp.o c189cbf7574512a
4 3961 1703269250525186332 libraries/BLT/CMakeFiles/BLT.dir/src/blt/nbt/nbt.cpp.o 439363bdbfdd4452
552 591 1703299907989719007 gl_doc_generator 7126d327cf7747a5
1319 1357 1703313187133385258 gl_doc_generator 7126d327cf7747a5
1 1470 1703269248033211066 libraries/BLT/CMakeFiles/BLT.dir/src/blt/std/filesystem.cpp.o 1c0fd59b23c040f5
1 2400 1703269248965201816 libraries/BLT/CMakeFiles/BLT.dir/src/blt/std/assert.cpp.o 8c3d34b2a042cd0c
1 553 1703299929682218495 CMakeFiles/gl_doc_generator.dir/src/load_file.cpp.o e3be46751e904b25
553 593 1703299929722219376 gl_doc_generator 7126d327cf7747a5
1 1387 1703299942986503590 CMakeFiles/gl_doc_generator.dir/src/main.cpp.o f2846e1dc111dd8
1387 1440 1703299943038504672 gl_doc_generator 7126d327cf7747a5
0 1394 1703299946414574483 CMakeFiles/gl_doc_generator.dir/src/main.cpp.o f2846e1dc111dd8
1394 1435 1703299946454575304 gl_doc_generator 7126d327cf7747a5
1 543 1703299973027090309 CMakeFiles/gl_doc_generator.dir/src/load_file.cpp.o e3be46751e904b25
543 587 1703299973071091110 gl_doc_generator 7126d327cf7747a5
0 523 1703299995183474531 CMakeFiles/gl_doc_generator.dir/src/load_file.cpp.o e3be46751e904b25
523 565 1703299995223475188 gl_doc_generator 7126d327cf7747a5
1 528 1703300016059800637 CMakeFiles/gl_doc_generator.dir/src/load_file.cpp.o e3be46751e904b25
528 566 1703300016095801169 gl_doc_generator 7126d327cf7747a5
1 634 1703316313529228992 CMakeFiles/gl_doc_generator.dir/src/load_file.cpp.o e3be46751e904b25
1 1475 1703316327113168829 CMakeFiles/gl_doc_generator.dir/src/main.cpp.o f2846e1dc111dd8
1475 1531 1703316327169168575 gl_doc_generator 7126d327cf7747a5
1 1448 1703316339001113988 CMakeFiles/gl_doc_generator.dir/src/main.cpp.o f2846e1dc111dd8
1448 1500 1703316339049113762 gl_doc_generator 7126d327cf7747a5
1 603 1703316356065031799 CMakeFiles/gl_doc_generator.dir/src/load_file.cpp.o e3be46751e904b25
603 652 1703316356113031561 gl_doc_generator 7126d327cf7747a5

View File

@ -1,3 +1,3 @@
Start testing: Dec 22 21:53 EST
Start testing: Dec 23 02:25 EST
----------------------------------------------------------
End testing: Dec 22 21:53 EST
End testing: Dec 23 02:25 EST

Binary file not shown.

View File

@ -17,6 +17,7 @@
*/
#include "load_file.h"
#include <blt/std/loader.h>
#include <regex>
namespace blt
{
@ -59,7 +60,7 @@ namespace blt
continue;
}
BLT_TRACE("We have '%c' with '%s' at index %d state %d", c, data.c_str(), index, state);
//BLT_TRACE("We have '%c' with '%s' at index %d state %d", c, data.c_str(), index, state);
switch (state)
{
@ -74,14 +75,14 @@ namespace blt
auto s3 = full_data.find(' ', s2);
if (s3 == std::string_view::npos)
s3 = full_data.size();
if (blt::string::starts_with(full_data, "#define"))
if (blt::string::starts_with(full_data, "#define gl"))
process_gl_func(std::string_view(&full_data[s1], s3 - s1));
reset();
} else if (c == '\n')
last = false;
else if (c == '\\')
last = true;
else if (!(std::isalpha(c) || c == '_' || std::isspace(c)))
else if (!(is_ident(c) || std::isspace(c)))
reset();
break;
case state_type::IDENTIFIER:
@ -89,47 +90,78 @@ namespace blt
state = state_type::FUNCTION;
else if (std::isspace(c))
state = state_type::POSSIBLE_FUNC;
else if (!(std::isalnum(c) || c == '_'))
else if (!is_ident(c))
reset();
break;
case state_type::POSSIBLE_FUNC:
if (c == '(')
state = state_type::POSSIBLE_FUNC;
state = state_type::FUNCTION;
else if (!std::isspace(c))
reset();
{
if (is_ident(c))
state = state_type::FUNCTION;
else
reset();
}
break;
case state_type::FUNCTION:
if (c == '{')
if (c == ')')
{
// state = state_type::OTHER;
// state_container con;
// con.type = state_type::FUNCTION;
// con.full_data = data;
// data = "";
// con.data = std::string_view(con.full_data.data(), con.full_data.find('('));
BLT_DEBUG(data);
// Jacob if you're actually reading this, this is all ugly & hacky code :3
// please dm that you've read to here <3
// enjoy trying to understand it.
auto end = data.find('(') - 1;
// gotta remove whitespace
while (end > 0 && std::isspace(data[end]))
end--;
// end isn't inclusive
end += 1;
// begin is
auto begin = end - 1;
while (begin > 0 && is_ident(data[begin]))
begin--;
// skip the ws
begin += 1;
auto sv = std::string_view(&data[begin], end - begin);
if (blt::string::starts_with(sv, "gl"))
process_gl_func(sv);
reset();
} else if (!(c == ')' || std::isalnum(c) || c == ',' || std::isblank(c)))
} else if (!(c == '(' || is_ident(c) || c == ',' || std::isspace(c)))
reset();
break;
case state_type::OTHER:
if (c == '#')
state = state_type::PREPROCESSOR_DEFINE;
else if (c == '\n')
else if (std::isspace(c))
reset();
else if (data.size() <= 1 && (std::isalpha(c) || c == '_'))
else if (data.size() <= 1 && is_ident_b(c))
state = state_type::IDENTIFIER;
break;
}
}
BLT_DEBUG("Finished in state %d", (int) state);
// BLT_DEBUG("Finished in state %d", (int) state);
// BLT_DEBUG("With data %s", parsed.c_str());
return *this;
}
void parser::process_gl_func(std::string_view func_name)
{
BLT_INFO("Running on function %s", std::string(func_name).c_str());
// std::string reference_link = "https://registry.khronos.org/OpenGL-Refpages/gl4/html/";
// reference_link.reserve(func_name.length() + 6);
// reference_link += func_name;
// reference_link += ".xhtml";
// auto pid = popen(pythonPath + " " + generatorPath + " " + reference_link, "r");
// BLT_INFO("Running on function %s", std::string(func_name).c_str());
std::cout << std::string(func_name) << std::endl;
}
std::string parser::strip_func(std::string_view func)
{
std::string f (func);
std::regex matrx(R"(((Matrix)(\d|\w)+)|(\d|I|L)+(i|u|f|d|v|s|N|b|I)+)");
return f;
}
}

View File

@ -22,6 +22,7 @@
#include <string>
#include <string_view>
#include <blt/std/logging.h>
#include <cctype>
namespace blt
{
@ -31,7 +32,7 @@ namespace blt
OTHER, // literally anything else (we do not care about it)
PREPROCESSOR_DEFINE, // #define
IDENTIFIER, // either a variable or a type (void / thisismyvar)
POSSIBLE_FUNC,
POSSIBLE_FUNC, // we had an identifier and found a space
FUNCTION // myfunctioname(
};
@ -49,6 +50,9 @@ namespace blt
std::string file;
std::string data;
std::string parsed;
std::string pythonPath;
std::string generatorPath;
state_type state = state_type::OTHER;
std::vector<state_container> parsed_tokens;
@ -59,10 +63,22 @@ namespace blt
data.clear();
}
inline static bool is_ident_b(char c)
{
return std::isalpha(c) || c == '_';
}
inline static bool is_ident(char c)
{
return std::isalnum(c) || c == '_';
}
std::string strip_func(std::string_view func);
void process_gl_func(std::string_view func_name);
public:
explicit parser(std::string_view path): path(path)
explicit parser(std::string_view path, std::string_view pythonPath, std::string_view generatorPath):
path(path), pythonPath(pythonPath), generatorPath(generatorPath)
{}
parser& load_file();

View File

@ -25,11 +25,11 @@ int main(int argc, const char** argv)
BLT_INFO("Using %s on file %s", generatorPath.c_str(), filePath.c_str());
blt::parser file_parser(filePath);
blt::parser file_parser(filePath, pythonPath, generatorPath);
file_parser.load_file().parse();
auto vec = file_parser.get();
BLT_DEBUG("Result:\n%s", vec.c_str());
//BLT_DEBUG("Result:\n%s", vec.c_str());
return 0;
}

22
test.h
View File

@ -25,17 +25,33 @@
int ident = 0;
void func1(){
// TODO:
typedef void (*glCopyTextureSubImage3D)(int n, const int * pipelines);
void glDrawTransformFeedbackStream()
{
}
void func2()
void func1()
{
}
void
func2
()
{
}
void func3
() {
()
{
}