Exemplo n.º 1
0
        duk_ret_t BindingHas( duk_context * ctx )
        {
            BindingInfo * info = GetBinding( ctx );
            const char * name = duk_require_string( ctx, 1 );

            dukbind_assert( info, "No binding info" );

            duk_push_boolean( ctx, info->GetFunction( name ) != 0 );

            return 1;
        }
Exemplo n.º 2
0
        duk_ret_t ClassHas( duk_context * ctx )
        {
            BindingInfo * info = GetBinding( ctx );
            const char * name = duk_require_string( ctx, 1 );
            size_t class_identifier;
            finalizer_t finalizer;

            Get( ctx, 2, class_identifier, finalizer );

            dukbind_assert( info, "No binding info" );

            duk_c_function function = info->GetClassMethod( class_identifier, name );

            duk_push_boolean( ctx, function != 0 );
            return 1;
        }
Exemplo n.º 3
0
        duk_ret_t BindingGet( duk_context * ctx )
        {
            BindingInfo * info = GetBinding( ctx );
            const char * name = duk_require_string( ctx, 1 );

            dukbind_assert( info, "No binding info" );

            duk_c_function function = info->GetFunction( name );

            if( function )
            {
                duk_push_c_function( ctx, function, DUK_VARARGS );
                return 1;
            }

            return 0;
        }
Exemplo n.º 4
0
void VertexArrayBuffer::UploadData(BindingInfo const & bindingInfo, void const * data, uint16_t count)
{
  RefPointer<DataBuffer> buffer;
  if (!bindingInfo.IsDynamic())
    buffer = GetOrCreateStaticBuffer(bindingInfo);
  else
    buffer = GetOrCreateDynamicBuffer(bindingInfo);
  buffer->UploadData(data, count);
}
Exemplo n.º 5
0
        duk_ret_t ClassGet( duk_context * ctx )
        {
            BindingInfo * info = GetBinding( ctx );
            const char * name = duk_require_string( ctx, 1 );
            size_t class_identifier;
            finalizer_t finalizer;
            Get( ctx, 0, class_identifier, finalizer );

            dukbind_assert( info, "No binding info" );

            duk_c_function function = info->GetClassMethod( class_identifier, name );

            if( function )
            {
                duk_push_c_function( ctx, function, DUK_VARARGS );
                return 1;
            }

            return 0;
        }
Exemplo n.º 6
0
RefPointer<DataBuffer> VertexArrayBuffer::GetOrCreateBuffer(BindingInfo const & bindingInfo, bool isDynamic)
{
  TBuffersMap * buffers = NULL;
  if (isDynamic)
    buffers = &m_dynamicBuffers;
  else
    buffers = &m_staticBuffers;

  TBuffersMap::iterator it = buffers->find(bindingInfo);
  if (it == buffers->end())
  {
    MasterPointer<DataBuffer> & buffer = (*buffers)[bindingInfo];
    buffer.Reset(new DataBuffer(bindingInfo.GetElementSize(), m_dataBufferSize));
    return buffer.GetRefPointer();
  }

  return it->second.GetRefPointer();
}
Exemplo n.º 7
0
ref_ptr<DataBuffer> VertexArrayBuffer::GetOrCreateBuffer(BindingInfo const & bindingInfo, bool isDynamic)
{
  TBuffersMap * buffers = nullptr;
  if (isDynamic)
    buffers = &m_dynamicBuffers;
  else
    buffers = &m_staticBuffers;

  TBuffersMap::iterator it = buffers->find(bindingInfo);
  if (it == buffers->end())
  {
    drape_ptr<DataBuffer> dataBuffer = make_unique_dp<DataBuffer>(bindingInfo.GetElementSize(), m_dataBufferSize);
    ref_ptr<DataBuffer> result = make_ref(dataBuffer);
    (*buffers).insert(make_pair(bindingInfo, move(dataBuffer)));
    return result;
  }

  return make_ref(it->second);
}