MCPcopy Create free account
hub / github.com/OpenStickCommunity/GP2040-CE / setHasFlags

Function setHasFlags

src/config_utils.cpp:1873–1929  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1871}
1872
1873static void setHasFlags(const pb_msgdesc_t* fields, void* s)
1874{
1875 pb_field_iter_t iter;
1876 if (!pb_field_iter_begin(&iter, fields, s))
1877 {
1878 return;
1879 }
1880
1881 do
1882 {
1883 // Not implemented for extension fields
1884 assert(PB_LTYPE(iter.type) != PB_LTYPE_EXTENSION);
1885
1886 switch (PB_HTYPE(iter.type))
1887 {
1888 case PB_HTYPE_OPTIONAL:
1889 {
1890 *reinterpret_cast<bool*>(iter.pSize) = true;
1891
1892 // Recurse into sub-messages
1893 if (PB_LTYPE(iter.type) == PB_LTYPE_SUBMESSAGE)
1894 {
1895 assert(iter.submsg_desc);
1896 assert(iter.pData);
1897
1898 setHasFlags(iter.submsg_desc, iter.pData);
1899 }
1900 break;
1901 }
1902
1903 case PB_HTYPE_REPEATED:
1904 {
1905 // Recurse into sub-messages
1906 if (PB_LTYPE(iter.type) == PB_LTYPE_SUBMESSAGE)
1907 {
1908 assert(iter.submsg_desc);
1909 assert(iter.pData);
1910 assert(iter.pSize);
1911
1912 const pb_size_t array_size = *reinterpret_cast<pb_size_t*>(iter.pSize);
1913 pb_byte_t* item_ptr = reinterpret_cast<pb_byte_t*>(iter.pData);
1914 for (pb_size_t index = 0; index < array_size; ++index)
1915 {
1916 setHasFlags(iter.submsg_desc, item_ptr);
1917 item_ptr += iter.data_size;
1918 }
1919 }
1920 break;
1921 }
1922
1923 default:
1924 // We do not support any other htypes of fields
1925 assert(false);
1926 continue;
1927 }
1928 } while (pb_field_iter_next(&iter));
1929}
1930

Callers 1

saveMethod · 0.85

Calls 2

pb_field_iter_beginFunction · 0.85
pb_field_iter_nextFunction · 0.85

Tested by

no test coverage detected