Skip to content

Commit 30e703c

Browse files
committed
routing: rework SWIG wrapper
* remove dead code (aka `%ignore`) in wrappers .Net routing.i: * Since we previously used `%rename("%(camelcase)s", %$isfunction);` everything was unignored, including non-functional elements. * We no longer have `SWIGTYPE_p_` types being generated.
1 parent 8e86ea8 commit 30e703c

File tree

4 files changed

+513
-240
lines changed

4 files changed

+513
-240
lines changed

ortools/routing/csharp/routing.i

Lines changed: 123 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,58 @@ class RoutingSearchParameters;
7474
#include "ortools/util/optional_boolean.pb.h"
7575
%}
7676

77+
// Add needed import to RoutingGlobalsPINVOKE.cs
78+
%pragma(csharp) imclassimports=%{
79+
// Types from ConstraintSolver
80+
using Google.OrTools.ConstraintSolver;
81+
%}
82+
83+
// Protobuf support
84+
PROTO_INPUT(operations_research::routing::RoutingModelParameters,
85+
Google.OrTools.Routing.RoutingModelParameters,
86+
parameters)
87+
PROTO_INPUT(operations_research::routing::RoutingSearchParameters,
88+
Google.OrTools.Routing.RoutingSearchParameters,
89+
search_parameters)
90+
PROTO2_RETURN(operations_research::routing::IteratedLocalSearchParameters,
91+
Google.OrTools.Routing.IteratedLocalSearchParameters)
92+
PROTO2_RETURN(operations_research::routing::RoutingModelParameters,
93+
Google.OrTools.Routing.RoutingModelParameters)
94+
PROTO2_RETURN(operations_research::routing::RoutingSearchParameters,
95+
Google.OrTools.Routing.RoutingSearchParameters)
96+
PROTO_ENUM_RETURN(operations_research::routing::FirstSolutionStrategy::Value,
97+
Google.OrTools.Routing.FirstSolutionStrategy.Types.Value)
98+
PROTO_ENUM_RETURN(operations_research::routing::RoutingSearchStatus::Value,
99+
Google.OrTools.Routing.RoutingSearchStatus.Types.Value)
100+
101+
// Add needed import to RoutingGlobals.cs
102+
%pragma(csharp) moduleimports=%{
103+
// Types from ConstraintSolver
104+
using Google.OrTools.ConstraintSolver;
105+
%}
106+
107+
// Wrap parameters.h according to the SWIG style guide.
108+
%ignoreall
109+
%unignore operations_research::routing;
110+
namespace operations_research::routing {
111+
// parameters.h
112+
// IMPORTANT: These functions are global, so in .Net, they are in the
113+
// RoutingGlobals.cs file.
114+
%unignore DefaultRoutingSearchParameters;
115+
%unignore DefaultRoutingModelParameters;
116+
%unignore DefaultSecondaryRoutingSearchParameters;
117+
%unignore DefaultIteratedLocalSearchParameters;
118+
%unignore FindErrorInRoutingSearchParameters;
119+
//%unignore FindErrorsInRoutingSearchParameters; // vector<string> not wrapped
120+
} // namespace operations_research::routing
121+
122+
%include "ortools/routing/parameters.h"
123+
%unignoreall
124+
125+
// Routing
126+
// Wrap routing.h according to the SWIG style guide.
127+
%ignoreall
128+
%unignore operations_research::routing;
77129
namespace operations_research::routing {
78130

79131
// GlobalVehicleBreaksConstraint
@@ -82,9 +134,6 @@ namespace operations_research::routing {
82134
using Google.OrTools.ConstraintSolver;
83135
%}
84136

85-
// PathsMetadata
86-
%unignore PathsMetadata;
87-
88137
// Routing Dimension
89138
%unignore Dimension;
90139
%typemap(csimports) Dimension %{
@@ -110,7 +159,20 @@ using Google.OrTools.ConstraintSolver;
110159
return groupDelay;
111160
}
112161
%}
113-
%ignore Dimension::GetBreakDistanceDurationOfVehicle;
162+
%unignore Dimension::Dimension;
163+
%unignore Dimension::~Dimension;
164+
%unignore Dimension::CumulVar;
165+
%unignore Dimension::GetQuadraticCostSoftSpanUpperBoundForVehicle;
166+
%unignore Dimension::GetSoftSpanUpperBoundForVehicle;
167+
%unignore Dimension::HasQuadraticCostSoftSpanUpperBounds;
168+
%unignore Dimension::HasSoftSpanUpperBounds;
169+
%unignore Dimension::SetBreakIntervalsOfVehicle;
170+
%unignore Dimension::SetCumulVarSoftUpperBound;
171+
%unignore Dimension::SetGlobalSpanCostCoefficient;
172+
%unignore Dimension::SetQuadraticCostSoftSpanUpperBoundForVehicle;
173+
%unignore Dimension::SetSoftSpanUpperBoundForVehicle;
174+
%unignore Dimension::SlackVar;
175+
%unignore Dimension::TransitVar;
114176

