"tests/vscode:/vscode.git/clone" did not exist on "724aa0caf0f63a0887f2d3bd2addfd9bca7ef890"
c_api_common.cc 1.08 KB
Newer Older
1
2
3
4
5
/*!
 *  Copyright (c) 2018 by Contributors
 * \file c_runtime_api.cc
 * \brief DGL C API common implementations
 */
Lingfan Yu's avatar
Lingfan Yu committed
6
7
#include "c_api_common.h"

8
9
#include <dgl/graph_interface.h>

10
11
12
13
using dgl::runtime::DGLArgs;
using dgl::runtime::DGLArgValue;
using dgl::runtime::DGLRetValue;
using dgl::runtime::NDArray;
14
using dgl::runtime::PackedFunc;
Lingfan Yu's avatar
Lingfan Yu committed
15
16
17
18

namespace dgl {

PackedFunc ConvertNDArrayVectorToPackedFunc(const std::vector<NDArray>& vec) {
19
20
21
22
23
24
25
26
27
  auto body = [vec](DGLArgs args, DGLRetValue* rv) {
    const uint64_t which = args[0];
    if (which >= vec.size()) {
      LOG(FATAL) << "invalid choice";
    } else {
      *rv = std::move(vec[which]);
    }
  };
  return PackedFunc(body);
Lingfan Yu's avatar
Lingfan Yu committed
28
29
}

30
PackedFunc ConvertEdgeArrayToPackedFunc(const EdgeArray& ea) {
31
32
33
34
35
36
37
38
39
40
41
42
  auto body = [ea](DGLArgs args, DGLRetValue* rv) {
    const int which = args[0];
    if (which == 0) {
      *rv = std::move(ea.src);
    } else if (which == 1) {
      *rv = std::move(ea.dst);
    } else if (which == 2) {
      *rv = std::move(ea.id);
    } else {
      LOG(FATAL) << "invalid choice";
    }
  };
43
44
45
  return PackedFunc(body);
}

46
}  // namespace dgl