text: //
  // Copyright 2021 Pixar
  //
  // Licensed under the Apache License, Version 2.0 (the "Apache License")
  // with the following modification; you may not use this file except in
  // compliance with the Apache License and the following modification to it:
  // Section 6. Trademarks. is deleted and replaced with:
  //
  // 6. Trademarks. This License does not grant permission to use the trade
  //    names, trademarks, service marks, or product names of the Licensor
  //    and its affiliates, except as required to comply with Section 4(c) of
  //    the License and to reproduce the content of the NOTICE file.
  //
  // You may obtain a copy of the Apache License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the Apache License with the above modification is
  // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  // KIND, either express or implied. See the Apache License for the specific
  // language governing permissions and limitations under the Apache License.
  //
  ////////////////////////////////////////////////////////////////////////
  // This file is generated by a script.  Do not edit directly.  Edit the
  // schema.template.cpp file to make changes.
  
  #include "pxr/imaging/hd/basisCurvesTopologySchema.h"
  #include "pxr/imaging/hd/retainedDataSource.h"
  #include "pxr/imaging/hd/basisCurvesSchema.h"
  
  #include "pxr/base/trace/trace.h"
  
  
  PXR_NAMESPACE_OPEN_SCOPE
  
  TF_DEFINE_PUBLIC_TOKENS(HdBasisCurvesTopologySchemaTokens,
      HDBASISCURVESTOPOLOGY_SCHEMA_TOKENS);
  
  
  
  HdIntArrayDataSourceHandle
  HdBasisCurvesTopologySchema::GetCurveVertexCounts()
  {
      return _GetTypedDataSource<HdIntArrayDataSource>(
          HdBasisCurvesTopologySchemaTokens->curveVertexCounts);
  }
  
  HdIntArrayDataSourceHandle
  HdBasisCurvesTopologySchema::GetCurveIndices()
  {
      return _GetTypedDataSource<HdIntArrayDataSource>(
          HdBasisCurvesTopologySchemaTokens->curveIndices);
  }
  
  HdTokenDataSourceHandle
  HdBasisCurvesTopologySchema::GetBasis()
  {
      return _GetTypedDataSource<HdTokenDataSource>(
          HdBasisCurvesTopologySchemaTokens->basis);
  }
  
  HdTokenDataSourceHandle
  HdBasisCurvesTopologySchema::GetType()
  {
      return _GetTypedDataSource<HdTokenDataSource>(
          HdBasisCurvesTopologySchemaTokens->type);
  }
  
  HdTokenDataSourceHandle
  HdBasisCurvesTopologySchema::GetWrap()
  {
      return _GetTypedDataSource<HdTokenDataSource>(
          HdBasisCurvesTopologySchemaTokens->wrap);
  }
  
  /*static*/
  HdContainerDataSourceHandle
  HdBasisCurvesTopologySchema::BuildRetained(
          const HdIntArrayDataSourceHandle &curveVertexCounts,
          const HdIntArrayDataSourceHandle &curveIndices,
          const HdTokenDataSourceHandle &basis,
          const HdTokenDataSourceHandle &type,
          const HdTokenDataSourceHandle &wrap
  )
  {
      TfToken names[5];
      HdDataSourceBaseHandle values[5];
  
      size_t count = 0;
      if (curveVertexCounts) {
          names[count] = HdBasisCurvesTopologySchemaTokens->curveVertexCounts;
          values[count++] = curveVertexCounts;
      }
  
      if (curveIndices) {
          names[count] = HdBasisCurvesTopologySchemaTokens->curveIndices;
          values[count++] = curveIndices;
      }
  
      if (basis) {
          names[count] = HdBasisCurvesTopologySchemaTokens->basis;
          values[count++] = basis;
      }
  
      if (type) {
          names[count] = HdBasisCurvesTopologySchemaTokens->type;
          values[count++] = type;
      }
  
      if (wrap) {
          names[count] = HdBasisCurvesTopologySchemaTokens->wrap;
          values[count++] = wrap;
      }
  
      return HdRetainedContainerDataSource::New(count, names, values);
  }
  
  /*static*/
  HdBasisCurvesTopologySchema
  HdBasisCurvesTopologySchema::GetFromParent(
          const HdContainerDataSourceHandle &fromParentContainer)
  {
      return HdBasisCurvesTopologySchema(
          fromParentContainer
          ? HdContainerDataSource::Cast(fromParentContainer->Get(
                  HdBasisCurvesTopologySchemaTokens->topology))
          : nullptr);
  }
  
  /*static*/
  const HdDataSourceLocator &
  HdBasisCurvesTopologySchema::GetDefaultLocator()
  {
      static const HdDataSourceLocator locator(
          HdBasisCurvesSchemaTokens->basisCurves,
          HdBasisCurvesTopologySchemaTokens->topology
      );
      return locator;
  } 
  HdBasisCurvesTopologySchema::Builder &
  HdBasisCurvesTopologySchema::Builder::SetCurveVertexCounts(
      const HdIntArrayDataSourceHandle &curveVertexCounts)
  {
      _curveVertexCounts = curveVertexCounts;
      return *this;
  }
  
  HdBasisCurvesTopologySchema::Builder &
  HdBasisCurvesTopologySchema::Builder::SetCurveIndices(
      const HdIntArrayDataSourceHandle &curveIndices)
  {
      _curveIndices = curveIndices;
      return *this;
  }
  
  HdBasisCurvesTopologySchema::Builder &
  HdBasisCurvesTopologySchema::Builder::SetBasis(
      const HdTokenDataSourceHandle &basis)
  {
      _basis = basis;
      return *this;
  }
  
  HdBasisCurvesTopologySchema::Builder &
  HdBasisCurvesTopologySchema::Builder::SetType(
      const HdTokenDataSourceHandle &type)
  {
      _type = type;
      return *this;
  }
  
  HdBasisCurvesTopologySchema::Builder &
  HdBasisCurvesTopologySchema::Builder::SetWrap(
      const HdTokenDataSourceHandle &wrap)
  {
      _wrap = wrap;
      return *this;
  }
  
  HdContainerDataSourceHandle
  HdBasisCurvesTopologySchema::Builder::Build()
  {
      return HdBasisCurvesTopologySchema::BuildRetained(
          _curveVertexCounts,
          _curveIndices,
          _basis,
          _type,
          _wrap
      );
  }
  
  
  PXR_NAMESPACE_CLOSE_SCOPE