115177
// Routing Model
116178
%unignore Model;
@@ -146,60 +208,72 @@ using Domain = Google.OrTools.Util.Domain;
146208
return c;
147209
}
148210
%}
149-
%rename("GetStatus") Model::status;
150-
// Ignored:
151-
%ignore Model::AddDimensionDependentDimensionWithVehicleCapacity;
152-
153-
%unignore Model::RegisterUnaryTransitVector;
154-
%unignore Model::RegisterTransitMatrix;
155-
156-
%unignore Model::AddVectorDimension;
211+
%unignore Model::Model;
212+
%unignore Model::~Model;
213+
%unignore Model::AddAtSolutionCallback;
214+
%unignore Model::AddConstantDimensionWithSlack;
215+
%unignore Model::AddDimension;
216+
%unignore Model::AddDimensionWithVehicleCapacity;
217+
%unignore Model::AddDisjunction;
157218
%unignore Model::AddMatrixDimension;
158-
159-
%ignore Model::AddSameVehicleRequiredTypeAlternatives;
160-
%ignore Model::GetAllDimensionNames;
161-
%ignore Model::GetAutomaticFirstSolutionStrategy;
162-
%ignore Model::GetDeliveryIndexPairs;
163-
%ignore Model::GetDimensions;
164-
%ignore Model::GetDimensionsWithSoftAndSpanCosts;
165-
%ignore Model::GetDimensionsWithSoftOrSpanCosts;
166-
%ignore Model::GetGlobalDimensionCumulOptimizers;
167-
%ignore Model::GetHardTypeIncompatibilitiesOfType;
168-
%ignore Model::GetLocalDimensionCumulMPOptimizers;
169-
%ignore Model::GetLocalDimensionCumulOptimizers;
170-
%ignore Model::GetMutableGlobalCumulOptimizer;
171-
%ignore Model::GetMutableLocalCumulOptimizer;
172-
%ignore Model::GetMutableLocalCumulMPOptimizer;
173-
%ignore Model::GetPerfectBinaryDisjunctions;
174-
%ignore Model::GetPickupIndexPairs;
175-
%ignore Model::HasTypeRegulations;
176-
%ignore Model::MakeStateDependentTransit;
177-
%ignore Model::PackCumulsOfOptimizerDimensionsFromAssignment;
178-
%ignore Model::RegisterStateDependentTransitCallback;
179-
%ignore Model::RemainingTime;
180-
%ignore Model::StateDependentTransitCallback;
181-
%ignore Model::SolveWithParameters(
182-
const RoutingSearchParameters& search_parameters,
183-
std::vector<const Assignment*>* solutions);
184-
%ignore Model::SolveFromAssignmentWithParameters(
185-
const Assignment* assignment,
186-
const RoutingSearchParameters& search_parameters,
187-
std::vector<const Assignment*>* solutions);
188-
%ignore Model::TransitCallback;
189-
%ignore Model::UnaryTransitCallbackOrNull;
190-
191-
%ignore operations_research::routing::Model::AddResourceGroup;
192-
%ignore operations_research::routing::Model::GetResourceGroups;
219+
%unignore Model::AddPickupAndDelivery;
220+
%unignore Model::AddVariableMinimizedByFinalizer;
221+
%unignore Model::AddVectorDimension;
222+
%unignore Model::CostVar;
223+
%unignore Model::CumulVar;
224+
%unignore Model::End;
225+
%unignore Model::GetArcCostForVehicle;
226+
%unignore Model::GetDimensionOrDie;
227+
%unignore Model::GetMutableDimension;
228+
%unignore Model::IsEnd;
229+
%unignore Model::IsStart;
230+
%unignore Model::IsVehicleUsed;
231+
%unignore Model::NextVar;
232+
%unignore Model::ReadAssignmentFromRoutes;
233+
%unignore Model::RegisterTransitCallback;
234+
%unignore Model::RegisterTransitMatrix;
235+
%unignore Model::RegisterUnaryTransitCallback;
236+
%unignore Model::RegisterUnaryTransitVector;
237+
%unignore Model::SetArcCostEvaluatorOfAllVehicles;
238+
%unignore Model::SetArcCostEvaluatorOfVehicle;
239+
%unignore Model::SetPickupAndDeliveryPolicyOfAllVehicles;
240+
%unignore Model::Size;
241+
%unignore Model::SolveFromAssignmentWithParameters(const operations_research::Assignment*, const RoutingSearchParameters&);
242+
%unignore Model::SolveWithParameters(const RoutingSearchParameters&);
243+
%unignore Model::Start;
244+
%unignore Model::VehicleVar;
245+
%rename("GetStatus") Model::status;
246+
// Model nested enum
247+
%unignore Model::PenaltyCostBehavior;
248+
%unignore Model::PENALIZE_ONCE;
249+
%unignore Model::PENALIZE_PER_INACTIVE;
250+
%unignore Model::PickupAndDeliveryPolicy;
251+
%unignore Model::PICKUP_AND_DELIVERY_FIFO;
252+
%unignore Model::PICKUP_AND_DELIVERY_LIFO;
253+
%unignore Model::PICKUP_AND_DELIVERY_NO_ORDER;
254+
%unignore Model::VisitTypePolicy;
255+
%unignore Model::TYPE_ADDED_TO_VEHICLE;
256+
%unignore Model::ADDED_TYPE_REMOVED_FROM_VEHICLE;
257+
%unignore Model::TYPE_ON_VEHICLE_UP_TO_VISIT;
258+
%unignore Model::TYPE_SIMULTANEOUSLY_ADDED_AND_REMOVED;
193259

