Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
146 commits
Select commit Hold shift + click to select a range
d1c80a3
introducing rtl::detail::lambda_table
neeraj31285 Sep 13, 2025
0af7adf
integrated functor/lambda static cache and other types.
neeraj31285 Sep 14, 2025
5762021
functor/lambda index added to type metadata.
neeraj31285 Sep 14, 2025
98ff22f
lambda_registry tested with type-identificaton-system
neeraj31285 Sep 15, 2025
578589f
fixed cland/gcc compile error
neeraj31285 Sep 15, 2025
2a13e3c
New dispatch-design in progress, functor_cache integrated & working.
neeraj31285 Sep 17, 2025
c03af5f
new dispatch-mechanism working, in-progress.
neeraj31285 Sep 17, 2025
d0df224
fixed cland/gcc compile error
neeraj31285 Sep 17, 2025
0fde83b
lambda refactored, std::function init with functor directly.
neeraj31285 Sep 18, 2025
387fcaa
return-type erased from cache/functor/lambda containers.
neeraj31285 Sep 18, 2025
d9aef49
fixed cland/gcc compile error
neeraj31285 Sep 18, 2025
7c1af24
enabled reflective call with known return-type
neeraj31285 Sep 19, 2025
599c1ca
Fixed CMakeLists.txt error.
neeraj31285 Sep 19, 2025
f401a11
method-call with known return-type: In Progress.
neeraj31285 Sep 19, 2025
847e1a2
fixed cland/gcc compile errors, known-return reflective calls in prog…
neeraj31285 Sep 20, 2025
3bd868c
better renaming for functor/method/lambda/cache
neeraj31285 Sep 20, 2025
5e37927
added raw-functor access interface, perfect-forwarding.
neeraj31285 Sep 20, 2025
0e7fc8b
clang/gcc compile error fix.
neeraj31285 Sep 20, 2025
ed06e75
removed unnecessory reinterpret_cast, code refined.
neeraj31285 Sep 20, 2025
dca661d
unicode-char from comment removed.
neeraj31285 Sep 20, 2025
8610277
benchmark for method-call with known return added.
neeraj31285 Sep 21, 2025
fb21c84
refactored/refined & tested caches/lambda/functor for correct fptrs.
neeraj31285 Sep 21, 2025
88f189d
return value propogation optimized.
neeraj31285 Sep 22, 2025
e72d37a
removed temporary affecting stats, from benchmark.
neeraj31285 Sep 22, 2025
7780b02
added type-safe access, code refined.
neeraj31285 Sep 22, 2025
7bdc319
minor refactor.
neeraj31285 Sep 22, 2025
a2330ba
add safe acess api's to dispatch-interface.
neeraj31285 Sep 23, 2025
7d1ef56
fixed nested-template fiasco that clang couldn't handle.
neeraj31285 Sep 23, 2025
0f8f46f
refined dispatch apis, added- rtl::function, rtl::method.
neeraj31285 Sep 23, 2025
c30f20c
fixed gcc 'template' error
neeraj31285 Sep 23, 2025
e82728b
err fix: msvc, removed nested/dependent templates
neeraj31285 Sep 23, 2025
3a6ab51
specalized cache/method_ptr for const-member-functors.
neeraj31285 Sep 23, 2025
e1901e1
minor refactor.
neeraj31285 Sep 24, 2025
046ad80
enabled const-methods access from cache, tests:passing.
neeraj31285 Sep 24, 2025
5099da5
minor refactor.
neeraj31285 Sep 24, 2025
24f9fa2
interface refined. wip.
neeraj31285 Sep 24, 2025
0fb9e1f
fixed error and hardcoded-type bug.
neeraj31285 Sep 24, 2025
bf495e1
type erasing lambdas are stateless now.
neeraj31285 Sep 24, 2025
cdd8676
new dispatch-mechanism integration. wip.
neeraj31285 Sep 25, 2025
e14381f
return-type reased dispatch, wip.
neeraj31285 Sep 25, 2025
cf89007
erasure_base, wip.
neeraj31285 Sep 25, 2025
09d5b6c
fixed last incomplete commit
neeraj31285 Sep 25, 2025
3ad119b
return erased, wip.
neeraj31285 Sep 26, 2025
8937d9c
return erased, wip.
neeraj31285 Sep 27, 2025
7531afa
erased return calls in benchmarks, wip.
neeraj31285 Sep 27, 2025
0312cd3
removed RTTI/virtual-funcs, wip.
neeraj31285 Sep 28, 2025
dc0fff7
return-erased basic integration done, method calls impl.
neeraj31285 Sep 29, 2025
7eb3dd6
gcc/clang compile error fix.
neeraj31285 Sep 29, 2025
5a81261
general refactor, restructure, renames.
neeraj31285 Sep 29, 2025
ef1be6c
return erased-type boxed in RObject, integrated.
neeraj31285 Sep 30, 2025
d73a85f
type-erased return value optimized.
neeraj31285 Sep 30, 2025
e394921
refined erased return-type design.
neeraj31285 Sep 30, 2025
22535c1
erased-target method call benchmark added.
neeraj31285 Oct 2, 2025
7cc85de
fix gcc/clang compile error.
neeraj31285 Oct 2, 2025
40c7661
interface refactored, tests added for known-type-calls.
neeraj31285 Oct 3, 2025
551443e
fix gcc/clang compile error.
neeraj31285 Oct 3, 2025
9a58d1a
static-dispatch test cases, const-method resolution.
neeraj31285 Oct 4, 2025
8713343
Merge branch 'develop' of https://github.com/ReflectCxx/ReflectionTem…
neeraj31285 Oct 4, 2025
491cfed
strict-type-matching for static-typed dispatch, tests.
neeraj31285 Oct 4, 2025
6e5fa13
std::function type-erasure, removed raw-fn-ptrs, flexible now.
neeraj31285 Oct 6, 2025
8eece08
fix gcc/clang compile error.
neeraj31285 Oct 6, 2025
01554f8
minor improvements, renames, clean-up.
neeraj31285 Oct 6, 2025
66725cc
bug fix, general refactor, renames.
neeraj31285 Oct 6, 2025
0410f86
cv/ref/ptr/qualifier based overload test setup.
neeraj31285 Oct 7, 2025
51720da
clang/gcc compile error fix.
neeraj31285 Oct 7, 2025
e592836
cvq/ref/ptr strict overload resolution tests
neeraj31285 Oct 7, 2025
ceb72f1
added missing equality check in tests.
neeraj31285 Oct 8, 2025
b1be57a
ptr overload enabled, const&& overload unsupported now.
neeraj31285 Oct 8, 2025
048c681
clang/gcc compile error fix.
neeraj31285 Oct 8, 2025
f20a579
Merge branch 'develop' of https://github.com/ReflectCxx/ReflectionTem…
neeraj31285 Oct 8, 2025
5f810f4
minor equality bug fix in test-case.
neeraj31285 Oct 8, 2025
ae8bf7c
ref/cref/by-value implicit resolution, added error::RefOverloadAmbigu…
neeraj31285 Oct 9, 2025
9bab1c8
minor improvements, more test-case.
neeraj31285 Oct 9, 2025
58f70e2
more test-cases added.
neeraj31285 Oct 9, 2025
949f66b
minor optimizations & benchmarking tweaks.
neeraj31285 Oct 9, 2025
b98c1cb
adding latest benchmarks logs.
neeraj31285 Oct 9, 2025
2de39de
more test cases.
neeraj31285 Oct 10, 2025
953b13c
few better renames.
neeraj31285 Oct 10, 2025
6650dfb
bind() syntax enabled for new-dispatch-path design.
neeraj31285 Oct 10, 2025
bce3232
new-dispatch-path integration, wip.
neeraj31285 Oct 10, 2025
78bab98
improved unique-type-id for new dispatch design.
neeraj31285 Oct 11, 2025
f3f086e
fix gcc/clang compile error.
neeraj31285 Oct 11, 2025
ac65b04
better callable interface, wip.
neeraj31285 Oct 12, 2025
2cb0562
better callable interface, wip.
neeraj31285 Oct 12, 2025
097b089
better callable interface, wip.
neeraj31285 Oct 13, 2025
c5b2746
callable integration, tests failing, wip.
neeraj31285 Oct 13, 2025
f7649b9
return-erased rtl::function integrated, tetsed. wip.
neeraj31285 Oct 14, 2025
9e3fb9a
fix gcc/clang compile error.
neeraj31285 Oct 14, 2025
a9ee960
minor refactor
neeraj31285 Oct 14, 2025
f298e11
refactor, better syntax for rtl::method
neeraj31285 Oct 14, 2025
adc3b8c
return-erased rtl::method<> impl, wip.
neeraj31285 Oct 15, 2025
1e9cd9f
return-erased rtl::method<> integration, wip.
neeraj31285 Oct 15, 2025
7c40831
function-defs inside struct now, nested template err fix(clang-19)
neeraj31285 Oct 15, 2025
31110b6
rtl::method static-type dispatch tests.
neeraj31285 Oct 16, 2025
2fcfd2b
fix header include error clang/gcc
neeraj31285 Oct 16, 2025
e1db2c5
return-erased rtl::method tests added.
neeraj31285 Oct 16, 2025
f6f282f
minor improvement/refactor/formatting.
neeraj31285 Oct 16, 2025
6b5c0ad
rtl::method<const record_t, _..> test cases added.
neeraj31285 Oct 17, 2025
4b36853
fixed gcc overload resolution error while registration.
neeraj31285 Oct 17, 2025
541e1a1
test case additions, minor refactor/renaming.
neeraj31285 Oct 17, 2025
ea0b4fd
design improvements, phasing old one out.
neeraj31285 Oct 20, 2025
d4d3965
gcc/clang compile error fix.
neeraj31285 Oct 20, 2025
6c0f153
rename/refactor
neeraj31285 Oct 20, 2025
aed37df
type-erasure for methods, design improved.
neeraj31285 Oct 22, 2025
5380665
type-erased interface for methods. wip.
neeraj31285 Oct 23, 2025
c49b501
benchmark code fixes.
neeraj31285 Oct 24, 2025
4663467
benchmark for all-type-erased-method, refactor.
neeraj31285 Oct 24, 2025
e6d46ae
latest benchmark logs added.
neeraj31285 Oct 25, 2025
3693994
static & const method calls. wip.
neeraj31285 Oct 26, 2025
db38f24
builder code cleanup/refactor. static-method calls- wip.
neeraj31285 Oct 28, 2025
a106422
gcc/clang compilation error fix.
neeraj31285 Oct 29, 2025
3da8c70
static-method-calls, tests failing. wip.
neeraj31285 Oct 29, 2025
c645923
static-method calls, wip.
neeraj31285 Oct 29, 2025
9b94e14
static-method call tests, wip.
neeraj31285 Oct 30, 2025
ea32ea4
fix- gcc compile err i.e, expicit ref-overload resolution
neeraj31285 Oct 30, 2025
dba3221
static-method call tests, wip.
neeraj31285 Oct 30, 2025
04c3a65
introducing rtl::static_method.
neeraj31285 Oct 30, 2025
b36f475
static-method, init-error for callables, wip
neeraj31285 Oct 31, 2025
eb3f764
Updated readme.
neeraj31285 Oct 31, 2025
d2c8eb0
Updated Readme.
neeraj31285 Oct 31, 2025
4f82ff4
Updated Readme.
neeraj31285 Oct 31, 2025
2382aef
static-method, test cases fix.
neeraj31285 Nov 1, 2025
7bbdfa7
Updated readme.
neeraj31285 Nov 1, 2025
f5eca8e
Updated Readme.
neeraj31285 Nov 1, 2025
13fc6a4
Updated Readme.
neeraj31285 Nov 1, 2025
125b2f5
Updated Readme, action yml.
neeraj31285 Nov 1, 2025
0bdd773
Updated Readme.
neeraj31285 Nov 1, 2025
5286a9f
Updated Readme.
neeraj31285 Nov 2, 2025
ab3b9cc
static_method test cases, error-codes, doc.
neeraj31285 Nov 2, 2025
1932383
Update README.md
neeraj31285 Nov 2, 2025
7fca65c
Update README.md
neeraj31285 Nov 2, 2025
422906a
Update README.md
neeraj31285 Nov 2, 2025
ab87b86
added test case, readme update.
neeraj31285 Nov 3, 2025
00c1eb5
Merge branch 'release' into develop
neeraj31285 Nov 3, 2025
0e6d702
all test cases passing now.
neeraj31285 Nov 3, 2025
3599c41
fixed conflicts.
neeraj31285 Nov 3, 2025
0250333
Update README.md
neeraj31285 Nov 3, 2025
1d29859
static_method, known args/return type tests. done.
neeraj31285 Nov 4, 2025
7da867a
added latest benchmarks with std::string & std::string_view.
neeraj31285 Nov 4, 2025
7aa25a7
Update README.md
neeraj31285 Nov 4, 2025
d2b9aff
Refactor README for improved readability
neeraj31285 Nov 4, 2025
68d4451
Update README.md
neeraj31285 Nov 4, 2025
6e80bf1
return-erased static_method test, fixes, doc ups.
neeraj31285 Nov 5, 2025
287323e
test-case & doc update.
neeraj31285 Nov 5, 2025
c5d6c27
Create reflection-apis-redefined.txt
neeraj31285 Nov 6, 2025
0d7382c
Rename reflection-apis-redefined.txt to reflection-apis-redefined.md
neeraj31285 Nov 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ name: RTL Build

