StrIterFromStr

Table of Contents

StrIterFromStr

Description

Create string iterator from Str object

Parameters

NameDirectionDescription
sinStr object to iterate

Usage example (Cross-references)

    EnumEntries entries = VecInit();
    
    StrIter json        = StrIterFromStr(code);
    Str     enum_name   = StrInit();
    bool    to_from_str = false;
    LOG_FATAL("Failed to read config file.");
    }
    StrIter json = StrIterFromStr(config);
    JR_PROJECT(json, project);
    });
    bool    success = true;
    Str     json    = StrInitFromZstr("{\"name\": \"Alice\", \"city\": \"New York\"}");
    StrIter si      = StrIterFromStr(json);
    
    Str name = StrInit();
    bool    success = true;
    Str     json    = StrInitFromZstr("{\"count\": 42, \"score\": 95.5, \"year\": 2024}");
    StrIter si      = StrIterFromStr(json);
    
    u32 count = 0;
    bool    success = true;
    Str     json    = StrInitFromZstr("{\"enabled\": true, \"visible\": false}");
    StrIter si      = StrIterFromStr(json);
    
    bool enabled = false;
    Str  json =
    StrInitFromZstr("{\"id\": 1001, \"name\": \"Bob\", \"age\": 25, \"is_active\": true, \"salary\": 50000.0}");
    StrIter si = StrIterFromStr(json);
    
    Person person = {0};
    bool    success = true;
    Str     json    = StrInitFromZstr("{\"debug_mode\": false, \"timeout\": 30, \"log_level\": \"INFO\"}");
    StrIter si      = StrIterFromStr(json);
    
    Config config    = {0};
    bool    success = true;
    Str     json    = StrInitFromZstr("{\"languages\": [\"C\", \"Python\", \"Rust\"]}");
    StrIter si      = StrIterFromStr(json);
    
    Vec(Str) languages = VecInitWithDeepCopy(NULL, StrDeinit);
    Str  json =
    StrInitFromZstr("{\"user\": {\"name\": \"Charlie\", \"email\": \"charlie@example.com\"}, \"active\": true}");
    StrIter si = StrIterFromStr(json);
    
    struct {
    "\"portable\"]}"
    );
    StrIter si = StrIterFromStr(json);
    
    SimpleProduct product = {0};
    // Test completely empty object
    Str     json1 = StrInitFromZstr("{}");
    StrIter si1   = StrIterFromStr(json1);
    
    struct {
    // Test empty object with whitespace
    Str     json2 = StrInitFromZstr("  {   }  ");
    StrIter si2   = StrIterFromStr(json2);
    
    struct {
    // Test completely empty array
    Str     json1 = StrInitFromZstr("{\"items\":[]}");
    StrIter si1   = StrIterFromStr(json1);
    
    Vec(i32) items = VecInit();
    // Test empty array with whitespace
    Str     json2 = StrInitFromZstr("{\"data\": [  ] }");
    StrIter si2   = StrIterFromStr(json2);
    
    Vec(Str) data = VecInitWithDeepCopy(NULL, StrDeinit);
    
    Str     json = StrInitFromZstr("{\"name\":\"\",\"description\":\"\"}");
    StrIter si   = StrIterFromStr(json);
    
    struct {
    
    Str     json = StrInitFromZstr("{\"temp\":-25,\"balance\":-1000.50,\"delta\":-0.001}");
    StrIter si   = StrIterFromStr(json);
    
    struct {
    "308}"
    );
    StrIter si = StrIterFromStr(json);
    
    struct {
    
    Str     json = StrInitFromZstr("{\"int_zero\":0,\"float_zero\":0.0,\"bool_false\":false}");
    StrIter si   = StrIterFromStr(json);
    
    struct {
    "\\\"World\\\"!\",\"data\":\"line1\\nline2\\ttab\"}"
    );
    StrIter si = StrIterFromStr(json);
    
    struct {
    Str json =
    StrInitFromZstr("{\"escaped\":\"\\\"quotes\\\"\",\"backslash\":\"\\\\\",\"newline\":\"\\n\",\"tab\":\"\\t\"}");
    StrIter si = StrIterFromStr(json);
    
    struct {
    // Test with lots of different whitespace patterns
    Str     json = StrInitFromZstr("  {\n\t\"name\"  :  \"test\"  ,\n  \"value\": 42\t,\"flag\"\n:\ntrue\n}\t");
    StrIter si   = StrIterFromStr(json);
    
    struct {
    
    Str     json = StrInitFromZstr("{\"outer\":{},\"list\":[],\"deep\":{\"inner\":{}}}");
    StrIter si   = StrIterFromStr(json);
    
    struct {
    
    Str     json = StrInitFromZstr("{\"empty_obj\":{},\"filled_obj\":{\"x\":1},\"empty_arr\":[],\"filled_arr\":[1,2]}");
    StrIter si   = StrIterFromStr(json);
    
    struct {
    // Using smaller values that are safer to work with
    Str     json = StrInitFromZstr("{\"max_int\":2147483647,\"min_int\":-2147483648,\"one\":1,\"minus_one\":-1}");
    StrIter si   = StrIterFromStr(json);
    
    struct {
    
    Str json   = StrInitFromZstr("{\"tiny\":0.000001,\"huge\":999999.999999,\"zero\":0.0,\"negative_tiny\":-0.000001}");
    StrIter si = StrIterFromStr(json);
    
    struct {
    } parsed = {0, 0.0, false, StrInit()};
    
    StrIter si = StrIterFromStr(json);
    JR_OBJ(si, {
    JR_INT_KV(si, "count", parsed.count);
    } parsed = {0};
    
    StrIter si = StrIterFromStr(json);
    JR_OBJ(si, {
    JR_INT_KV(si, "big_int", parsed.big_int);
    } parsed = {false, true, false, true}; // Initialize with opposite values
    
    StrIter si = StrIterFromStr(json);
    JR_OBJ(si, {
    JR_BOOL_KV(si, "flag1", parsed.flag1);
    } parsed = {StrInit(), StrInit(), StrInit(), StrInit()};
    
    StrIter si = StrIterFromStr(json);
    JR_OBJ(si, {
    JR_STR_KV(si, "empty", parsed.empty);
    Vec(Str) parsed_strings = VecInitWithDeepCopy(NULL, StrDeinit);
    
    StrIter si = StrIterFromStr(json);
    JR_OBJ(si, {
    JR_ARR_KV(si, "numbers", {
    TestPerson parsed_person = {0, StrInit(), 0, false, 0.0};
    
    StrIter si = StrIterFromStr(json);
    JR_OBJ(si, {
    JR_OBJ_KV(si, "user", {
    parsed.flags             = VecInitT(parsed.flags);
    
    StrIter si = StrIterFromStr(json);
    JR_OBJ(si, {
    JR_OBJ_KV(si, "user", {
    bool found_empty_object = false;
    
    StrIter si = StrIterFromStr(json);
    JR_OBJ(si, {
    JR_STR_KV(si, "empty_string", parsed_str);
    } parsed = {0, 0, 999, 999.0, false, true}; // Initialize with different values
    
    StrIter si = StrIterFromStr(json);
    JR_OBJ(si, {
    JR_INT_KV(si, "max_int", parsed.max_int);
    
    Str     json = StrInitFromZstr("{\"test\": \"value\"}");
    StrIter si   = StrIterFromStr(json);
    
    bool success = true;
    bool    success = true;
    Str     json    = StrInitFromZstr("{\"id\": 12345, \"name\": \"test\", \"active\": true, \"score\": 98.5}");
    StrIter si      = StrIterFromStr(json);
    
    struct {
    "{\"user\": {\"id\": 123, \"profile\": {\"name\": \"Alice\", \"age\": 30}}, \"status\": \"active\"}"
    );
    StrIter si = StrIterFromStr(json);
    
    struct {
    "\"name\": \"TechCorp\"}}"
    );
    StrIter si = StrIterFromStr(json);
    
    struct {
    "{\"distance\": 0.92, \"name\": \"helper\"}}}}"
    );
    StrIter si = StrIterFromStr(json);
    
    typedef Vec(AnnSymbol) Symbols;
    "\"nearest_neighbor_function_name_mangled\": \"_Z4main\"}}}}"
    );
    StrIter si = StrIterFromStr(json);
    
    ApiResponse response = {false, StrInit(), VecInitWithDeepCopy(NULL, AnnSymbolDeinit)};
    bool    success = true;
    Str     json    = StrInitFromZstr("{\"id\": 12345, \"name\": \"test_func\", \"size\": 1024, \"vaddr\": 4096}");
    StrIter si      = StrIterFromStr(json);
    
    FunctionInfo info = {0};
    bool    success = true;
    Str     json    = StrInitFromZstr("{\"id\": 54321, \"name\": \"test_model\"}");
    StrIter si      = StrIterFromStr(json);
    
    ModelInfo info = {0};
    "\"created_at\": \"2024-04-01\", \"model_id\": 12345, \"model_name\": \"test_model\", \"owned_by\": \"user1\"}"
    );
    StrIter si = StrIterFromStr(json);
    
    SearchResult result = {0};
    "\"nearest_neighbor_function_name_mangled\": \"_Z4main\"}}}}"
    );
    StrIter si = StrIterFromStr(json);
    
    ApiResponse response = {false, StrInit(), VecInitWithDeepCopy(NULL, AnnSymbolDeinit)};
    "\"nearest_neighbor_function_name_mangled\": \"_Z4main\"}}}}"
    );
    StrIter si = StrIterFromStr(json);
    
    ApiResponse response = {false, StrInit(), VecInitWithDeepCopy(NULL, AnnSymbolDeinit)};

Share :

Related Posts

LogInit

LogInit Description Initialize logging subsystem

Read More

StrIterPrev

StrIterPrev Description Move to previous character in string iterator

Read More

StrIterMove

StrIterMove Description Move string iterator position by n elements

Read More