SkillAgentSearch skills...

Uprintf

Header-only library for printing anything in C/C++ on Linux.

Install / Use

/learn @spevnev/Uprintf

README

Universal printf

uprintf is a header-only library for printing anything in C/C++.

Examples

Examples and their outputs can be found in examples, and can be built using make examples.

Example outputs

<details> <summary>avl (<a href="https://github.com/etherealvisage/avl">src</a>)</summary>
AVL tree: {
  avl_tree_node_t *root = 0x7bc351a1ffd0 ({
    avl_tree_node_t *left = 0x7bc3519fffd0 ({
      avl_tree_node_t *left = 0x7bc3519effd0 ({
        avl_tree_node_t *left = 0x7bc3519e7fd0 ({
          avl_tree_node_t *left = 0x7bc3519e3fd0 ({...})
          avl_tree_node_t *right = 0x7bc3519ebfd0 ({...})
          int depth = 10
          void *key = 0x1ff
          void *data = 0x1ff
        })
        avl_tree_node_t *right = 0x7bc3519f7fd0 ({
          avl_tree_node_t *left = 0x7bc3519f3fd0 ({...})
          avl_tree_node_t *right = 0x7bc3519fbfd0 ({...})
          int depth = 10
          void *key = 0x5ff
          void *data = 0x5ff
        })
        int depth = 11
        void *key = 0x3ff
        void *data = 0x3ff
      })
      avl_tree_node_t *right = 0x7bc351a0ffd0 ({
        avl_tree_node_t *left = 0x7bc351a07fd0 ({
          avl_tree_node_t *left = 0x7bc351a03fd0 ({...})
          avl_tree_node_t *right = 0x7bc351a0bfd0 ({...})
          int depth = 10
          void *key = 0x9ff
          void *data = 0x9ff
        })
        avl_tree_node_t *right = 0x7bc351a17fd0 ({
          avl_tree_node_t *left = 0x7bc351a13fd0 ({...})
          avl_tree_node_t *right = 0x7bc351a1bfd0 ({...})
          int depth = 10
          void *key = 0xdff
          void *data = 0xdff
        })
        int depth = 11
        void *key = 0xbff
        void *data = 0xbff
      })
      int depth = 12
      void *key = 0x7ff
      void *data = 0x7ff
    })
    avl_tree_node_t *right = 0x7bc351a3ffd0 ({
      avl_tree_node_t *left = 0x7bc351a2ffd0 ({
        avl_tree_node_t *left = 0x7bc351a27fd0 ({
          avl_tree_node_t *left = 0x7bc351a23fd0 ({...})
          avl_tree_node_t *right = 0x7bc351a2bfd0 ({...})
          int depth = 10
          void *key = 0x11ff
          void *data = 0x11ff
        })
        avl_tree_node_t *right = 0x7bc351a37fd0 ({
          avl_tree_node_t *left = 0x7bc351a33fd0 ({...})
          avl_tree_node_t *right = 0x7bc351a3bfd0 ({...})
          int depth = 10
          void *key = 0x15ff
          void *data = 0x15ff
        })
        int depth = 11
        void *key = 0x13ff
        void *data = 0x13ff
      })
      avl_tree_node_t *right = 0x7bc351a5ffd0 ({
        avl_tree_node_t *left = 0x7bc351a4ffd0 ({
          avl_tree_node_t *left = 0x7bc351a47fd0 ({...})
          avl_tree_node_t *right = 0x7bc351a57fd0 ({...})
          int depth = 11
          void *key = 0x1bff
          void *data = 0x1bff
        })
        avl_tree_node_t *right = 0x7bc351a6ffd0 ({
          avl_tree_node_t *left = 0x7bc351a67fd0 ({...})
          avl_tree_node_t *right = 0x7bc351a77fd0 ({...})
          int depth = 11
          void *key = 0x23ff
          void *data = 0x23ff
        })
        int depth = 12
        void *key = 0x1fff
        void *data = 0x1fff
      })
      int depth = 13
      void *key = 0x17ff
      void *data = 0x17ff
    })
    int depth = 14
    void *key = 0xfff
    void *data = 0xfff
  })
  int(void *, void *) comparator = 0x557bc91077ae (int cmp(void *k1, void *k2))
  void(void *) destructor = NULL
}
</details> <details> <summary>sqlite (<a href="https://www.sqlite.org">src</a>)</summary>
Sqlite's database: <#0> {
    sqlite3_vfs *pVfs = 0x558311446500 (<#1> {
        int iVersion = 3
        int szOsFile = 120
        int mxPathname = 512
        sqlite3_vfs *pNext = 0x558311097720 ({
            int iVersion = 2
            int szOsFile = 120
            int mxPathname = 1024
            sqlite3_vfs *pNext = 0x5583114466f8 ({
                int iVersion = 3
                int szOsFile = 120
                int mxPathname = 512
                sqlite3_vfs *pNext = 0x558311446650 ({
                    int iVersion = 3
                    int szOsFile = 120
                    int mxPathname = 512
                    sqlite3_vfs *pNext = 0x5583114465a8 ({
                        int iVersion = 3
                        int szOsFile = 120
                        int mxPathname = 512
                        sqlite3_vfs *pNext = NULL
                        const char *zName = 0x558310eeb580 ("unix-none")
                        void *pAppData = 0x5583110491c0
                        int(sqlite3_vfs *, const char *, sqlite3_file *, int, int *) xOpen = 0x5583109d654f (int unixOpen(sqlite3_vfs *pVfs, const char *zPath, sqlite3_file *pFile, int flags, int *pOutFlags))
                        int(sqlite3_vfs *, const char *, int) xDelete = 0x5583109d738e (int unixDelete(sqlite3_vfs *NotUsed, const char *zPath, int dirSync))
                        int(sqlite3_vfs *, const char *, int, int *) xAccess = 0x5583109d7655 (int unixAccess(sqlite3_vfs *NotUsed, const char *zPath, int flags, int *pResOut))
                        int(sqlite3_vfs *, const char *, int, char *) xFullPathname = 0x5583109d92dc (int unixFullPathname(sqlite3_vfs *pVfs, const char *zPath, int nOut, char *zOut))
                        void *(sqlite3_vfs *, const char *) xDlOpen = 0x5583109d9879 (void *unixDlOpen(sqlite3_vfs *NotUsed, const char *zFilename))
                        void(sqlite3_vfs *, int, char *) xDlError = 0x5583109d989c (void unixDlError(sqlite3_vfs *NotUsed, int nBuf, char *zBufOut))
                        (void())(sqlite3_vfs *, void *, const char *) xDlSym = 0x5583109d98f0 ((void()) unixDlSym(sqlite3_vfs *NotUsed, void *p, const char *zSym))
                        void(sqlite3_vfs *, void *) xDlClose = 0x5583109d9925 (void unixDlClose(sqlite3_vfs *NotUsed, void *pHandle))
                        int(sqlite3_vfs *, int, char *) xRandomness = 0x5583109d995a (int unixRandomness(sqlite3_vfs *NotUsed, int nBuf, char *zBuf))
                        int(sqlite3_vfs *, int) xSleep = 0x5583109d9d20 (int unixSleep(sqlite3_vfs *NotUsed, int microseconds))
                        int(sqlite3_vfs *, double *) xCurrentTime = 0x5583109da128 (int unixCurrentTime(sqlite3_vfs *NotUsed, double *prNow))
                        int(sqlite3_vfs *, int, char *) xGetLastError = 0x5583109da305 (int unixGetLastError(sqlite3_vfs *NotUsed, int NotUsed2, char *NotUsed3))
                        int(sqlite3_vfs *, sqlite3_int64 *) xCurrentTimeInt64 = 0x5583109d9ee4 (int unixCurrentTimeInt64(sqlite3_vfs *NotUsed, sqlite3_int64 *piNow))
                        int(sqlite3_vfs *, const char *, void()) xSetSystemCall = 0x5583109c0bed (int unixSetSystemCall(sqlite3_vfs *pNotUsed, const char *zName, void() pNewFunc))
                        (void())(sqlite3_vfs *, const char *) xGetSystemCall = 0x5583109c17ba ((void()) unixGetSystemCall(sqlite3_vfs *pNotUsed, const char *zName))
                        const char *(sqlite3_vfs *, const char *) xNextSystemCall = 0x5583109c1a92 (const char *unixNextSystemCall(sqlite3_vfs *p, const char *zName))
                    })
                    const char *zName = 0x558310eeb5c0 ("unix-dotfile")
                    void *pAppData = 0x5583110492c0
                    int(sqlite3_vfs *, const char *, sqlite3_file *, int, int *) xOpen = 0x5583109d654f (int unixOpen(sqlite3_vfs *pVfs, const char *zPath, sqlite3_file *pFile, int flags, int *pOutFlags))
                    int(sqlite3_vfs *, const char *, int) xDelete = 0x5583109d738e (int unixDelete(sqlite3_vfs *NotUsed, const char *zPath, int dirSync))
                    int(sqlite3_vfs *, const char *, int, int *) xAccess = 0x5583109d7655 (int unixAccess(sqlite3_vfs *NotUsed, const char *zPath, int flags, int *pResOut))
                    int(sqlite3_vfs *, const char *, int, char *) xFullPathname = 0x5583109d92dc (int unixFullPathname(sqlite3_vfs *pVfs, const char *zPath, int nOut, char *zOut))
                    void *(sqlite3_vfs *, const char *) xDlOpen = 0x5583109d9879 (void *unixDlOpen(sqlite3_vfs *NotUsed, const char *zFilename))
                    void(sqlite3_vfs *, int, char *) xDlError = 0x5583109d989c (void unixDlError(sqlite3_vfs *NotUsed, int nBuf, char *zBufOut))
                    (void())(sqlite3_vfs *, void *, const char *) xDlSym = 0x5583109d98f0 ((void()) unixDlSym(sqlite3_vfs *NotUsed, void *p, const char *zSym))
                    void(sqlite3_vfs *, void *) xDlClose = 0x5583109d9925 (void unixDlClose(sqlite3_vfs *NotUsed, void *pHandle))
                    int(sqlite3_vfs *, int, char *) xRandomness = 0x5583109d995a (int unixRandomness(sqlite3_vfs *NotUsed, int nBuf, char *zBuf))
                    int(sqlite3_vfs *, int) xSleep = 0x5583109d9d20 (int unixSleep(sqlite3_vfs *NotUsed, int microseconds))
                    int(sqlite3_vfs *, double *) xCurrentTime = 0x5583109da128 (int unixCurrentTime(sqlite3_vfs *NotUsed, double *prNow))
                    int(sqlite3_vfs *, int, char *) xGetLastError = 0x5583109da305 (int unixGetLastError(sqlite3_vfs *NotUsed, int NotUsed2, char *NotUsed3))
                    int(sqlite3_vfs *, sqlite3_int64 *) xCurrentTimeInt64 = 0x5583109d9ee4 (int unixCurrentTimeInt64(sqlite3_vfs *NotUsed, sqlite3_int64 *piNow))
                    int(sqlite3_vfs *, const char *, void()) xSetSystemCall = 0x5583109c0bed (int unixSetSystemCall(sqlite3_vfs *pNotUsed, const char *zName, void() pNewFunc))
                    (void())(sqlite3_vfs *, const char *) xGetSystemCall = 0x5583109c17ba ((void()) unixGetSystemCall(sqlite3_vfs *pNotUsed, const char *zName))
                    const char *(sqlite3_vfs *, const char *) xNextSystemCall = 0x5583109c1a92 (const char *unixNextSystemCall(sqlite3_vfs *p, const char *zName))
                })
                const char *zName = 0x558310ec9660 ("unix-excl")
                void *pAppData = 0x5583110490c0
                int(sqlite3_vfs *, const char *, sqlite3_file *, int, int *) xOpen = 0x5583109
View on GitHub
GitHub Stars39
CategoryDevelopment
Updated14d ago
Forks2

Languages

C

Security Score

95/100

Audited on Mar 23, 2026

No findings