Best practice for BaseContainer Types



  • On 16/02/2018 at 01:11, xxxxxxxx wrote:

    Hi Everyone,

    Im currently writing a plugin that stores and retrieves takes data.

    Im planning to store 5 separate lists of strings in a sub-basecontainer (to keep the data with the file)

    (following along from this post -  https://plugincafe.maxon.net/topic/8019/10416_saving-custom-attributes-with-a-scene-file)

    So, as per this:

    subC = c4d.BaseContainer() 
    subC.SetString(NAME_IDS _, NAME_LIST _)

    __ What do i need to set the the subC type to, so i can store lists?

    And if i want to store 5 separate lists of strings, is there any conflict i need to be aware of? _
    "Once you've set a container value using one type you must neither try to access it using another type, nor overwrite it with a value of another type! Using the wrong access will not crash, but it is illegal."

    _ I am fully aware of the above from the documentation, hence asking for advice on best practice.

    Any and all information would be much appreciated!

    Thanks,

    Cerac __



  • On 16/02/2018 at 03:45, xxxxxxxx wrote:

    You will need to provide your own list implementation.
    I do this by creating a subcontainer, storing the number of entries at index 0, then storing the different entries at following indeces (or in a separate subcontainer)

    Something like

      
    BaseContainer bcList;  
    bcList.SetInt32(0, count);  
    BaseContainer bcData;  
    for (Int32 i = 0; i < count; ++i)  
      bcData.SetString(name_list[i]);  
    bcList.SetContainer(1, bcData);  
    

Log in to reply