diff options
Diffstat (limited to 'libs/rs/rsElement.cpp')
| -rw-r--r-- | libs/rs/rsElement.cpp | 28 | 
1 files changed, 28 insertions, 0 deletions
diff --git a/libs/rs/rsElement.cpp b/libs/rs/rsElement.cpp index 0b7bb27a1f57..d0909c824df0 100644 --- a/libs/rs/rsElement.cpp +++ b/libs/rs/rsElement.cpp @@ -314,6 +314,11 @@ void Element::decRefs(const void *ptr) const  ElementState::ElementState()  { +    const uint32_t initialCapacity = 32; +    mBuilderElements.setCapacity(initialCapacity); +    mBuilderNameStrings.setCapacity(initialCapacity); +    mBuilderNameLengths.setCapacity(initialCapacity); +    mBuilderArrays.setCapacity(initialCapacity);  }  ElementState::~ElementState() @@ -321,6 +326,29 @@ ElementState::~ElementState()      rsAssert(!mElements.size());  } +void ElementState::elementBuilderBegin() { +    mBuilderElements.clear(); +    mBuilderNameStrings.clear(); +    mBuilderNameLengths.clear(); +    mBuilderArrays.clear(); +} + +void ElementState::elementBuilderAdd(const Element *e, const char *nameStr, uint32_t arraySize) { +    mBuilderElements.push(e); +    mBuilderNameStrings.push(nameStr); +    mBuilderNameLengths.push(strlen(nameStr)); +    mBuilderArrays.push(arraySize); + +} + +const Element *ElementState::elementBuilderCreate(Context *rsc) { +    return Element::create(rsc, mBuilderElements.size(), +                                &(mBuilderElements.editArray()[0]), +                                &(mBuilderNameStrings.editArray()[0]), +                                mBuilderNameLengths.editArray(), +                                mBuilderArrays.editArray()); +} +  /////////////////////////////////////////  //  |