on:
push:
branches: [ release ]
branches: [ release, develop ]
paths-ignore:
- '**/*.md'
pull_request:
branches: [ release ]
branches: [ release, develop ]
paths-ignore:
- '**/*.md'
workflow_dispatch:
Expand Down
6 changes: 3 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ project(CxxReflectionProject)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")

# Add the subdirectories
add_subdirectory(ReflectionTemplateLib)
add_subdirectory(CxxTestRegistration)
add_subdirectory(RTLTestRunApp)
add_subdirectory(RTLBenchmarkApp)
add_subdirectory(CxxTestProps)
add_subdirectory(CxxTestUtils)
add_subdirectory(ReflectionTemplateLib)
add_subdirectory(RTLTestRunApp)
add_subdirectory(RTLBenchmarkApp)
10 changes: 0 additions & 10 deletions CxxTestProps/inc/Complex.h
Original file line number Diff line number Diff line change
@@ -1,15 +1,5 @@
#pragma once

#include <string>

std::string getComplexNumAsString();

std::string reverseString();

std::string reverseString(std::string pStr);

std::string reverseString(const char* pStr);

namespace complex
{
double getMagnitude();
Expand Down
163 changes: 163 additions & 0 deletions CxxTestProps/inc/StringOps.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
#pragma once

#include <string>

// C-style/free-functions.
std::string getComplexNumAsString();

std::string reverseString();

std::string reverseString(const char* pStr);

std::string reverseString(std::string pStr); // (1) by value

std::string reverseString(std::string& pStr); // (2) lvalue ref

std::string reverseString(const std::string& pStr); // (3) const lvalue ref

std::string reverseString(std::string&& pStr); // (4) rvalue ref

std::string reverseString(std::string* pStr); // (5) pointer

std::string reverseString(const std::string* pStr); // (6) pointer to const

std::string revStrConstRefArg(const std::string_view& pStr);

std::string revStrNonConstRefArg(std::string_view& pStr);

std::string revStrRValueRefArg(std::string_view&& pStr);

std::string revStrOverloadValRef(std::string_view pStr);

std::string revStrOverloadValRef(std::string_view& pStr);

std::string revStrOverloadValCRef(std::string_view pStr);

std::string revStrOverloadValCRef(const std::string_view& pStr);

std::string revStrOverloadRefAndCRef(std::string_view& pStr);

std::string revStrOverloadRefAndCRef(const std::string_view& pStr);


// 'StringM' - String-Mutable, all methods are non-const.
struct StringM
{
constexpr static const char* struct_ = "StringM";

std::string reverseString();

std::string reverseString(const char* pStr);

std::string reverseString(std::string pStr); // (1) by value

std::string reverseString(std::string& pStr); // (2) lvalue ref

std::string reverseString(const std::string& pStr); // (3) const lvalue ref

std::string reverseString(std::string&& pStr); // (4) rvalue ref

std::string reverseString(std::string* pStr); // (5) pointer

std::string reverseString(const std::string* pStr); // (6) pointer to const

std::string revStrConstRefArg(const std::string_view& pStr);

std::string revStrNonConstRefArg(std::string_view& pStr);

std::string revStrRValueRefArg(std::string_view&& pStr);

std::string revStrOverloadValRef(std::string_view pStr);

std::string revStrOverloadValRef(std::string_view& pStr);

std::string revStrOverloadValCRef(std::string_view pStr);

std::string revStrOverloadValCRef(const std::string_view& pStr);

std::string revStrOverloadRefAndCRef(std::string_view& pStr);

std::string revStrOverloadRefAndCRef(const std::string_view& pStr);
};


// 'StringC' - String-Const, all methods are const.
struct StringC
{
constexpr static const char* struct_ = "StringC";

std::string reverseString() const;

std::string reverseString(const char* pStr) const;

std::string reverseString(std::string pStr) const; // (1) by value

std::string reverseString(std::string& pStr) const; // (2) lvalue ref

std::string reverseString(const std::string& pStr) const; // (3) const lvalue ref

std::string reverseString(std::string&& pStr) const; // (4) rvalue ref

std::string reverseString(std::string* pStr) const; // (5) pointer

std::string reverseString(const std::string* pStr) const; // (6) pointer to const

std::string revStrConstRefArg(const std::string_view& pStr) const;

std::string revStrNonConstRefArg(std::string_view& pStr) const;

std::string revStrRValueRefArg(std::string_view&& pStr) const;

std::string revStrOverloadValRef(std::string_view pStr) const;

std::string revStrOverloadValRef(std::string_view& pStr) const;

std::string revStrOverloadValCRef(std::string_view pStr) const;

std::string revStrOverloadValCRef(const std::string_view& pStr) const;

std::string revStrOverloadRefAndCRef(std::string_view& pStr) const;

std::string revStrOverloadRefAndCRef(const std::string_view& pStr) const;
};


// 'StringS' - String-Static, all methods are static.
struct StringS
{
constexpr static const char* struct_ = "StringS";

static std::string reverseString();

static std::string reverseString(const char* pStr);

static std::string reverseString(std::string pStr); // (1) by value

static std::string reverseString(std::string& pStr); // (2) lvalue ref

static std::string reverseString(const std::string& pStr); // (3) const lvalue ref

static std::string reverseString(std::string&& pStr); // (4) rvalue ref

static std::string reverseString(std::string* pStr); // (5) pointer

static std::string reverseString(const std::string* pStr); // (6) pointer to const

static std::string revStrConstRefArg(const std::string_view& pStr);

static std::string revStrNonConstRefArg(std::string_view& pStr);

static std::string revStrRValueRefArg(std::string_view&& pStr);

static std::string revStrOverloadValRef(std::string_view pStr);

static std::string revStrOverloadValRef(std::string_view& pStr);

static std::string revStrOverloadValCRef(std::string_view pStr);

static std::string revStrOverloadValCRef(const std::string_view& pStr);

static std::string revStrOverloadRefAndCRef(std::string_view& pStr);

static std::string revStrOverloadRefAndCRef(const std::string_view& pStr);
};
6 changes: 4 additions & 2 deletions CxxTestProps/src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
# Create a variable containing the source files for your target
set(LOCAL_SOURCES
"${CMAKE_CURRENT_LIST_DIR}/Book.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Complex.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Date.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Person.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Animal.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Library.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Complex.cpp"
"${CMAKE_CURRENT_LIST_DIR}/StringOps.cpp"
)

SET(LOCAL_HEADERS
"${PROJECT_SOURCE_DIR}/inc/Book.h"
"${PROJECT_SOURCE_DIR}/inc/Complex.h"
"${PROJECT_SOURCE_DIR}/inc/Date.h"
"${PROJECT_SOURCE_DIR}/inc/Animal.h"
"${PROJECT_SOURCE_DIR}/inc/Person.h"
"${PROJECT_SOURCE_DIR}/inc/Library.h"
"${PROJECT_SOURCE_DIR}/inc/Complex.h"
"${PROJECT_SOURCE_DIR}/inc/StringOps.h"
)

# Add any additional source files if needed
Expand Down
31 changes: 1 addition & 30 deletions CxxTestProps/src/Complex.cpp
Original file line number Diff line number Diff line change
@@ -1,36 +1,8 @@

#include <complex>
#include <algorithm>

#include "Complex.h"

namespace test_utils {

const char* REV_STR_VOID_RET = "func_reverseString(void)->[return_str]";
}

std::string reverseString()
{
return test_utils::REV_STR_VOID_RET;
}


std::string reverseString(std::string pStr)
{
std::string retStr = pStr;
std::reverse(retStr.begin(), retStr.end());
return retStr;
}


std::string reverseString(const char* pStr)
{
std::string retStr = pStr;
std::reverse(retStr.begin(), retStr.end());
return retStr;
}


namespace complex
{
static double g_imgNumber;
Expand All @@ -51,8 +23,7 @@ namespace complex
}
}


std::string getComplexNumAsString()
{
return std::to_string(complex::g_realNumber) + "i" + (std::to_string(complex::g_imgNumber));
}
}
Empty file added CxxTestProps/src/Complex.h
Empty file.
Loading