SOL9 2.0 Class: HTMLDOMTextNode

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree  SOL9 ClassList 

Source code

/******************************************************************************
 *
 * Copyright (c) 2012 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions, and the following disclaimer.
 *  
 * 2. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *
 *  HTMLDOMTextNode.h
 *
 *****************************************************************************/

// SOL9 
// 2012/03/03

#pragma once


#include <sol/com/ComIDispatch.h>


namespace SOL {

class HTMLDOMTextNode : public ComIDispatch {

private:
  IHTMLDOMTextNode*  pNode;

  IHTMLDOMTextNode2* pNode2;
    
public:
  HTMLDOMTextNode(IDispatch* pDisp)
  :ComIDispatch(pDisp),
  pNode(NULL), pNode2(NULL)
  {

  }

public:
  ~HTMLDOMTextNode()
  {
    if (pNode) {
      pNode -> Release();
      pNode = NULL;
    }
    if (pNode2) {
      pNode2 -> Release();
      pNode2 = NULL;
    }
  }


public:
  IHTMLDOMTextNode* getNode()
  {
    HRESULT hr = S_OK;
    if (pNode == NULL) {
      IDispatch* pDisp = getIDispatch();

      if ( FAILED(hr = pDisp->QueryInterface(IID_IHTMLDOMTextNode,
                (void**)&pNode)) ) {
        throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);
      }
    }
    if (pNode == NULL) {
      throw NullPointerException("IHTMLDOMTextNode is NULL");
    }
    return pNode;
  }


public:
  IHTMLDOMTextNode2* getNode2()
  {
    HRESULT hr = S_OK;
    if (pNode2 == NULL) {
      IDispatch* pDisp = getIDispatch();

      if ( FAILED(hr = pDisp->QueryInterface(IID_IHTMLDOMTextNode2,
                (void**)&pNode2)) ) {
        throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);
      }
    }
    if (pNode2 == NULL) {
      throw NullPointerException("IHTMLDOMTextNode2 is NULL");
    }
    return pNode2;
  }

public:
  HRESULT putData( 
            /* [in] */ _bstr_t v)
  {
    HRESULT hr = getNode() -> put_data((BSTR)v);
    if (FAILED(hr)) throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);


    return hr;
  }
        
  _bstr_t getData()
  {
    BSTR bstr = NULL;
    HRESULT hr = getNode() ->  get_data(&bstr);
    if (FAILED(hr)) throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);

    return _bstr_t(bstr, false);
  }
        
  _bstr_t toString()
  {
    BSTR bstr = NULL;
    HRESULT hr = getNode() -> toString(&bstr);
    if (FAILED(hr)) throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);

    return _bstr_t(bstr, false);
  }
        
  long getLength()
  {
    long value = 0;
    HRESULT hr = getNode() -> get_length(&value);
    if (FAILED(hr)) throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);

    return value;
  }
        
  IHTMLDOMNode* splitText( 
            /* [in] */ long offset)
  {
    IHTMLDOMNode* pNode = NULL; 
    HRESULT hr = getNode() -> splitText( 
      offset,
      &pNode);
    if (FAILED(hr)) throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);

    return pNode;
  }
        
    
//    IHTMLDOMTextNode2 : public IDispatch    
public:
  _bstr_t substringData( 
            /* [in] */ long offset,
            /* [in] */ long count)
  {
    BSTR bstr = NULL;
    HRESULT hr = getNode2() -> substringData( 
      offset,
      count,
      &bstr);
    if (FAILED(hr)) throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);

    return _bstr_t(bstr, false);
  }
        
  HRESULT appendData( 
            /* [in] */ _bstr_t bstrstring)
  {
    HRESULT hr = getNode2() -> appendData( 
      (BSTR)bstrstring);
    if (FAILED(hr)) throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);

    return hr;
  }
        
  HRESULT insertData( 
            /* [in] */ long offset,
            /* [in] */ _bstr_t bstrstring)
  {
    HRESULT hr = getNode2() -> insertData( 
        offset,
        (BSTR)bstrstring);
    if (FAILED(hr)) throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);

    return hr;
  }
        
  HRESULT deleteData( 
            /* [in] */ long offset,
            /* [in] */ long count)
  {
    HRESULT hr = getNode2() -> deleteData( 
      offset,
      count);
    if (FAILED(hr)) throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);

    return hr;
  }
        
  HRESULT replaceData( 
            /* [in] */ long offset,
            /* [in] */ long count,
            /* [in] */ _bstr_t bstrstring)
  {
    HRESULT hr = getNode2() -> replaceData( 
      offset,
      count,
      (BSTR)bstrstring);
    if (FAILED(hr)) throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);

    return hr;
  }
        
};
    
}

Last modified: 5 May 2019

Copyright (c) 2009-2019 Antillia.com ALL RIGHTS RESERVED.