20 KiB
Knowledge Base
Guidance
The following data types are preferred:
- For any code interops with Windows API, use Windows API specific types.
- Use signed integer type
vintor unsigned integer typevuintfor general purpose. It always has the size of a pointer. - Use signed integer types when the size is critical:
vint8_t,vint16_t,vint32_t,vint64_t. - Use unsigned integer types when the size is critical:
vuint8_t,vuint16_t,vuint32_t,vuint64_t. - Use
atomic_vintfor atomic integers, it is a rename ofstd::atomic<vint>. - Use
DateTimefor date times.
Vlpp
Files from Import:
- Vlpp.h
- Vlpp.cpp
- Vlpp.Windows.cpp
- Vlpp.Linux.cpp
Online documentation: https://gaclib.net/doc/current/vlpp/home.html
Vlpp is the foundational library that provides STL replacements and basic utilities.
It is the cornerstone of the entire framework, offering string handling, collections, lambda expressions, memory management, and primitive data types.
Use this when you need basic data structures without depending on STL.
This project prefers wchar_t over other char types and provides immutable string types, smart pointers, collection classes, and LINQ-like operations.
Detailed project guidance: Index_Vlpp.md
VlppOS
Files from Import:
- VlppOS.h
- VlppOS.cpp
- VlppOS.Windows.cpp
- VlppOS.Linux.cpp
Online documentation: https://gaclib.net/doc/current/vlppos/home.html
VlppOS provides cross-platform OS abstraction for file system operations, streams, locale support, and multi-threading. Use this when you need to interact with the operating system in a portable way. It offers locale-aware string manipulation, file system access, various stream types with encoding/decoding capabilities, and comprehensive multi-threading support with synchronization primitives. It offers inter-process communication structure, but actual network protocol implementations are subject for referencing or writing demoes.
Detailed project guidance: Index_VlppOS.md
VlppRegex
Files from Import:
- VlppRegex.h
- VlppRegex.cpp
Online documentation: https://gaclib.net/doc/current/vlppregex/home.html
VlppRegex provides regular expression functionality with .NET-like syntax but with important differences. Use this when you need pattern matching and text processing capabilities.
Pattern definition with .NET-like syntax but specific escaping and character matching rules.
Check out comments before class Regex_ for a full syntax description.
The regular expression syntax is mostly compatible with .NET but has important differences:
- Both
/and\perform escaping (prefer/to avoid C++ string literal conflicts) .matches literal '.' character, while/.or\.matches all characters- DFA incompatible features significantly impact performance
- Detailed syntax description is available in
Regex_<T>class comments
Detailed project guidance: Index_VlppRegex.md
VlppReflection
Files from Import:
- VlppReflection.h
- VlppReflection.cpp
Online documentation: https://gaclib.net/doc/current/vlppreflection/home.html
VlppReflection provides runtime reflection capabilities for C++ classes and functions. Use this when you need to work with type metadata, register classes for scripting, or implement dynamic behavior. It supports three compilation levels: full reflection, metadata-only, and no reflection. Registration must happen in dedicated files and follows specific patterns for enums, structs, classes, and interfaces.
Detailed project guidance: Index_VlppReflection.md
VlppParser2
Files from Import:
- VlppGlrParser.h
- VlppGlrParser.cpp
Online documentation: https://gaclib.net/doc/current/vlppparser2/home.html
VlppParser2 implements GLR parsers based on customized and enhanced EBNF syntax. Use this when you need to parse complex grammars or implement domain-specific languages. The documentation for VlppParser2 is not ready yet.
Detailed project guidance: Index_VlppParser2.md
Workflow
Files from Import:
- VlppWorkflowLibrary.h
- VlppWorkflowLibrary.cpp
- VlppWorkflowCompiler.h
- VlppWorkflowCompiler.cpp
- VlppWorkflowRuntime.h
- VlppWorkflowRuntime.cpp
Online documentation: https://gaclib.net/doc/current/workflow/home.html
Workflow is a script language based on C++ reflection that can execute scripts at runtime or generate equivalent C++ code. Use this when you need scripting capabilities, code generation, or when working with GacUI XML files. It can execute the script if reflection is turned on. It can generate equivalent C++ source files from the the script. It can run Workflow with RPC on Workflow declared interfaces, but the user is responsible to offere ability of data transmission.
Detailed project guidance: Index_Workflow.md
GacUI
Online documentation: https://gaclib.net/doc/current/gacui/home.html
GacUI is a cross-platform GUI library that comes with an XML-based UI definition system and a compiler. Use this when you need to create desktop applications with rich user interfaces. It provides a comprehensive testing framework, XML-to-C++ compilation, and integrates with the Workflow script language for event handling and data binding.
Detailed project guidance: Index_GacUI.md
Experiences and Learnings
Copy of Online Manual
Vlpp OS
Vlpp Parser2
Workflow Script
- Running a Script
- Syntax
- Runtime Instructions
- C++ Code Generation
GacUI
- Knowledge Base
- GacUI XML Resource
- GacUI Components
- Elements
- Compositions
- Controls
- Control Templates
- Item Templates
- Components
- Advanced Topics
- Hosted Mode and Remote Protocol