import("methods")
importFrom("graphics", "plot")
importFrom("stats", "setNames")
importFrom("utils", "object.size", "str", "write.csv", "URLencode")
importFrom("uuid", "UUIDgenerate")
import("sp")
import("httr")
import("xml2")

exportPattern("^[[:alpha:]]+")
# export all who start with a letter (i.e. not .) except 'print.' or 'toString.'
#exportPattern("(^[^(print\\.|toString\\.|\\.)][[:alpha:]]+)")
exportMethods(
    "describeSensor",
    "encodeKVP",
    "encodeRequestKVP",
    "encodeRequestSOAP",
    "encodeRequestXML",
    "encodeXML",
    "getCapabilities",
    "getObservationById",
    "getObservation",
    "getFeatureOfInterest",
    "plot",
    "print",
    "show",
    "sosAbstract",
    "sosCapabilitiesDocumentOriginal",
    "sosCaps",
    "sosContents",
    "sosCoordinates",
    "sosCreateBBOX",
    "sosCreateBBoxMatrix",
    "sosCreateEventTimeList",
    "sosCreateFeatureOfInterest",
    "sosCreateTimeInstant",
    "sosCreateTimePeriod",
    "sosDataFieldConverters",
    "sosExceptionCodeMeaning",
    "sosFilter_Capabilities",
    "sosFeaturesOfInterest",
    "sosGetCRS",
    "sosId",
    "sosBinding",
    "sosName",
    "sosObservedProperties",
    "sosOfferingIds",
    "sosOfferings",
    "sosOperation",
    "sosOperationsMetadata",
    "sosParsers",
    "sosProcedures",
    "sosRequest",
    "sosResponseFormats",
    "sosResponseMode",
    "sosResult",
    "sosResultModels",
    "sosServiceIdentification",
    "sosServiceProvider",
    "sosSrsName",
    "sosTime",
    "sosTimeFormat",
    "sosTitle",
    "sosUrl",
    "sosVersion"
)
exportClasses(
     "GmlDirectPosition",
     "GmlEnvelope",
     "GmlFeature",
     "GmlFeatureCollection",
     "GmlFeatureOrNULL",
     "GmlFeatureProperty",
     "GmlGeometry",
     "GmlLineString",
     "GmlMeasure",
     "GmlPoint",
     "GmlPointProperty",
     "GmlPolygon",
     "GmlTimeGeometricPrimitive",
     "GmlTimeInstant",
     "GmlTimeInstantOrNULL",
     "GmlTimeInstantProperty",
     "GmlTimeInstantPropertyOrNULL",
     "GmlTimeInterval",
     "GmlTimeIntervalOrNULL",
     "GmlTimeObject",
     "GmlTimeObjectOrNULL",
     "GmlTimePeriod",
     "GmlTimePosition",
     "GmlTimePositionOrNULL",
     "GmlTimePrimitive",
     "OgcBBOX",
     "OgcBinarySpatialOp",
     "OgcBinaryTemporalOp",
     "OgcBinaryTemporalOpOrNULL",
     "OgcComparisonOps",
     "OgcContains",
     "OgcIntersects",
     "OgcOverlaps",
     "OgcSpatialOps",
     "OgcSpatialOpsOrNULL",
     "OmMeasurement",
     "OmObservation",
     "OmObservationOrNULL",
     "OmOM_Observation",
     "OmOM_ObservationOrNULL",
     "OmObservationProperty",
     "OwsCapabilities",
     "OwsCapabilities_1.1.0",
     "OwsCapabilities_2.0.0",
     "OwsContents",
     "OwsContentsOrNULL",
     "OwsException",
     "OwsExceptionReport",
     "OwsGetCapabilities",
     "OwsGetCapabilities_1.1.0",
     "OwsGetCapabilities_2.0.0",
     "OwsOperation",
     "OwsOperationsMetadata",
     "OwsOperationsMetadataOrNULL",
     "OwsRange",
     "OwsServiceIdentification",
     "OwsServiceIdentificationOrNULL",
     "OwsServiceOperation",
     "OwsServiceProvider",
     "OwsServiceProviderOrNULL",
     "SaSamplingPoint",
     "SaSamplingSurface",
     "SensorML",
     "SOS",
     "SOS_1.0.0",
     "SOS_2.0.0",
     "SosCapabilities_1.0.0",
     "SosContents",
     "SosContentsOrNULL",
     "SosDescribeSensor",
     "SosGetObservation",
     "SosGetObservationById",
     "SosEventTime",
     "SosFeatureOfInterest",
     "SosFeatureOfInterestOrNULL",
     "SosFilter_Capabilities",
     "SosFilter_CapabilitiesOrNULL",
     "SosObservationOffering",
     "SweCompositePhenomenon",
     "SwePhenomenon",
     "SwePhenomenonOrNULL",
     "SwePhenomenonProperty",
     "SwePhenomenonPropertyOrNULL",
     "SweTextBlock",
     "SweTextEncoding",
     "TM_After",
     "TM_Before",
     "TM_During",
     "TM_Equals",
     "GmlDirectPositionOrNULL",
     "GmlFeatureOrGmlFeaturePropertyOrNULL",
     "GmlPointOrNULL",
     "SamsShape"
)

S3method(as.data.frame, OmMeasurement)
S3method(as.data.frame, OmObservation)
S3method(as.data.frame, WmlMeasurementTimeseries)
S3method(as.list, OmObservationCollection)
S3method(length, OmObservationCollection)
S3method(names, OmMeasurement)
S3method(names, OmObservation)
S3method(names, OmObservationCollection)
S3method(plot, SOS)
S3method(plot, SensorML)
S3method(plot, SosObservationOffering)
S3method(print, summary.GmlTimePeriod)
S3method(print, summary.OmObservation)
S3method(print, summary.OmObservationCollection)
S3method(print, summary.OwsRange)
S3method(print, summary.SOS)
S3method(print, summary.SosObservationOffering)
S3method(print, summary.SosObservationOffering_2.0.0)
S3method(summary, GmlTimePeriod)
S3method(summary, OmObservation)
S3method(summary, OmObservationCollection)
S3method(summary, OwsRange)
S3method(summary, SOS)
S3method(summary, SOS_versioned)
S3method(summary, SosObservationOffering)
S3method(summary, SosObservationOffering_2.0.0)

