コード例 #1
0
size_type 
get_cstr_entries(std::string label, char ***pstrs, CommandCtx *ctx)
{  
    std::string nentry;
    std::string item;

    prompt_for("# " + label + "s", &nentry, ctx);    

    unsigned long n = 0;
    try{
        n = std::stoul(nentry);
    }catch(...){
        std::cerr<< std::endl << "INVALID INPUT" << std::endl << std::endl;
        *pstrs = nullptr;
        return 0;
    }

    try{
        *pstrs = NewStrings(n, TOSDB_MAX_STR_SZ);

        for(size_type i = 0; i < n; ++i){
            prompt_b<< ctx->name;
            prompt<< label << "(" << (i+1) << ") " >> item;        
            strcpy_s((*pstrs)[i], item.length() + 1, item.c_str());
        }
    }catch(...){
        DeleteStrings(*pstrs, n);
        *pstrs = nullptr;
        return 0;
    }

    return n;
}
コード例 #2
0
// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
//		¥ CStrArrayStore::AllocateStorage						/*e*/
// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
// creates new elements pointing to an empty CCString. The array is completely destructed by the stack frame upon it's
// deletion
void CStrArrayStore::AllocateStorage(
	CProgram		&ioState,
	UInt32			inNumElements)
{
/*	mArray.InsertItemsAt(inNumElements,LArray::index_Last,(CCString*)0);
	
	for (ArrayIndexT index=1; index<=inNumElements; index++)
	{
		CCString		*str=new CCString;
		ThrowIfMemFull_(str);
		mArray[index]=str;
	}*/
	
	
	UInt32			wasCount=mArray.GetCount();

	if (inNumElements>wasCount)				// add new ones
	{
		mArray.InsertItemsAt(inNumElements-mArray.GetCount(),LArray::index_Last,(CCString*)0);
		
		// zero the ones which existed
		CreateStrings(inNumElements-wasCount,wasCount+1);
		ClearStrings(wasCount,1);
	}
	else if (inNumElements<wasCount)		// delete old ones
	{
		DeleteStrings(wasCount-inNumElements,inNumElements+1);
		mArray.RemoveItemsAt(wasCount-inNumElements,inNumElements+1);
		ClearStrings(inNumElements,1);
	}
	else
		ClearStrings(wasCount,1);

}