194260
// ModelVisitor
195261
%unignore ModelVisitor;
196262
%typemap(csimports) ModelVisitor %{
197263
using Google.OrTools.ConstraintSolver;
198264
%}
199265

200-
// SimpleBoundCosts
266+
// PathsMetadata
267+
%unignore PathsMetadata;
268+
269+
// BoundCosts
201270
%unignore BoundCost;
271+
%unignore BoundCost::BoundCost;
272+
%unignore BoundCost::bound;
273+
%unignore BoundCost::cost;
274+
202275
%unignore SimpleBoundCosts;
276+
%unignore SimpleBoundCosts::SimpleBoundCosts;
203277
%rename("GetBoundCost") SimpleBoundCosts::bound_cost;
204278
%rename("GetSize") SimpleBoundCosts::Size;
205279

@@ -211,61 +285,8 @@ using Google.OrTools.ConstraintSolver;
211285

212286
// TypeRegulationsChecker
213287
%unignore TypeRegulationsChecker;
214-
%ignore TypeRegulationsChecker::CheckVehicle;
215-
216-
} // namespace operations_research::routing
217-
218-
%rename("%(camelcase)s", %$isfunction) "";
219-
220-
// Add needed import to RoutingGlobalsPINVOKE.cs
221-
%pragma(csharp) imclassimports=%{
222-
// Types from ConstraintSolver
223-
using Google.OrTools.ConstraintSolver;
224-
%}
225-
226-
// Protobuf support
227-
PROTO_INPUT(operations_research::routing::RoutingModelParameters,
228-
Google.OrTools.Routing.RoutingModelParameters,
229-
parameters)
230-
PROTO_INPUT(operations_research::routing::RoutingSearchParameters,
231-
Google.OrTools.Routing.RoutingSearchParameters,
232-
search_parameters)
233-
PROTO2_RETURN(operations_research::routing::IteratedLocalSearchParameters,
234-
Google.OrTools.Routing.IteratedLocalSearchParameters)
235-
PROTO2_RETURN(operations_research::routing::RoutingModelParameters,
236-
Google.OrTools.Routing.RoutingModelParameters)
237-
PROTO2_RETURN(operations_research::routing::RoutingSearchParameters,
238-
Google.OrTools.Routing.RoutingSearchParameters)
239-
PROTO_ENUM_RETURN(operations_research::routing::FirstSolutionStrategy::Value,
240-
Google.OrTools.Routing.FirstSolutionStrategy.Types.Value)
241-
PROTO_ENUM_RETURN(operations_research::routing::RoutingSearchStatus::Value,
242-
Google.OrTools.Routing.RoutingSearchStatus.Types.Value)
243288

244-
// Add needed import to RoutingGlobals.cs
245-
%pragma(csharp) moduleimports=%{
246-
// Types from ConstraintSolver
247-
using Google.OrTools.ConstraintSolver;
248-
%}
249-
250-
// Wrap parameters.h according to the SWIG style guide.
251-
%ignoreall
252-
%unignore operations_research::routing;
253-
namespace operations_research::routing {
254-
// parameters.h
255-
// IMPORTANT: These functions are global, so in .Net, they are in the
256-
// RoutingGlobals.cs file.
257-
%unignore DefaultRoutingSearchParameters;
258-
%unignore DefaultRoutingModelParameters;
259-
%unignore DefaultSecondaryRoutingSearchParameters;
260-
%unignore DefaultIteratedLocalSearchParameters;
261-
%unignore FindErrorInRoutingSearchParameters;
262-
%unignore FindErrorsInRoutingSearchParameters;
263289
} // namespace operations_research::routing
264290

265-
%include "ortools/routing/parameters.h"
266-
%unignoreall
267-
268-
// Wrap routing includes
269-
// TODO(user): Replace with %ignoreall/%unignoreall
270-
//swiglint: disable include-h-allglobals
271291
%include "ortools/routing/routing.h"
292+
%unignoreall

0 commit comments

Comments
 (0)